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 Geoscope Laravel Package

netsells/laravel-geoscope

Laravel GeoScope adds Eloquent query scopes for geographic filtering, letting models search by latitude and longitude, calculate distances, and find records within a radius for location-based Laravel apps.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What changed in 2.0.2: A single line item — "Adds support for Mariadb." This is a patch release on the 2.0.x line, published 2020-12-23. Semver convention says patch = bug fix / additive compatibility, no public API break. The change is best read as a DB-dialect compatibility fix, not a new feature surface: the package presumably issues SQL, ships migrations, or introspects schema against a MySQL-family database, and previously either failed or degraded against MariaDB. That is a meaningful de-risking change for any team running MariaDB (very common on managed hosting, RDS-compatible providers, and Debian/Ubuntu LTS distros), and effectively a no-op for MySQL-only teams.

Architecture fit: The package follows standard Laravel conventions (implied by the release-note format and the Laravel/PHP framing) — Composer-installed, service-provider registered, config-publishable, migration-bearing. That means it slots into the framework's normal lifecycle rather than requiring bespoke wiring. The important architectural signal is the MariaDB support: it tells us the package has a database coupling with dialect-specific behavior. That is the single most consequential thing to size. Any Laravel package that needs a dialect patch is likely doing one or more of: raw SQL fragments, DB::statement DDL, JSON column operations, fulltext/MATCH ... AGAINST, REGEXP, INSERT ... ON DUPLICATE KEY UPDATE / upsert, LOCK IN SHARE MODE, or schema introspection via information_schema. Each of those has real MySQL↔MariaDB divergence, so "adds support" is a claim to verify per-version, not a blanket guarantee.

Integration feasibility: Low-to-moderate. Consumption is a composer require plus a config publish plus php artisan migrate. The real feasibility question is not install effort but the version matrix: PHP version, Laravel major, MySQL 5.7/8.0, and MariaDB 10.3/10.4/10.5/10.6/10.11 (with 10.4–10.6 the realistic LTS band as of this release). MariaDB is not a single target — JSON handling, CHECK constraint enforcement (ignored before 10.2.1, differently enforced later), RETURNING (10.5+), collation defaults (utf8mb4_general_ci on MariaDB vs utf8mb4_0900_ai_ci on MySQL 8), and ANALYZE/optimizer differences all shift by minor version. A patch release claiming MariaDB support almost certainly validated against a subset of that matrix.

Technical risk:

  • Verification risk (highest). A one-line changelog does not document a supported MariaDB version floor, a tested matrix, or which prior failures were fixed. We cannot tell whether 2.0.2 makes MariaDB "work" or "work for the common paths."
  • Silent divergence risk. Dialect bugs frequently produce wrong-shaped results rather than exceptions — collation-driven ordering differences, JSON_EXTRACT path/quoting differences, GROUP BY behavior under ONLY_FULL_GROUP_BY, date/time precision. These surface in production data, not in a green CI run.
  • Upgrade risk. We have no prior assessment and no diff against 2.0.1. The risk of an API break in a patch is low but nonzero (packages do ship silent behavior changes in patch releases); treat the changelog as a claim to confirm against the tag's diff.
  • Maintenance-signal risk. The only release we can see is dated December 2020. One patch nearly four years stale is a yellow flag on upstream cadence — relevant because MariaDB and Laravel both moved significantly after that date. This is the item most likely to kill the integration in a current-day Laravel upgrade cycle.
  • Blast-radius risk. If the package owns schema (its own tables/migrations), dialect support affects migration history, not just runtime queries. Rollback of a bad migration on MariaDB is materially harder than on MySQL.

Key questions:

  1. Which exact MariaDB versions are tested in CI, and is that matrix published?
  2. Is MariaDB support validated against the same Laravel majors as MySQL, or is it a secondary path?
  3. Does the package ship migrations/schema, or is it purely query-building over host-app tables?
  4. What SQL constructs does it rely on, and were any of them rewritten (vs. conditionally branched) for MariaDB? Conditionals mean two code paths to maintain.
  5. Is 2.0.1 → 2.0.2 behaviorally identical on MySQL, or does the dialect abstraction touch the MySQL path too?
  6. Has the package had releases since 2020-12-23, and is there an active maintainer? (This release alone cannot answer it.)
  7. Does it declare an explicit illuminate/database constraint, or does it float and risk resolution against unsupported Laravel versions?

Integration Approach

Stack fit: Good on shape, conditional on version. This is a conventional Laravel package — Composer, auto-discovery, publishable config and migrations — so it fits the framework's idioms without adapter code. The fit criterion that actually decides it is your database posture: if your fleet is MySQL 8, this release is inert and you should evaluate the package on its other merits. If you are on MariaDB (self-managed, RDS-compatible, or distro-packaged), 2.0.2 is the minimum acceptable version — you should not adopt 2.0.0/2.0.1 on MariaDB. If you run both engines across environments (MySQL in staging, MariaDB in prod, or vice versa), that mixed posture is the highest-risk configuration and needs to be eliminated or explicitly covered by CI before rollout.

