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.