gonzaloalonsod/afip-bundle
A PHP bundle that simplifies integration with Argentina's AFIP web services. It provides helpers for authentication and electronic invoicing workflows, reducing boilerplate when communicating with AFIP's SOAP APIs and automating tax and billing operations.
Architecture fit. The release confirms this is not a Laravel-only package: adding Symfony 5 support implies the codebase either has (or is growing) a framework-agnostic core with per-framework adapters (a Laravel service provider/facade plus a Symfony bundle/DI extension). That is architecturally healthy, but it doubles the surface area we would own — two bootstrapping paths, two config-loading models, two test matrices. Before committing, we need to confirm whether Symfony support is a first-class adapter or a thin compatibility shim.
Integration feasibility. Two changes land in this release and only one is a feature:
gonzaloalonsod/* vs gonzakpo/*), and in most PHP packages a matching namespace change. Every use statement, every composer require line, every composer.json constraint, and every published config file reference in our codebase and in our own dependents is a candidate for breakage. This is the dominant migration cost, not Symfony 5.Technical risk.
gonzakpo/* is abandoned, still patched, or aliased via a replace clause. Unanswered, this is a supply-chain question, not a convenience question.Key questions.
gonzaloalonsod/* replace/provide gonzakpo/*, or are they parallel packages that can be co-installed?gonzakpo/* marked abandoned on Packagist with this package as the suggested replacement?gonzakpo release and v1.2 beyond the rename? Are bug fixes and security patches carried forward?Stack fit. Assume this package is a peripheral dependency (payment, locale, media, or integration SDK class of library) rather than core domain infrastructure — anything touching auth, queueing, or persistence should not be adopted on this evidence base. If it is core, the bar is higher than anything v1.2 establishes. For a peripheral package on a Laravel 9 or Symfony 5.4 LTS application, the functional fit is likely fine; for a Laravel 11 application, expect to be pinned to an older framework line or to wait.
Migration path.
replace clause exists — this single fact determines whether the migration is a one-line constraint bump or a full namespace codemod.gonzakpo/* to its current known-good version on the mainline so ongoing work is unaffected while we evaluate.composer.json, run composer update --with-dependencies for the single package, and let Composer surface conflicts rather than discovering them at runtime.sed/PHPStan pass over use statements, config files, and any published vendor config, followed by composer dump-autoload -o.Compatibility. Two things to verify explicitly: (a) that the old and new package cannot both be installed — duplicate class definitions from parallel packages produce confusing, intermittent fatal errors; (b) that our PHP version satisfies the new constraint, since framework-version changes often come with a PHP floor bump. Also check any Laravel package-discovery entries in composer.json — a renamed package usually means a renamed provider class in extra.laravel.providers, and a stale entry fails at boot.
Sequencing. Do the vendor rename as an isolated, no-functional-change PR before consuming anything else from v1.2. Bundling a rename with a feature adoption makes rollback ambiguous. Then evaluate Symfony 5 support only if we actually run Symfony — for a Laravel-only estate, that entire half of the release is dead weight for us.
Maintenance. Single-maintainer packages with a vendor rename are the highest-churn category in our dependency graph. Budget for the possibility that v1.3 never arrives. Practically: keep the package behind a thin internal adapter/wrapper so a future swap is a single-file change rather than a repo-wide codemod. That wrapper is cheap now and expensive to retrofit after the package is called from forty places.
Support. No SLA, no commercial backing, no stated security disclosure process. Community issues only. For a peripheral package that is acceptable; for anything in a payment or auth path it is not. Our own on-call runbook needs to name an owner for this dependency and a documented fallback.
Scaling. The library itself is unlikely to be a throughput bottleneck. The scaling cost is organisational: two framework adapters means two upgrade treadmills, and we inherit the slower one. Every Laravel major we adopt will need a compatible release we do not control, and the Symfony 5 target tells us the maintainer's upgrade cadence lags the ecosystem.
Failure modes.
gonzakpo/* and gonzaloalonsod/* remain installable and receive divergent patches; different services end up on different implementations of the same API. Mitigation: enforce a single vendor via a shared constraint or a CI check.extra.laravel.providers not updated, application fails at boot. Mitigation: smoke-boot every service in CI, not just unit tests.Ramp-up. Low for a Laravel team — the integration is a Composer constraint, a namespace codemod, and a config publish. The real ramp-up is governance: one named owner, a documented upgrade path, and a decision recorded on whether the package is strategic (accept the risk) or tolerated (wrap it and plan the exit). At the current evidence level — three words of release notes and no migration guide — default to tolerated.
How can I help you explore Laravel packages today?