During the June 18 Gillmor Gang show, I asked Hummer Winblad's Mitchell Kertzman about open source business models. Kertzman said 1 that the key factor, from his perspective, is the way in which the open source stack frees commercial software companies from the burden of "dragging around an expensive platform." He also questioned the need 2 for the JVM, citing two reasons. First, that Java's portability has become a non-issue now that there are only two platforms that matter: .NET and Linux. Second, that the rise of XML Web services has given a boost to the text-savvy scripting languages: Perl/Python/PHP, the "P" in LAMP.
At that point something clicked in my head, and I proposed 3 a software taxonomy based entirely on virtual machines -- the VB runtime, the CLR, the JVM, the Perl and Python VMs. Some of these are bound more tightly to operating systems than others, some are bound more tightly to programming languages than others, but they all share a set of common characteristics. The definition of a modern "software platform," I would say, is a VM and its associated class libraries. And a bunch of implications flow from that.
Here's one. In last Friday's item on automated code analysis, I forgot to mention that the growing reliance on VMs is become a key enabler of a new breed of tools that enhance software quality. From Greg Wilson's blog:
One of the most important features of the "New Standard Model" of programming is its emphasis on unit testing. Just five years after the first version of JUnit was written, an ever-increasing number of programmers actually create and run tests as a matter of course.
But writing tests by hand is still tedious, and still requires a fair degree of programming skill. Enter Li and Wu's new book. Over the course of twelve detailed (and sometimes rather intense) chapters, the authors explain how to build a higher-level testing tool for .NET programs using:
[Helium: Greg Wilson]
- reflection, to find and call the methods being tested;
- CodeDOM, to generate testing code from specifications; and
- Excel, as a user interface.
VMs still aren't completely viable on the client side, so a lot of what's becoming possible hasn't really sunk in, but that's about to change. Eclipse runs on the JVM, Chandler runs on Python, various things run on the CLR (and Mono), Longhorn apps will run on the CLR. One way or another, your platform will be a VM. Its capabilities, class libraries, OS bindings, and language bindings will matter more to you than the underlying OS or language.
1 This is an experimental MP3 clipping service. Alternatively (i.e., if I break it) you can just go to the broadcast and play 9:21 to 10:25.
2 15:08 - 15:59
3 21:13 - 23:35
Former URL: http://weblog.infoworld.com/udell/2004/06/29.html#a1030