Flatpak 1.0 blockers

Alexander Larsson alexl at redhat.com
Tue Aug 15 15:39:50 UTC 2017


I'm currently looking at the state of flatpak and considering what it
would take to call flatpak 1.0. By this I mean not minor bugs, there
will always be bugs, but what features we need in flatpak (and the
surrounding areas) for being able to run most apps and support all the
important features.

Here is the list of things I came up with (and i made a "1.0 Blockers"
milestone in the github issue tracker for tracking these):

(Note: Not all of these are necessary changes in flatpak itself, some
just need work in the lower layers of the stack)

* Accessibility support #79

 Currently it is not possible for sandboxed apps to use a11y. I looked
 at this at some point, and due to the accessibility stack using its
 own dbus bus it was tricky to allow access to this without special
 code in flatpak, and the way a11y works menas doing so would open
 up the sandbox in a really bad way. This needs some serious work at
 the a11y stack level to really be fixed.

* ibus (#675)

 IBus (input methods) don't currently work in flatpak for similar
 reasons as a11y. There is some ongoing work to make it work better 
 though.

* Recursive sandboxes - (#953)

 Many apps now want to run parts of themselves in a sandboxed fashion.
 For instance for the gdk-pixbuf loaders, or the chrome
 sandbox. Unfortunately bubblewrap does not work recursively, for
 security reasons, so we will need some form of portal to spawn new
 sandboxes which inherit the settings and then apply even tigher
 permissions.

* update/restart yourself portal (#444)

 Several applications want some kind of integration with updates in 
 the UI. Its currently possible to detect when something outside your 
 sandbox caused  your app to update, but there is no nice way to 
 request to be re-started, nor is there a way to know that there is an 
 update available that you can install. It would be nice to have a 
 story here.

* Expose host-side SSL cert (#677)

 Flatpak runtimes currently ships with their own ca-certificates to 
 make ssl work. This isn't great as it has to be updated, and it does 
 not pick up site-specific certificates. We need a standard way to 
 expose the host certs to the sandbox that is cross-distro and safe. 
 The github issue describes a possible way forward.

* permission requests presentation (#275)

 Each flatpak can request a set of static permissions on installation 
 time. However, currently we never display these to let the user decide
 what to do with them. We need to figure out a nice way to present 
 these in a UI to let the user decide on them and possibly override 
 them.

* Fontconfig cache performance (#589)

 The flatpak sandbox currently exposes the system font, but in a 
 different location than they have outside (they show up in 
 /run/host/fonts). This means the pre-existing caches on the host made 
 by fc-cache will not work, because they hardcode absolute pathnames. 
 There is some initial work upstream to make the caches relocatable,
 we want to get that in and ensure it works.

* Webcam Support (Pipewire) (#83)

 PipeWire (https://github.com/wtay/pipewire) was specifically created 
 to allow nice support of webcams in the flatpak sandbox. We need to 
 make sure it is stabilized and supported by flatpak.

* OCI 1.0 support (#960)

 The OCI spec 1.0 version was recently finalized. We need to make sure 
 that the OCI support in flatpak is up-to-date and is working with 
 other implementations.

* Proxy-less dbus filtering (#962)

 There is work upstream to make dbus natively do the kind of filtering
 and sandbox awareness that is needed for flatpak and portal support. 
 When this is in we need to make flatpak (and xdg-deskopt-portal) be 
 able to use this if available instead of the current proxy.

* Sandboxed DConf support (#78)

 Currently there is no nice way for apps to have DConf access without a
 bunch of magic permissions. There are some upstream plans and code for
 how this should work, but these are currently blocking on the dbus
 filtering feature to land.

* udev (#961)

 libudev is not currently in the runtime because it only partially 
 works in the sandbox. Everything that depends on sysfs parsing will 
 work, but we don't expose the udevd database to the sandbox, because 
 upstream says it is not on-disk compatible between different versions 
 of udev. This has been an issue with some things though, for instance 
 for the steam controller support, so we need to re-check with 
 upstream and see if the status of this has changed or if we can do 
 something about it.

* work with empty /var/lib/flatpak (#113)

 The p11ykit helper for flatpak only works if /var/lib/flatpak has some
 minimal file setup. This is solved in typical packages by running
 a trivial flatpak command as root in a post-install snippet. However
 that doesn't really work in some situtions, such as for instance
 image-based deployments with empty /var. We need a proper fix for
 this.

* Tombstones for app delete/rename (#963)

  Apps sometimes changes name, or gets deprecated. Currently this is
  not supported in flatpak repos. We should support some kind of
  tombstone commit so that the UI could do the right thing when
  the user runs into these situations.

These are the most important larger issues I could think of. Does
anyone have any ideas about important things I've missed?

Many of these issues are large and if anyone is interested in helping
out I would love that.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Alexander Larsson                                            Red Hat, Inc 
       alexl at redhat.com            alexander.larsson at gmail.com 
He's a sword-wielding alcoholic firefighter on the hunt for the last 
specimen of a great and near-mythical creature. She's a radical insomniac 
mercenary from a secret island of warrior women. They fight crime! 


More information about the Flatpak mailing list