New Qt products and licenses have kept vendor Trolltech AS in the headlines all month. Recall our earlier description of Qt as Trolltech's high-quality GUI toolkit. The Trolltech distribution library is coded in C++ and has an innovative C++ API.
C++ isn't the only way to get to Qt, though. Andrew F. Lack is the Unix Team Leader responsible for one hundred Linux desktops at City University in London and Islington. He's been working the last couple of years with Ktk, his still-incomplete binding of Qt to Tcl. Most recently he's connected early versions of drag-and-drop and status bars. While Lack doesn't expect to slide those enhancements into the released distribution of Ktk until October, even the current 0.4 is useful for many projects.
PerlQt is quite a bit further along. Ashley Winters released Version 2.105, only for Unix, in March.
Most up-to-date and impressive of those scripted forms of Qt, especially in regard to its respect for Qt's object-orientation, is PyQt. Phil Thompson created and maintains PyQt, a complete binding of Qt to Python, which he just released in September as version 2.0. He's recently deepened his commitment to PyQt, which now "can properly support a Windows version of PyQt." In fact, while the C++ developer library remains an expensive product in the Trolltech catalog, Thompson distributes complete PyQt binaries for Windows, free of charge. In that case, it's not only more effective to use a scripting interface as we so often evangelize but it also costs less in licensing fees.
That's not all. This summer, Trolltech released Qt Designer, a visual-layout development tool that meets the company's usual standards of quality. On his first day using the tool, Thompson hacked up a copy of Qt Designer so it generated PyQt source instead of C++. He summarized, "PyQt will enjoy full cross-platform support at no cost to the Python programmer...PyQt suddenly has a very good GPL'ed GUI design tool developed and supported, again for free, by a commercial organization. Python now has a very high-quality, open source, cross-platform GUI toolkit and development tools."
Thompson makes the point that several parties cooperated "to allow me to develop PyQt much quicker than would otherwise be the case," including Mechanical Dynamics and his current employer, theKompany.com.
Distributing computing the GNU way
We often mention distributed computing models: JavaSpaces, Sash, BizTalk, WebL, and so on. Our lead column in August gave particular attention to the technical prospects for Microsoft's .Net initiative. Piper is an alternative to those models, and .Net in particular, on both engineering and business levels.
Microsoft, for example, has specific business motivations with .Net that involve licensing issues and how the company is paid for its products. Crudely, Microsoft wants to use .Net capabilities to ensure it receives payment every time its software is used. Piper, in contrast, is a free software project to make "anything and everything buildable by linking small components," even across a network, according to J.W. Bizzaro, director of Bioinformatics.org.
An upcoming installment of Regular Expressions will explore Piper's capabilities in detail and show how it differs from other technologies. For this month, though, it's important to observe that Piper is starting to achieve the milestones that make such a project interesting.
Unix fans are fond of that OS's characterization as a toolbox of small, well-crafted parts that work together to achieve larger goals. Users achieve powerful results, for example, by piping output of one command-line utility into the input of another. Piper generalizes that principle in several directions:
- Its transport encoding is in XML rather than in plaintext
- It uses a GUI rather than textual command lines to put building blocks together
- It knows about networks
Those changes should make Piper useful to far more people than ever understood Unix piping. XML is, of course, the new universal data format, richly supported by almost all tools coming to today's market. It's the appropriate native language for most new technologies, including .Net and most new Web services. XML helps Piper, for example, express the idea of spellchecking the content of an email message, but not the header elements.
GUIs are where most computer users now live. Drawing connections between icons makes more sense to them than composing sentences such as:
grep "^From " $SPOOL | wc -l
Moreover, Piper's connections are considerably richer than Unix's pipes. Rather than just a one-way, unstructured datafeed, Piper "[l]inks can depict protocol-independent data flow, procedural steps, and relationships," according to one Piper document. Moreover, those links "can merge or split streams."
Most compelling of all, perhaps, is the opportunity to escape the confines of a single desktop and access resources throughout a rich network. Piper knows how to do that, too.
Bizzaro explains, "Piper is actually a new name for a collaboration between four older projects: Overflow, Generalized Messaging Service, The Loci Project, and BlueBox." Workers in the life sciences seem to have the most enthusiasm for Piper; genetics researchers, for instance, can easily see the benefits of a system that makes it easy to build filters and computations on a remote store for the human genome or other massive datasets. However, Bizzaro emphasizes, "Piper is general purpose in design. All of the developers appreciate the need for a system capable of very sophisticated operation, yet with a simple facade."