Migration path:

  • Greenfield: pin ^2.0.2 with an explicit lower bound. Do not use ^2.0 — that admits 2.0.0/2.0.1, which predate the dialect fix. Publish config and migrations, run them against a MariaDB instance matching production, not a MySQL stand-in.
  • Brownfield (already on 2.0.0/2.0.1, MySQL-only): upgrade at leisure — the change should be a no-op. Still read the diff; the patch may have refactored shared query-building code.
  • Brownfield (already on 2.0.0/2.0.1, MariaDB, currently working by luck): prioritize the upgrade, but treat it as a behavior change. Diff query output (DB::listen / query log) for representative application flows before and after, and compare result sets, not just for exceptions.
  • Brownfield (migrating MySQL → MariaDB): sequence the package upgrade before the engine migration, so the engine cutover has one fewer variable. Doing both at once makes any failure ambiguous.

Compatibility: Establish and record a four-way matrix before commitment: PHP version × Laravel major × engine × engine version. Two specific things to check in composer.json: the illuminate/* constraint (does it tolerate the Laravel version you run or plan to run?) and any ext-* requirements (e.g. ext-pdo_mysql, ext-json). Also confirm the MariaDB version floor — if the package uses RETURNING or JSON table functions, that silently pins you to 10.5+/10.2+ respectively, which will bite on older managed instances.

Sequencing:

  1. Confirm the tag's actual diff and composer.json constraints (hours).
  2. Stand up a MariaDB container at your production version in local/CI; add it to the test matrix alongside MySQL. This is the single highest-value step and it is cheap.
  3. Run the package's own test suite plus a smoke suite of your application's read/write paths against that container.
  4. Diff generated SQL and result sets vs. current behavior on representative flows (list/index queries, JSON field reads, bulk upserts, paginated joins).
  5. Rehearse migrations forward and rollback on a restored production-sized dump.
  6. Deploy to staging on the production engine/version; soak one release cycle.
  7. Production rollout behind a config toggle if the package's behavior is switchable; otherwise standard phased deploy.

Operational Impact

Maintenance: Low steady-state cost if the package is stable and the maintainer is active; the concerning evidence here is cadence — a single patch in December 2020 with no visible later releases in the supplied data. A dependency that has not shipped since 2020 becomes an increasing tax as Laravel majors move (Laravel 9's PHP 8 requirement, Symfony 6, PHP 8.2/8.3 deprecations). Budget for the possibility of forking or replacing the package within two upgrade cycles. Also budget for the matrix tax: supporting MariaDB means your CI now runs a second engine, which is a permanent (if modest) increase in pipeline minutes and flake surface.

Support: Upstream support quality is the open variable. A one-line changelog for a dialect-support claim suggests thin release documentation — you will be reading source to answer "is this supported on 10.6?" Community channels (GitHub issues) are the likely primary support path; there is no evidence of commercial backing. Internally, designate one engineer as the owner of this dependency so dialect questions have a routing target. If the package is load-bearing (payments, entitlements, audit), the absence of an SLA is a real gap requiring a documented internal fallback.

Scaling: The dialect change itself is scale-neutral — it does not alter query plans, indexing, or connection handling. Scale risks come from the package's inherent DB access pattern: chatty per-row queries, unbounded result sets, or migrations that lock large tables. Two MariaDB-specific scaling notes worth capturing: (a) collation defaults differ from MySQL 8, so index usage on utf8mb4 string columns can differ — verify EXPLAIN on your hottest queries after cutover rather than assuming plan parity; (b) if you run Galera/ClusterControl, LOCK TABLES, SELECT ... FOR UPDATE semantics, and AUTO_INCREMENT behavior diverge enough that any package relying on them needs explicit review. Connection pooling and read-replica routing live in your infra layer, not the package; a package that issues writes inside read transactions would be a problem there — worth a quick grep.

Failure modes:

  • Hard failure: migration aborts on unsupported DDL (e.g. CHECK constraints, ALGORITHM=INSTANT), leaving a partially applied schema. Mitigate with rehearsed rollback on a restored dump.
  • Silent wrongness: JSON path extraction, collation-dependent ORDER BY, or GROUP BY returning different rows on MariaDB. No exception, just incorrect output downstream. Mitigate with parity diffing in step 4 of sequencing.
  • Version-floor surprise: works on your laptop's 10.11, fails on a managed 10.3 instance. Mitigate by pinning the CI container to the production version.
  • Ecosystem drift: package resolves against Laravel N but breaks on N+1, discovered at upgrade time under schedule pressure. Mitigate by tracking the release cadence and setting a review trigger if no release appears within ~12 months.
  • Mixed-engine drift: staging on MySQL, prod on MariaDB, so dialect bugs are structurally invisible pre-production. Mitigate by aligning engines across environments.

Ramp-up: Low for consumers — standard Composer + publish + migrate flow, a competent Laravel engineer is productive in well under a day. The non-obvious learning is the dialect layer: engineers need to know which MariaDB version is supported, that MySQL and MariaDB are not interchangeable for JSON/collation/DDL, and that this package's MariaDB path is validated for a specific subset. Write that into the runbook. For anyone who has to modify or fork the package, ramp-up is materially higher — dialect-branching code requires reading both paths and testing against both engines, so treat internal contribution as a multi-day effort, not an afternoon.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
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