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.
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.
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 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.
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.
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 java.net 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.
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.
I recently started syndicating the IT Conversations RSS thread on my site and saw that an mp3 of Bruce Sterling speaking at O'Reilly's Emerging Technology Conference was available. It's an interesting listen; if you're a cyberpunk fan at all, then it's even more interesting.
Just finished a slightly overdue book review of Head First Ajax for O'Reilly, and now off for 4 hours sleep. Everything takes me longer now that my daughter is here, but it's certainly worth it. The next thing in my queue is the long-overdue update to java-package; that should be hitting unstable by the end of the week. Sorry for the slowness, but life's been busy. I've certainly missed hanging out on #debian-devel, and I'm looking very much forward to seeing many of you in person at DebConf.