Presentation is loading. Please wait.

Presentation is loading. Please wait.

Gnome SDK A better way to ship apps Alexander Larsson Red Hat, Inc

Similar presentations


Presentation on theme: "Gnome SDK A better way to ship apps Alexander Larsson Red Hat, Inc"— Presentation transcript:

1 Gnome SDK A better way to ship apps Alexander Larsson Red Hat, Inc
February 7, 2015

2 Interest in application deployment/distribution
Glick Glick2 Bundler Updatinator Docker Atomic OSTree “Linux Apps”

3 What is an application?

4 What is an OS?

5 Is a distribution an OS?

6 Importance of the App/OS split

7 Solution: Bundling?

8 Idea: Runtimes

9 Idea: Sandboxing

10 Introducing: xdg-app

11 Introducing: Gnome SDK

12 Demo time!

13 Fucking Apps, how do they work?

14 Application structure
├── metadata ├── files │   ├── bin │   │    └── gedit │   ├── lib │   │   ├── libgtksourceview-3.0.so │   │   └── ... │   └── share │   └── ... └── export    └── share    ├── applications    ├── icons    └── dbus-1

15 Metadata: [Application] runtime=org.gnome.Platform/x86_64/3.16 sdk=org.gnome.Sdk/x86_64/3.16 command=gedit [Environment] x11=true wayland=true ipc=true pulseaudio=true system-dbus=true session-dbus=true network=true host-fs=true homedir=true

16 Runtime structure ├── metadata └── files    ├── bin    │   └── bash    ├── lib    │   ├── libgtk3.so.0    │   └──    ├── share    │ └──    └── etc    └── ...

17 sandbox structure / – private tmpfs instance ├── usr – bindmount to runtime files ├── self – bindmount to app files ├── var – bindmount to per-app/user data ├── home/user -> /var/home ├── etc -> usr/etc ├── bin -> usr/bin ├── lib -> usr/lib ├── tmp ├── proc – procfs mount └── dev – minimal device set

18 /var/xdg-app, ~/.local/share/xdg-app
├── repo – ostree repo ├── runtime/org.gnome.Platform/x86_64/3.16 │ ├── 84ea hardlinked ostree checkout │ └── active -> 84ea ├── app/org.gnome.Gedit │   ├── x86_64/master │   │ ├── 175f30f hardlinked ostree checkout │   │ └── active -> 175f30f │   └── data – per app/user writable data └── exports/share    ├── applications    │    └── org.gnome.gedit.desktop ->    ├── dbus-1/services    │   └── org.gnome.gedit.service ->    └── icons/hicolor       └── ...

19 New complexities Runtime prerequisites Kernel Services
IPC compatibility

20 Creating an app bundle Choose a base runtime
It comes with a corresponding devel runtime Build using xdg-app: xdg-app build-init build-dir org.gnome.Sdk org.gnome.Platform cd src/my-app xdg-app build build-dir ./configure --prefix=/self xdg-app build build-dir make xdg-app build build-dir make install xdg-app build-finish --command=myapp –allow=x11 \ allow=host-fs --allow=session-bus build-dir xdg-app build-export /repos/my-app build-dir org.foo.MyApp Alternatively, Gnome SDK contains rpm/rpmbuild Configured to build rpms into /self

21 The future: Sandboxing
Wayland Kdbus Selinux Cgroups Use more namespaces Portal DBus APIs for sandboxed apps

22 References Project page: https://wiki.gnome.org/Projects/SandboxedApps
Mailing list: Xdg-app: Gnome SDK: Feedback

23 Questions?


Download ppt "Gnome SDK A better way to ship apps Alexander Larsson Red Hat, Inc"

Similar presentations


Ads by Google