Some more thoughts on Java vs Mono debate
- From: Xavier Cho <fender gnome or kr>
- To: Gnome desktop-devel list <desktop-devel-list gnome org>
- Subject: Some more thoughts on Java vs Mono debate
- Date: Tue, 30 Mar 2004 13:45:38 +0900
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]