2010-08-22

A Tale of Broken Packages

Now, you are probably going to think this is about mishaps with a shipping company. Boohoo! My UPS package arrived damaged... Sad Face... None of that: UPS is reliable as ever, as are the other shipping companies (FedEx, DHL, USPS, what have you). No, the packages I am talking about are Linux/Ubuntu packages.

One of the major advantages of using a distro like Ubuntu is that someone else figures out what works with what and makes packages available for you to download and install semi-automatically. It's really easy and a lot more fun than the super-crappy way you install software on Windows. Instead of downloading an installer that tells you to shut down all applications before starting and then goes through a hundred screens of questions that you really don't care about (Where do you want the software installed? Do you want the software to report usage statistics?), in Ubuntu you just say, "I want Amarok," and there it is.

Sure, the whole system could use improvements. For instance, it would be more than just nice to add user ratings to the packages, so that you can see which one of the zillion alternatives is rated best. Also, it would be nice to know the size of the download before you get started. Finally, it would be great if there was a meta-server that lists major available repositories, and you'd just check the box next to the ones you'd like.

What I am going to be complaining about here, though, is more basic. I expect the download of a piece of software to give me a package that (a) doesn't break my system, (b) doesn't cause security problems, and (c) does something useful. While (a) and (b) have not been violated yet, I just got a package that clearly violates (c) big time.
Here's the whole story: I lost the originals of my videos on YouTube. I wanted to download them, but there are so many of them, I didn't want to do each one at a time. Instead, I fired up my trusted package manager (apt, I am a geek) and asked the following question:

apt-cache search youtube

Within seconds, I had a list of packages that did all sorts of things. These two stood out:

abby - front-end for cclive and clive
cclive - lightweight command line video extraction tool

Yeah, that sounded about right. So I got to download and install them:

sudo apt-get install abby cclive

Many lines of banter later and no interaction with me besides the admin password, I had the packages installed. Then I fire up Abby, a fairly basic tool with a user interface that is a little unusual (for instance, it uses a status bar instead of tooltips, which is really annoying). To my utter surprise, it is actually very usable. I go to the add feed feature, tell it to fetch the videos on my upload page, and it goes off and does its thing. When it comes back (where is my Clippy??), it has a complete list of all my vids, with correct titles (although it handles HTML references poorly).

I hit "Download all" and off it goes. Man, that's fast! It gets a video downloaded in about ten seconds! I am so happy! Within a couple of minutes, I have all my videos!

I go to the download directory, zip. Heck, where are my videos? I check the preferences, and the download directory is what I expect it to be. I go back to the directory, look into the /tmp, fire up updatedb and try to slocate the files. Zippo. Zilch.

I go back to Abby and look around there. I notice the dreaded status bar, which says something about errors in download and cclive exiting with code 8. (Why not warn the user with a dialog???) There is a "Log" tab, so I get there, an there is a bunch of junk, all telling me that the downloads failed with a code 404. Which is HTTP for, "Not Found."

Ah, what? I get the links individually and the files show just fine in the browser. I try manual download using the command line tool, cclive. Fails with 404. Maybe YouTube doesn't like cclive and disabled the user agent? Would seem odd, after all cclive is hosted on Google Code, the parent company of YouTube, with active participation from Google employees. Whatever. There is a user agent command line option, I change it to match - same thing happens.

I fire up WireShark and look at the traffic sent and received. Oddly enough, cclive makes valid requests and gets valid responses - all of them the standard 200, which stands for OK. There is no 404 anywhere. cclive is making it all up.

Time to go to the parent company. Type in "cclive youtube 404." A-ha! Bunches of bug reports. Everybody is having the same problem. No matter what the setup, no matter what the video, cclive fails to download. Reports are about YouTube, but I sense that it's a matter of most used channel rather than anything else.

Turns out the problem is with the version released in Lucid. Oh... It's an issue that is already fixed in Maverick, the next release due out in (late) October. Oh... The bug is declared resolved, because there is a fix: install Maverick.

Now, in general I am not one to complain about things I get for free. In this particular case, though, the question does come up: Why in earth was a package released as part of the main distribution if it fails to do the most basic thing it is supposed to do? All cclive is good for is downloading videos. It has lots of bells and whistles and command line options, but it seems that none of them enable it to do the only thing it is good for. Download a video.

In general, telling people to wait for the next release is a good enough option. But it is amazingly embarrassing to force people to go through hoops just because you didn't do any quality assurance at all. Sure, any package might break at some point under stress or unusual circumstances. But how on earth can you possibly release a package that doesn't work at all as part of a major release, and then refuse to update it when it is clear it's broken?

Something's foul in the state of South Africa (that's where Ubuntu is made).

No comments:

Post a Comment