Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Go Laravel Package

daikazu/laravel-go

A compact Laravel package from daikazu that adds Go-focused helpers and integrations to Laravel applications, making it easier to bring Go workflows into PHP projects. It offers straightforward setup and configuration for developers blending Go concepts with Laravel.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package presents itself as a thin Laravel service provider plus a published config file plus one or more Artisan commands that shell out to Go binaries via Symfony\Process. That shape fits Laravel conventions cleanly (publishable config, artisan-first interface, framework-native config resolution), and as a --dev dependency it carries no production runtime footprint if it is only used at bootstrap/deploy time. The architecture stops fitting the moment a web request or queue worker invokes a Go binary through it: at that point an archived package becomes a runtime dependency in the hot path of the application.

Integration feasibility. Installation effort is trivial (composer require --dev, vendor:publish, config:clear). The real integration work is not the package — it is the artifact problem the package does not solve: how a compiled, architecture-specific Go binary gets onto every environment (committed to the repo, built in CI, downloaded from an artifact store), how it is versioned alongside the PHP app, and how it is kept in sync across local/staging/production. That is where 80% of the effort and 100% of the failure modes live.

Technical risk.

  • Archived, stale. Last release 2023-01-23, repository archived, 5 stars, score 0.2275. There is no upstream security response path, no compatibility maintenance, and effectively no user base to surface issues. Laravel 11/12 and PHP 8.3/8.4 compatibility is unverified and must be treated as unknown rather than assumed.
  • Documentation is internally contradictory — this is a blocking ambiguity. The package description describes a bridge to compiled Go binaries and scripts. The attached implementation notes describe a highly opinionated scaffolder that manages the versions of other Composer packages, where v4.1.2 is "a pure defaults bump" that can silently change what a fresh install resolves. Those are two different products with two different risk profiles (build-time scaffolder = near-zero runtime risk; Go process bridge = runtime risk in the hot path). We cannot scope, cost, or approve this until we know which one v4.1.2 actually is. The source is the only authority here; both the description and the notes should be treated as unreliable.
  • Low signal-to-noise on the metadata. A 0.2275 score against 5 stars is a "do not build a dependency strategy on this" signal regardless of which description is correct.

Key questions.

  1. Which is it — a Go-binary executor or a dependency-version scaffolder? Resolve by reading the service provider and command classes, not the README.
  2. Is the Go binary invoked at request/queue time, or only at build/deploy time? This determines whether the archived status is a nuisance or a blocker.
  3. What is the actual PHP/Laravel constraint in composer.json, and does it install cleanly on our target versions?
  4. Is the wrapper thin enough (~100–300 LOC around Symfony\Process) that in-house replacement is cheaper than forking?
  5. Who owns the Go toolchain on this team, and do we already have an artifact-delivery mechanism for non-PHP binaries?

Integration Approach

Stack fit. Treat this as a build-tool dependency, not a library, and keep it out of the request path. If the truth is the scaffolder interpretation, value is limited to greenfield bootstrapping and the correct decision is usually "pin the config, take ownership of the defaults, and stop tracking the package." If the truth is the Go bridge, adopt it only as a deploy-time/CLI-only convenience and put the Go binary behind an explicit interface of our own so the package stays swappable.

Migration path.

  • Spike, don't commit. Time-box one to two days on a scratch branch: install at a pinned tag or commit SHA, publish config, run php artisan list | grep go, and diff composer.json/composer.lock after any setup command. That diff answers the ambiguity question faster than any document.
  • Prefer adopt-with-fork over adopt-by-reference. If we do use it, vendor it under our own namespace or a Composer VCS fork. Archived upstream means we are already the maintainer; a fork makes that explicit and prevents a composer update from silently pulling an unreviewed state.
  • Strong default: reimplement. Wrapping a Go binary in a Laravel command with Symfony\Process, streamed output, and config-driven paths is a small, well-understood piece of code. Given an abandoned, 5-star, 2023-vintage dependency, the TPM recommendation is to spend the extra days and own ~200 lines rather than inherit an unmaintained contract.

Compatibility. Pin PHP and Laravel constraints explicitly, run the package against our actual CI matrix, and validate a clean install from a committed lock file, not just composer update — the notes correctly warn that a defaults bump surfaces as a solver error on fresh installs rather than on upgrade. Always pass --no-interaction so interactive prompts cannot hang pipelines.

Sequencing.

  1. Resolve the description/notes contradiction by reading source (blocking, ~1 day).
  2. Run the throwaway fresh-app spike; capture config shape, command surface, and version constraints.
  3. Make the build-vs-adopt call; default bias toward a small in-house wrapper unless the package turns out to be a scaffolder with real value.
  4. If adopting: fork, pin, commit the published config, and add a make setup / composer bootstrap wrapper so nobody types flags from memory.
  5. Stand up the Go binary delivery pipeline (CI build → arch-specific artifact → versioned filename) before any app code depends on it.
  6. Add observability and failure surfacing (exit codes, stderr capture, structured logs) at the wrapper boundary.

Operational Impact

Maintenance. Archived status transfers full maintenance ownership to us: security patching, PHP/Laravel compatibility, and any bug fixes become our backlog. Budget either a fork-maintenance line item or the one-time cost of an in-house rewrite; the rewrite is almost certainly cheaper over a two-year horizon.

Support. No upstream triage, no CVE feed, no release notes to watch, no community to answer questions. A 5-star package means our own engineers are the only escalation path. Document that explicitly so nobody files a ticket expecting upstream.

Scaling. If the Go binary is invoked per web request, we inherit process-spawn overhead, PHP-FPM worker occupancy during subprocess execution, and concurrency limits that are far tighter than the Go binary itself would suggest. The right long-term shape is a queue job with bounded concurrency, or a long-lived sidecar reached over HTTP/gRPC rather than a fork-per-call. Streamed output is convenient for CLI use and a liability under load; it must be bounded.

Failure modes to instrument. Binary missing on the target host; wrong OS/architecture; not executable (missing +x, noexec mount); non-zero exit code returned without surfacing stderr; blocking on a full stdout pipe buffer (the classic Symfony\Process deadlock); timeout not configured so a hung Go process pins an FPM worker; environment variables leaking secrets into the subprocess; orphaned child processes surviving a deploy or SIGTERM; drift between the Go binary version and the PHP code expecting it.

Ramp-up. Low — the API surface is deliberately small and the Artisan-command interface is familiar to any Laravel developer. The genuine learning curve is (a) Go toolchain and cross-compilation competence on the team, and (b) the artifact-delivery discipline required to keep binary versions aligned with application versions across environments. Those two, not the package, set the ramp-up cost.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator