Common Sense Kryptonite - It is amazing to see how much patience Miguel uses in trying to persuade the religious zealots of common sense. There is no way I would be so patient, I would have exploded with "are you all retarded?" or something equally rude by now if I were in his shoes. He is pointing out why Mono is a good idea, and is not even remotely a sellout to Microsoft. Here is my analysis:
Miguel's Position
First, he points out that open-sourcing something that comes from a commercial entity is not "evil", and in fact is how the entire self-described OSS "movement" got started. He says, "GNU is a free re-implementations of Unix. Linux is a e-implementation of the Unix kernel. Before the advent of Linux and the Berkeley Unix, Unix was a proprietary technology, built by ATT (which back in the day, was a monopoly)." Still, developers took what was good from Unix, and reimplemented a free version of it. Down to the Unix programming language: C (which was also invented at ATT). Even C++ was invented at ATT. I would have gone further, and pointed out how Linus started with Tannenbaum's work, and how completely crass and dishonorable for these people (RMS, Torvalds, etc.) to claim that they have invented some fantastic new thing when in fact they are wholesale copying the work of Tannenbaum, Aho, etc. and completely failing to give credit.
I would also have pointed out that Microsoft was at one time the largest volume distributor of Unix licenses. It is true, and if this seems strange to you, then you should ask yourself how it is that a bunch of religious zealots have managed to convince the broad population that facts are false and lies are true. How is it that most kids today believe a version of history that has been mostly fabricated in the past 8 years?
Well, since this is about religion rather than reality, I am sure his common sense did not resonate with many of the audience. But he should have stoked their bloodlust when he pointed out, "Think of Mono as following the same process: we are bringing the best technology out there to our beloved free software platform. And at the same time it serves to be a magnificent upgrade on the development platform. ... Lets make it easy to bring developers from the Windows world into our platform."
Gee, what a revelation -- the only reason I am not so worried by this is the apparent fact that most of the audience still don't get it. "You mean, we could beat them at their own game, and even if we don't win, we still gain advantage, and it costs us nothing?" The logic here is something like two layers, so it is too complicated apparently for some people. Some prefer single-step logic, along the lines of "it is associated with a greedy corporation, so it must be evil."
Finally, he points out that maybe things are being blown out of proportion by people's desire to create excitement, "My only intention is to write applications using the CLI as a development platform, which is really not very exciting for a newspaper to report: 'Programmer to use new compiler, new garbage collector, news at 11'." This is what I was saying last week about Ximian being pragmatic. He is basically saying, "this is a pragmatic thing to do, and all of the wild speculation about which conspiracy theory of corporate backdoor this supports is just noise." He also points out that the conspiracy theorists are wrong, and that even in a "grand strategy" perspective this is not something that helps Microsoft "win", but the main issue is pragmatism.
The Detractors
People seem pretty upset with Miguel, although I agree with Daniel Veillard of Redhat who says, "The fear seems mostly due to a serious lack of analysis."
Most of the detractors try to change the subject, since it is difficult to argue with the obvious pragmatism. Alan Cox chooses to nitpick over a technical detail, and proves that not even fame can guarantee that he knows what the heck he is talking about. Miguel says, "The CIL has one feature not found in Java though: it is byte code representation that is powerful enough to be used as a target for many languages: from C++, C, Fortran and Eiffel to Lisp and Haskell including things like Java, C#, JavaScript and Visual Basic in the mix." Alan Cox's replies, "This statement is incorrect. Java is turing complete. There isnt a good compiler back end because nobody bothered to write one. In the gcc case its incredibly hard as gcc really isnt stack oriented." Now, Alan is a nice guy and everything, but this is just ridiculous. For starters, Miguel knows this better than Alan, considering that he mentions this very point in the Mono FAQ. Alan and others on the list continue to spout the nonsense about "it is possible to compile other languages to JVM" as if they are adding something new to Miguel's understanding. And WTF is that supposed to mean, "turing complete"? He throws in the comment about gcc to make himself sound authoritative, but let's see if he makes any sense. Well, XSLT is "turing complete" as well. You mean I can write code in Fortran and compile it to XSLT?!? Nobody wrote the compiler yet, but it sure is possible! It is difficult to determine whether Cox is really trying to imply that CLI is "just another turning complete system" or whether he has some secret knowledge that Java was designed for language independence. Or maybe he is just deliberately trying to mislead people...
Dave seems the most rational in his criticism. I personally think that his concerns come from a comparison of apples to oranges, though. He contrasts CLI to SOAP, when in fact these are completely independent, and both embody the same philosophy at their respective layers. Roy Fielding was an author of HTTP 1.1 and URI specs, so he has some credibility when he discusses the philosophy of the Web's design in his doctoral disertation. He asserts that the idea of the web was to allow anyone to participate on equal footing, and to allow servers to publish without regards to the status of other servers or clients. In other words, if I want to create a web page that links to Dave's site, I can do it even in the unlikely case that Dave's site is crashed. And I do not need to know anything about how Dave implemented his site to be able to implement mine. At the most generic level, HTTP permits this sort of independence. SOAP simply takes the lessons of independence learned by HTTP and applies them to RPC (both syncronous and asynchronous). Dave is right to point out that SOAP is a liberating mechanism. The CLI is just like HTTP is to hypermedia and just like SOAP is to RPC. It is a liberating mechanism for local code. Now component developers can work together on locally running code without having to get in anybody's proprietary sandbox. Just like HTTP and SOAP can only make their guarantees of being liberating influences by being open standards, so too is the CLI an open and independent standard. I think when Dave understands how complementary CLI is to HTTP and SOAP, he will be appreciative. This is a huge step forward in enabling independent developers that was not available before, and I think many people still don't get it. On the other hand, Dave's concern about the .NET Frameworks Class Library (which is not the CLI) is another issue entirely. In fact, when Dave rips on Miguel for adopting CLI, I think that Dave really means to be criticizing the .NET FX Class Library, and voicing concerns that these libraries may become de facto standards which are controlled by Microsoft.
The first thing to realize, though, is that the CLI makes the playing field for library vendors completely level. At least from a technical perspective, there is nothing at all preventing Dave from writing his own utility libraries and allowing people to use them. In fact, the CLI means that it is now more possible than ever for people like Dave to create libraries that are used by a much broader audience. I don't understand why people don't get this simple point -- the CLI now makes it possible for you to create a library that automatically can be used directly in local code by people using any language and any platform they choose. This is access, plain and simple, and it is access that did not exist before. People should be rejoicing.
The real concern here, of course, is that Microsoft is big, and is therefore capable of utilizing this new access to a larger degree than smaller entities are. That is, Microsoft has massive installed base and distribution with which to get our utility libraries to the public, while players like Dave have to dedicate more time and effort to getting exposure for their libraries. But from a sheer size perspective, this imbalance existed before CLI, and the CLI world makes the imbalance less onerous on the smaller shops. This is an improvement over the previous situation, and certainly not an improvement that anyone else is making available for free. Certainly it may help Microsoft to gain market share as well, but this is not a legitimate technological criticism of the platform. I would ask Dave to consider what his drawing would look like if the CLI had been submitted by Sun to ECMA. If the CLI had no involvement from Microsoft, the situation would still be the same -- in fact, the only way to prevent Microsoft from gaining market share through use of a platform like CLI would be to make the CLI open to everyone except Microsoft and then sue Micrososft every time we tried to play (and submission to ECMA makes this impossible). This is a political consideration, and not a technical consideration.
Finally, for completeness sake, I will consider the only other possible concern that Dave might have, which is that a number of .NET FX Classes are not covered by the ECMA submission, and a de-facto monopoly in use of these libraries would empower Microsoft to then sue anyone who gave away these libraries for free as a competitive tactic. This is a completely unreasonable fear, in my opinion. It is certainly silly to think that Microsoft would give away every library we ever develop, and neither would Dave. On the other hand, communities of software developers will write their own libraries that do what they want, and if a certain core of basic functionality isn't provided for free in the platform, you can be certain that the community will develop the functionality themselves. Most developers are not stupid; if they have a choice between "proprietary API for making HTTP requests that is enforced by tasteless litigation" and "free API for making HTTP requests that everyone except a few ignorant fools use", then you know what they will use. And corporations are not stupid; I cannot imagine any reason that it would ever be in Microsoft's best interest to land in the former category, especially since this would only serve to alienate developers and encourage creation of the latter category. And if such a contest ever took place, the latter group would win; they always do. For any scenario that Dave could dream up, I am sure I can think of ways that Dave and other independent developers could easily win. And since the threat is completely imaginary at this point anyway, I don't think it's reasonable to be gathering up the guns just yet. There are no bandits at the gates, and you just scare the chickens. Should developers be afraid of CLI based on the fear that Microsoft would do something dumb WRT a few fringe libraries and lose anyway? I doubt it. [Better Living Through Software]
9:14:00 AM
|
|