What's going on?
I promised an update a few weeks ago and here it is. Better late than never! There’s lots to discuss about what’s going on with XBMC development work. So how about this.. I’ll provide an overview as to what’s in the works, then respond to any questions/comments in a follow-up post. This information is aimed at our more technical users interested in the bleeding edge, so if you’re not interested in development, you may want to sit this one out. This is also a test-run for future posts. In the past, I have avoided writing technically as much as possible because it may not interest many of our readers. If there is a demand for more, we’ll make it a regular thing.
Git
First up is our move to git. We said goodbye to SVN a few months ago and have experienced the pros and cons of a distributed vcs. Git can be challenging even for seasoned developers, but it brings many benefits. Here’s what we’ve seen so far:
Pros
- Distributed. We can work as we travel. Everyone has a clone, so it’s much easier to say “try my code!”
- Branching/Merging. These are obvious to any git user.
- Github. The pull requests have proven to be excellent for discussing new features before merging them into mainline.
- Code quality. Due to the above, we have been working hard to keep the master branch compiling on all platforms for each revision. Though git is a great tool, not magic..
- git-svn. This provided many of us with a bridge to git.
Cons
- Git is hard. It has proven to be a big change for several of our developers, and has made us quite cranky at times. We’ve even decided that the committer who makes the biggest git-related oops will be presented with the first-annual “git-wtf” award at the next DevCon.
- The distributed nature means that it can be difficult to get a quick overview of what’s happening. We each maintain repos and branches, then merge them in upon feature completion. As a result, there may be zero activity in the main repository for a few days, followed by large feature-complete merges.
- Rebasing can be voodoo to inexperienced git users.
- Not related to git specifically, but switching our VCS has been a big hassle. We have had to fixup our buildsystem on all platforms, trac, mailing lists, irc bots, buildbot, etc.
Nightly Builds
Nightly builds were a big hit during the Dharma development phase, and proved to be very helpful for debugging. The move to git has slowed us down, but nightly builds started back up last night. Windows and OSX are up and running, our Ubuntu PPA will be up soon.
Restructuring
As with each major version, we’ve taken the opportunity to clean up old code, refactor for easier development, and abstract away as much as possible. The first big move was a “code reshuffle” by cptspiff, and it was a huge step towards cleaning things up. As a result, the classes and includes have undergone a major cleaning, and files have been moved to sane locations. One of the main goals was to separate our code from that of upstream libs, which had become tangled into a nasty mess over the years. This should help us move towards inclusion into Linux repositories, among other things.
OSX and Windows have undergone similar restructuring. The goal for these platforms has been to get away from keeping pre-built binaries in our repository, and to build them natively instead. This can be tricky, especially for unixy libraries in windows. Kudos to WiSo, CrystalP, and the others for getting ffmpeg built as part of the XBMC compile.
Jcarroll has recently been working to clean up some of our global variables. This is pretty transparent to users, though some Linux users may notice that the annoying “Critical Section” messages are no longer spamming their consoles. In addition, he is working to make external python default for all platforms so that we can finally stop building the ancient 2.4 with each compile!
New Stuff
Anssi has bumped FFmpeg to a more recent snapshot. For the most part, this means playback bugfixes and new format support, but in this case we were also able to trim a few dependencies: liba52, libdts, and libmms are no longer with us.
FneuFneu has submitted a pull request that provides FreeBSD support. This will surely undergo a few rounds of review, but should be merged in soon enough. This should make XBMC appeal to yet another audience.
Jmarshall has several projects going. With the iPad announcement, we have a new audience of touchscreen users. He’s working to make the experience better by providing skinners with a new set of touchscreen tools. The first bit was committed last night, it adds a touch-friendly slider during movie playback.
In addition, he has a “files-in-library” branch going that will lead us an overdue refresh of how the library works. Suffice it to say, the goal is to unify the File/Library views so that navigating is much more intuitive. From the work done so far, it is shaping up to be incredible. I hesitate to mention it here because it is likely to cause plenty of confusion, but we’ll discuss it more as there is more to see.
Gnif continues his development on his new AudioEngine, a complete rewrite of our audio system that solves many problems at once. This is mainly waiting on the OSX portion and testing.
Dushmaniac and several others continue their work on the PVR interface while the other piece of the puzzle, cptspiff’s binary add-on work, continues as well.
iDevice/aTV2
Davilla, Amet, Gimli, and others continue to work tirelessly on these ports. A quick update (10.0-7) was released on Feb 19 featuring:
- Faster picture loads
- Improved rendering speed
- Remote thumbnail fixes
- More flexible h.264 playback
- Disabled portrait mode (while this is a cool feature, it was more annoying than anything)
- Enabled ZeroConf
- Updated Samba
A special thanks for Memphiz for working out several bugs lately.
This will be the last release for a while. They will now focus on integrating the port into mainline code.
Dharma 10.1
We have been working on a bugfix release for Dharma, due out very soon. The main reason for this release is a bug that keeps us from updating skins on the official repository. In Windows, if a new version for the current skin is released and automatic updates are on (default), XBMC will fail to load the update, leaving users in skin-limbo. Ouch. This has since been fixed. You can follow the merge request here. Only packaging is holding up this release.
Statistics
We’ve begun tallying add-on statistics so that we can display download counts, popularity, etc in XBMC. The numbers are VERY impressive. Next up is a post with some details.
Thank you very much for the update, please keep them coming!
Great work with XBMC! I as many others love these technical reports.
Also I wonder if there are any work in progress for Spotify support, that is the most important thing missing in my setup.
Thank you for the post. It highlights yet again how much work you all put in behind the scenes; thank you.
Yes a donation is long over due.
How many developers would $50 (AUD) feed?
What are the financials of XBMC like? Are there any particular saving targets to buy certain tools/assets?
Cheers
Any plans for a Honeycomb version of XBMC?…. Motorola Xoom… Now that would be EPIC!
Yes, Thank you; More than anything else, I would LOVE to have xbmc as my PVR. PVR FTW!!! My life would be complete,
Thank you for this great post.
And thank you for this piece of SW.
I’ve discovered XBMC when Dharma was released and I was waiting for an ATV port.
ATV port made my day and I use it almost every day.
Thanks again, you guys rock !
@Patrik
The plan is afaik to first target 2.x flavour and later allow for 3.x, mostly to minimize headaches with addons.
@sdsnyr94
We strive to keep all platforms to have somewhat similar core features and any platform will use AudioEngine when and if it is merged into mainline. This is why we want atv2 work to be merged into mainline so they can benefit from work done to mainline. Note that even if core is shared among platforms some features may not be possible due to harware restrictions, this may apply to atv2 and iDevices with AudioEngine.
@Jonathan
It is not released yet so hard to say, android is interesting as stated elsewhere but without hardware it is rather hard to do anything and verify if it is possible. A port is alot of work and does not happen by magic, as with all open source software the progress comes from someone having the hardware taking alot of their time to solve problems. If you wish to donate a couple of xooms to the developers it may happen, it may not, at this point we can’t say anything about feasibility as we do not have hardware, we don’t even have a finished SDK.
@Matte
Agree spot is a must. I have XBMC running on my big tv via my acer revo. Spot needs a 10 foot interface, spot needs xbmc and xbmc needs spot.
Excellent update theuni. Great to see more tech stuff!
The FFmpeg update will hopefully resolve some minor playback bugs i see on Windows. The ‘files-in-library’ move will be great. Finally, really looking forward to the new AudioEngine, and in particular HD audio bitstreaming.
Great work TeamXBMC. You guys are the business!
Great post, more of those please :)
Excellent post. Very well written and informative. It would be great if you could make these reports regular.
Many thanks to you and the XBMC developers. I’ve recently bought an ATV2 and I’m having a lot of fun with XBMC.
Hi there,
thanks for the update.
Loving the aTV2 port, however, you say that you won’t be updating the aTV2 port for a while, I’m desperately waiting to be able to play .iso files and Video TS folders as this is my entire library. Is this planned? Or beyond the capabilities of the aTV2?
Great to see touchscreens getting more attention. This is dearly missed!
Android 3.0 SDK was actually released yesterday and it’s optimized for tablets :)
I Would love to see my Advent Vega with Tegra 2 run a smooth copy of XBMC. You can add me to a Beta Testers list if you like.
I love those kind of updates! Pleasant reading!
> I have avoided writing technically as much as possible because it may not interest many of our readers. If there is a demand for more, we’ll make it a regular thing.
More tech posts, I demand it!
Are you going to merge in an updated version of lirc along with the FFmpeg and 10.1 releases? More and more forum users are popping up that have new IR Receivers that aren’t in the standard lirc database, and it’s just giong to get more and more common.
Please update XBMC to have in the system menu an About section.
In the About section, list the version of XBMC (IE: v10 rc1) and build.
for the live CD, add the version of Linux (IE: v10.10) and any plug ins and versions.
And, of course, have the website address and feel free to add a window that scrolls and list the contributing members.
THANKS
John
Awesome update! more like this pls =)
@Android
Hehe, yeah I saw that just after I posted :)
Still, it can’t be developed without hardware so please donate (hardware or money towards it) and perhaps it will happen
Any chance we could have threaded chapters in XBMC? There are apparently ffmpeg patches to allow it although they may be old. VLC is supporting it and some others. Would make BD conversions much easier :-)
That said, I continue to appreciate the work you guys put into this software and have converted quite a few friends over to it. All of them have been very happy! Thank you and please keep up the good work!
@HwyXingFrog
You can get the Zotac MAG boxes for as little as $239 when they go on sale at NewEgg. This comes with memory, drive, everything except an IRDA receiver. It’s an ION box so it’s 1080P capable. Not sub $200 but a pretty killer deal IMO – I own 2 of these an an ASROCK ION…
Great post — knowing what’s coming down the pipe on XBMC is part of what keeps me excited about it. With most devices, once you buy it, the OS is stagnant and quickly becomes outdated. XBMC, like any good FOSS project, is a living breathing entity. I only with the MythTV community had as much vigor — it doesn’t, and that’s why my HTPC now runs only XBMC. Keep up the great work, devs.
@Mike yeah I am one of the people that had to find out how to compile lirc for my receiver. Basically just to add an extra entry to the Device ID’s the vendor was already there. I was actually surprised I had to recompile just to do this I expected to find them in a config file which would have made it easier for a nix novice. I don’t know if newer versions would improve on the situation I guess they would at least have more Device ID’s by default.
@theuni – I like a technical post every so often to see what you are up to.
These kind of posts are great and really wraps up what’s going on behind the scenes. +1 to keep this up and a big thanks to all developers for this wonderful program!
Thanks very much for this post, it is something that I can really appreciate.
A question regarding the library redesign: I have seen some talk in the forums about using some central database so if you are running multiple XBMC boxen (and this will only get more common as the prices for XBMC HW are constantly falling) you could keep them in sync. It did not happen so far but I would really welcome it if you could include it in the new Library.
Keep up the good work!
These updates are great, please keep ‘em coming
Excellent post. I enjoy reading about what is going on with development.
This post is perfect. Is exactly the kind of information we want to see. Technical but not too nerdy.
A suggestion: It would be nice to have individual pages on all the different features being worked on, (what’s done so far and whats left) , so that the individuals can give updates as they come.
Perfect. These notes are uber. I hope the FFMPEG update fixes the video pixellation corruption when fastforwarding or rewinding with DVXA enabled.
Cool, thanks for the Git pros and cons, it’s good to read this feedback.
Also very nice to keep us posted on technical stuff, even if i’m not a developper on these technologies.
To ALL the XBMC team and occasionnal commiters, you rock!
Great post, keep ‘em coming!
I’ll wait for those PPA updates now… :)
XBMC Rocks! I use it Every day with my ATV2. any thoughts on “GUI-izing” MySQL support for distributed libraries? or perhaps a gutted down “server” version of XBMC that can run on a headless box purely to scrape and maintain a media library that can then be distributed via MySQL.
Again, awesome product! Keep up the great work!
Please people as long as you consider restructuring, consider the move to a frontend – backend (server) architecture.
If you mean a client – server model then know that it can already use MySQL server as a backend database.
You might however also want another seperate interface GUI for the database to manage the media library.
+1 on the HD Audio, it’ll be nice to not have to use WMPC to watch my MKV’s!
Enjoyed the more technical update. More of these please.
Great to see that you´re still working.
Few Days ago i made an update und was realy suprised about the new skin. :)
XBMC will never require a frontend – backend architecture, this is something which gives _alot_ of headaches for the majority of the users of the media centers which have gone this route and we are very proud of not forcing this upon our users. However, it becomes increasingly popular with multiple clients in a home and we recognize this and will work on ways to make it possible to simply share libraries among XBMC powered boxes. MySQL is such a way but it is obviously far from ideal and we are hoping to find a better solution than that when more developers have multiple clients (very few have multiple as of yet) as then more developers will have incentive for coming up with better solutions. Afterall you shouldn’t need to be tech savvy to have multiple clients and multiple servers and we always strive to have XBMC being very user friendly while still retain powerful.
@flash
Plus one!
@kkiff
Same here !! Cant use it for playing my library of Video TS Folders. Hope it gets some attention soon. Otherwise, love the product (-:
This is a really useful post. It’s great to get an overview of what’s going on in this format. I usually check commits here and there, but this is a much better way to get a sense of what is in the pipeline.
I’d love to hear some more about the new library system.
More iOS Apple TV updates please! ;-) Love it.
Thanks for the interesting update. +1 for more of these in the future. +10 for .iso support on ATV2 ;-) Thanks for all your hard work…
Thank you guys for all you do to make XBMC such a great media center, it is truly amazing.
http://www.tech-adventures.com
On git:
Git is *not* hard. It’s a different methodology than VCS’s like SVN or CVS, but it has a very low learning curve. You need to understand the philosophies behind git and stop trying to translate methodologies from SVN.
While git is a distributed VCS, it’s very beneficial to keep a centralized master branch. Commit often, push when you are ready to share your changes. With large numbers of developers it can be helpful to push often to minimize conflicts.
When rebasing is in question: DON’T. Merge from master frequently, twice a day even. This will keep branches from becoming diverged while maintaining good histories. Yes, there are situations for rebasing, but as a rule of thumb: MERGE, don’t rebase.
Git will make your life sooo much easier :)