Slide 1

Slide 1 text

Richard Brown openSUSE Chairman [email protected] Welcome to Jurassic Park We been preoccupied with whether we could or not, lets stop and think if we should

Slide 2

Slide 2 text

In the beginning

Slide 3

Slide 3 text

CC-BY-SA Ruud Koot

Slide 4

Slide 4 text

DLL Hell ● Developers had to dev & test Apps on every possible DLL combination ● Then retest every App patch on every possible DLL combination ● AND test every DLL patch on every possible App & DLL combination ● Then cry when it all broke anyway

Slide 5

Slide 5 text

Windows 2000 to the Rescue ● Side-by-side (SxS) assembly – DLL “Containerisation” – Separate Memory Space for each App and its DLLs – ‘Private DLLs’ loaded from the Application Directory ● Windows File Protection (WFP) – Disk Isolation of System DLLs ● DLL Universal Problem Solver (DUPS) – Audit all the DLLs in use and help migrate ‘legacy’ applications to SxS bundles

Slide 6

Slide 6 text

CC-BY-SA Xyzzy n

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Problem Solved? Right? ● Security nightmare – Security relevant DLLs lurking in countless application folders ● Maintenance nightmare – How are we going to update our app? Oh we’ll ship an updater! ● Legal nightmare – Can we legally redistribute all the DLLs we need to? ● Storage vendor dream – More disk consumption, everyone buying bigger disks!

Slide 9

Slide 9 text

Meanwhile in Linuxland

Slide 10

Slide 10 text

CC-BY-NC Dustin Jamison

Slide 11

Slide 11 text

Distributions – Solving Real Problems ● Security – Security Teams auditing packages, monitoring CVEs & embargoed lists ● Maintenance – Maintainers packaging applications & keeping them updated ● Legal – Lawyers auditing licenses and ensuring compatibility/compliance

Slide 12

Slide 12 text

In Defence of Shared Libraries/Dependencies ● Not just about using less space on disk ● Distributing fewer libraries have broad benefits – Fewer INSECURE libraries, more easily patched – Less manpower required to maintain/update – Easier to review/ensure legal compliance

Slide 13

Slide 13 text

Mission Accomplished? ● Compatibility ● Portability ● Pace of Change vs “It just works”

Slide 14

Slide 14 text

Compatibility ● Many distributions with many diferent libraries and apps ● Diferent apps require diferent libraries ● Application developers don’t want to worry about what other application developers have chosen as their dependencies

Slide 15

Slide 15 text

Compatibility ● Many distributions with many diferent libraries and apps ● Diferent apps require diferent libraries ● Application developers don’t want to worry about what other application developers have chosen as their dependencies ● But application developers don’t (ofen) worry about this ● Distro Maintainers work on this for F/OSS licensed apps

Slide 16

Slide 16 text

Portability ● Many distributions with many diferent libraries and toolsets ● Application Developers don’t want to learn dozens of toolsets, nor rebuild & retest their application on a dozen platforms

Slide 17

Slide 17 text

Portability ● Many distributions with many diferent libraries and toolsets ● Application Developers don’t want to learn dozens of toolsets, nor rebuild & retest their application on a dozen platforms ● But application developers don’t (ofen) worry about this ● Distro Maintainers solve the problem for F/OSS licensed apps

Slide 18

Slide 18 text

Pace of Change vs “It just works” ● Many distributions with fixed release schedules ● Distributions freeze package/library versions to aid ‘stability’ ● Holds back new application versions from users

Slide 19

Slide 19 text

Pace of Change vs “It just works” ● Many distributions with fixed release schedules ● Distributions freeze package/library versions to aid ‘stability’ ● Holds back new application versions from users ● But application developers don’t need to worry about this ● Rolling Distributions resolve this with increasing eficiency

Slide 20

Slide 20 text

Back to the Future!

Slide 21

Slide 21 text

Containerised Applications to the Rescue ● AppImage, FlatPak, Snappy ● Provides uses with a “Bundle” containing App + Libraries ● Runs the App in some kind of Sandbox or Container

Slide 22

Slide 22 text

The Big Promises ● Compatibility – SOLVED – Only compatible libraries in the bundle ● Portability – SOLVED – All dependencies in the bundle ● Pace of Change – SOLVED – App developers can distribute at their pace, not a distro pace ● “It just works” - SOLVED

Slide 23

Slide 23 text

Compatibility & Portability

Slide 24

Slide 24 text

Compatibility & Portability ● Containerised Apps at some point make assumptions of a common standard base provided by the Distribution ● No such common base exists in a practical sense

