Skip to content
Menu
Open World News Open World News
  • Privacy Policy
Open World News Open World News

New repository format for faster and smaller updates

Posted on March 3, 2023 by Michael G

Author: grote
Source

We just released version 1.16 of the official F-Droid client app for
Android which includes many radical changes under the hood as well as many
bug fixes for long standing issue. Read on for more details.

Growing repository size

As more and more apps make their way into F-Droid, the official repository
index that includes all apps and their metadata also keeps growing.
Currently, the size of the compressed index is 8 MB which is 33 MB
uncompressed. When updating the repository index, each F-Droid client app
has to download and process those 8MB again and again. This problematic
trend became apparent a long time
ago
.

Updating only what has changed

Our repository index is in JSON format and we decided to make use of RFC
7396 JSON Merge Patch
to
create much smaller JSON files that only contain the changes since your
F-Droid app last updated. Technically, this works by downloading a new
entry.json file instead of the full
index. This entry file points to the full index in case the app had never
updated before and needs all app metadata anyway. But the entry also
contains pointers to various smaller difference files. The app
automatically picks the right diff and only downloads that much smaller file
instead of the full index. This not only saves bandwidth, it also makes
updating the index much faster as only the minimum amount of data needs to
be downloaded, processed and stored. As of writing, the latest diff is 80
KB
compressed which is 241 KB uncompressed which is only 1% of the full
index. Version 1.16 of the official F-Droid client app for Android
supports this new repository format.

Other improvements

The new version has a large number of radical changes under the hood. For
example, the entire database had to be replaced to support the new
difference based repository format. We also used the opportunity to improve
various bit and pieces along the way:

  • improved mirror support: all files (e.g. images) now get loaded from
    mirrors reducing the load on the main server
  • better support for low RAM devices, because the index now gets streamed
    into the DB instead of loading all of it into memory
  • hash verification: The SHA256 hash of all files is now part of the
    repository metadata and gets verified while downloading
  • stronger digest algorithm for repository signing: We now use SHA256
    instead of SHA1 for the index signature
  • support for downloading repository files via IPFS
  • many bug fixes that came out of modernizing ancient code

The new version went through a series of alpha releases with
extended testing to make sure no severe issues make it into the stable
release. It is now considered ready for general use.

Information for repository and client maintainers

Owners of third-party F-Droid repositories can enable the new format by
upgrading to the latest version of
fdroidserver which will
automatically publish the new format in addition to the old ones which we
keep around to support older client apps.

Developers of third-party F-Droid clients are encouraged to adopt the new
format either with their own implementations or by making use of the new
libraries

we are publishing to make using this technology as easy as possible and to
share as much code as possible between different F-Droid implementations.

This work was funded by the FFDW-DVD grant

Read more

Related Posts:

  • Dries Buytaert: A Composable Digital Experience Manifesto
    Dries Buytaert: A Composable Digital Experience Manifesto
  • Envato Tuts+: Top 20 Most Usable Content Management Systems
    Envato Tuts+: Top 20 Most Usable Content Management Systems
  • Specbee: What You Need To Know About Continuous Integration and Testing in Drupal
    Specbee: What You Need To Know About Continuous Integration…
  • Andy Wingo: a world to win: webassembly for the rest of us
    Andy Wingo: a world to win: webassembly for the rest of us
  • ImageX: International Women’s Day: An interview with the team
    ImageX: International Women’s Day: An interview with the…
  • Twitter Under Elon Musk
    Twitter Under Elon Musk

Recent Posts

  • https://youtu.be/kP3DQ48Oxxg
  • Convertir metros cúbicos a litros en JavaScript
  • LOOKING FOR A NEW LOVE STORY TO OBSESS OVER? EORTV’S GOT YOU COVERED.
  • How To Create A Surreal Pop Out Design_motion_dx
  • Lawyers Protest Over Illegal Case On Advocate Satya Narayana | RangaReddy |V6 News

Categories

  • Android
  • Linux
  • News
  • Open Source
©2023 Open World News | Powered by WordPress & Superb Themes
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT