diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 79c735d..22235d5 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -1,6 +1,6 @@ # Libre Bible Data Conventions -Libre Bible Data is the canonical source, normalization, and packaging repository for free-to-use Bible and Bible-study resources used by Libre Study, GracePress Bible Tooltip, and related projects. +LibreBible is the public Bible and study-resource data project. This technical repo, `libre-bible-data`, is the canonical source, normalization, and packaging repository for free-to-use Bible and Bible-study resources used by Libre Study, GracePress Bible Tooltip, and related projects. ## Repository Purpose diff --git a/README.md b/README.md index 0d6a63e..80e0209 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Libre Bible Data -Libre Bible Data is the canonical source and packaging repo for Bible resources used by Libre Study, GracePress Bible Tooltip, and related tools. +LibreBible is the public Bible and study-resource data project behind Libre Study, GracePress Bible Tooltip, and related tools. This technical repo is named `libre-bible-data`. This repo does not treat third-party Bible texts as ours. Each resource starts with a source manifest that records upstream location, license status, source format, checksum, importer, generated package paths, and update-check metadata. @@ -28,4 +28,4 @@ Generated packages land under `packages/json//`. - Generated packages must include checksums and importer metadata. - Update checks should be mechanical: fetch upstream, hash it, compare with the recorded checksum, and report drift. -See `CONVENTIONS.md` for the durable project rules and resource priorities. +See `CONVENTIONS.md` for durable project rules and `ROADMAP.md` for the implementation path. diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..0acf081 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,193 @@ +# LibreBible Roadmap + +LibreBible is the public Bible and study-resource data project behind Libre Study, GracePress Bible Tooltip, and future ChristIT Bible tools. + +Working names: + +- Project/catalog name: LibreBible +- Technical repository: `libre-bible-data` +- App consumer: Libre Study +- Public catalog home: ChristIT.com +- Git host/source backup: `https://git.christit.com/libre-study/libre-bible-data` + +## Guiding Shape + +Keep one canonical data repo for now. Do not split each Bible translation into its own repo until a resource becomes large, independently maintained, or operationally painful inside the shared repository. + +Use stable resource ids, manifests, package folders, and generated docs to give each Bible/resource its own identity without creating unnecessary repositories. + +Preferred structure: + +```text +sources/ + kjv-eng-kjv2006.json + future-resource.json + +resources/ + notes/ + commentaries/ + maps/ + lexicons/ + +packages/ + json/ + catalog.json + kjv-eng-kjv2006/ + catalog.json + verses.jsonl + strongs-links.jsonl + +docs/ + resources/ + resource-manifest.md +``` + +## Phase 1: Catalog Metadata Foundation + +Goal: make every resource self-describing enough for humans, apps, and public catalog pages. + +Tasks: + +- Expand source manifests with fields for translation date, source tradition/text basis, publisher/creator, upstream maintainer, copyright holder, license details, jurisdiction notes, and citation text. +- Add attachment metadata that can describe Strong's links, morphology, lemmas, study notes, cross-references, maps, commentaries, lexicons, dictionaries, timelines, and media. +- Add `resource_type` values such as `translation`, `study_notes`, `commentary`, `map`, `lexicon`, `dictionary`, `cross_reference`, and `timeline`. +- Add relationship fields so one resource can attach to a Bible translation, book, chapter, verse, verse range, word/token, Strong's number, lemma, topic, place, or timeline event. +- Generate `RESOURCE_INDEX.md` from structured metadata. +- Generate one human-readable Markdown detail page per resource under `docs/resources/`. + +Definition of done: + +- The public Gitea repo README clearly links to a generated resource index. +- KJV has a complete enough human-facing detail page to answer: what is it, where did it come from, who produced it, what is its license, what features does it include, and what package files are available. + +## Phase 2: LibreBible Public Catalog on ChristIT.com + +Goal: make ChristIT.com the useful public face of LibreBible. + +Tasks: + +- Choose a public path such as `https://christit.com/librebible/`. +- Build a PHP or similarly simple dynamic overlay that reads committed catalog JSON from a local checkout, a synced artifact folder, or stable Gitea raw/release URLs. +- Render a Bible/resource browser from `packages/json/catalog.json` and per-resource `catalog.json` files. +- Display title, abbreviation, language, translation date, creator/publisher, source, license, redistribution status, jurisdiction notes, features, counts, checksums, package files, and last upstream check. +- Provide stable download URLs for generated packages. +- Link back to the Gitea repo, source manifest, upstream source page, and generated resource detail page. +- Avoid scraping README prose. Structured JSON is the machine truth; Markdown is for human explanation. + +Definition of done: + +- A normal visitor can answer which Bibles are available and whether each has Strong's, notes, commentaries, maps, or other attachments. +- Libre Study and GracePress Bible Tooltip can use the same catalog information for package discovery. + +## Phase 3: More Bible Sources + +Goal: grow beyond KJV while keeping license discipline. + +Priority sources: + +- eBible.org freely redistributable translations. +- CrossWire/SWORD modules with clear redistribution rights. +- unfoldingWord/Door43 resources where licenses permit redistribution. +- Open English Bible. +- World English Bible. +- Other public-domain or permissively licensed translations. + +Tasks: + +- Add source manifests before adding generated text. +- Record upstream license, redistribution, and attribution details before import. +- Add importer support for additional formats as needed: USFM zip, OSIS, SWORD modules, plain text, TSV/CSV, JSON, or XML. +- Normalize all imported translations into shared package shapes. +- Keep questionable resources as source metadata only until redistribution is clear. + +Definition of done: + +- At least three redistributable translations appear in the catalog with generated packages and clear license/source metadata. + +## Phase 4: Attachments and Study Resources + +Goal: make LibreBible useful as a study ecosystem, not just a text repository. + +Priority attachments: + +- Strong's/concordance links. +- Morphology and lemma data. +- Study notes tied to verses or sections. +- Cross-references. +- Lexicons and dictionaries tied to Strong's numbers and lemmas. +- Commentaries tied to verse ranges or scriptural sections. +- Maps tied to places, events, books, chapters, and passages. +- Timelines tied to events and passages. + +Tasks: + +- Define attachment package schemas. +- Add package examples for each attachment type before bulk import. +- Add relationship indexes so apps can ask: what attaches to this verse, range, word, Strong's number, lemma, place, or topic? +- Preserve source attribution per attachment, not just per translation. +- Add generated docs and catalog display for attachments. + +Definition of done: + +- The catalog can show a Bible translation and list its available attachments. +- The catalog can also show an attachment and list which translations/passages it applies to. + +## Phase 5: App and Plugin Consumption + +Goal: make LibreBible packages directly useful to Libre Study and GracePress. + +Tasks: + +- Define stable package URLs and version/checksum metadata for apps. +- Add SQLite-ready package output for Libre Study. +- Add WordPress/plugin-ready package output for GracePress Bible Tooltip. +- Teach Libre Study to import from the public catalog, not just a sibling local repo. +- Teach GracePress Bible Tooltip to discover/download supported translations from the catalog. +- Keep app/user data separate from public Bible resource data. + +Definition of done: + +- Libre Study can install/update a Bible package from the public catalog. +- GracePress Bible Tooltip can consume the same resource metadata and package outputs. + +## Phase 6: Updates, Releases, and Automation + +Goal: keep upstream scanning and package publishing repeatable. + +Tasks: + +- Add scheduled update checks for source manifests. +- Produce a report when an upstream checksum changes. +- Require human review before accepting changed upstream text or license metadata. +- Generate package checksums and release notes from structured data. +- Tag stable resource package releases in Gitea. +- Publish public catalog updates only from pushed commits. + +Definition of done: + +- A resource update can be checked, reviewed, regenerated, committed, pushed, and published without manual file hunting. + +## Phase 7: Public Site Polish + +Goal: make the public LibreBible catalog feel like a real product. + +Tasks: + +- Add filters by language, license, feature, source, testament/canon, and attachment type. +- Add detail pages for translations and attachments. +- Add copyable package URLs for app/plugin integration. +- Add provenance and license panels that are clear to normal users. +- Add download buttons for supported package formats. +- Add "used by" links for Libre Study, GracePress Bible Tooltip, and future tools. + +Definition of done: + +- The ChristIT.com LibreBible section is useful without opening Gitea. + +## Open Decisions + +- Whether the public path should be `christit.com/librebible/`, another ChristIT path, or a dedicated domain/subdomain later. +- Whether large generated packages should remain committed directly, move to Gitea releases, or be mirrored to a static download path. +- Whether to eventually split especially large or independently maintained translations/resources into separate repos. +- Which public package format should become the preferred app install format: JSONL bundle, SQLite bundle, zip package, or another signed manifest format. +- How much Gitea itself should be customized after the ChristIT.com catalog proves the model.