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

Rox Laravel Package

rollout/rox

rollout/rox is a Laravel package for managing feature rollouts and toggles. It helps you enable or disable features for specific users, segments, or rollout percentages, keeping release control in configuration and code.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. rollout/rox is the PHP client SDK for the Rox/CloudBees Rollout feature-flag and remote-configuration service. It is a runtime library, not a Laravel package: there is no service provider, no facade, no publishable config, and no Blade/Vite integration. Architecturally it occupies the same layer as a feature-flag abstraction, which in a Laravel codebase is a cross-cutting concern that should sit behind a container-bound contract rather than be called statically from controllers and jobs. The SDK's model — register an environment key and a per-request user/entity context at bootstrap, then evaluate flags synchronously against a locally cached flag set — maps cleanly onto Laravel's request lifecycle for classic PHP-FPM, but not onto long-lived workers (Octane/Swoole/RoadRunner) or queue consumers, where the "current entity" is mutable global state. Any adoption therefore requires a thin adapter layer we own, not direct SDK calls in application code.

Integration feasibility. Technically straightforward for a senior engineer: composer require, a service provider that boots Rox with credentials pulled from config/env, a middleware that seeds the entity context per request, and a wrapper class exposing isEnabled(string $flag, bool $default). The real cost is not the happy path but the governance around it: default values, kill-switch semantics, and context lifecycle. The critical feasibility gate is legal, not technical — the repo metadata reports NOASSERTION for license, meaning GitHub could not identify an SPDX license. We cannot ship that to production without written clarification from the vendor; treat this as a hard blocker and start the legal thread on day one.

Technical risk.

  • Adoption signal is effectively zero. 0 stars, 0 dependents, and a single release in January 2024 indicate no observable third-party production validation. That does not mean the code is bad — vendor SDKs are often consumed privately — but it means we are among the first public users and should expect to debug our own integration.
  • Vendor and lifecycle risk. Rollout was absorbed into CloudBees and the Rox-branded SDKs are effectively in maintenance while the portfolio consolidates around CloudBees Feature Management. A forced migration within 12–24 months is a realistic scenario, and the PHP SDK is the least-invested surface in most feature-flag vendors' portfolios.
  • Runtime coupling. Flag evaluation depends on a fetched flag payload cached locally. Cold start, cache-miss latency, network egress, and behavior under partial connectivity all need explicit test coverage and an agreed fail-open/fail-closed policy that the application owns.
  • State leakage. In Octane or any long-lived worker, an entity context that is not reset per request can serve one user's targeting decisions to another. This is the highest-severity defect class for this integration and must be covered by a regression test.

Key questions. What is the SPDX license, and does it survive legal review? Is the vendor contract and roadmap such that this SDK is supported through our planning horizon? Do we need experimentation and segmentation, or only static on/off flags — because if the latter, Laravel Pennant is first-party, free, and already in the framework? Which runtimes must evaluate flags (FPM, Octane, queue, scheduler, CLI)? What is the acceptable p99 added latency per request? Who owns the flag inventory and the retirement of stale flags? What is the exit cost if Rox is sunset?

Integration Approach

Stack fit. Composer-installable PHP with no framework coupling, so it will install into a Laravel 9/10/11 application, but manual registration in AppServiceProvider (or a dedicated provider) is required. Pin the dependency to an exact version rather than a caret range given the maintenance profile, and add it to the SBOM and license-scanning gate. Verify PHP constraint compatibility against the platform's pinned minor version before committing.

Migration path. Treat this as a capability introduction, not a package install.

  1. Define an internal FeatureFlags contract with a NullDriver default so application code never references the vendor namespace.
  2. Implement a RoxDriver adapter behind that contract; keep the SDK confined to one directory.
  3. Backfill existing hard-coded conditions into the abstraction using the null driver, proving the seam before any vendor traffic flows.
  4. Enable Rox for non-critical flags in staging, then a production canary on a low-blast-radius flag.
  5. Promote to critical flags only after the runbook, defaults, and kill-switch policy are documented and rehearsed.

Compatibility. The abstraction is the compatibility strategy — if Rox is deprecated or the license blocks us, swapping to Pennant, Unleash, Flagsmith, or GrowthBook costs one adapter class rather than an application-wide refactor. Keep the SDK out of Blade templates and out of domain/service classes entirely. Confirm behavior under php artisan config:cache and route:cache, since SDK bootstrap that reads env() at runtime breaks once config is cached; all credentials must flow through config/*.php.

Sequencing. License/legal clearance and vendor roadmap confirmation in parallel with the spike. Spike and adapter in sprint one; tests including network-fault injection and a fake flag client in sprint one to two; staging rollout and observability in sprint two; production canary in sprint three. Do not start the spike on a critical flag path.

Operational Impact

Maintenance. We own the wrapper permanently, even if the vendor does not update the SDK. Expect infrequent upstream releases and no guarantee of timely PHP minor-version support; schedule a quarterly review of the dependency against new PHP releases and a documented "vendor abandoned" trigger that starts the adapter swap.

Support. With 0 stars and 0 dependents there is no community to lean on and no evidence of an active public issue triage process. The only escalation path is the commercial CloudBees relationship, if one exists. Name an internal owner and record the vendor contact in the service catalog; otherwise a flag-related incident has no external backstop.

Scaling. Evaluation must be local and in-memory — no network call on the request path — so the scaling question is flag-payload size, per-worker memory under Octane, and refresh cadence against the vendor's CDN or API rate limits. At fleet scale, stagger refreshes and confirm whether flag distribution is edge-cached or per-instance. If targeting is multi-tenant, validate that segmentation rules do not require shipping tenant data to the vendor beyond the entity identifier.

Failure modes. Enumerate and test: SDK init failure at boot (must degrade to defaults, not 500), stale or expired flag cache, malformed payload, network partition, clock skew affecting time-based targeting, cross-request context leakage under Octane, queue workers lacking an entity context, and config-cache interaction at deploy time. Each needs a defined application-level default and an alert. The most dangerous mode is not an outage — it is silently serving default values while operators believe a flag is live, which argues for a metric comparing evaluated flags against expected state.

Ramp-up. The SDK API surface is small; a mid-level engineer can be productive in a day. The genuine ramp-up cost is organizational: flag naming conventions, default-value discipline, stale-flag cleanup, and kill-switch authority. Budget roughly one engineer-sprint for the adapter, tests, and runbook, plus legal review time for the license, and treat the low adoption score (0.24) as a signal to fund an exit path from the outset rather than as a reason to reject the capability outright.

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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect