 Helo. I apologise slightly for the title of the talk. I have a co-worker who is obsessed with naming everything after titles of films, or episodes of friends, or songs from the 1980s, for some reason, and the 1990s, so that's where the title will come from. It's pretty meaningless, to be honest. So, hello. I'm Alan Pope. I'm a community advocate working at Canonical on Snapcraft. You may know Canonical as the commercial sponsor behind the Ubuntu Linux distribution, which is somewhat popular on desktops and servers around the world. But I'm not here to talk about Ubuntu. I'm here to talk about Snaps, and Snaps are portable software packages for Linux. There's some other terminology that I want to cover, because it gets a little bit confusing sometimes. Snap is both the command line utility that you use to manage your applications, and it's also the package format. SnapD is the background service that manages the installation and service runtime and all that kind of stuff when you install Snaps and remove Snaps. Snapscraft is the tool, multiple tools, that are used to build Snaps, and the Snaps store is where the Snaps are hosted, where developers upload them and users download them. Snap and SnapsD are written in Go and Snapscraft and the Snaps store are Python. So we've created a software pipeline to get software directly from developers to users. Developers are putting control of that pipeline so they can deliver applications rapidly and not have to wait for distributions to catch up with software packaging. That's the goal of Snaps. The Snaps store enables users to find and install that software directly from the developers. It doesn't just contain desktop software, though. Snaps may contain small command line utilities, full-blown compilers or big server applications with many moving parts. It's not just graphical desktop applications. So, for example, there's node represented here, Rocket Chat. There's all kinds of stuff that's not just graphical desktop applications. There are a lot of graphical desktop applications in the Snaps store, but that's not all of them. Once the Snaps are installed, they auto refresh from the store. So periodically your system will check in with the store, see if there are any updates, automatically install them so you'll be up to date. The updates can also be manually forced. You can force a refresh or you can defer them to later on. I personally have my laptop set to only do updates over the weekend or overnight, depending upon which laptop it is. So you have the choice to control that. Once a developer uploads an application to the Snaps store, they get access to a metrics dashboard showing anonymized weekly active devices, which is information that they wouldn't get through the traditional model of delivering Linux software through distributions. Many times developers have no idea how many users are using each version of their software from which distribution and the long tail of supported releases. So we thought we'd improve that with a metrics dashboard. This is the kind of thing you'll be able to see. This one is broken down by version. So each color is a new version of the application being delivered to users. So in this graph you can see how updates to a popular secure messaging client are rolled out and those replace the older buggy insecure and unsupported releases. And you can see how with each release that comes out, it replaces the releases beforehand. So publishers are confident the user base are running the latest version of their software. They don't have to support this long tail of old releases kicking around in the universe. They can be confident people are running the latest release. So you don't tend to get loads of bug reports for some ancient crusty version of the software because everyone's running the latest release. The snap tools that we've developed enable developers to push the latest build to the store and get those in the hands of users within minutes, not hours or hours, not months that it usually takes with traditional Linux distributions. And there's some additional user choice that's given with Snapcraft. Our experience of building Ubuntu shows that the vast majority of users are very conservative and they stick on the long term supported releases of Linux distributions like Ubuntu. And that applies equally both on the server and on the desktop. Many users are still running Ubuntu 14.04 now and that's a five year old desktop. And to put that in context, at that time Android 4.1 Jelly Bean was the most deployed Android release and Kit Kat was only just on the rise. And there are people today still running Ubuntu 14.04. If you build a snap today on a modern desktop it will work on 14.04 as well. So we backported that support to 14.04 because we know there's a significant user base who are very sticky on LTS releases. Users can get the latest applications without having to upgrade the entire OS. That's the goal here. You want the latest version of whatever application in this case VLC but you don't want to have to wait six months to get the next release of your operating system or two years in the case of an LTS. You want the latest video player. Why can't you have it? And that's what Snaps deliver. So you shouldn't have to hunt down repositories to get the latest version of your office suite or your video player. The Snaps store also features channels which indicate a level of risk and users can optionally choose between those channels to choose the level of risk they're willing to opt into. So for VLC here there's a stable channel which has version 306 recently updated but then there's an edge channel which has the 40 branch of VLC. Now if you're an adventurous type and you're always playing around with media you might want to opt into the edge builds knowing that they might not be super reliable or might be a little bit buggy because they're not as well tested as the stable releases and there's other channels in between as well. Those are just the defaults but that gives the user the choice and they can switch between channels at any time. You can be on the stable release one day, switch to edge, switch back to stable another day. Things do break however. Bugs happen. Sometimes an application will fail. If an update goes bad so a new version has been pushed to the store those updates are then pushed out to users. If the update goes bad health checks can be used to detect that and roll back. Snap keeps the previous release of every application around so in the event of the upgrade failing it can just go back to the previous release. In addition if you discover that there's a problem with the current release you can manually force a revert so you can just type snap revert VLC and it will just go back to the previous release you had and then you can move forward later when that bug you're tracking has been fixed. I've got an example of that here. This is a metrics dashboard. It's not VLC. It's some other application that will remain nameless and a buggy version of this application went out in October. You might be able to spot the peak in the graph where in October a buggy version went out. Many users got that and then the upstream developer figured out there was a bug and they rolled back that update in the store. So users then started dropping off the new version, the kind of bluish tint colour in October, dropping off that until the developers had fixed the new version and that's the yellow one that followed a little while later and then everyone moves to the fixed version. That would be seamless to the user. If the developer rolls back in the store next time the user does an update they'll get rolled back and then roll forward when the update comes out. It's very much like the Android way of delivering updates to users. Users love new software and we love sharing that new software with users, especially awesome, beautiful, secure, well-maintained applications. We love those. We frequently rotate the featured applications and editor's picks in known software and on the store front in the web UI. So if you go to snapcraft.io slash store or if you open Ubuntu software or GNOME software on a supported system, if you open it periodically every few weeks you'll see that the list of applications change and we pick and choose new and interesting software to highlight in there. So users have something to install that's new and different. Over the last year we featured a whole bunch of productivity apps, developer tools, servers and games. The games are actually very popular, unsurprisingly. Developers get a spotlight and users get new software. We'd like to promote more applications, your applications in those slots. So if you push your application to the store we may feature it in an upcoming update. We also publish to social media, Twitter, Facebook and, go rest its soul, Google+. About applications that come out so people can hear about them via social media. That's quite popular as well. All it takes is a screenshot and a funky bit of text and a little bit of emoji and we can promote your application to an audience of millions. That's everything I had to say about snapcraft. Give you a little highlight of what snapcraft does. I'm also doing a live stream on Wednesday on YouTube. We have a YouTube channel. The link is in the description below. The link is in the notes for this talk in the FOSDEM app. It's youtube.com slash snapcraft.io. It's not hard and I'll do a live stream at 8 o'clock on Wednesday so you can either ask me questions after this now or you can save them up and what I'll be doing is a workshop to actually go through creating an application or multiple applications if we get time and you can follow on with me there. Thank you for listening. I'm happy to take any questions now if we have time. One of the main problems with software repositories is security. So is there any review of what is put in as a snap or could I just publish any malware packed as a snap? I'm glad you asked that question. So security is an issue and one of the things we do in the snap store is we review every application that goes in. There are review tools that run and some applications get rejected. They don't get accepted into the store. We also have a security team who pounce on things that are malware, shall we say, and we can remove those from the store. What we also do is we scan the packages that are inside the snaps that go into the store and if there are known security issues with some of those packages we email the developer and let them know, hey, you should rebuild this thing. There's a new version of Lib Avahi or whatever it was last week that was updated. So the developer is given the information that there is a security update and they should push the new version of their application. Hello. Can you briefly explain a snap versus flat pack and potential interoperability? In two minutes and 29 seconds. Or put it as to a blog post that does it? So, Linux, there are lots of different technologies doing similar things and we often get told why are you doing that snap thing when there's this other thing or why are you doing this thing when there's this other thing and they service different needs, right? So when flat pack, I don't want to speak for them because I'm not a flat pack developer. But as I understand it, when flat pack first started, it was mainly focused on desktop and when snaps were first mooted before they existed, we were targeting IoT. Now the IoT market wasn't ready for all of this yet. It's still shaking out right now. So we decided to expand what snaps can do and as well as doing IoT and server stuff it can also do desktop stuff. But it does things slightly differently. So you can compare and contrast them both. They do similar things, but snaps are more suited to every kind of leaf application not just focused on desktop. You mentioned having multiple app channels available for each app. Can people run apps from multiple channels simultaneously? So in a past life I used to run Chrome Stable and Chrome Beta simultaneously. Can you do that with snap or is it either or? You have to switch channel to get the other one. Great question. So currently you have one, each snap you have installed from one channel at a time, but we are adding the capability for you to have multiple snaps from the same, sorry, multiple revisions of the same snap installed at the same time. Yes, we're adding that right now. That's a good question and I don't know the answer to that. Sorry. Have we got time for one more? 30 seconds. Go fast. Up the back there. Sorry. We've got to go all the way around. Throw the microphone. Yeah, I'll repeat it. So the question is health checks, is it something snap graph does or something developers do? Short answer is in three seconds is something the developer does. They're health checks that get called when the snap is installed and you can implement what those might be, database checks, checks that the services are running, whatever that might be, but you implement that. Thank you. Thank you.