The missing ingredient in commercial desktop OS options; a package management system

Having spent the better part of two days provisioning my new MacBook Pro's OS X, Debian, and Windows XP instances, I am keenly aware of how much the Debian distribution's package management system and its volume of packages have spoiled me. In that two days, the amount of time required to provision Debian was negligible, even though it is configured to completely match my Lifebook's Debian Sid instance. In fact, the sum total of time to set up Debian, including every application I use, was about 45 minutes of my involvement. Those who know Debian (and Ubuntu, Linspire, Xandros, Mepis, or any other Debian derivative) are coolly nodding their heads, while others are probably thinking I am a lying, biased Linux zealot.

It's no lie; here are the steps I had to take:

  • Run the Debian Installer business card image and perform a stock Sid installation, choosing Desktop and Standard System options in the task selection step. If you weren't wanting to run Sid, the netinstall image would be fine as well.
  • Generate a package list on the current Debian installation via # dpkg --get-selections > dpkg-selections.txt
  • Copy the package list file to the new installation; I have copied it to my home directory in this example.
  • Set the package selections for the new installation via # dpkg --set-selections < ~/dpkg-selections.txt
  • Run aptitude or synaptic and choose the install action, then go do something else. Thousands, literally thousands of software packages are being installed for you. Everything from your email client to your office suite to your software development tools are being pulled down from package mirrors. In my case, this was over 850MB of compressed package files.
  • After the package download, answer any configuration questions aptitude (or synaptic) poses.
  • Copy your /home directory contents to the new installation.

Compare that to what it takes with either Mac OS X or Windows XP to get all of your applications installed and configured. Even if you don't know a thing about Linux or even the more technical side of those operating systems, you can tell from the brevity of that set of steps that the Debian setup is remarkably simple.

Now, some will already be keying in their comment posts with exclamations of "Hey! There's DarwinPorts/Fink/Cygwin!" Yeah, each of those is a nice start; however, they pale in comparison. Fink at least has the robust apt/dpkg foundation, but even it has a relatively meager package selection. I am sure I'll be writing more on life with Fink and DarwinPorts in the near future.

I still don't have half the stuff installed on XP that I plan to use. I get tired just thinking about the installs. 8^)

The long-overdue release of java-package 0.28

An updated java-package will hit unstable in the next mirror pulse. Apologies to all for the delay; my discretionary time and that of my sponsors has been rather sparse for some time now. There are at least 9 bug reports addressed in the release. All users who have a JRE or JDK packaged by a previous version of java-package are encouraged to first remove their existing packages and then install an updated one generated by 0.28. Again, sorry for my low level of productivity for Debian, but paying my bills and being a new dad has been quite taxing (albeit rewarding) the past nine months.

Web Frameworks Jam, Day 3

By the end of today, I feel quite confident that TurboGears holds great potential as a productive web application framework. We went through all of the 20-Minute Wiki and TurboTunes tutorials. It would take a full-blown article to cover the stuff I've seen, but for now, I will just highlight some of the features that surprised me.

Despite the youth of the TurboGears project, they seem to have already realized the important of a useful toolset. With a simple command-line tg-admin toolbox from the root of my TurboTunes tutorial workspace, I found an impressive little bundle of tools there at my disposal.

What's CatWalk? A web application to browse my domain model? No way, you must be kidding! Nope:

Lo and behold, my domain model, with one-to-many and many-to-many relationships, browsable and editable right there. Wow. I had also noticed a Model Designer, and set my expectations to what I thought was an appropriate "lowness". Not necessary!

That is the sample model for the domain I had manually created, represented in diagram form. I have yet to see any tools like this for Rails, though they may exist. The "pythonic" nature of the MVC components of a TurboGears application has an aesthetic that totally appeals to me. I also noticed that unit testing code is stubbed out and ready to be run using Nose. Looking forward to learning more about that.

Web Frameworks Jam, Day 2

The second day of the WFJ for me was the second half of my journey up the learning curve on installing TurboGears (TG) on Debian with Python 2.3 and 2.4 installed. The predicament seems to have been that 2.3 is still the default Python version, even in sid, and the python-turbogears package is targeted for 2.4. The package does not pull in at least one of its dependencies, so I was finally relegated to trying a manual installation. Once I figured out that easy_install-2.4 allowed me to install the necessary Python eggs into my /usr/lib/python2.4/site-packages directory, I was all set to go with TurboGears 0.9a6.

Once TG was installed, the rate at which we were able to progress into the tutorial was impressive. I think if we'd been more familiar with how Python libraries are handled, we would have been much farther along. This, of course, is a great motivation for me to give attention to the Debian package so that at least one Linux distro can have a great out-of-the-box TG experience.

Web Frameworks Jam, Day 1

We kicked off the Web Frameworks Jam today, and so far it looks like another great event. We ended up sorting into three groups, one for TurboGears, one for Spring/Hibernate, and one for the Google Web Toolkit (GWT). Bruce, Dianne, and I are the TurboGears group. I was on the fence between Ruby on Rails and TurboGears, but since I would have been the only person looking at Rails, that I would've forfeited the benefit of the group.

