The Wonderful World of Open
~ by Philip Peake
Our friend Jonathan Schwartz has a blog (if you didn't know). In a recent entry he discusses "open" as applied to computing and attempts to put his spin on what the word open really means.
I think he misses the point. So let's take a look at what open systems are all about, their history and meaning.
Do, please, note though that Open Systems and Open Source are not the same thing. Open Source was alive and well at the time that Open Systems were first defined, with Richard Stallman's GNU project and the USENET comp.source group both providing an array of Open Source for those that wanted to make use of it.
Virtually all of my professional life has been working with Unix. From my first Version 7 copy running on a PDP11/34 to the present day with Solaris running on Sparc and Linux running on a variety of systems. (I will also hang my head in shame and admit to having run Microsoft systems, from Dos to WinXP-SP2). I have been involved, sometimes directly and sometimes peripherally with the evolution of Unix and standardization efforts around it during that time, and so can claim to have at least some knowledge of the subject.
Jonathan's blog entry on this subject confuses the issue of what an open system is really about. He confuses the issue by referring to an article by David Kirkpatrick, writing for Fortune, and claiming that this article suggests that
"open" is really defined by the degree to which a vendor seeks interoperability with other vendors' products.This isn't exactly how I read the article. David Kirkpatrick clearly differentiates between the open and proprietary worlds, but he suggests that what really matters is the completeness of the whole solution, how well the components work together, and that better profits appear to be associated with the proprietary model. He also suggests that this is the direction that Linux is being dragged by Red Hat adding proprietary software to its distribution.
Jonathan's view is that "open" is really in the eye of the beholder, and that it means the ease of substituting one product for another. Well, that is one definition of "open", but it is certainly not the definition of an Open System, and not one that I have heard before. Jonathan appears to confuse "open system", "open source", "open standards" and a few other "opens" too.
Open systems came into being following the balkanization of Unix caused by the AT&T/Bell labs (System3/System5) and BSD camps. These Balkan states were then further fragmented by the efforts of various Unix vendors to "improve" Unix by adding their own proprietary extensions. Independent software vendors (ISVs) found that code written to any given Unix variant was a real pain to port to another, and the incremental costs associated with maintaining each port soon became prohibitive.
There were several attempts to define a common API and utility subset by different groups, but that was a problem in itself -- there were several attempts. In addition, there were attempts by various commercial interests to insert standards into those efforts which validated their products and excluded competitors. It took a formal standards organization, IEEE, to accept the task and to create the POSIX standard before any level of standardization was possible.
Now POSIX only addresses basic operating system functionality and APIs. But this was enough to enable ISVs to create applications with many less differences across Unix systems. The idea behind POSIX was never that this would completely define every possible thing to ensure perfect compatibility between systems, only in the areas covered by the standard. The standard was general enough that non-Unix systems were able to implement it, for example, VMS from Digital (DEC). This meant that applications targeted at the POSIX standard were now potentially candidates not just for Unix systems, but for a range of systems, all of which implemented the POSIX standard.
Because it was possible for non-Unix systems to implement POSIX, the generic term "Open Systems" was coined. This was intended to cover systems which no longer has proprietary interfaces to system services, but which implemented interfaces covered by an openly available standard. Programmers could develop code independently of the OS, following only the openly available interface definitions.
As an interesting side note, POSIX was so successful and resolved so many of the problems with vendor lock-in that the US government set procurement policies requiring POSIX conformance for any new computing systems. When Microsoft came out with NT, which was designed and built by the chief VMS architect from DEC, it too included a POSIX conformant subsystem. However, this subsystem was virtually independent of, and isolated from, the normal Windows environment other than being able to see the same filesystems and networking. Only the most trivial applications from either environment could successfully execute in the other environment. Microsoft never produced any applications for this environment that I am aware of and never encouraged ISVs to do so either. The POSIX subsystem apparently was purely a ploy to get around the US procurement policies. By any reasonable interpretation of the spirit of POSIX, this did not make NT an Open System.
Now Jonathan is actually correct that by this definition Solaris is an open system. It is. It is POSIX conformant. Beyond that, it actually implements a range of other published open standards, such as X3J11 for the C language. Source code availability has nothing to do with a system being an Open System or not.
Jonathan goes on to say:
Let's instead look at what it takes to move off Solaris, and onto, say, IBM's AIX.
How easy is the move? It's not particularly easy. There are features in Solaris, like the Java Enterprise System Directory Service, N1 Grid Containers, dTrace or ZFS that don't show up in AIX. Nor is there an industry agreed upon definition of Unix to enable a neutral test, or a certification, of what you're using. There was, it was called POSIX, but then all the vendors (Sun among them), went well beyond POSIX in delivering operating system distributions - we added app servers and directory engines and web services infrastructure, innovations that saved customers millions of dollars, and tons of effort. But using those features made it difficult (but by no means impossible) for customers to substitute Unix vendors - and as IBM slows AIX investment, Solaris is bound to leapfrog even further. So is AIX open? Does it promote choice? Well, by that sword, is Solaris? Or moreover, Red Hat?
What we have here is a perfect description of why you should never use any of those proprietary extensions that Sun has bundled into Solaris, unless you clearly understand the trade-off in doing so.
Actually, most of what he lists isn't available to most Solaris users anyway, unless they upgrade to Solaris 10, which makes the list just a little bit disingenuous, and also brings up the question of why is Sun adding these non-standard technologies rather than turning them into open standards, either via existing standards bodies, or via open source. This couldn't be to lock users into Solaris could it?
Picking fault a bit more, the Java Enterprise System Directory Service (which would otherwise be called an LDAP server, if Sun's marketing team hadn't become involved) really isn't a required part of Solaris anyway. It will run happily without it. It also contains some specific extensions, so although it is an LDAP V3 server, you find that for use with much of the rest of Sun's software stack, you can't simply replace it with an LDAP V3 conformant LDAP server, because that software requires the specific extensions to work fully, or even work at all. It's this pretty-much deliberate lock-in that is the problem. Although by the definition of Open System being equivalent to POSIX conformance, Solaris makes it, by the spirit of Open Systems, Sun fails to make the grade.
Sun has a long and distinguished history of contributing to and promoting Open Systems, Open Standards and Open Source. Not so very long ago, a Sun workstation was what a Linux system is today, a reference platform for just about any free software/open source available. If it wouldn't compile on a Sun workstation, it wouldn't compile. Sun worked on technologies intended to improve its competitiveness in the market, but also took the time and effort to make certain that its protocols were well documented and the subject of relevant standards, remote procedure calls and NFS being perhaps the most obvious, and still widely used today.
Sun was an active participant in the POSIX standards process, not only because they saw it as key to commercial success, but because they believed in the Open Systems philosophy.
Perhaps it's time to revitalize the Open Systems movement with something like POSIX II to include all developments of the last 20 years. It seems to me that Sun has a lot they could contribute to that effort.