Slide 25

Slide 25 text

Compatibility & Portability

Slide 26

Slide 26 text

Compatibility & Portability ● For a Containerised App to be portable, it must contain ALL compatible dependencies which MIGHT not be provided by ANY distribution ● If not, expect crashes

Slide 27

Slide 27 text

So it’s hopeless? If everything is still liable to break, what is the point? ● Frameworks/Runtimes attempt to mitigate by providing curated ‘Middledistros’ to build Applications for ● The “Real” Solution: A well defined Linux Standard Base?

Slide 28

Slide 28 text

The Big Promises - Reality ● Compatibility – SOLVED – Only compatible libraries in the bundle ● Portability – SOLVED – All dependencies in the bundle ● Pace of Change – SOLVED – App developers can distribute at their pace, not a distro pace ● “It just works” - ?

Slide 29

Slide 29 text

History Repeating? ● Security nightmare? – Security relevant libs lurking in countless application bundles ● Maintenance nightmare? – How are we going to update our app and every single lib? ● Legal nightmare? – Can we legally redistribute all the libs we need to? ● Storage vendor dream – More disk consumption, everyone buying bigger disks!

Slide 30

Slide 30 text

“With Great Power…”

Slide 31

Slide 31 text

“… Comes Great Responsibilities” ● AppImage/FlatPak/Snappy are tools that enable App Developers to directly distribute sofware without the ‘need’ for Distributions ● Therefore, they must adopt the responsibilities which come with being a distributor of sofware

Slide 32

Slide 32 text

Compatibility & Portability Consider everything an App needs that isn’t in the Bundle ● Can this break my App if the ABI changes? – If YES, then move it to the Bundle ● Can I rely on it being there on ALL systems? – If NO, then move it to the Bundle

Slide 33

Slide 33 text

Compatibility & Portability in Real Terms Application Developers will still need to ● Dev & test Apps on every possible distro ● Then retest every App patch on every possible distro ● Then cry when it all breaks anyway

Slide 34

Slide 34 text

Compatibility & Portability in Flatpak Application Developers will still need to ● Keep up with their chosen runtime releases ● Dev & test Apps on every possible distro ● Then retest every App patch on every possible distro ● Then cry when it all breaks anyway

Slide 35

Slide 35 text

Broader Responsibilities ● Security – Monitor & rapidly react to CVEs. Audit libraries. Do not assume sandboxing is enough. ● Maintenance – Update all bundled dependencies in a timely manner ● Legal – Review licences of all bundled dependencies and ensure compliance & compatibility

Slide 36

Slide 36 text

What are we going to do?

Slide 37

Slide 37 text

Distributions can be part of the solution ● Distributions should like the promise of Containerised Applications ● Less work & responsibility for us is always good ● Should not be fearful of the transfer of responsibility, but should not encourage it blindly either

Slide 38

Slide 38 text

Distributions can be part of the solution ● A Common Base (“LSB for the Container Age”) must be considered – Without one, the portability promise is unachievable ● Distributions have decades of tools and talent for dealing with the broader issues. USE THEM ● Don’t reinvent every wheel just because we can

Slide 39

Slide 39 text

Change ALL THE THINGS ● Is the assumption that distros ‘get in the way’ of App Delivery still valid? – Transactional Distros (Project Atomic, SUSE CaaSP, openSUSE Kubic) – Rolling Releases (Arch, openSUSE Tumbleweed)

Slide 40

Slide 40 text

Rolling Releases for Everyone? ● To get Applications in the hands of users fast, what model beats a rolling distribution? ● Users can be guaranteed an integrated “built together” experience ● Security/Maintenance burdens less broadly distributed, fewer points of failure, Devs don’t need to be security engineers ● “It just works” can be reached with good tools – OBS & openQA

Slide 41

Slide 41 text

What has been done?

Slide 42

Slide 42 text

AppImage race ahead ● OBS built AppImages make use of OBS & openSUSE’s strengths in – Auditing – Update & Dependency Tracking – License Compliance – Build Hosting ● All without impeding AppImages strengths in getting the sofware in the hands of users

Slide 43

Slide 43 text

Snappy catching up ● Adopting “Upstream First” mentality ● Canonical provided/maintained ‘base snaps’ ● Concerted efort to work with distributions & other upstreams to build an ecosystem ● Yes, Canonical are trying to work with others

Slide 44

Slide 44 text

