The Road to Alexandria (part 1): Introduction
(First of all, a sincere apology for not writing sooner. Communication is important, and I’ve sorely lapsed in my communication with the Plex community. This may have appeared as a lack of progress on Plex, but let me assure you, it’s entirely the opposite. We have some amazing things to share with you this year, and we’re only getting started.)
As most of you know, for the last year we’ve been working hard on best-in-class support for online media. Since we released the first version of the Plex Media Server with support for plug-ins, there have been hundreds of plug-ins written, and more than 1.4 million plug-ins downloaded from our store. We strongly believe that our platform is the easiest way on the planet to get media from a website to your living room TV.
On the other hand, many people who first see Plex are impressed most by how it handles your local media. To see a file on your hard drive spring to life with posters, fan art, and rich metadata is a wondrous thing indeed. Navigating through your library in various ways, seeing what episodes of a TV Show you haven’t watched, browsing through movie summaries and ratings, these things are all magical compared with browsing a lifeless Finder window.
The success of our platform for online media, coupled with our passion for building the best possible product, led us to focus our attention and energy in the last months on local content. Now as you may know, the library in Plex/Eight is based almost entirely on XBMC code. The XBMC library is quite possibly the best in the world, especially compared with other pieces of media center software. So the first question was: enhance or rewrite? At the end, we decided, just like with our plug-in framework, to throw out the existing code and rewrite it from scratch.
The ground up rewrite not only results in an extremely powerful library for personal content, but also sets the stage for providing many benefits beyond just the library itself. The latest major revision of the Plex Media Server, which incorporates the library, provides many other new capabilities under the hood that will allow us and developers to build some seriously cool new things.
This first post will serve as an attempt to explain the high-level features. Of course, the most important thing of all is its name. We decided to name the Plex Library after the Royal Library of Alexandria, the most famous library of the ancient world. (Naysayers may point out that the library was eventually destroyed, but hey, it lasted for hundreds of years!)
Here are some of the features of the new library:
- Decentralized: This was very important to us. The XBMC library is coupled to the media center itself. In Alexandria, the Plex Media Server stores all the data, and serves it out via an HTTP/XML interface. In this way, multiple Plex applications can share a library, or multiple libraries. You can do cool things like stop watching a movie on one client and resume on another.
- Flexible: As opposed to the XBMC library with its limiting Movies and TV areas, Alexandria allows a library to have unlimited sections. For example, you might have a “Documentaries” section, a “Home Movies” section, an “Anime” section, and a “Foreign Films” section, all configured to suit the media.
- Open: As mentioned before, the data from the library is available via an HTTP interface to the Plex Media Server. In addition, a new class of plug-ins called Metadata Agents have been developed, which are responsible for finding and retrieving information about your media from the Internet. Agents already exist for IMDB, TheMovieDB, TheTVDB, and others. Agents can retrieve any sort of data, such as TV theme music, subtitles, and song lyrics. The agents can be combined and arranged so that the resulting information is a customizable amalgam. We’ve also added a new class of entities called Scanners, which are responsible for identifying media on your drives. This means that even if you have a completely different file system structure to your media, you can write a few lines of Python code and integrate it with Alexandria.
- Unified: In Alexandria, even if a movie has no entry on IMDB (for example), it still sits alongside those movies that do. There is no more “file mode” and “library mode”. Everything in a library section, regardless of how much metadata it has, is a first class citizen of the library. This also allows content like home movies to live in the library, have their own fan art, posters, summaries, and other metadata.
- Robust: One of the problems with the old library is that a change to the IMDB site, for example, could cripple the scraper and prevent new content from being added. Since the metadata agents and scanners live in Plex plug-in bundles, they are auto-updated from our site, so we can quickly push a fix. Additionally, Alexandria is flexible enough such that even if a metadata provider like TheTVDB is down, new episodes are still added (and somewhat magically, may even get full metadata!)
- Developer friendly: The old scrapers were an enormous pain to develop, maintain, and even understand. We’ve built the new agents on top of our proven plug-in framework, which relies on modern features like XPath to make it easier than ever to bring metadata to your media.
- User friendly: There are a number of features which make Alexandria a pleasure for users. The library management is centered around the Plex Media Manager built into the Plex Media Server, which makes it easy to add library sections. Once added, these sections show up instantly on all Plex clients in the house. The Media Manager makes it easy to maintain your media, correct matches, tweak the metadata, customize the artwork, and more.
This, in summary, is Alexandria. I’m sure the first question will be “When can I have it?” We are quite far along with development, and we have released early builds to a select group of testers, who have been extremely helpful with their feedback and help. I’m using it full-time on my Mini, and used it to watch the latest episode of Lost last night. There are, of course, many things to clean up, fix, and add, but it won’t be too long now before we open up the testing to more people.
Thanks again for your patience. I’ll write more soon, and cover lots more of the details of Alexandria. Until then, I’ll leave you with some quotes from the first group of testers:
“Setting up sources is MUCH MUCH MUCH easier!!”
“This is going to be soooo good!!”
“ho-ly sh*t! I can read and understand this!”
“PC users are going to want a Mac. This is way ahead of XBMC now”
“This is just … WOW!!!”
“That is fantastic! Exactly what we need.”
“This looks amazing…exactly what is missing”
“You guys, this is f**king amazing”
“Whacking sources before used to be such a pain in the ass. Now it’s no big deal.”
“Wow, this is really nice”