zappy-santaEight minutes after midnight on December 23rd, theuni (Cory) made a general announcement that final additions had been plugged into the XBMC Eden branch. At that time, he asked that Davilla (for OSX and iOS) and Wiso and CrystalP (for Windows) sign off on the code for their respective systems.

At 3:21AM, Wiso gave the all clear.

At 11:49AM, Davilla added his agreement.

And finally, at 7PM, CrystalP gave the remaining thumbs up.

Unfortunately, in the seven hours between Wiso’s go-ahead and Davilla’s approval, developer Olympia threw a giant wrench into the operation.

It seems that at some point several months ago, an update for the TMDb scraper had been altered in a very innocuous-seeming way. It now provided the ability to watch trailers for movies that are hosted on Youtube.

There is one calamitous problem with this change. The Youtube addon is not shipped with XBMC and is not maintained by Team XBMC developers.

“Why is this a problem?” you ask? Well, I’m glad you asked that question. This is an issue for two reasons. First, we are working very hard to avoid including dependencies on websites that aren’t working directly with us. We REALLY don’t want to go through the weather provider issue again. Second, because the Youtube addon isn’t installed in XBMC at the outset, every single install of XBMC would, upon starting up, make a call to our server and initiate a download of the Youtube dependency, along with any additional addons that Youtube decides it needs. We have every reason to believe that XBMC will be downloaded several tens of thousands of times in the next few days. Imagine the incredible load on our servers that would occur as they coped with initial downloads and then the double load of automatic upgrades. It’d be like a ddos attack we performed on ourselves! It wouldn’t be pretty.

At 3:43AM, olympia pointed this problem out. And progress once again ground to a halt. For the next 18 hours, the team stewed on this difficult to digest information. The obvious solution was to remove the Youtube dependency from our TMDB scraper, and then create a script so that when a user tried to play a trailer for the first time, he was given the option to install the Youtube addon.

That was the obvious solution. Except it was Friday. Tomorrow would be Christmas Eve. Most development was set to effectively cease until Monday the 26th, at the earliest.

I was intensely frustrated. One of the many major problems with waiting a full year between releases is the first beta release will be a never ending host of minor irritations that are not problematic in the coding sense, but are hugely problematic from diverse other perspectives, whether that perspective originates from the eyes of the user, server, or developer.

We branched for Eden on December 11th. The ensuing 12 days were a nightmare of simple, but crucial, problems that had to be fixed. Cory, who acts as our primary github wizard, might not have slept for those entire 12 days. Olympia’s warning was likely the final problem in the line, but I deeply wanted to be able to release a beta by Christmas, and this problem singlehandedly prevented that.

And so I threw a tantrum.

Alright, not really. It was 11:30PM on December 23rd. 23 hours and 30 minutes after Cory asked for final sign off. I new this last problem was nobody’s fault, but I was so frustrated about the many delays that this one was the straw on the camel’s suddenly broken back.

I asked if it was really a major issue. I derided it as beneath our notice and something that could and should be punted for Beta 2. And then Cory calmly explained that if we punted this issue to Beta 2, I would be the one who got to explain to our host server why we melted their computers.

This calmed me down VERY quickly. But it brought up an interesting point. I just bought/got a new laptop for Christmas on the 22nd. In doing so, I finally made the switch to Linux Mint 12 (the first version of Linux that I believe is actually better, from an idiot user perspective, than Windows). Naturally, one of the first things I did was install XBMC. The thing was, I didn’t remember XBMC grabbing the Youtube addon.

I double checked. Truly, the Youtube addon was not installed in my version of XBMC. I pointed this out to Cory. He checked his copy. Sure enough, I was correct.

By merest chance, we had discovered a second bug. It seems, when an addon in the installed version of XBMC is the newest version of that addon, XBMC does not check the dependencies of that addon. And because it does not check dependencies, it does not DOWNLOAD those dependencies, even if the dependencies don’t actually exist in XBMC.

In almost all situations, this behavior is a bad thing, except – that is – when you want to release a software beta that doesn’t download certain dependencies! tMDB depends on Youtube, but because tMDB is the newest version, XBMC doesn’t give a crap and doesn’t download Youtube!

In XBMC Gold, such a bug would be totally unacceptable. In XBMC Beta 1? It’s a Christmas Miracle! So long as we acknowledged the bug in the announcement, it can be classified as a known issue and corrected in the near future.

And so, at 12:21AM on December 24th, Christmas Eve, Cory sent out an email informing the team that Beta 1 had been tagged and Billy the Buildbot was about to swing into action.

On Christmas Eve morning, the download came online.  The announcements were made. Our fantastic artist fkoch (aka da-anda, aka Franz) provided us with A Very Happy Zappy Christmas scene. The next two days were riddled with bug reports* (as is only just and proper in a beta 1). And I ate a whole lot of cake, cookies, and pie.

*By the way, one of the biggest bug problems has been freezing upon opening. That’s my self-imposed job for tomorrow. Time to roll up the sleeves and figure out how and why an upgrade from Dharma to Eden would cause a total freeze. My guess: a bad skin. We shall see.

In 24 hours and 13 minutes, disaster had been averted.

Well…, maybe not disaster. In 24 hours and 13 minutes, the combined genius of some of the best minds I’ve ever had the privilege to work with (plus one really big, really lucky mistake) ensured that thousands of XBMC users were gifted with a merry Eden Christmas.

Merry Christmas everyone. Your XBMC downloads may be found here. And, of course, Happy Hanukkah to Natalie (and my other Jewish friends, I guess).

Now let us dance!

Natalie Bar Mitzvah

Hava nagila, hava nagila Hava nagila venis'mecha!

 


  • nilzen

    Great post, keep the “behind the scenes” posts coming!

  • dcx_badass

    Thanks for this, good read. However I updated my IOS version this morning and on first open it automatically grabbed youtube.

  • Henti

    Hi Nathan,

    Where can I find information on the freeze on upgrade to Eden. I have the same issue and would like to help where I can. Thanks for all the effort and posts.

    H

  • https://plus.google.com/111375213934404408615 Nathan

    Henti, thanks for the comment! If you create a thread at http://forum.xbmc.org/ and include your debug log, that’ll go a long way to helping.