Out-of-band releases

I’d like to run an idea with the F-Droid team:

My app includes a database encryption module ever since I started my app ~6 years ago. Over time the need to use database encryption went away and now it’s just additional complexity for me which is very difficult to get rid of because of the installed base.

So I am considering to phase out encryption like below:

  1. The next x upcoming builds will automatically convert a potentially encrypted database to unencrypted upon start of the app

  2. With builds x+1 I will drop the encryption library

  3. If a build >= x+1 detects an encrypted database (because a user was skipping the transitional releases) I will show a message to email me.

  4. Now things get complicated:

If the user were to run a version signed by me I could just create a build x+1 which includes the encryption library and converts the database and be done.

However, with F-Droid signed apps the user specific app needs to be signed by you guys as well, so I wonder if I could somehow request such an out-of-band build, just for a particular user?

Will there be many such cases? I don’t know, I turned off encryption for new installs months ago but for obvious reasons can’t know how many users still run encrypted and will skip the transitional releases.

Any thoughts or better ideas?

Thanks

Which app?

Perhaps add a backup/restore function. And then make a standalone conversion program.
So even if they skip the transitional version, they can still backup, convert on PC, then restore the converted data without having to need an additional special release.

Or just move forward with it and put notices everywhere possible for 3 months then just drop support.

com.zell_mbc.medilog

Got backup/restore already, I like the idea of a standalone app.

Could keep this app waiting for users on my repostory and if need arises go through the flow below:

  1. App x+1 detects it’s unable to open the DB
  2. Offers the following options:
    • A link to text explaining what’s going on
    • offer to copy the encrypted DB to downloads folder
    • show the encryption pin
    • copy an unencrypted db from downloads to protected app storage
    • quit
  3. User downloads rescue app from my repository
  4. Rescue app picks up encrypted DB and writes unencrypted version
  5. User returns to original app and copies unencrypted DB
  6. Done

Quite a process, but this seems doable to me