Fdroidpub: Let apps in F-Droid toot to the fediverse

That’s right. I neither hosted on of them, so we are on the same level of knowledge here.

Mastodon has this, too. Here’s the atom feed of F-Droid’s account for example.

Especially a feed for comments of a post, as I did not find one when looking for it.

I designed it like that to make access from F-Droid’s web and app easier. We would just need the domain of a fdroidpub instance in the index and would be able to link to all accounts and posts without any further information.

Application org.fdroid.fdroid has version code 1003051 as latest one in the index. The refering post is at https://pub.f-droid.org/@org.fdroid.fdroid/1003051.

But I agree with you that the UX of account names is not the best. Going with names of an app, what do we do when an app’s name changes? Also we would need some kind of mapping database between application IDs and their account names.

I don’t think app names change often enough that we should really worry about that. If it ever happens, we could use the account migration feature in Mastodon, like I did here: https://mastodon.social/@nutomic (see the right side, “Felix has moved to …”). I don’t know if this is supported in Pleroma though.

Yes we would need to store some extra data, but I think it’s worth it. The simplest option would probably be to store it in the app’s metadata.

Btw it would be really good to get some input from a Mastodon/Pleroma dev to figure out what exactly we’d have to implement, and how hard it would be. So I made a toot about this on Mastodon: https://soc.ialis.me/web/statuses/100664228935460858 (maybe you can boost it with the F-Droid account)

1 Like

@nutomic Thanks for making that post, I boosted it on F-Droid’s account.

Wow, one share and now I’m getting nonstop notifications for boosts and favorites :smiley:

1 Like

What I can suggest is to implement ActivityPub directly instead of using APIs.

The Fediverse (see: https:/en.wikipedia.org/wiki/Fediverse) is a large federated network comprising of different software and protocols. The main protocol with the largest support currently is ActivityPub, thanks to it being a W3C recommendation. There are also the web- W3C recommendations (webmention, websub, etc.). There are also other protocols like diaspora*, DFRN, OStatus (actually succeeded by ActivityPub), Zot, and others.

From what I see currently, the Fediverse is being approached as “Mastodon” and “Pleroma”. I strongly suggest to approach it as ActivityPub and you’ll find it easier to connect to the fediverse directly than using a particular software, especially since Mastodon and Pleroma are only two of many software which are connected to ActivityPub protocol/network – there is Misskey and Hubzilla to mention two more.

Also, there is no need to create accounts one for Mastodon, another for Pleroma, another here and another there. By implementing ActivityPub directly into Fdroid, “identities” (or accounts if you will), simply has to connect to a particular App to receive updates/notifications.

Example:
user1@mastodon.tld adds/follows/subscribes to @app1@fdroid.org
user2@pleroma.tld adds/follows/subscribes to @app2@fdroid.org
user3@hubzilla.tld adds/follows/subscribes to @app1@fdroid.org
user4@misskey.tld adds/follows/subscribes to @app1@frdoid.org

When App1 uploads a new update, the fdroid system will create a short update. Anyone who is following @app1@fdroid.org will receive this update.

There is no need for the maintainers and/or devs to create an announcement account because their App’s fdroid repository link is an actual ActivityPub “channel”.

You can also free your main fdroid account from posting updates of different apps that for sure most followers won’t care about. By implementing ActivityPub directly instead of relying on creating an account in software1, software2, software3, you are also giving users the option and an easy way to subscribe to only those apps they do care about. While your main fdroid account will serve as an announcement for the project itself, not an “app update” announcement “channel”.

For me, this is the best option and less headache. You don’t have to worry about what-if a dev transfers to another server, especially since there is no cross-software account transfer.

Take a look at projects like PixelFed, Write.as, and PeerTube. PixelFed is an Instagram-type software federated with the ActivityPub protocol. Write.as is a blogging software. While PeerTube is, you guessed it, a YouTube-type software which is also federated in the fediverse.

When a user in a PeerTube server uploads a video, anyone who are following that channel will receive an update. If someone writes a new blog post in a Write.as server, same thing. Likewise when someone uploads a new photo in a PixelFed account in a server of their choice.

For Fdroid, those channels are the Apps itself.

Here’s the kicker. You can implement a comment system through ActivityPub that will show as a “feedback” or something when the App is viewed (maybe as a separate tab). The App maintainer or developer can also be given an option to reply to those if you want to add that as a feature. It’s all up to you. It doesn’t have to be two-way if it isn’t feasible.

If you can, implement ActivityPub directly, it’s the best option hands-down. :wink:

Do it in a structured and official way. Standardize the toot format so that they can be easily parsed by code. (Like protocols) and use F-Droid as some official voice for consensus.

for example: if you are going to use it so that users give a thumbs up/dn on a particular app. The toot format should be standardized so that different tools from different people can understand it, parse it and tally up the numbers.

another example: for multilayer passive games like chess, checkers, etc. They could use the fediverse to communicate. As along as the toot format is standardized you could transmit the game state back and forth.

Standardize a toot format to publish a high score, achievement badges. You could publish a stores open/close hours. A particular toot format that signifies a review. Support for classifieds to allow for something like an open source craigslists.

Fidonet had a good classified ads support, why not mastadon. and now that we are modern lets standardize the toot so that it can be easily parsed by code.

just to add, one can simply submit XML and JSON as toots and use the fediverse as communication for an app. Well its better to have a standard that can hide things meant for machines and not humans. Reduce clutter and avoid spam

I think you misunderstand the proposal. We are not asking app developers to create accounts on random instances. What we are discussing is basically like this:

We hosts a Mastodon or Pleroma instace, and a bot with API access to it. The bot will automatically create an account for each app, and will automatically post the changelog of new app updates via the API.

Of course it would be preferable to implement ActivityPub directly, and integrate it into the F-Droid website and client. But that would be a huge amount of effort, and like I said before, we don’t have the manpower for it. This is basically an experiment, and we shouldn’t waste time getting it perfect, if we can do a quick solution and get it working. If the experiment turns out well, we can still implement ActivityPub directly.

ActivityPub is for humans, not a machine readable API. If you need that, you should use XML or JSON directly. We might use eg the follower count as an indicator of app popularity though.

G-Droid already supports something like this, so maybe you can just take some of the code from there (it’s the same license)

Sorry for the late pop in.

Those kinds of automated toots to say, X has been updated are generally redundant and could be used to track app users. The F-Droid app itself tells the user when an app is updated and that is where people should go to see ‘What’s New’. Either there, or see the changelog for the history of changes.

There might be other more useful ways to integrate fediverse posting into experiential apps though, but the focus need to be on, “Is this an opportunity for creative expression for the user of this app?”

Eg. In F-Droid as well as a call to “Buy them a coffee”. Maybe a “Toot about it on Fediverse” can be added. When the user clicks this they are sent to a fediverse client, if they have one, and have the opportunity to write something creative about the experience they’ve had with the app, with a well-formatted Markdown link that might somehow send the person who clicks it directly into F-Droid to the selected app screen, if they have F-Droid. If they don’t have F-Droid, it intends to open the (F-Droid) app page in a web browser.