Licensing Question #24

Closed
opened 2024-12-11 00:18:48 +00:00 by Michi · 8 comments

Hello,
I created the app OpenBible and have a few questions regarding it.

The application downloads the json files from your website e.g. translations.json and stores them locally on the end users device /sdcard/Android/data/com.schwegelbin.openbible/files.

This scares me a bit because of following, which I got from your README:

Do not host the scripture JSON repository on a public platform (like GitHub) unless it's private to prevent any discrepancies with the Crosswire Modules.

I'm just downloading the json file and have features to update them and check for updates etc., so they should be up to date.

Is it okay to do so?

And now to my main question:
Some translations have copyrighted content like:

Copyrighted; Free non-commercial distribution

Is it allowed to use those translations?
(Looks like AndBible doesn't have any problems using them.)

And do I need to add a "NonFreeNet" Anti-Feature when I upload it to F-Droid or can I remove it from IzzyOnDroid?

TLDR;

  1. Is it okay to save your json files, which I downloaded from your api locally?
  2. Can I use those "copyrighted" translations?
  3. Do I need to add a NonFreeNet Anti-Feature to F-Droid?

Thank you fro your help! Have a great day!

Hello, I created the app [OpenBible](https://github.com/SchweGELBin/OpenBible2) and have a few questions regarding it. The application downloads the json files from your website e.g. [translations.json](https://api.getbible.net/v2/translations.json) and stores them locally on the end users device `/sdcard/Android/data/com.schwegelbin.openbible/files`. This scares me a bit because of following, which I got from your [README](https://github.com/getbible/v2_builder): > Do not host the scripture JSON repository on a public platform (like GitHub) unless it's private to prevent any discrepancies with the Crosswire Modules. I'm just downloading the json file and have features to update them and check for updates etc., so they should be up to date. Is it okay to do so? And now to my main question: Some translations have copyrighted content like: > Copyrighted; Free non-commercial distribution Is it allowed to use those translations? *(Looks like [AndBible](https://github.com/AndBible/and-bible) doesn't have any problems using them.)* And do I need to add a "NonFreeNet" Anti-Feature when I upload it to F-Droid or can I remove it from IzzyOnDroid? **TLDR;** 1. Is it okay to save your json files, which I downloaded from your api locally? 2. Can I use those "copyrighted" translations? 3. Do I need to add a NonFreeNet Anti-Feature to F-Droid? Thank you fro your help! Have a great day!
Owner

Hello Michi,

Thank you for reaching out and for your interest in the getBible ecosystem. We appreciate your conscientious approach to ensuring that your application, OpenBible, adheres to the guidelines and licensing terms associated with the texts and resources provided through our API.

Local Storage of the JSON Files
It is perfectly fine for your app to download and store the JSON files (e.g., translations.json, chapters.json, etc.) locally on the end user's device. The recommendation in our documentation against hosting the Scripture JSON repository publicly (like on GitHub) is meant to prevent unauthorized or out-of-date “public mirrors” that do not stay in sync with the Crosswire modules. Storing the data locally on the user’s device for offline use is not publicly redistributing the files, so this does not violate our guidelines.

Copyrighted Translations and Licensing
The Bible texts provided through getBible are sourced directly from Crosswire’s modules, each with its own licensing terms. Many are free for non-commercial usage, while others require certain attribution or usage restrictions. Since getBible is simply extending Crosswire’s distribution through a JSON-based front-end, the licensing terms remain the same. If AndBible—or any other Crosswire-based frontend—can legally use these modules, you can do so as well, provided you follow the same terms and respect any attribution and non-commercial clauses.

We recommend reviewing each translation’s license. Adhering to these ensures that you’re aligned with Crosswire’s licensing. getBible’s role as a recognized front-end for the SWORD Project modules (as noted on the Crosswire Wiki: https://wiki.crosswire.org/Frontends:getBible) means that we maintain the same distribution framework and restrictions as Crosswire itself.

Staying in Sync With the getBible API and Crosswire Modules
A core principle of getBible is maintaining synchronization with the Crosswire modules. Each month, we run a three-hour process to update and validate every translation. We use hash values for translations, books, and chapters. When these hash values change, it signals that the underlying text has been updated by Crosswire (e.g., corrections, improvements, or additions).

Why is synchronization important?

  1. Accuracy and Integrity: Changes in hash values mean updated text. By checking these hashes and refreshing your local data accordingly, your application remains accurate and authoritative, reflecting the most recent text sourced from Crosswire.

  2. Respecting the Source: Crosswire is the ultimate “source of truth.” Maintaining sync with their updates ensures you uphold the quality and fidelity of the text, as well as respect their ongoing efforts to keep the Scriptures accurate.

  3. Long-Term Reliability: Users rely on your app for accurate biblical content. Regularly updating based on hash changes enhances user trust and ensures compliance with Crosswire’s and getBible’s standards.

Referencing getBible as the Source
We also encourage you to clearly reference getBible as the source of the API that serves the Crosswire modules. Doing this helps users trace the origin of the content. If anyone inquires about your source or wishes to verify the text’s integrity, they will be guided first to getBible and then, via getBible’s documentation and links, to Crosswire. This creates a transparent chain of trust and attribution. For example, you might include a short note like:

“Scripture data provided by getBible, a recognized front-end for Crosswire’s SWORD modules. Learn more at https://wiki.crosswire.org/Frontends:getBible.”

This not only clarifies where the data originates but also showcases that you are part of an established, reputable network of Bible distribution efforts. Additionally, the https://getBible.net website itself serves as a live proof-of-concept and demonstration of how the API works, providing further confidence and transparency for your users.

Joomla
You know that all the features of the getBible (Bibles) is a Joomla Component and can be added to any website, right? Which means any Joomla website can work and behave like getBible's own Bibles, like you see on this website.

NonFreeNet Anti-Feature (F-Droid Considerations)
The NonFreeNet anti-feature depends on F-Droid’s policies. Since getBible and Crosswire’s modules are generally considered open and free for non-commercial use—albeit with specific licensing clauses in some translations—this may not qualify as a “non-free” network service in the traditional sense. However, to be certain, please review F-Droid’s guidelines or consult with them directly. Transparency and proper attribution typically help avoid confusion regarding anti-features.

Conclusion

  • Local Storage: Allowed and helpful for offline use.
  • Copyrighted Translations: Follow the same terms as Crosswire and AndBible.
  • Synchronization: Monitor hash values and update regularly to stay aligned with Crosswire’s authoritative text.
  • Attribution: Reference getBible as the source of your SWORD modules API, guiding users to getBible and ultimately to Crosswire for full clarity.
  • NonFreeNet: Check with F-Droid if needed, but proper attribution and transparent licensing usage usually suffice.

By incorporating periodic synchronization based on the hash values, respecting licensing conditions, and acknowledging getBible as your data source, you ensure accuracy, legality, and trustworthiness. The chain from your app to getBible to Crosswire is well-established and recognized, as evidenced by the listing on the Crosswire Wiki (https://wiki.crosswire.org/Frontends:getBible) and the operational demonstration on https://getBible.net.

We appreciate your diligence, and please feel free to reach out if you have any additional questions or concerns.

Have a great day!

Hello Michi, Thank you for reaching out and for your interest in the getBible ecosystem. We appreciate your conscientious approach to ensuring that your application, OpenBible, adheres to the guidelines and licensing terms associated with the texts and resources provided through our API. **Local Storage of the JSON Files** It is perfectly fine for your app to download and store the JSON files (e.g., translations.json, chapters.json, etc.) locally on the end user's device. The recommendation in our documentation against hosting the Scripture JSON repository publicly (like on GitHub) is meant to prevent unauthorized or out-of-date “public mirrors” that do not stay in sync with the Crosswire modules. Storing the data locally on the user’s device for offline use is not publicly redistributing the files, so this does not violate our guidelines. **Copyrighted Translations and Licensing** The Bible texts provided through getBible are sourced directly from Crosswire’s modules, each with its own licensing terms. Many are free for non-commercial usage, while others require certain attribution or usage restrictions. Since getBible is simply extending Crosswire’s distribution through a JSON-based front-end, the licensing terms remain the same. If AndBible—or any other Crosswire-based frontend—can legally use these modules, you can do so as well, provided you follow the same terms and respect any attribution and non-commercial clauses. We recommend reviewing each translation’s license. Adhering to these ensures that you’re aligned with Crosswire’s licensing. getBible’s role as a recognized front-end for the SWORD Project modules (as noted on the Crosswire Wiki: [https://wiki.crosswire.org/Frontends:getBible](https://wiki.crosswire.org/Frontends:getBible)) means that we maintain the same distribution framework and restrictions as Crosswire itself. **Staying in Sync With the getBible API and Crosswire Modules** A core principle of getBible is maintaining synchronization with the Crosswire modules. Each month, we run a three-hour process to update and validate every translation. We use hash values for translations, books, and chapters. When these hash values change, it signals that the underlying text has been updated by Crosswire (e.g., corrections, improvements, or additions). Why is synchronization important? 1. **Accuracy and Integrity:** Changes in hash values mean updated text. By checking these hashes and refreshing your local data accordingly, your application remains accurate and authoritative, reflecting the most recent text sourced from Crosswire. 2. **Respecting the Source:** Crosswire is the ultimate “source of truth.” Maintaining sync with their updates ensures you uphold the quality and fidelity of the text, as well as respect their ongoing efforts to keep the Scriptures accurate. 3. **Long-Term Reliability:** Users rely on your app for accurate biblical content. Regularly updating based on hash changes enhances user trust and ensures compliance with Crosswire’s and getBible’s standards. **Referencing getBible as the Source** We also encourage you to clearly reference getBible as the source of the API that serves the Crosswire modules. Doing this helps users trace the origin of the content. If anyone inquires about your source or wishes to verify the text’s integrity, they will be guided first to getBible and then, via getBible’s documentation and links, to Crosswire. This creates a transparent chain of trust and attribution. For example, you might include a short note like: > “Scripture data provided by [getBible](https://getbible.net/docs), a recognized front-end for Crosswire’s SWORD modules. Learn more at [https://wiki.crosswire.org/Frontends:getBible](https://wiki.crosswire.org/Frontends:getBible).” This not only clarifies where the data originates but also showcases that you are part of an established, reputable network of Bible distribution efforts. Additionally, the [https://getBible.net](https://getbible.net) website itself serves as a live proof-of-concept and demonstration of how the API works, providing further confidence and transparency for your users. **Joomla** You know that all the features of the getBible (Bibles) is a [Joomla Component](https://getbible.net/joomla) and can be added to any website, right? Which means any Joomla website can work and behave like getBible's own Bibles, like you [see on this website](https://truechristian.church/scriptures/kjv/). **NonFreeNet Anti-Feature (F-Droid Considerations)** The NonFreeNet anti-feature depends on F-Droid’s policies. Since getBible and Crosswire’s modules are generally considered open and free for non-commercial use—albeit with specific licensing clauses in some translations—this may not qualify as a “non-free” network service in the traditional sense. However, to be certain, please review F-Droid’s guidelines or consult with them directly. Transparency and proper attribution typically help avoid confusion regarding anti-features. **Conclusion** - **Local Storage:** Allowed and helpful for offline use. - **Copyrighted Translations:** Follow the same terms as Crosswire and AndBible. - **Synchronization:** Monitor hash values and update regularly to stay aligned with Crosswire’s authoritative text. - **Attribution:** Reference getBible as the source of your SWORD modules API, guiding users to getBible and ultimately to Crosswire for full clarity. - **NonFreeNet:** Check with F-Droid if needed, but proper attribution and transparent licensing usage usually suffice. By incorporating periodic synchronization based on the hash values, respecting licensing conditions, and acknowledging getBible as your data source, you ensure accuracy, legality, and trustworthiness. The chain from your app to getBible to Crosswire is well-established and recognized, as evidenced by the listing on the Crosswire Wiki ([https://wiki.crosswire.org/Frontends:getBible](https://wiki.crosswire.org/Frontends:getBible)) and the operational demonstration on [https://getBible.net](https://getBible.net). We appreciate your diligence, and please feel free to reach out if you have any additional questions or concerns. Have a great day!
Owner

Open getbible.net to see a hash value beneath the Scripture, with a question mark, then open the link to see the full explanation. This new system will keep all websites that use this system in-sync with the CrossWire modules, which is a massive achievement for CrossWire and the whole online Bible world.

image

Open [getbible.net](https://getbible.net/) to see a hash value beneath the Scripture, with a **question mark**, then open the link to see the **full explanation**. This new system will keep all websites that use this system in-sync with the _CrossWire modules_, which is a massive achievement for CrossWire and the whole online Bible world. ![image](https://git.vdm.dev/attachments/e48de4ab-91e0-4e70-a409-63d5290e9861)
880 KiB
Owner

This is the real issue: you must keep your data in sync with the getBible API, as stated:

... any application utilizing our Bible API should monitor the hash values at the chapter, book, or translation level. Spotting a change in these values indicates that they should update their respective systems.

Doing so will ensure that CrossWire and the upstream publishers remain satisfied.

Believe me, the path we took to establish this solution was lengthy and challenging. If we count only my own efforts, I began in 2016, and we finally reached a complete solution in 2021. Since then, the system has been stable.

So, when you read:

...which is a massive achievement for CrossWire and the whole online Bible world

This is not an exaggeration, but a true reflection of the getBible team's commitment to doing things the right way and finally succeeding after many years of difficulty.

This is the real issue: you must keep your data in sync with the getBible API, as stated: ``` ... any application utilizing our Bible API should monitor the hash values at the chapter, book, or translation level. Spotting a change in these values indicates that they should update their respective systems. ``` Doing so will ensure that CrossWire and the upstream publishers remain satisfied. Believe me, the path we took to establish this solution was lengthy and challenging. If we count only my own efforts, I began in 2016, and we finally reached a complete solution in 2021. Since then, the system has been stable. So, when you read: ``` ...which is a massive achievement for CrossWire and the whole online Bible world ``` This is not an exaggeration, but a true reflection of the getBible team's commitment to doing things the right way and finally succeeding after many years of difficulty.
Author

Hello Llewellyn,

thank you very much for your fast response and detailed explanation!
You have answered a lot of my questions.

For the NonFreeNet Anti-Feature, I will reach out again to F-Droid and IzzyOnDroid and quote your response to it; I hope, this is okay.
I also added the reference to the getbible docs in the readme and app.

Regarding the synchronization, I already had a basic system to download the translations together with the checksums, update them by comparing it to the checksum of the index etc..
(By index I mean translations.json and checksum.json)
But I improved it by downloading the index at the app startup and by checking for updates after it, so that the user can update (or skip if they don't wanna waste their mobile data) their translations.

Is this system okay?

And I looked at the licenses again:

01: ""
02: "Copyrighted. Distribution permitted to CrossWire Bible Society"
03: "Copyrighted; Free non-commercial distribution"
04: "Copyrighted; Freely distributable"
05: "Copyrighted; Permission granted to distribute non-commercially in SWORD format"
06: "Copyrighted; Permission to distribute granted to CrossWire"
07: "Creative Commons Attribution 3.0 Brazil"
08: "Creative Commons: BY-NC-SA 4.0"
09: "Creative Commons: BY-SA 4.0"
10: "GPL"
11: "Public Domain"

Most of them are fine, but I'm unsure about 2, 5 and 6.

Am I even distributing them, maybe I'm too careful?

Have a great day!

Hello Llewellyn, thank you very much for your fast response and detailed explanation! You have answered a lot of my questions. For the NonFreeNet Anti-Feature, I will reach out again to F-Droid and IzzyOnDroid and quote your response to it; I hope, this is okay. I also added the reference to the getbible docs in the readme and app. Regarding the synchronization, I already had a basic system to download the translations together with the checksums, update them by comparing it to the checksum of the index etc.. *(By index I mean translations.json and checksum.json)* But I improved it by downloading the index at the app startup and by checking for updates after it, so that the user can update (or skip if they don't wanna waste their mobile data) their translations. **Is this system okay?** And I looked at the licenses again: ``` 01: "" 02: "Copyrighted. Distribution permitted to CrossWire Bible Society" 03: "Copyrighted; Free non-commercial distribution" 04: "Copyrighted; Freely distributable" 05: "Copyrighted; Permission granted to distribute non-commercially in SWORD format" 06: "Copyrighted; Permission to distribute granted to CrossWire" 07: "Creative Commons Attribution 3.0 Brazil" 08: "Creative Commons: BY-NC-SA 4.0" 09: "Creative Commons: BY-SA 4.0" 10: "GPL" 11: "Public Domain" ``` Most of them are fine, but I'm unsure about 2, 5 and 6. **Am I even distributing them, maybe I'm too careful?** Have a great day!
Owner

These specific license terms:

  • "Distribution permitted to CrossWire Bible Society"
  • "Permission granted to distribute non-commercially in SWORD format"
  • "Permission to distribute granted to CrossWire"

are precisely why it’s important to maintain synchronization with CrossWire. By keeping your data aligned with the original SWORD modules through the getBible API, you ensure that you remain within the scope of these permissions. In other words, preserving the link to CrossWire and the SWORD ecosystem helps protect both the CrossWire project’s reputation and its relationships with publishers.

Regarding user updates, allowing users to skip an update occasionally is acceptable. However, the application should continually prompt for the update later or re-attempt it at another time. The goal is to ensure that updates eventually occur to preserve the integrity and legality of your distribution.

To minimize data usage, we recommend leveraging the checksum files at different levels to identify changes efficiently. For example:

  1. Top-Level Checksum (translations):
    Start with the main checksum file at:
    https://api.getbible.net/v2/checksum.json
    This file is small and will tell you if any translation has changed.

  2. Translation-Level Checksum:
    If a specific translation (e.g., kjv) has changed, you can then fetch:
    https://api.getbible.net/v2/kjv/checksum.json
    This file details checksums for each book within that translation. If only one book is updated, there’s no need to re-download the entire translation.
    download just one book: https://api.getbible.net/v2/kjv/4.json

  3. Book-Level Checksum:
    If the changed book is identified as, say, book 4 of the kjv, you can then retrieve:
    https://api.getbible.net/v2/kjv/4/checksum.json
    This will show which specific chapter(s) changed. From there, you only need to download the updated chapter(s), reducing unnecessary data usage.
    download just one chapter: https://api.getbible.net/v2/kjv/4/2.json

For minor updates or when a whole translation is updated, it might be simpler just to download the entire translation. The key point is that you have options, and the approach you choose can optimize both data usage and user experience.

To accommodate varying user preferences, you might delay updates until the user is on Wi-Fi, or schedule them during times the app is in active use. The critical point is that updates must eventually take place to maintain compliance and accuracy.

For translations without explicit synchronization requirements, such as those listed in:
https://git.vdm.dev/getBible/v2_builder/src/branch/staging/conf/PublicDomainBibles.json
maintaining sync is still considered best practice, but may be less urgent.

In short, while you have flexibility in how you handle updates, ensuring that they eventually occur is crucial for staying within licensing terms, maintaining the chain of trust, and preserving the authoritative status of the texts.

These specific license terms: - *"Distribution permitted to CrossWire Bible Society"* - *"Permission granted to distribute non-commercially in SWORD format"* - *"Permission to distribute granted to CrossWire"* are precisely why it’s important to maintain synchronization with CrossWire. By keeping your data aligned with the original SWORD modules through the getBible API, you ensure that you remain within the scope of these permissions. In other words, preserving the link to CrossWire and the SWORD ecosystem helps protect both the CrossWire project’s reputation and its relationships with publishers. Regarding user updates, allowing users to skip an update occasionally is acceptable. However, the application should continually prompt for the update later or re-attempt it at another time. The goal is to ensure that updates eventually occur to preserve the integrity and legality of your distribution. To minimize data usage, we recommend leveraging the checksum files at different levels to identify changes efficiently. For example: 1. **Top-Level Checksum (translations):** Start with the main checksum file at: `https://api.getbible.net/v2/checksum.json` This file is small and will tell you if any translation has changed. 2. **Translation-Level Checksum:** If a specific translation (e.g., `kjv`) has changed, you can then fetch: `https://api.getbible.net/v2/kjv/checksum.json` This file details checksums for each book within that translation. If only one book is updated, there’s no need to re-download the entire translation. download just one book: `https://api.getbible.net/v2/kjv/4.json` 3. **Book-Level Checksum:** If the changed book is identified as, say, book `4` of the `kjv`, you can then retrieve: `https://api.getbible.net/v2/kjv/4/checksum.json` This will show which specific chapter(s) changed. From there, you only need to download the updated chapter(s), reducing unnecessary data usage. download just one chapter: `https://api.getbible.net/v2/kjv/4/2.json` For minor updates or when a whole translation is updated, it might be simpler just to download the entire translation. The key point is that you have options, and the approach you choose can optimize both data usage and user experience. To accommodate varying user preferences, you might delay updates until the user is on Wi-Fi, or schedule them during times the app is in active use. The critical point is that updates must eventually take place to maintain compliance and accuracy. For translations without explicit synchronization requirements, such as those listed in: `https://git.vdm.dev/getBible/v2_builder/src/branch/staging/conf/PublicDomainBibles.json` maintaining sync is still considered best practice, but may be less urgent. In short, while you have flexibility in how you handle updates, ensuring that they eventually occur is crucial for staying within licensing terms, maintaining the chain of trust, and preserving the authoritative status of the texts.
Owner

As a side note, in our GetBible Joomla application, we don’t run cron jobs or scheduled tasks to continuously update translations. Instead, we use an on-demand approach tied to user actions. Here’s how it works:

In our system, every page corresponds to a chapter in the database. We allow these chapters to remain unchanged until someone actually accesses them.
When a user opens a chapter page, we check the timestamp of the last update for that chapter.
If it’s been more than a month since the last update, we fetch the chapter’s current hash file and compare it to the hash stored in our database.
If the hash values differ, we immediately download the updated chapter data. Since chapters are small datasets, this update process is both quick and efficient.

This approach means that only chapters that users actually read get updated. On a busy website with many visitors viewing different chapters, updates occur more frequently across various parts of the database. In a single-user app environment, you only need to update what the user looks at, making this on-demand system highly efficient.

For reference, here’s an example of a chapter hash file:
https://api.getbible.net/v2/kjv/4/2.sha

As a side note, in our [GetBible Joomla application](https://git.vdm.dev/getBible/joomla-component/src/branch/5.x/libraries/vendor_getbible/TrueChristianBible.Joomla/src/GetBible), we don’t run cron jobs or scheduled tasks to continuously update translations. Instead, we use an on-demand approach tied to user actions. Here’s how it works: In our system, every page corresponds to a chapter in the database. We allow these chapters to remain unchanged until someone actually accesses them. When a user opens a chapter page, we check the timestamp of the last update for that chapter. If it’s been more than a month since the last update, we fetch the chapter’s current hash file and compare it to the hash stored in our database. If the hash values differ, we immediately download the updated chapter data. Since chapters are small datasets, this update process is both quick and efficient. This approach means that only chapters that users actually read get updated. On a busy website with many visitors viewing different chapters, updates occur more frequently across various parts of the database. In a single-user app environment, you only need to update what the user looks at, making this on-demand system highly efficient. For reference, here’s an example of a chapter hash file: https://api.getbible.net/v2/kjv/4/2.sha
Owner

Our on-demand method not only manages updates and synchronization but also serves as the primary way we load Bible content in the first place. Instead of downloading an entire translation upfront, we begin with the first chapter a user opens. As that chapter loads, we also prefetch the chapter before it and the one after it, ensuring that there are always three chapters available. If the user is at the very beginning of a book, the system intelligently fetches the preceding book's last chapter as well. This approach keeps navigation smooth and responsive: when the user pages to a chapter that’s already cached, we simply fetch the next chapter in the background.

While we don’t rely on traditional cron jobs, our server-side processes run continuously on-demand, updating chapters as the user scrolls. This creates a seamless reading experience—most users never realize that updates and downloads are happening behind the scenes. The same principle could be applied to a desktop or mobile application, significantly reducing data usage by only fetching what’s needed, when it’s needed.

The only time we recommend a full translation download is when the search feature is required. Since searching efficiently across an entire book or translation demands having that data locally available (we are working on a search API in version-3 of the new API to resolve this :), our Joomla backend includes an option to install the full translation. Although the system can still operate using the incremental method without a full installation, a complete local copy enhances search performance and user satisfaction.

Over time, we’ve tested many methods, and this incremental, demand-driven loading and updating strategy has proven to be both the most convenient and the least intrusive. It provides a fast, snappy user experience, keeps data transfers minimal, and maintains smooth navigation throughout the Scriptures.

Our on-demand method not only manages updates and synchronization but also serves as the primary way we load Bible content in the first place. Instead of downloading an entire translation upfront, we begin with the first chapter a user opens. As that chapter loads, we also prefetch the chapter before it and the one after it, ensuring that there are always three chapters available. If the user is at the very beginning of a book, the system intelligently fetches the preceding book's last chapter as well. This approach keeps navigation smooth and responsive: when the user pages to a chapter that’s already cached, we simply fetch the next chapter in the background. While we don’t rely on traditional cron jobs, our server-side processes run continuously on-demand, updating chapters as the user scrolls. This creates a seamless reading experience—most users never realize that updates and downloads are happening behind the scenes. The same principle could be applied to a desktop or mobile application, significantly reducing data usage by only fetching what’s needed, when it’s needed. The only time we recommend a full translation download is when the search feature is required. Since searching efficiently across an entire book or translation demands having that data locally available (we are working on a search API in version-3 of the new API to resolve this :), our Joomla backend includes an option to install the full translation. Although the system can still operate using the incremental method without a full installation, a complete local copy enhances search performance and user satisfaction. Over time, we’ve tested many methods, and this incremental, demand-driven loading and updating strategy has proven to be both the most convenient and the least intrusive. It provides a fast, snappy user experience, keeps data transfers minimal, and maintains smooth navigation throughout the Scriptures.
Author

Hey,
I didn't know about the book level checksums and updates.
I'll try to improve my app regarding the synchronization and in general.

Thank you very much for your explanation!

Right now, it checks for updates at the app startup, when the last update was over a day ago, and lets the user choose wether to update and if they choose to skip it, they are asked again at the next startup. This ensures that the user knows, when he uses an out of date translation.

For now I'm only capable of managing the whole translation at once, but I'll see what I can do.

Thank you very much again!

I'm closing this issue, because I don't have any more questions and your help was more than enough.

Have a great day!

Glory to the Lord!

Hey, I didn't know about the book level checksums and updates. I'll try to improve my app regarding the synchronization and in general. Thank you very much for your explanation! Right now, it checks for updates at the app startup, when the last update was over a day ago, and lets the user choose wether to update and if they choose to skip it, they are asked again at the next startup. This ensures that the user knows, when he uses an out of date translation. For now I'm only capable of managing the whole translation at once, but I'll see what I can do. Thank you very much again! I'm closing this issue, because I don't have any more questions and your help was more than enough. Have a great day! Glory to the Lord!
Michi closed this issue 2024-12-12 15:59:24 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: getBible/support#24
No description provided.