I didn't make much progress today; it seems I am a victim of Debian's Python 2.3 to 2.4 transition and a rather nascent python-turbogears package in Debian. I am learning about Python package management and parallel installs of multiple Python versions, which is something I have been meaning to learn anyway. Hoping for a more productive day tomorrow; in the meantime I was able to file 5 bugs against the Debian TurboGears package along with some patches. We hiked around Lake Erwin in the middle of the day, which was a welcome pause from my installation and setup frustrations.

Man, it's good to be back in Crested Butte. I rode the Lower Loop Trail yesterday afternoon with my brother. What a beautiful trail for mountain biking. The Americanos at Camp 4 Coffee were something I've been missing as well.

Debian Graphical Installer -- excellent work, guys

I recently had to provision a laptop at my client's site for my use. Certain third-party applications that are key to managing the technology practice there are Windows-only, but I (am fortunately allowed to) refuse to have a Windows-only machine. They are cool enough to let me shrink the corporate WIndows XP image and set up a Debian sid instance for dual-booting. I took my trusty CD of a recent daily snapshot (the fact that I have been able to use daily snapshots of the Debian Installer ISO for several years with little to no trouble is in itself a huge testimony to the quality of that project's work) and popped it into the media drive of this rather battered Dell Latitude D600. I had heard at DebConf that the graphical installer was now fully part of the daily snapshots, so on a whim I invoked it with the 'expertgui' directive at the boot prompt.


If you haven't seen this, go and burn an ISO of the daily snapshot for your architecture and boot into it. (I won't even elaborate on the fact that being able to choose from 11 different architectures is massively impressive.) What a beautiful interface, and how amazingly tasteful as far as look-and-feel. It's very professional-looking, yet not corporate. There's a button to capture snapshots of the install screens right there on each screen. It may take a minute or two to adjust to having the right line in the display highlighted before clicking the button to continue in more-complex screens, but the annoyance is neglible. I was thoroughly impressed, so much so that I wiped my backup laptop, a ThinkPad T42, and did a reinstall using the graphical interface. You can still pop over to the other virtual terminals just like in the character-based installer; the graphical interface seems to use the fifth virtual terminal. I just popped out of it to the second via Ctrl + Alt + 2 and was able to mount a USB drive with some firmware I needed.

I wiped the T42 so I could run the IBM recovery and get XP back on a small partition. Hey, how else am I going to play Warcraft III? (Seriously, though, if anyone has managed to get Warcraft III to run via an emulator, let's talk.) I found it a study in contrasts, installing XP and then installing Debian immediately after. The first thing I noticed with XP is how little visibility I have into the install process compared to the Debian installer. I suppose I shouldn't have to since all these vendors have supposedly ensured (stifling audible laughter here) a smooth installation process for me. However, when something does go wrong, I am pretty much out of luck. Second, I have come to take for granted how quickly you can fully provision an OS instance with Debian's rich package-management system. The benefits of an awesome package management system are painfully obvious as soon as you have to reinstall Windows or OS X, especially if you are a software developer with a whole litany of tools necessary for your work.

A graphical installer was the last major impediment to me recommending Debian to my friends and relatives who are too befuddled by a character-based application or installer. This closes a significant gap in the Debian offering, and I wish to sincerely thank those who have poured so much time into the installer project as a whole and have gone the extra distance to create an interface that reaches out to the less-technically-oriented crowd.

A bit chilly in a hot place; a distributable Java JRE and JDK arrives

So it's finally OK to mention it now; Java has made it explicitly possible (read legal) to distribute the Sun Java JRE/JDK on a GNU/Linux distrubtion. The new license is for Java SE 5 on Linux only, called the Operating System Distribution License for Java, or DLJ for short. You can read the license in text or pdf form. The FAQ for the DLJ is also available in text and pdf. Heck, go through the README for the JRE and JDK while you're at it.

So what does that mean? Well, GNU/Linux distrubtions like Debian can now package a Java runtime environment or Java development kit in their repositories. That was previously not possible due to restrictions present in Java licensing. Users still have to accept the Java SE 5 binary code license that is totally not free and has the same restrictions Java has always had, but this at least makes packaging and supporting Java less painful for distributions.

Sun is coordinating the efforts via a project, jdk-distros. This is an unprecedented level of cooperation from Sun with external parties in anything related to Java. I consider myself fortunate to have been a founding member of the project. It has been a pleasant and refreshing experience to meet a few optimistic and forward-thinking people from Sun who have a keen interest in Free Software; a big thanks to Simon Phipps and Tom Marble. I was encouraged that they allowed our contributions to be covered under the MIT license. If you would have told me that a month ago I would have laughed at you.

The Debian announcment should be posted on the debian-devel-announce list today. I am sure this will draw both praise and ire from the Debian community. That's cool, though; the rich diversity is part of what makes it such a vibrant organism.

A successful round of catch-up

Despite having been sick and having my wife and child get sick as well, I got caught up on some Debian work that's been on hold for almost six months. The last part of my Philosophy & Procedures phase 1 went out last night (well, this morning really, around 3:00 in between sessions of soothing my now-sick 4-month-old daughter), and I updated all of the packages I comaintain to fix a few bugs, update the standards versions, and correct my uploader email address. The java-package update is pending Jeroen's arrival in Mexico for Debcamp.

I am glad to have these backlog items cleared before heading to DebConf; now I can tackle newer stuff while I'm there ;-). With all the life change in past 6 months, I was beginning to wonder if I'd ever catch up.