Interview with Cory Fields of XBMC
I recently had the honor of spending time with Cory Fields, the Public / Business Relations Manger for XBMC. XBMC is the premier free and open source, cross-platform home entertainment system. XBMC was originally created for the first-generation Xbox, but has evolved to now be primarily available for Linux, Mac OS X, and Microsoft Windows. As proof to their success, the XBMC project has recently been accepted by the SFLC as clients. A perfect way to test XBMC is to download the live CD.
LJ: How are you doing?
Cory: I'm good.
LJ: How do you describe XMBC?
Cory: First, it's a shining example of open-source collaboration. Second, it's one hell of a media center.
LJ: What is your involvement with XBMC?
Cory: I've become the Public Relations person, as well as the Business Relations Manager. Basically I do the behind the scenes stuff, though I help with the server and web administration as well. So mainly social, but some technical to keep myself connected as much as possible. In the past year or so, we've seen a sharp rise in corporate interest in XBMC. When a large company wishes to present a road map for integration, I'm usually the primary (at least at first) contact.
LJ: How did you get started with XMBC?
Cory: Reporting bugs, troubleshooting, and submitting patches.
LJ: XBMC is available for many platforms... including Linux, Windows, Mac, Apple TV. Does it still work on the Xbox or Xbox360?
Cory: We cut ties with the Xbox ages ago, and have never been interested in the Xbox 360.
LJ: Interesting. I didn't realize XBMC was no longer supporting the Xbox.
Cory: Nope. There have been no official Xbox releases since Atlantis. One developer still merges some code to the Xbox branch from time to time. It will soon be branched out into a completely separate project to help avoid exactly that confusion. Also, at this time, almost all of the team has zero interest in supporting the Xbox anymore. It's ancient hardware with limitations that were hit long ago.
LJ: Approximately how many people are working on XBMC?
Cory: That one's always hard to answer. We have an enormous community. You can grep the commits for a more concrete answer. In the past, something like 15-20 active developers at any given time. But the community provides patches, addons, etc. so the small number of active developers is not a true reflection of the effort that's gone into XBMC.
LJ: That is a very healthy size and there are patches sent in by even more people.
Cory: Exactly.
LJ: What is the primary language requirements for XBMC?
Cory: Code? or spoken?
LJ: LOL.. Actually, I think both would be good.
Cory: Primarily C++. scripts/plugins are python. Then bits of javascript / shell scripting throughout. Communication goes on in English. Though the program itself has been translated to a huge number of languages.
LJ: It's primarily C++ because of it's Xbox roots?
Cory: That, and the libraries we use, and the fact that C++ is widely known.
LJ: What can one control with the scripting language? GUI only, or does it go deeper?
Cory: You get a full python environment, plus the ability to control GUI elements. I'm no expert on the scripting side by any means. Best bet would be to check out some of the existing addons to see what they can do. Recently added, lyrics, trailers, home theater experience, weather... all very popular
LJ: One of the things I was hoping for when I recently started playing with the most recent version of XBMC for some integration with the Tivo.
Cory: Patches welcome ;)
LJ: Further investigations made me think the Tivo had to be hacked.
Cory: Exactly. It's become our (basic) stance to not include support for anything proprietary in XBMC core. That's what plugins/scripts are for.
LJ: I understand... How does XBMC compare to Boxee?
Cory: Boxee focuses more on the social aspect of media, web content, and ease of use.
LJ: Was boxee a fork?
Cory: Yes, they forked to pursue a commercial venture based on our code base on friendly terms.
LJ: Do you know if they push any code back?
Cory: More so in the beginning. But the codebase has diverged quite a bit.
LJ: How would you compare XBMC to the others, like Myth (front end), Frontrow, etc...
Cory: Those are opposite ends of the spectrum. Frontrow provides an experience that works with minimal intervention, assuming you play by their rules. Myth takes quite a bit of work to get going. The main draw to XBMC, as most any user will tell you, is that it's beautiful. You just can't wait to show it to your neighbors.
LJ: Is XBMC fully open, or are there any patent issues you need to worry about with the video playback code?
Cory: That one's hairy. For the most part, we use ffmpeg for decoding. Put simply, we inherit their issues. The ffmpeg team deserve a ton of credit for their work. For the average user, there's nothing to worry about. However, when dealing with the legal departments of large manufacturers, the patent issues become a headache.
LJ: If someone was interested in joining the XBMC project, what steps would they need to take?
Cory: We're like most open source projects. If you're helpful, we notice. Submit good bug reports, submit patches, help out however you can. We can always use fresh blood. But we're more of a 'start hacking and see what happens' group. It's hard to bring someone on just because they've proven themselves good at c++. But if they show up with a POC (proof of concept) feature, they'll surely find a mentor.
LJ: Does XBMC look and act the same on all your hardware?
Cory: For the most part, yes. Some hardware is less powerful than others so we accommodate where we can. The Apple TV for example and ARM are obviously quite different.
LJ: Do you have some "reference" hardware you suggest to someone who is new, but wants to setup a media center?
Cory: Easy... ION. There's plenty to choose from, but a nice ION system is the best bang for the buck at the moment. For years we've been under the impression the hardware was just around the corner. Now, since the ion stuff hit the market, it's very obvious the time is now. And with the arm/tegra2 in the near future, the landscape is only looking better.
LJ: I suppose you have HD support?
Cory: Sure, with hardware acceleration, XBMC handles 1080p without breaking a sweat.
LJ: Back to you for a second.. Is this a full time or part time job?
Cory: LOL. Job? It's a part time hobby. Same for all the others.
LJ: Since it doesn't pay your bills, what would you say helps keep you motivated. I ask as there are lots of people contributing valuable code to lots of projects who sometimes lose that spark. Maybe you can mention how you keep your spark as a way to help others keep theirs.
Cory: Sure. XBMC is fun. The community is great. It's a great feeling to know that you're a part of a project that is as well-received as XBMC is. Initially I was honored just to speak with the developers. It's an incredible learning process. We've made ties to communities and companies that we wouldn't reach otherwise. As for keeping it alive, it's ever-changing, and all team members have input. So it can be great fun to debate and argue with the direction/form things take.
LJ: Any sense for the size of the greater community as a whole? Maybe the install base?
Cory: Those are hard numbers to get. Our forum has approximately 40,000 users. We have a pretty steady 8000 downloads / day, excluding Linux, which is harder to track for obvious reasons.
LJ: I am very impressed with XBMC. What are some new features we can look forward to in the next version of XBMC?
Cory: The two biggest by far are: pvr and addon manager. Basically, we'll be providing a universal pvr frontend. There are lots of good backends out there, no sense reinventing the wheel. You'll be able to hook up xbmc to vdr/myth/tvheadend, etc.
LJ: You will have a seemless connection to the encoders...
Cory: Yep. And roughly the same experience regardless of what backend you choose.
LJ: Will the user be able to install the encoding software via XBMC, or will they need to do that separately.
Cory: Separately. Though the next livecd may include some ready to go.
Oh almost forgot, web interface is another big improvement for the next version. The existing web interface is very limited. It's being replaced with libmicrohttpd and jsonrpc.
Then the other big feature is the new addon browser. It provides the ability to browse for skins/plugins/scripts/scrapers/pvr/etc. directly from XBMC itself.
LJ: Are you using SVN or GIT?
Cory: The official XBMC repository is SVN, though most developers (including myself) use git locally.
LJ: Is there an offical place like github for most of the addons?
Cory: Hosting for addons has been a nasty problem in the past. They're scattered all over the place. That's what we're trying to address with the addon manager. We host the addons on our mirror system, like a repository. Then you can browse that repository in XBMC. Complete with versioning, dependency resolution, etc.
LJ: Like a mini CPAN.
Cory: Exactly. We have a goldmine in addons, but they've historically been a huge pain to find/install. We're hoping to change that.
LJ: I have recently seen the power of controlling the addons... like with Apple and the app store..
Cory: Yes, that's a big concern. The current (read rough) plan is to handle it almost like Ubuntu. We give a default repository, and have our own policies. But you're welcome to substitute your own repositories.
LJ: Similar to the Debian model of having the "not-free" area for your tivo addons.
Cory: Yep, that's very similar to what I have in mind as well. But remember.. these are addons, not core xbmc code.
LJ: So the addons don't need to be separated by license?
Cory: The addons don't necessarily have to be floss, or even gpl. as long as they're free to distribute under reasonable terms.
LJ: That makes perfect sense.
Cory: That's a great oversimplification obviously, but is the gist. The first stable XBMC with the addon manager will likely be a big learning experience.
LJ: Do you have a target date yet?
Cory: Dates are always hard, but we try to keep a rough 6 month release schedule.
LJ: So this summer.
Cory: Should be, ya.
LJ: Thank you very much for your time. Both for today, and for all the efforts you and the team continue put into XBMC to make it the fantastic product it is. Feel free to reach out to me at any time.
Cory has generously offered to do a followup interview and to pass questions on to other XBMC developers. If you have any questions for Cory or the XBMC team, please leave them in the comments. I will collect the best questions and pass them on in a few weeks.