Problems Remain ● Dependency Hell still on the Horizon – Assumptions are still being made about what a base system must provide containerised apps – Let’s all get together, distros & new app formats, and discuss & design standards/common practice – A common understanding of what distros provide will make life easier for App developers, users, and distributions

Slide 45

Slide 45 text

Problems Remain ● Security / Sandboxing / App Isolation is still a mess – Snap requires not-yet-upstreamed AppArmor patches – Flatpak – bubblewrap, too desktop orientated? – AppImage – firejail/nothing ● Let’s clear this up – AppArmor all the way?

Slide 46

Slide 46 text

What about Flatpak?

Slide 47

Slide 47 text

Dear Flatpak ● I fear Flatpak is falling behind ● AppImage has a smoother build story, a stronger compliance story, and a more straight forward user experience ● Snappy is working hard to catch up, by working with multiple distributions ● openSUSE / OBS / openQA and more are all here to help

Slide 48

Slide 48 text

Who does flatpak help? ● App Developers? – Still needs to worry about dependencies (runtimes & distros) – New/complex not-rpm & not-deb packaging – Can be invasive to add Flatpak support to an App – What if I don’t like Builder?

Slide 49

Slide 49 text

Who does flatpak help? ● Upstream Stack Developers? (GNOME, KDE, etc) – Now has to worry a lot more about integration (runtimes are their problem) – Now has to worry more about maintenance, security, legal – Now has to worry more about UX

Slide 50

Slide 50 text

Who does flatpak help? ● Users? – New/complex not-rpm & not-deb tooling. – Flathubs? Appstores? – New versions quickly without quality controls will equal getting new bugs quickly

Slide 51

Slide 51 text

The only people Flatpak helps today are distribution builders

Slide 52

Slide 52 text

Flatpak – technical concerns ● Portals & Exports – Scary holes punching through many stacks (MIME types, search, URIs, etc) – How to audit? How to keep secure? Who enforces sane behaviour? – #1 Issue holding back openSUSE’s adoption of flatpak ● No ‘headless app’ story

Slide 53

Slide 53 text

Flatpak – ecosystem worries ● “We do High Quality Engineering” ● “We care about the stack” ● “We take responsibility for the users experience” ● GNOME does – what about others? – A lot of responsibility on runtime maintainers – Security, timely maintenance, legal ● Flathub – a chance to impose principles?

Slide 54

Slide 54 text

Flatpak/Flathub – a much larger legal problem? ● Who is the distributor? Who takes the legal responsibility? – Freedesktop.org? (FDO runtime, flathub) ● License Audit – Who’s doing it? – Who should be doing it?

Slide 55

Slide 55 text

NVIDIA License “2.1.1 Rights. Customer may install and use one copy of the SOFTWARE on a single computer, and except for making one back-up copy of the Sofware, may not otherwise copy the SOFTWARE. This LICENSE of SOFTWARE may not be shared or used concurrently on diferent computers."”

Slide 56

Slide 56 text

Final Thoughts ● To avoid another deb vs rpm split, only 1 containerised app format should survive ● My heart wants Flatpak ● But we need to address issues ● Distros solved many of them already ● Lets work together

Slide 57

Slide 57 text

Thank You

Slide 58

Slide 58 text

Join Us at www.opensuse.org

Slide 59

Slide 59 text

License This slide deck is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license. It can be shared and adapted for any purpose (even commercially) as long as Attribution is given and any derivative work is distributed under the same license. Details can be found at https://creativecommons.org/licenses/by-sa/4.0/ General Disclaimer This document is not to be construed as a promise by any participating organisation to develop, deliver, or market a product. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. openSUSE makes no representations or warranties with respect to the contents of this document, and specifically disclaims any express or implied warranties of merchantability or fitness for any particular purpose. The development, release, and timing of features or functionality described for openSUSE products remains at the sole discretion of openSUSE. Further, openSUSE reserves the right to revise this document and to make changes to its content, at any time, without obligation to notify any person or entity of such revisions or changes. All openSUSE marks referenced in this presentation are trademarks or registered trademarks of SUSE LLC, in the United States and other countries. All third-party trademarks are the property of their respective owners. Credits Template Richard Brown [email protected] Design & Inspiration openSUSE Design Team http://opensuse.github.io/branding- guidelines/

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

RUN curl -o wordpress.tar.gz -SL https://wordpress.org/wordpress-$WORDPRESS_VERSION}.tar.gz

Slide 62

Slide 62 text

FROM php:5.6-apache

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

&& make -j"$(nproc)" \ && make install \

Slide 65

Slide 65 text

FROM debian:jessie

Slide 66

Slide 66 text

No content