salt/core
Core package for Salt, providing shared foundations and utilities for Laravel/PHP applications. Use it as the base layer for Salt-powered projects, with Composer-ready integration and a lightweight, framework-friendly structure.
What this package actually is. The description — "core logic, templates and components used by Salt web applications" — is the key signal. This is not a general-purpose library with an external consumer base; it is the shared kernel of a single vendor's application family. It most likely contains base service providers, Blade view components, config stubs, and possibly migrations that a proprietary "Salt" application skeleton depends on. That framing should drive the entire evaluation: the correct question is not "is this a good package?" but "are we, or will we be, a Salt customer?"
What changed in 1.1.2. A single additive change: a routeGroup attribute on the MenuItem class, added explicitly to "improve downstream app menu item indicator functionality." Three things follow from that one line, and all three matter more than the feature:
MenuItem implies a menu/navigation component layer with rendering semantics. That is presentation-layer code that other applications' templates consume — the highest-coupling, hardest-to-fork category of shared code, and the least likely to be covered by tests we can see.Architecture fit. Poor for a greenfield or vendor-neutral Laravel codebase. A package whose value proposition is "the internals our apps share" typically assumes conventions, directory layouts, and sibling packages (salt/*) that are not published. Adopting it standalone risks dragging in an unpublished dependency graph or requiring you to reconstruct the parent skeleton. Fit is only plausible if the decision has already been made to build on the Salt platform, in which case this package is a consequence of that decision rather than a choice in itself.
Integration feasibility. Mechanically simple, organizationally hard. Composer installation is presumably trivial. Everything around it is not:
NOASSERTION means the license could not be mapped to a recognized SPDX identifier — custom license, missing file, or non-standard notice. A version bump does not resolve this. Until legal has read the actual LICENSE file, commercial use is an open question, and there is no community precedent to lean on.1.1.1 → 1.1.2 tag suggest conventional-commit tooling and at least basic release hygiene — a modest positive, and the first hard evidence of any process discipline.illuminate/* and PHP 8.3/8.4 constraints were modernized. Check composer.json before anything else.Technical risk. High, and concentrated in four places:
composer.lock and block framework upgrades across the estate.MenuItem change shows the package owns presentation behavior consumed by other apps' templates — failures surface in rendered output, not at install time.routeGroup is additive and low-risk in itself, but it demonstrates that the public surface of shared components expands without a published deprecation policy, changelog discipline beyond auto-generated notes, or API documentation.Key questions to resolve before any technical work.
LICENSE file say, and has legal cleared it?salt/core the current artifact, or has it been superseded by a renamed/private package? Check the salthq org for successors and siblings.composer.json require and repositories blocks.composer.json, and did 1.1.2 update them? Is there CI proving the declared matrix?MenuItem live, what renders it, and is routeGroup documented anywhere? With no docs, the API contract is the source. Read it before building on it.Stack fit. Only pursue if the answer to the "are we a Salt customer" question is yes. In that case this package is not optional — it is part of the platform contract, and the work shifts from "should we adopt" to "how do we contain it." If the answer is no, the recommendation is to stop here; the effort is better spent on maintained alternatives or first-party code.
Migration path (conditional on a positive fit decision). There is no meaningful migration path from a mainstream Laravel baseline into this package, because it is an internal kernel rather than a feature library. The realistic paths are:
MenuItem change is a useful probe of how much surface area that UI layer really represents.Compatibility work. Pin to an exact version — 1.1.2 if the compatibility spike passes — and commit composer.lock. Diff its illuminate/* and php constraints against our target framework version before writing application code; do not assume the patch release modernized them. Run composer why-not to detect conflicts early. Verify auto-discovery doesn't register providers we don't want. Read the MenuItem class and its render path in vendor/ to understand the new routeGroup attribute's effect on any menu markup we produce.
Sequencing.
composer.json — dependency graph, framework constraints, autoload shape — plus the tag history to establish real cadence. This is an hour of work and answers most of the technical questions above.MenuItem, run the test suite if one exists.Maintenance. Assume we own it. The correct reading of 1.1.2 is not "the vendor is maintaining this for us" but "the vendor is maintaining this for itself, on its own schedule." Realistic steady-state cost is a named maintainer tracking Laravel release cadence, plus a compatibility patch each framework major — and, given the MenuItem change, occasional reconciliation of shared UI behavior. Budget this explicitly. The mitigating factor is scope: "templates and components" suggests a bounded surface area, so a fork may be genuinely cheap to carry.
Support. No community, no Stack Overflow corpus, no third-party tutorials, no dependents to observe, and no documentation for the newly added attribute. Support exists only if there is a commercial agreement with Salt. Absent that, the effective support channel is the person who originally picked the package.
Scaling. The package is unlikely to be the scaling constraint — Blade templates and view components are not throughput bottlenecks in a well-built Laravel app. The scaling risk is organizational: the more application surface it underpins, the harder the eventual exit becomes. The 1.1.2 change makes this concrete: menu rendering is user-visible chrome present in every application, so a shared component defect has estate-wide blast radius. Treat depth of dependency as the risk metric, not request volume.
Failure modes to plan for.
routeGroup on MenuItem shows the mechanism by which this happens.Ramp-up. Expect high cost per new engineer and near-zero external learning resources. No documentation, no examples, no community — the routeGroup attribute itself ships with a one-line changelog entry and no usage guidance. Onboarding must run through internal documentation you write yourself, plus a walkthrough of the source in vendor/. Add a half-day to any engineer's onboarding if they'll touch this layer, and require the maintainer to write a short "what this does and why we depend on it" note within the first month of adoption.
Recommendation. Unchanged in substance. Do not adopt salt/core as a foundational dependency unless we are already contractually committed to the Salt platform. Release 1.1.2 is mildly positive — it demonstrates the repository is alive and that releases are tagged and changelogged — but it is one additive attribute on a UI class, driven by Salt's own downstream needs, with the license question, adoption gap, and support commitment all still open. The cost of ownership lands entirely on us with no corresponding ecosystem benefit. If a Salt relationship exists, proceed — but treat the package as vendored third-party code with a named internal owner, a mirrored source, and a pinned version. If no such relationship exists, close this out and redirect the evaluation effort.
How can I help you explore Laravel packages today?