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

Carbon Bundle Laravel Package

lightsuner/carbon-bundle

LightSuner Carbon Bundle integrates Carbon, the popular PHP DateTime extension, into Symfony applications. It provides Carbon services, Twig filters, Doctrine types, and form helpers, making date and time handling cleaner, more expressive, and consistent across your Symfony projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — Poor (fundamental mismatch). lightsuner/carbon-bundle is a Symfony 2 bundle, not a Laravel package. Bundles are a Symfony-specific distribution artifact: they rely on Symfony\Component\HttpKernel\Bundle\Bundle, AppKernel registration, and Symfony's DependencyInjection extension conventions (Resources/config/services.yml, Configuration classes, compiler passes). Laravel has no bundle system, no AppKernel, and no DependencyInjection component in that form — it uses service providers, facades, and its own container. There is no supported path to composer require this into a Laravel app and have it do anything.

Underlying capability is already covered natively. The package's only real value is wiring the Carbon date/time library into a Symfony container. Laravel ships Carbon as a first-party transitive dependency (nesbot/carbon via illuminate/support), exposes it as Illuminate\Support\Carbon, and offers first-class helpers (now(), Carbon::parse(), casts on Eloquent models, diffForHumans(), timezone config via app.timezone). A TPM should treat the capability as already satisfied and the package as a Symfony-only delivery mechanism for it.

Integration feasibility — Not feasible without a rewrite. Any adoption would mean re-implementing the bundle's ~trivial service definitions as a Laravel service provider, at which point you have written your own package and gained nothing from the dependency. The bundle's own configuration surface (default locale/timezone) duplicates Laravel's existing config/app.php keys.

Technical risk — High, and asymmetric. Adopting a dead Symfony 2 artifact into a Laravel codebase imports:

  • EOL platform: Symfony 2 reached end of life in 2018/2019; no security patches.
  • Stale release: last tagged 2018-11-30, ~7 years old; likely pins or assumes PHP 5.6/7.0-era constraints that conflict with modern Laravel (PHP 8.2+).
  • Zero dependents: no downstream validation, no community bug reports, no de facto production hardening.
  • Single-maintainer, low-signal: 15 stars, opportunity score 2.17, overall score 0.325 — the metrics themselves argue against a dependency review pass.
  • Supply-chain optics: adding an unnecessary, unmaintained third-party package to satisfy a need the framework already meets is a net negative in any security/architecture review.

Score interpretation for a TPM. Treat 0.325 as "do not adopt." The opportunity score (2.17) reflects latent utility of the Carbon concept, not of this package — the opportunity belongs to nesbot/carbon, which Laravel already consumes.

Key questions to close out the evaluation:

  1. What concrete requirement is driving this — locale-aware formatting, timezone handling, test-time freezing, or immutable dates? Each has a native Laravel/Carbon answer.
  2. Is there a legacy Symfony 2 service still in the estate that this bundle supports? If yes, that service belongs on a modernization roadmap, not in a new Laravel build.
  3. Does any current dependency already pull nesbot/carbon at a version that satisfies the requirement? (Almost certainly yes via illuminate/support.)
  4. If a version pin or constraint conflict exists, is the fix a Composer constraint resolution rather than a new package?
  5. Who owns the "we added an EOL Symfony bundle to a Laravel app" decision, and what is the exception rationale?

Integration Approach

Recommended stack fit: do not integrate; substitute the native capability. The correct "integration" is a documentation and standards decision, not a code change.

Need Symfony 2 bundle answer Laravel-native answer
Carbon available in container carbon service from bundle Illuminate\Support\Carbon / Carbon\Carbon via illuminate/support (already installed)
Locale-aware formatting Bundle config app.locale, Carbon::setLocale()
Default timezone Bundle config app.timezone in config/app.php
Twig helper Twig extension in bundle Blade-agnostic; format in accessors/casts
Deterministic tests — Carbon::setTestNow() in test setup

Migration path. Not applicable in the forward direction. For any legacy Symfony 2 service that does use this bundle, the migration path is Symfony 2 → Symfony 5/6 (where Carbon is standard via the framework bundle and no third-party bundle is needed) or a lift-and-shift to Laravel with the bundle dropped entirely. In both cases the bundle is deleted, not ported.

Compatibility. Assume worst case until proven otherwise: Symfony 2 service-definition schema, likely symfony/symfony: ^2.x constraints, and PHP versions incompatible with current Laravel (10/11/12). Composer will almost certainly refuse to resolve it alongside laravel/framework — and if it does resolve, that is a warning sign about a permissive constraint, not a green light.

Sequencing (if a stakeholder insists on exploring it).

  1. Requirement capture — write down the exact date/time behavior needed, with test cases.
  2. Native spike (1–2 days) — implement against Illuminate\Support\Carbon; almost always closes the requirement.
  3. Gap analysis — only if step 2 leaves a genuine gap, evaluate nesbot/carbon directly at a current major version.
  4. Exception review — if someone still wants the bundle, require a written architecture exception with a named owner and an exit date. Expect it to be denied.
  5. Legacy track (parallel, separate) — inventory Symfony 2 services using the bundle and slot them into the platform modernization backlog.

Do not create a shim service provider to emulate the bundle. That converts a trivial "no" into a maintained internal fork of dead code.

Operational Impact

Maintenance — negative. Every dependency carries a carrying cost; this one carries cost with no offsetting capability. There is no upstream to patch, no release cadence to track, and no maintainer SLA. Any internal fix becomes a fork, which means owning a Symfony 2 bundle and a Laravel app.

Support. No vendor, no active maintainer signal, 0 dependents, no issue-tracker momentum. Internal escalation path is "whoever wrote the shim." This is a support liability disproportionate to a package whose entire function is registering one service.

Scaling. Irrelevant at the infrastructure layer (it is a container wiring artifact, not a runtime bottleneck), but scaling teams is the real concern: every new engineer must learn that date handling in this codebase has an exotic, undocumented third-party origin. Cognitive load is the cost, and it is paid repeatedly.

Failure modes.

  • Composer resolution failure on Laravel upgrades — surfaces at the worst possible time (framework upgrade PR), blocking the whole upgrade.
  • Silent no-op: bundle installed but never registered (Laravel ignores it), giving false confidence that configuration is applied.
  • Container/facade confusion: engineers calling a nonexistent carbon service or expecting bundle config keys that Laravel never reads.
  • Timezone/locale drift: two configuration sources (config/app.php and a stale bundle config) producing inconsistent formatting across environments.
  • Security review block: an EOL Symfony 2 dependency in a modern Laravel app is a predictable audit finding; expect rework mid-delivery.
  • PHP minor-version breakage: 2018-era code meeting PHP 8.x deprecations.

Ramp-up. Near-zero learning value and non-trivial unlearning cost. A new engineer spending an hour understanding this package has spent an hour on something that will be removed. Contrast with Illuminate\Support\Carbon, which is documented, ubiquitous in Laravel codebases, and transferable knowledge.

Recommendation. Reject. Close the evaluation with a one-line decision record: "Not applicable — Symfony 2 bundle; capability already provided by illuminate/support (Illuminate\Support\Carbon)." Redirect the effort to a short internal standard on date/time handling (always Illuminate\Support\Carbon, app.timezone as single source of truth, Carbon::setTestNow() in tests). If a legacy Symfony 2 consumer exists, log it as a modernization item with an owner and target quarter — the bundle's removal is the deliverable there, not its adoption here.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource