This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

https://wiki.gnome.org/GUADEC/2019/Hackingdays/FlatpakStore https://docs.google.com/document/d/1zE_QbB6mtdhjH5bsFdf9kPrYvjKAMBRl4uSRYDt-BqQ/edit?ts=5d6509ad#heading=h.4e7b49ri8p2g

Agenda

Two completely distinct parts:

How does this work technically?

Quick high-level overview of how it all works Note that it’s all ‘best effort’ — this is not hardcore DRM, and cannot, will not be Start with one authenticator implementation; will probably end up with a few distro-specific ones eventually P2P verification requires public/private keys for token signatures Need to iterate over specific API a few times/D-Bus XML blah blah do that in merge requests

Verbs

Can we add ‘verbs’ to tokens which authorise the user to do different things: download, run, upgrade, export (to USB), etc. Requires an internet connection when you’re running the app? Need to cache the tokens and they need a long validity period Can we do it without a D-Bus daemon running? (i.e. just within the flatpak process) It’s fine to talk to D-Bus (and use the network) at installation time; less so at run time

How does this integrate with the idea of leaving the token format open? Perhaps use whatever token format for downloading/installing (so OCI can use its own format); and require JWT for tokens with other verbs Apple and elementary stores have a way of saying that an app upgrade should be paid for again (elementary always allows payments to be optional)

D-Bus API

Should be made more similar to other D-Bus APIs Race conditions need fixing

CDN/Caching

Idea is that we separate authorisation from actually serving the content objects So people can’t get the object hashes without showing a vallid authorisation token to get the commit object So CDNs and caches just cache all the objects as before The commit object is fetched from a server which does the authorisation checks (flat-manager)

Similarly for delta data blocks (cf content objects) vs delta superblocks (cf commit objects) There are many ways of working around the protection mechanism; that’s fine

How do we apply this to flathub?

Strawman:

End goals:

Aside: gnome-software now has donation links for users on the details page for each GNOME app in gnome-software; points to the Friends of GNOME page

Do we do this for every app, or only for apps which opt in?

Do we want to integrate between flathub and Friends of GNOME? e.g. Friends of GNOME have essentially already paid, so just get a thank you instead of a donation nag?

Other people might use the same plumbing for their own app stores (e.g. Endless, elementary) Potential implementation: Stripe

Do we want to enable proprietary applications on the platform?

Would flathub get a percentage of each donation, for paying for infrastructure costs?

Side note: How does Patreon work?

Side note: We don’t yet have a terms of use or contributors’ agreement

Is this going to drive people away from flathub?

How do we split contributions to uploaders vs the actual app authors?

We are going to need a better website: web app that handles publishing, downloading, receiving payments, etc.

Timeline:

Actions


2024-10-23 11:08