Some more thoughts on Java vs Mono debate



 The biggest problem with Mono is not the legal issues IMO, at least it's covered 
under GPL license and Microsoft hasn't been too fond of using software patents 
aggressively to kill competitors (and Mono is by no means a competitor to MS.NET).

 Rather, it's the question of who controls, or has power to control the 
specification. If we're to adopt Mono to develop open source applications on it, 
we're on great risk of submitting ourselves under MS's rule. Of course C# language 
itself and some part of .NET platform are ECMA standards. But if you want to 
develop anything other than console applications, you need those missing parts 
which are proprietary APIs.

 Here's the dilemma Mono is facing. If all we want from adopting Mono is a nice
high level language with GTK/GNOME bindings, there'd be no problem at all. 
Actually we have GTK# already and I don't find anything wrong with it. But obviously 
people who advocates the Mono's cause seem to have far more things in their mind. 

 From the homepage of Mono, it is stated cleary that they're intending to provide 
*nix developers way of creating and deploying a cross platform applications, and at 
the same time help Windows developers migrating MS.NET applications to *nix 
platform. So I understand that compatibility with MS.NET platform has been a very 
high priority in Mono developers.

 However, to achieve such level of compatibility they need to copy MS.NET 
implementation including the proprietary parts. Actually they're implementing 
many of the non-standard part of the MS.NET API like Windows.Forms or ADO.NET. 
Indeed this fact alone puts open source applications developed on Mono platform on 
somewhat dangerous position regarding patent issues. Even if MS plays nice and let 
Mono freely copy all of their proprietary APIs, it's MS not Novell, Miguel, or any of 
the Mono developers that decide the future direction of the .NET platform and 
innovate the technology.

 It's a ever lasting catch-up game that can't be won by the Mono's side. If the 
.NET platform succeeds, and if Mono plans to be a viable alternative to the MS.NET 
implementation for enterprise developers, they need to faithfully represent every 
single important new features and APIs MS might add to the platform. On the 
otherhand, MS.NET has no reason at all to support Mono specific features and APIs 
like GTK#. And as long as MS.NET application developed on Windows platform with 
VS.NET can be deployed on Linux without much changes, I don't believe many of the 
Windows developers want to learn GTK# or Monodevelop to create Linux applications.

 MS has long history of playing with the 'embrace and extend' strategy, and I believe 
they'll play it again with the .NET platform if it gains momentum. One only needs to 
see why there're so many web sites look ugly in anything other than IE even if IE 
conforms to the W3C standards, and why you get so many javascript errors in certain 
web pages so you can't navigate at all with non-IE browsers even if IE supports 
ECMAScript which is an open standard. Anyone remembers how they tried to take 
over the control over Java by creating Visual J++?

 I believe MS will add more and more Windows specific extensions to the MS.NET 
platform so many developers who're not very careful or not very interested in cross 
platform .NET development begin to tie themselves down to MS Windows products.

 I see Mono as a future version of Wine plus nice C# language bindings to GTK+ and 
GNOME, but no more. If they continue to copy every API in MS.NET including 
non-standard ones, they'll end up as a nice tool to run many of the native Windows 
applications on Linux. However, as few dream about developing Linux applications 
with Visual C++ with Wine today, there's no reason many would love to develop 
them using a direct copy of MS platform and an IDE in the future.

 Innovation by free contribution of the community is an essential part of the open 
source movement. If we were to copy blindly what MS has done, there'd be no Linux 
or Mozilla today but maybe GnuWindows or OpenExplorer. Adopting Java has its own 
problems in this regard, but compared to only subset of .NET APIs are covered by 
ECMA standards, all the Java specfications are defined by an independent commitee 
in open manner. And most importantly, Java has far more momentum behind it from 
both coporate developers and open source community than .NET has.

 We have already a clean room implemtation of most of the recent version of J2SE 
specification(Classpath), a native compiler(GCJ), GTK/Gnome bindings(Java-Gnome), 
a decent cross-platform graphic toolkit(SWT), a feature rich IDE with 400+ 
plugins(Eclipse), open source J2EE application servers(JBoss, Jonas, Tomcat), and 
whole spectrum of open source libraries(Many Jakarta projects, Hibernate, Spring, 
Struts, and more). For those who think we can use .NET without problem because it is 
language independent and supports Java anyway, I'd like to point out that it's not 
language itself that matters, but availablity of broad range of 3rd party libraries, 
developer base, and applications behind it. And clearly, J# offers nothing more than
Java-like language syntax. IKVM would be a whole different problem, but I think it'd 
be more of technical discussion which I'm not intending here in this posting.

 If we could make a complete open source platform apart from .NET and Java, I'd be 
the first to convert. However if we were to choose between existing options, I don't 
think adopting .NET is a good choice just because subset of its APIs are covered by 
ECMA standard. And I don't believe copying non standards APIs of a big corporation 
which has been very hostile to open source community is a safe course even if we're 
doing this under any open source license like GPL.

 Actually, it was originally not intended to be posted in this mailing list, so please 
excuse me if it's rather long and may contain some points already covered below.

Xavier Cho




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]