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

Oai Bundle Laravel Package

subugoe/oai-bundle

Symfony bundle that adds an OAI-PMH 2.0 endpoint to your application, exposing repository records as Dublin Core and other metadata formats for harvesting by aggregators and discovery services. Includes configurable sets, resumption tokens, and standard error responses.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Despite the "Laravel/PHP package" framing, subugoe/oai-bundle is a Symfony bundle, not a Laravel package. It is developed by the Göttingen State and University Library (SUB) and implements an OAI-PMH 2.0 data-provider service — the protocol used by digital libraries and repositories to expose metadata for harvesting (e.g., by aggregators like BASE, OpenAIRE, Europeana). It is designed to be wired into a Symfony application via a bundle provider and service container; it is not a Laravel service provider and will not register itself in a Laravel app without a compatibility shim. There is no published Laravel integration. If the target is a Laravel codebase, treat this as a Symfony component to be extracted or bridged, not a drop-in dependency.

Integration feasibility. The bundle depends on Symfony HTTP kernel, routing, event dispatching, and dependency injection abstractions. In a Laravel app you inherit illuminate/* rather than symfony/* internals; the shared components (symfony/http-foundation, symfony/routing) overlap only partially. Feasible paths are: (a) run the OAI endpoint as a separate Symfony microservice and reverse-proxy from Laravel; (b) pull the OAI-PMH response-building classes directly and adapter-wrap them around Laravel controllers; or (c) accept the bundle wholesale in a Symfony-hosted service. Each has meaningfully different effort. The repository advertises "OAI Service" but the README/API surface should be reviewed before committing to a path.

Technical risk.

  • License: AGPL-3.0 is the dominant risk. OAI-PMH endpoints are network services, so AGPL §13 obliges disclosure of the entire application that serves the endpoint to network users if you distribute or offer it as a service. For a commercial or SaaS product this is often a hard blocker. Confirm with legal before PoC.
  • Maturity: 1 star, 0 dependents, single release (2023-04-03), score 0.105 — this is effectively an internal library that has been open-sourced, not a community-maintained package. Bus factor is low; you inherit maintenance.
  • Staleness: last release 2023-04-03 means it predates current Symfony LTS lines; check PHP and Symfony version constraints for security-support gaps.
  • Protocol correctness: OAI-PMH has strict conformance requirements (six verbs, error codes, resumption tokens, date granularity). A low-adoption implementation may not be validated against the OAI-PMH validator or tested against major harvesters.

Key questions.

  1. Which Symfony versions and PHP versions are actually supported by the current composer.json? Does the installed constraint set still receive security patches?
  2. Is the OAI-PMH implementation conformance-tested against the official OAI-PMH 2.0 validator and real harvesters (BASE, OpenAIRE, Europeana)?
  3. What metadata formats are supported (oai_dc minimum; MARC, DNB, METS, ESE, etc.)? Does it ship with the format you actually need, or is a custom serializer required?
  4. Can legal accept AGPL-3.0 for this service, or must the code be reimplemented under a permissive license?
  5. What is the upstream maintenance posture — is SUB Göttingen committing to fix security issues, and on what SLA?

Integration Approach

Stack fit. The honest framing is a mismatch. This is a Symfony-native service, and the target is (per the brief) a Laravel/PHP stack. The TPM decision is therefore not "install the package" but "choose the integration shape." Ranked by cost:

  1. Sidecar Symfony service (recommended for time-to-value): deploy the bundle in a minimal Symfony application that connects to the same datastore; expose /oai; front it from the Laravel app or at the edge. Preserves upstream code, isolates Symfony dependency tree, keeps OAI protocol handling where the package expects it. Cost is bounded to one service, not an entire framework migration.
  2. Adapters around core classes (recommended for long-term ownership): vendor the response-building and verb-handling code into the Laravel app, replace Symfony-specific coupling (HTTP kernel, event dispatch, DI) with Laravel equivalents (controllers, middleware, service container). This eliminates the dependency risk and AGPL surface only if the license question is resolved — vendoring AGPL code increases copyleft exposure, so legal must clear it first.
  3. Full Symfony adoption: only rational if the broader product was already Symfony or there is an organizational standard. Not a TPM-driven outcome for a single OAI endpoint.

Migration path. Start with the sidecar (path 1) to prove protocol conformance and harvester acceptance quickly, behind a reverse proxy and a feature flag. Once the endpoint is validated, decide whether to keep the sidecar as a stable internal service or invest in path 2 to remove framework coupling. Do not attempt a rewrite before demonstrating that real harvesters successfully ingest your metadata — conformance, not framework purity, is the actual risk.

Compatibility. Validate against OAI-PMH 2.0 spec and the community validator; test against at least one aggregator (BASE is a practical first target). Publish a oai_dc baseline and add formats incrementally. Ensure the Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, and GetRecord verbs all return schema-valid XML. Watch for resumption-token behavior on large datasets — this is the most common integration failure.

Sequencing.

  1. Legal/licence review (AGPL) — gate for everything else.
  2. Conformance spike: stand up the bundle in a throwaway Symfony app against a sample of your repository data; run the OAI-PMH validator; harvest with BASE.
  3. Data mapping: define the metadata schema you will expose and the mapping from your domain model.
  4. Integration: sidecar service + reverse proxy + auth/rate-limiting at the edge.
  5. Monitoring & runbooks before exposing publicly.
  6. Decide on path 2 (ownership/rewrite) only after the service proves durable and conformance-tested.

Operational Impact

Maintenance. Assume you are the maintainer. A single 2023 release with 0 dependents means no upstream fixes will arrive quickly, if at all. Budget for: tracking Symfony/PHP security advisories against a pinned old version, reading upstream code to understand behavior, and owning any patches. Plan to fork under a controlled repository so you can apply fixes and pin versions deterministically. Because the license is AGPL, a fork does not remove the copyleft—only the internal-operations risk if you are not exposing the endpoint publicly through the forked code.

Support. Community support is effectively absent: no issue activity, no vendor SLA, and a single academic maintainer of record. Internal knowledge transfer must be explicit — documentation, runbooks, and a named owner on the team. This is an academic open-source project; treat it as reference implementation, not supported vendor software.

Scaling. OAI-PMH is a pull protocol: harvesters will issue frequent ListRecords/ListIdentifiers requests, often with resumption tokens. The endpoint must handle large paginated result sets efficiently, ideally with indexed cursor-based queries rather than offset pagination. A sidecar service should be independently scalable and rate-limited at the edge so harvester traffic cannot degrade your primary application. Caching of Identify and ListMetadataFormats is standard and cheap; caching harvest responses is often impractical because harvesters expect current data. Watch datastore pressure from repeated full-list traversals.

Failure modes.

  • Protocol non-conformance — invalid XML, malformed resumption tokens, or missing required fields cause harvesters to silently drop the repository. This is the highest-impact failure and the hardest to detect; it needs contract tests and periodic end-to-end harvest from a real aggregator.
  • Aggregator delisting — if a harvester rejects you once, recovery may require re-submission and validation.
  • Stale dependency risk — an unpatched Symfony/PHP transitive dependency becomes exploitable while you wait for an upstream fix that won't come.
  • AGPL exposure — an endpoint serving modified AGPL code to network users may trigger disclosure obligations; a licence audit event here is a business risk, not a technical one.
  • Upstream abandonment — already the baseline condition; the failure mode is discovering this during an incident rather than at evaluation.

Ramp-up. Engineering ramp-up is moderate-to-high because it is a Symfony codebase and an OAI-PMH domain. A Laravel-only engineer will need to understand two unfamiliar areas at once: Symfony bundle wiring and OAI-PMH semantics. Conformance tooling (validators, harvester simulators) is available and reduces the protocol learning curve. A realistic estimate: 1–2 weeks for a strong PHP engineer to get a conformant endpoint running against sample data, plus legal review time (unbounded) before any external exposure, and ongoing part-time ownership for dependency and conformance maintenance.

Bottom line for the TPM: the package is a viable reference implementation of an OAI-PMH endpoint, not a supported dependency. Use it to get conformantly running fast in a sidecar, then decide whether to own the code. Resolve the AGPL question before any engineering investment — it is the single decision that determines whether the rest of this assessment is relevant.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package