f-droid client is good enough for most of use cases. however, i see room to improve whenever i use f-droid. i will write these improvements time to time from now on.
maybe i’ll contribute to code too but it’s not clear yet. let see this proposal for now.
target beneficiaries of this proposal is users and third party app developers.
currently, f-droid client handles repositories by two states and these are “enabled” an “disabled”.
it’s fine but i think we can improve that by changing to “active”,"passive and “disabled”.
“active” state is basically same thing as current “enabled” state. active repositories provides a list of apps browsable/installable by user and updates for these apps.
“disabled” state is same as current “disabled”. disabled repositories provides nothing and just stay there until user change it’s state again or completely remove.
“passive” state is new state between these two. it doesn’t provide a list of apps but continues to provide updates for already installed applications from this repository.
that means user can add some third party repo as “active”, install whatever they want and change it’s state to “passive” for getting updates while not seeing any other apps from that repository.
i think this change will give user better control on third party repositories which user needs few apps from that repository and nothing else.
however, this isn’t end of my proposal. i have an idea for third party developers as well.
we can introduce a new meta-data for use of third party apps. if third party app implements this then f-droid client will automatically read their repository from their app and add the repository as “passive” repository.
for example:
<meta-data
name="org.fdroid.repository"
value="https://microg.org/fdroid/repo?fingerprint=9BD06727E62796C0130EB6DAB39B73157451582CBD138E86C468ACC395D14165"
/>
f-droid can scan installed apps and add the microg repository as “passive” repository if microg puts this meta-data to application tag in their AndroidManifest.xml file.
user won’t see other microg apps in f-droid client but they can know when an update available the already installed apps from that repo.
interface details:
- current repositories setting page must changed to tabbed view with three tabs representing “active”, “passive” and “disabled”.
- text must be added to top of page on every tab to explain meaning of current selected tab.
- repository entries must have small text telling user how many app installed from that repository ( can be implemented for all entries or just for the “passive” repositories )
and must show user a list of installed apps from that repository when clicked.
implementation details:
- f-droid client must track which repository is pre-installed( like f-droid.org ), user installed or installed by meta-data scanning.
- “passive” repositories installed by meta-data scanning should be removed when all apps installed from that repo removed.
- “passive” repositories installed by meta-data scanning promotes to “user installed” when their state changed to “active” by user.
request for comment:
- is this meta-data declaration covers all possible repository urls?
- is “org.fdroid.repository” good key for that meta-data declaration or it must changed to something else?
- should meta-data scanning work on apps that installed from already added repositories? ( should apps that distributed on f-droid.org can add their own repo as well? )
- should we delete “disabled” repositories that once was “passive” repository added by meta-data scanning but changed to “disabled” by user when all apps from that repo uninstalled?
that’s all. i hope i explained it well enough.