liberu-genealogy/php-gedcom
A PHP library for reading, writing, and manipulating GEDCOM genealogy files. It offers an object-oriented API for parsing individuals, families, events, and records, simplifying import and export of family-tree data in Laravel or any PHP application.
Baseline note: No prior assessment existed for this package; this is the first formal evaluation and it reflects v4.2.0 as the reference version.
Architecture fit
liberu-genealogy/php-gedcom is a domain-specific parser/serializer for GEDCOM and now GEDCOM-X. In a Laravel codebase it is a library-layer dependency, not an application framework concern — it should sit behind an adapter/service class in our domain layer rather than being called directly from controllers or Eloquent models._UID handling across all record types with GEDCOM-X export. The UID work is the more architecturally significant of the two, because stable record identity is what makes idempotent import/re-import, deduplication, and cross-system reconciliation tractable.Integration feasibility
JsonResource responses if we expose it via API, which reduces bespoke serialization work.Technical risk
@Copilot, including one still marked [WIP]. A first-time automated contributor landing a cross-cutting "all record types" change is a review-depth risk: broad surface area, thin provenance. Assume human review was light until we verify otherwise._UID custom tags differently; a bulk addition can silently change round-trip fidelity (parse → emit → parse).[WIP]-labelled PR shipping in a tagged minor version signals weak release gating. Expect behavioural changes in the mapping layer in future patch releases.Key questions
_UID values preserved verbatim on round-trip, or normalised/regenerated?Stack fit
GedcomGateway interface so the package can be swapped or pinned without touching domain code.ImportGedcomJob, ExportGedcomXJob) writing to a configured filesystem disk, not synchronously in request cycles.Migration path
4.2.0 explicitly and start on a feature branch with the GEDCOM-X export path disabled by default.Compatibility
Sequencing
Maintenance
Support
Scaling
Failure modes
_ tags) → parse exceptions; needs per-record error isolation and a partial-import report rather than all-or-nothing failure.Ramp-up
How can I help you explore Laravel packages today?