Plex joins Snapcraft Summit to advance snap learnings

by Sarah Dickinson on 31 January 2018

Plex is the leading streaming platform for personal media collections, also offering over-the-air Live TV and DVR capabilities, and curated news from over 200 global media partners. It’s the only solution that seamlessly combines your personal collection of TV shows, movies, music, photos, and videos alongside live and recorded TV. With a highly-customisable and easy-to-use interface, Plex is a top 10 most-watched app with 4+ star ratings on all major OTT platforms. Plex’s mission is to give users the very best OTT media experience.

At a company hackathon in September 2017, Software Engineer Tamas Szelei suggested creating a snap for Plex’s Media Server. As a long-term user of Ubuntu in his professional life, Tamas discovered snaps in related blogs. Tamas joined us at the Snapcraft Summit in Seattle this week to learn more and share his reasoning of why he sees snaps as an option for Plex moving forward.

What was the appeal of snaps that made you decide to invest in them?

Snaps is an attractive technology with a very simple installation mechanism – not unlike what is on Macs for example. From a user perspective, this is the biggest selling point. There is a fraction of our user base that is very technical on the whole, so confinement is also appealing to them – many of our users like to control things. It is not unusual for them to re-write scripts, for example. Confinement provides an additional sense of security and means users don’t have to worry about the installation having unintended effects on their systems, such as affecting system-wide configuration files.

From my perspective, the two biggest benefits were the ability to create the same package for different distributions and the auto-updating capabilities.

How does building snaps compare to other forms of packaging you produce?

It was very refreshing actually – the yaml config file is a good choice. It makes everything neat and easy. A lot of thought behind Snapcraft has gone into designing the packaging experience, rather than just from the user perspective, which makes it so much better.

How easy was it to integrate with your existing infrastructure and process?

We will find out as we progress but I’m hopeful it will be smooth. Our build process produces distro-independent tarballs, and we process those to create the distro-specific packages. Since we saw that some community member managed to package Plex Media Server even without access to those tarballs, I expect that integrating snaps will be a smooth ride.

Do you envisage using the store to distribute your software?

We aren’t at the stage where we have published a snap as yet but we can see the store being an easy way to distribute software. The snaps are easy to install from there which is a bonus. To a degree, any app store requires a level of commitment from us, unless the store can pull directly from us. It all depends on how easy it is to get it in the store – for example, can we do it from the CI? Or is it more in depth and we need to go through an approval process? Overall the store provides an additional discovery tool in addition to our website. As Plex Media Server normally has a positive reputation with many reviews, we would hope it would appear higher in the store.

What are your expectations or already seen savings by using snaps instead of having to package for other distros?

Long term, yes we could look to make savings. We have discussed with Martin Wimpress at Canonical about pushing Ubuntu Core to NAS devices which can be challenging to package for.

In many cases, we have to deal with unusual package formats, which may differ even among different devices of the same vendor. If we were to ship Plex as a snap, then we would see big-time savings at the QA stage.

What release channels (edge/beta/candidate/stable) in the store are you using or plan to use, if any?

We would make use of all of these channels and they would be very useful for us. We actually already do similar releases manually: our bleeding edge users whom we call “ninjas” would appreciate an easy way to switch between channels. We might also find a use for this in our own internal dogfooding process.

How do you think packaging your software as a snap helps your users?

Plex has a large group of technical users. We already have a Docker image which has similar advantages such as confinement. Just last week, we released an early preview build but didn’t have a Docker image. Our users wanted one to be able to try the build without taking big risks.  

How would you improve the snap system?

One suggestion would be for the interface to ask a user for permissions to access contacts or the camera etc like on smartphone apps. It would enhance general security. We had some issues with the discoverability of documentation: it’s all there, but as a newcomer, it can be overwhelming to find out what we needed.

Newsletter Signup

Related posts

Snapcraft:多应用客户端-服务端snap开发教程

在过去几个月我们发布了一些如何使用Rust,Java,C/C++和其他语言来开发snap桌面应用的文章。在这些从入门到精通的教程中,我们以一个代表性的snapcraft.yaml文件来介绍开发构建snap所需的具体细节。 今天,我们希望脱离这一过程,而将重点放在服务器端。我们将为你提供一个包含两个有趣组件的snapcraft.yaml的概述:a)它将拥有多个应用程序; 通常,snap包含一个应用程序。b)它具有简单的后台服务,其他应用程序可以连接到该服务。 我们一起来看一下。 Snapcraft yaml 以下是snapcraft.yaml文件的内容: apps: borg: command: bin/borg daemon: simple restart-conditi […]

Learn snapcraft by example – multi-app client-server snap

Over the past few months, we published a number of articles showing how to snap desktop applications written in different languages – Rust, Java, C/C++, and others. In each one of these zero-to-hero guides, we went through a representative snapcraft.yaml file and highlighted the specific bits and pieces developers need to successfully bui […]

Snapcraft tricks: Improve release flexibility with pull and build overrides

Sometimes, software projects are simple – one architecture, one version, one release. But often, they can be complex, targeting multiple platforms, and with different versions at that. If you are packaging your apps as snaps, you might wonder about the optimal way to accommodate a multi-dimensional release matrix. One yaml to rule them al […]