Reaching targets and mixed locales

TWIF generated on Thursday, 29 Feb 2024, Week 9

F-Droid core

The big F-Droid Client 1.19 feature is “unattended updates”, and we tried to explain how it works, at least from the user perspective, in TWIF24 week 6. As a one line note in the initial 1.19 release we also said what happens when it does not work: “Older apps that can’t be updated will feature a banner explaining why”. Attentive Fedi users noticed that F-Droid Client itself (but not F-Droid Basic) is marked with the that banner too. How come?

It all has to do with the “target SDK” property of an app. What is that? New Android versions introduce behaviors, appearances, and restrictions on what apps can do. targetSdkVersion is a mechanism for apps to opt into this configuration for a given Android version and all that comes with that. This is something that’s not easily tangible for users as apps just work. The target value signals to your device that the app is able to handle certain features and restrictions, and usually users care only about those that empower them, say about privacy and security. Then again, to be able to do that, app developers need to put in the work to have their app ready. Take a look at what each version adds or removes here.

Google enforces, for its own alternative centralized store, that apps follow Android releases closely and update their code to match said newer targets or else be rejected. F-Droid does not enforce such a limit for its hosted apps, and for a long time, not without its critics, did not need to update its own client target either. Since Android 14 was released, Google enforces in the actual system that apps need to have at least targetSdkVersion 23, which defines apps that are ready to run on Android 6 or later, and it’s believed that the value will be raised over the next Android releases. You can see how this works in practice already: on Android 14 F-Droid allows you to install about 3190 apps out of the current 4329. And while F-Droid was already at that target limit, modernizing its code base became a goal for a while.

So that’s easy to do, right? Put the new number in and recompile, you’ve read the list with things that changed and… oh wa- you need to do what for Bluetooth connectivity now? NFC Beam was removed? Ok, so back to the drawing board. What features need minimal changes for an updated target? Most of them. Which ones need more work? Nearby/Swap and mirrors on USB drives/SD Cards.

Great, we can quickly roll out a build of our existing, but unused, version called ‘Basic’, since it has all the basic features users need, and continue to code the ‘Full’ client. Basic was announced 5 months ago paving the way for future development.

Work to raise F-Droid Client’s own target is ongoing, each bump having its own challenges. We have reached the point where F-Droid can update other apps, and you are using this already, but its own low target, ironically, does not allow it to update itself. Alongside F-Droid you’ll see this “old app” banner for more apps that have not reached the needed version yet, e.g. SatDump and Endless Sky.

F-Droid website

The F-Droid website functions as a way to get the client first, a repository of documentation, a way to make announcements (like you read now), but also as a way to get app packages. While we recommend everyone to use the client to get timely updates and info on new apps, the website is complementary to this purpose. The F-Droid infrastructure has many sides, from build servers and virtual machines that build apps, to machines that generate and serve these web pages. Our latest infra update is taking place in an asynchronous way, and the web site generation is already updated. Unfortunately the updated tools seem to have a bug related to locales generation, which makes one of the website sidebar sections not match the overall site locale. Each time the website is regenerated, say after a new post is added or after a new index was published, the glitch is randomly switched to another locale and section. While this might seem funny, when the glitched section is the search box you might end up getting results in an unknown language. If you’re a Ruby/Jekyll hacker that we can nerd snipe, do lend a hand in our issues tracker.

Community News

@theimpulson thanks everyone for the feedback:

Aurora Store is now at 4.4.2, which brings some bug fixes and behavior improvements while targeting the latest Android 14 release. If everything remains good, this version will be marked as suggested in the coming days.

@linsui keeps in touch via messaging:

Element - Secure Messenger was updated to 1.6.12 and SchildiChat to 1.6.10.sc76 adding fixes for two CVE graded vulnerabilities you can read more about here. Do update!

OpenKeychain: Easy PGP was updated to 6.0.2 but many users report issues with this version, as with previous 6.0.0, when used with K-9 and FairEmail at least. A new version 6.0.4 is in the pipeline.

sing-box, The universal proxy platform, was just published on F-Droid with reproducible builds. It’s a powerful tool from the same author of SagerNet, 世界 (nekohasekai). This can be regarded as a successor of SagerNet which has been discontinued months ago. However it’s not a drop-in replacement since it features a new core with a different configuration format and a much simpler UI.

Newly Added Apps

7 more apps were newly added

Downgraded Apps

1 app was downgraded

BitBanana was downgraded from 0.7.3 to 0.6.7 as newer versions depended on a non-FOSS library. An update is already in the pipeline. (upstream issue)

Updated Apps

140 more apps were updated

Thank you for reading this week’s TWIF 🙂

Please subscribe to the RSS feed in your favourite RSS application to be updated of new TWIFs when they come up.

You are welcome to join the TWIF forum thread. If you have any news from the community, post it there, maybe it will be featured next week 😉