A few days ago we announced the first initial successful builds of Plex Media Center on Linux.  I’m pleased to say that our progress has continued to be rapid and, frankly impressive.  This post is intended to give those interested an overview of the current state of the build as well as instructions on how those with the requisite skills can participate.
Where We Are:
The current state of the build is quite a bit farther along than it was at the time of our initial announcement (when video playback wasn’t working).  The client now plays back video and music quite well, signs in to my.plexapp.com, sees local and shared Plex Media Servers, etc.  Core functionality is practically complete.  The build process has become a great deal less onerous as well.  The entire project now builds from a single make command.  So far the client has been built successfully on Ubuntu 10.10, 11.04, and 11.10, as well as CentOS 6.1.
How To Get The Source:
To get a copy of the source tree for plex-linux, do the following:
Install git (your distro may vary).
In a working directory run the following commands:
working:$ git clone git@github.com:gewalker/plex-linux.git<br />
working:$ cd plex-linux<br />
plex-linux:$ git submodule init<br />
plex-linux:$ git submodule update
That will download a copy of the current head commit as well as the mediastream skin and plex-ffmpeg necessary to build.
Now read the README.plex-linux file. You'll find a listing of package dependencies for distributions where we have done a clean build test. If you're listed there, install those packages. If you aren't, try and install the equivalent packages for your distro and KEEP NOTES! We will want you to add the list of packages you install back into the doc later!
Once you're done installing dependencies, you can try a build:
plex-linux:$ ./bootstrap<br />
plex-linux:$ ./configure<br />
plex-linux:$ make -j <the number of cpu cores you have or want to use><br />
plex-linux:$ sudo make install
If it builds without errors, awesome! You can run it with "xbmc" and fiddle with it. There ARE bugs. You will run into them. Let's say you do and you want to do something about it:
plex-linux:$ git branch myawesomebranch<br />
plex-linux:$ git checkout myawesomebranch
Now you can edit stuff, test builds, fix bugs, etc. When you're happy with it, you can push your branch back to github and send a pull request and we'll pull it into the working code branch and reconcile everything. Congrats! You just helped us along the way to a fully-functional Linux client! If you're not a coder, you can also open an issue for the project at https://github.com/gewalker/plex-linux. If you can help us, however, we'll really appreciate it and you can share in the glory, whiskey and dancing girls which I have been told will ensue when we get a proper release out there.
**Where We Are Going:**
I am not a believer in taking small bites, so I've set an ambitious milestone schedule for the project. Our next milestone is "**Zoey**" and I'm targeting New Years Day for it. Here's what we know we need to fix to make Zoey a done thing:
1. Modify configure to check for libboost >= 1.42
2. Fix a linking problem with libfaad for ffmpeg compilation
3. Replace the current "XBMC" branding that the app displays with "Plex" branding (some config changes, some code changes, probably a lot of breaking and then fixing the build process).
4. Test builds and fully document dependencies for target distributions (currently Ubuntu 10.10, 11.04, 11.10; Fedora 14, 15, 16, subject to change)
5. Clean up build process and finish build documentation to allow for a working source distribution and enable wider beta-testing.
If you can help with one or more of these issues, we need you. Please consider helping us make this client a reality for a wider audience. We need people who are accustomed to building source projects and to fixing builds when they don't work. We need people C/C++ programmers. We need people with a deep knowledge of autoconf and make. We need people experienced with packaging source projects for RPM and .deb-based distributions. The more expertise we can bring to bear on these problems, the sooner Zoey rolls out the door.
Milestone **Indy** has a target date of 2/14/2012. Goals for Indy include the integration of our own fork of libboost, setting up automated package building for multiple distros, and beginning integration of our code fork with the main Plex branch, all with the goal of being able to release binary beta packages and begin public beta-testing.
Milestone **Monarch** (Plex for your $ARCH!) is currently targeted at 3/15/2012 (the Ides of March). Monarch should represent our project maturing to the point that we can integrate our code fully into the Plex tree and see the beginning of regular Linux Plex Media Center releases.
I want to get there, folks. Let's get it done!


