Design
- Driving principles:
- Minimizing change to the user via the API
- OCFL-isms not bleeding into Fedora API
- Rebuildability
- Compliance with OCFL
- Retain URLs of migrated Fedora resources
- Performance
- Reducing complexity of implementation
Fixity service
Transaction service
Query endpoint
Versioning
- Support for both:
- version an object on-demand (manual versioning)
- version an object on-change (auto-versioning)
- Support for toggling auto-versioning on/off
- Note: Actively edited objects not captured in an OCFL version directory
Bulk ingest
Import / Export (Migration)
https://docs.google.com/document/d/1nvUDar1DbexdU3oTRGxzcZGG3qxsD2HWQbGyyRJIgDE/edit#
Mapping between LDP and OCFL
Architecture
- Retaining HTTP layer of existing Fedora codebase
- Replacing ModeShape persistence with OCFL storage
- Optimizing reads/lookups with an internal database
Scaling
Performance
ModeShape replacement
OCFL persistence
- Support for both OCFL objects:
- created by Fedora
- pre-existing, created by another application
Fedora-specific details
- /content/.fcrepo directory
- Hashing (SHA256) on LDP path of resource