Unix was originally all about not being… Multics. If Mono is to follow a similar nomenclature (just for the kicks), we have to talk about Mono’s upcoming ‘monopolization’ and ‘monarchy’ in the next generation of the Unix programming land. Your see, if everything goes well, in 2 to 3 years most new Gnome user/desktop applications will be written –hopefully– in Mono and C#. Update: Miguel deIcaza replies.For the last 2 months I run Mono and GTK# on my Slackware 9.1 installation, trying to learn GTK#, and I have to say that I am very impressed by it so far. Installation was very easy for both packages (standard “./configure; make; make install” stuff) and there is some online documentation and samples to get you started. There are also about 10-15 GTK# applications available by third parties coming with full source code so you can have a pick on them before starting your own application.
C# is very easy to learn and GTK# gives a much better face to GTK+ (plain C GTK+ development seems to me pretty sad comparatively) as it makes it much easier & faster to develop and results to more secure applications. There are still of course some problems: documentation is incomplete, no robust GUI development tools for it yet (e.g. a good RAD tool integrated in a C# IDE wtih an also integrated debugger), source compatibility is not always guaranteed from version to version, the Windows.Forms API won’t be fully realized for at least one more year, Qt# is pretty much a dead project and the Mac OS X port just started (no Cocoa# yet) while the FreeBSD port is not 100% fool proof. However, we should not forget that Mono’s v1.0 is scheduled for Q2 of 2004, so there is still time to fix a few of the above problems.
Mono has still to fight off a few Linux die-hards who don’t want to see a Microsoft technology used on their alternative OSes but thankfully the situation becomes better everyday as .NET and C# put a stronger foot in the industry and start to get perceived as a “standard”. Another “enemy” Mono will have to fight out (soon enough) is Sun. In my conversations with Sun executives the last few months they kept re-assuring me that no C# will ever enter their JDS or Solaris default installations. However, as Gtk# becomes more mature every day and more applications are getting written in C# (and not just C#), in 2-3 years we will be facing a point where many of these apps might make it to the default Gnome distribution either because most developers would prefer to use Mono by then or because a must-have application at that point in time might be written in C# and no C alternative exists. And at this point I forsee a large opposition from Sun (the #3 commercial strength in the Gnome Project). While Gnome is Free Software, the No1 commercial strength and driving force behind Gnome today is Red Hat (they host the project’s site and they have a number of engineers in key positions) and so all eyes will be set to them for such a decision (as Ximian and Novell (#2) will be pushing for C# in Gnome).
Someone could argue that Sun would be pushing for Java on Gnome too, however Sun has already done (yet another) strategic mistake and didn’t create Java bindings for Gnome neither tried to integrate more to the Gnome desktop (despite their “Java Desktop System” distro, there is no major Java integration to the toolkit or the gnome libraries). Even their java theme wrapper for GTK+ themes is half-baked and almost no developer uses it. Yes, there is a third party java-bindings project on SourceForge, but this has no luck in getting integrated further other than the gnome-bindings upcoming release, as there is no major driving force behind it to help it get enough mindshare and support among the Gnome developers.
What prompted me to write this editorial was the news of three new GTK# applications this week, Blam! (an RSS/RDF reader), WoodPusher (a networked Chess game) and Muine (a music player). Last week I followed Mikael Hallendal’s blog where he literally described his journey into learning mono, gtk# and writing an application — all in one week. And he did it! He delivered “Blam!” in less than a week since he installed Mono, while other similar C-based applications took multiple weeks before their developers had their first beta release out. I believe that stories like these deserve to be more known, because no matter if some hate Microsoft’s technologies, it doesn’t take away the fact that they have spent millions on research and development. Something good should have come out of all this and C# seems to be one of them. Some Gnome developers are now starting to take notice and hopefully more will follow.
This article is not a “MS is cool” article, neither a “Sun Java is not cool”. However it is exactly this:
1. Microsoft created a worthy technology and Ximian’s Mono can bring it to Unix. There is nothing immoral or weird about it, it is just a good environment for developers and a more secure one for users.
2. Sun lost the opportunity of kicking Ximian’s C# out of the picture the moment that they [never] took the decision to do something equivelant (in integration terms) with their Java on Gnome. It was a lost opportunity that Sun didn’t even realize that existed.
If you are a C/C++ or even a Java Linux developer I suggest you download Mono and GTK# today and give it a go. Having an idea of what a new platform can do will only act on your behalf in many ways (and it will save the rest of us from zillion mindless forum comments from people who never developed for Mono or .NET but they feel like talking anyway).
I only have a feature request from the Mono guys: now that Robert Love works for Ximian it would be great if he could supply some patches to the default Linux 2.6 tree (or to ld) to make Linux automatically recognize and load mono’s executables instead of having the user run shell scripts or manually load the VM every time there is a Mono application to load. Update: Apparently there is a way.
the goal of linux isnt to bankrupt ms, its to make good software. there are alot of things to like in C#, and having a dotnet vm for linux means that most apps written in windows after longhorn ships will require little to no work to port to linux.
how is this a bad thing? how is this stupid? imho, defending or rejecting technology just to “spite microsoft” is pretty stupid, but thats just me….
You don’t have to use C with GTK+, there are many language bindings…however I’m not sure if these bindings are shipped as part of a standard distribution.
Maybe Novell is the one in control and not Microsoft, after all, Mono could be a strategy for MS Windows users to convert to Linux.
I’d like to know how to use Mono and C together, that is C as the back end, and Mono as the front end. Kind of like in .Net where you can make Win32 calls.
Eugenia, very nice article. You hit on every point I had made myself.
There is no such thing as a monopoly on Linux because Linux is a platform, Gnome is only one DE. What kind of turkey nonsense is the abstract of this article. The article itself is not scientific.
You are correct that RAND licensing might mean any random price on the C# and CLI patents. But Microsoft, IBM and Intel who were part of the standard effort all agreed to the price zero (0) for the RAND terms.
This point has been beaten to death.
I am a pure Windows programmer and slowly moving over to .NET. Once Mono is ready (i.e it is as easy to install as a windows app (including the GTK stuff), I don’t have time for the linux fiddle mentality – time is money) we will also begin porting stuff over to linux. One of the things that stops us at the momemt from writing stuff for linux is that is it actually more expensive in terms of time, with Mono that should go away (No, you can’t use python etc to sensibly write apps that are 300K+ lines long).
For the Java freaks, Java is currently not an option, the GUI is slow (yes is still is, I just beta tested a Java app two weeks ago for another company) and ugly (yes you can theme but why should I have to?). Our customers want somethng that looks modern and is responsive. 1.5 *may* change our opinion on this, although whether SWING will be updated or not is another matter. SWG is not an option, it’s incomplete.
Quality software should not be tied to one front end. My C application should be able to use GTK#, GTK+, wxWindows, or QT. The modules for the front end should encapsulate the GUI functionality but not the entire system.
Mono, as far as I can see is not a solution to the back end, so it is not a challenge to C programming.
That’s the great thing about mono. You get a huge pool of talented windows programmers that don’t even have to really think about linux, but a lot of the libraries will just work out of the box on mono. For linux people you get a modern language that is arguably better syntacticaly than java, with nice class libraries and a great development effort behind it.
I can see where Microsoft might want the ‘solutions developer’ to exclusively use the .Net framework, but MS Windows and Linux are very different, because MS Windows is much more product focused rather than open platform oriented.
It’s very possible that Mono is a much richer front end than many other libraries out there, so why not use it, however why should the Linux developer leap head first into Mono and write the back end in C# or GTK#?
Where is the convincing argument for that approach. I think that I’d rather keep my applications front end neutral, so that a wider audience can use them, and so that the application is more versitile, more modular.
…if Microsoft is going to do anything restrictive than they might prevent Mono specific functionality to run on their product (MS Windows) or to operate with their product line (their servers). I don’t know if Microsoft will be able to sue Novell or anything like that, although somehow the SCO might find a way :+)
So maybe Mono should try to co-operate with the Linux platform by makeing Mono functionality available to a number of programming methodologies, and not just as C# implemented wrappers.
If Microsoft is such a threat then why haven’t they shut down CodeWeavers or the Wine project? With the current political climate surrounding MS do you really think they’re going to go after Mono. Remember, Ximian now has Novell as an umbrella. Novell ain’t no MS, but it’s got a lot more legal muscle than Ximian alone would have had. Even though Ximian isn’t just mono, mono is a big part of ximian, and don’t you think that Novell thought about these issues before acquiring Ximian?
Contrary to the wishful thinking of RMS cultists, MS isn’t going away anytime soon, and it just makes sense to leverage the good technology they’ve come up with. One of the biggest problems with Gnome is that it’s a pain to code for and if you use language bindings then who knows if a distro distributes those bindings and if they are broken or out of sync. If you think that java, perl, or python is going to be the saving grace of Gnome, then think again. It’s just not going to happen. Sun dropped the ball with java, perl is too hackish, python is too slow….
A C program that is distributed in a tarball, will often use various utilities like Makefile and Automake, as well as shell scripts and perl, and python, etc. Can we add Mono? The point is that a C program should not only rely on C, so why should any other application be so limited that it has to be used for everything. The article uses the word ‘monopoly’ and it should say that if you only use Mono, than you are promoting a monopoly, so don’t do it, but instead use a more general strategy when you build software. Mono could be a part of that strategy but it should not be exclusive.
Mono has advantages in terms of Internet and web applications as well as productivity, but if it can’t be used with other languages (not just C# bindings) than it’s like putting all of your eggs in one basket. So use Mono where it is an advantage, and combine it with C and the shell, as well as various utilites at the operating system layer where they are an advantage. If it can’t be used that way than it isn’t worth using at all.
What evidence do you have that Sun dropped Java ??
Please make sure you do not spread FUD either 🙂
The idea that C is not a productive language is a myth. Maybe Microsofts MFC was not as productive as Visual Basic, however what does that have to do with C? Is MFC the standard on the C language. Only in your minds.
It’s enirely possible to design a VB like library and to use C to be able to create a window with one simple call, to be able to write an entire front end in a hundred lines of code using C. In other words C can be as specialized as you want it to be, it doesn’t have to be general.
What we know of programming has been influenced by word of mouth, but how many of us have actually implemented the libraries and discovered the truth? The past has been a commercial endevour, now it’s supposed to be time for open source, for giving the user more control, but the user doesn’t know how to take control, and that’s the real difference today. I’d rather see a Linux knowledge base than any super hyped library damage.
How can anyone possibly ‘love’ programming in Java?
How can you love having to do
String[] names=subs(channel);
Hashtable subs=central().subs();
Subscriber s;
for(int i=0; i<names.length; i++)
{
s=(Subscriber)subs.get(names[i]);
if(s!=null)
s.take(not,channel);
}
all the time when you make do with
names:=self subs: channel.
subs:=central subs.
names do: [:name| |s|
s:= subs at: name.
s notNil ifTrue: [s take: not from: channel]
in Smalltalk?
Any front end programing tool for mono?
Have the APIS and the framework is good, but I want a front end tool to do my stuff to, like sharpdevelop on Windows.
I’m still not convinced that C#/.NET or any clone is going to make anything more than a dent and page in the geek history books. For me, I still prefer writing cross platform code with Python as the GUI and C on the backend (thank you SWIG!). Non GUI C code is still easy to write portable, and still faster than any high-level language out there.
Any front end programing tool for mono?
There’s C# Studio that still in very early development.
http://csharp-studio.sourceforge.net/
IMHO in long term (3-5 years) .NET will replace FLASH, java applets and other browser technologies on client side. In this case if not exists any useable CLR solution under linux, the linux desktop will die (you cannot use any browser on the most of web pages under linux, because you cannot see the .NET based applets).
Whoever thinks Mono is going to be GNOME’s development API can dream on. Mono and/or GTK# is not going to replace GTK+, its bindings and the gnome/linux libraries.
Nobody said anything about “replacements”. The grassroots of Gnome is C and so GTK+ will always be there, present. However, Mono and GTK# could become the “front line” of the toolkit of choice among Gnome developers.
However, Mono and GTK# could become the “front line” of the toolkit of choice among Gnome developers.
And what gives you that idea? Perhaps when Nautilus, Epiphany and Evolution are rewritten in Mono, I’ll begin to take that statement seriously and reconsider. Until then, it’s all hype. This is exactly what happened years ago with Java.
Many GNOMErs use GNOME for philosophical reasons (the GNU/FSF and stuff). I know the hardcore amongst them would never install the mono libraries except they are forced to. And believe me for every mono/GTK# app, there will be GTK+ clone. I’m pretty positive someone is already written a Glam clone of Blam.
I also need to mention that the majority of GNOME developers are the hardcore type. No, I’m not talking about those that frequent planet gnome. Just my opinion and observation nothing more.
> Basically, in Mono, we are not only replicating the .NET
> APIs, but we have also been creating our own independent
> APIs in pretty much every area: XML, GUI toolkits,
> rendering, RPC, etc. The idea being that if in the future if
> Microsoft chose to come out with a valid patent that we
> could not work around (prior art, invalid claim) our value
> would still be independent of it.
You’ve summed up one of the main problems with mono, only you’ve put a positive spin on it. Mono’s new libraries of it’s own that you mention (XML, GUI, RPC. etc) and Microsoft’s .NET specification are APIs that are largely untested and immature. They haven’t proven themselves in the marketplace and probably won’t for another 5-10 years. During that time, the world’s (5 million?) Java programmers will have grown in size enormousely. NASA didn’t start using python the year it was written, neither did Google.
Software Development projects are major propositions where the latest *cool* language with the hype doesn’t always get a part to play. As for GNOME, millions of lines of code have been written atop of GTK+, GNOMElib. You overestimate how adventurous people are with their time. Spending years re-writing something (in C#) that works almost perfectly (GNOME) will help us in what way Miguel?
I will preface this comment by saying that I like Java and use Java daily in my work.
Sun is not inherently better than Microsoft. Sun would be Microsoft if they could. Microsoft has submitted C# and CLI to ECMA for ratification as standards. In so doing, they lost any leg they might have had to stand on in challenging alternative implementations such as Mono or dotGNU.
Sun has not submitted Java for ratification by a standards body. That is what made it possible for them to sue Microsoft over Microsoft’s extensions to Java. Microsoft did not see Sun’s source code. Their implementation was independent. Yet Sun sued them into the ground (well, into the low stratosphere) because they didn’t approve of what Microsoft had done with the language.
I consider Sun a greater threat in a way because, having released their source under the Community Source License they can make credible claims about intellectual property contamination against alternate implementation providers.
C# is ahead of Java in a few places. Some of those are going to be addressed with J2SE 1.5. Java is still ahead as far as providing a holographic suite of tools for developing solutions, especially for the enterprise. C# will advance significantly in this area over time, in large part due to projects like dotGNU and Mono.
I’m actually pretty optimistic about the whole thing. Java will not go away unless Sun does something fatally stupid. C# is already providing an excellent motive for competitive innovation (Java 1.5 is Sun’s answer to C#, which is Microsoft’s answer to Java).
Honestly, most people who are `hardcore’ know well enough that Mono is an open source project meant to allow apps that would have otherwise been bound to propritery platforms (namely Windows) to be used on Linux. Also, I see that many of the most `hardcore’ people have OO.o installed, which happens to allow the opening of Microsoft Word documents.
Most of the `hardcore’ GNOMErs are able to filter out the FUD.
Before people start commenting on and criticizing the article, it would help all of us if you would first try to understand the article first instead of having some pre-conceived notion of what it’s about because of your own person bias.
If it’s not apparent, the intended audience of said articles are C/C++ and Java programmers who have not done any Gnome programming (to say that’s the majority would be an understatement) and, to some extent, existing Gnome developers. Eugenia perceives that people will have an easier time of learning Gnome programming through Mono/C# rather than C/Gtk+. An argument for this statement is that to program in C/Gtk+ would require a paradigm shift for regular C programmers (since Gtk relies heavilly on a C objects system based on glib/GObject) whereas no such shifts exist for moving from Java to C#. Objects simply aren’t inherent in C and in order to learn to program in Gtk, one must learn that first.
To this reader, what Eugenia is hoping for over and above programmers using Mono/C# is that we attract more programmers to write Gnome apps. Let me repeat that … to write Gnome apps. By suggesting C# for existing C, C++ and Java programmers, she’s making it easier for programmers to enter the world of Gnome programming. She does NOT suggest that Python users use C#, nor Perl users.
That said, it is always good for programmers to try new things out if only to gain a different perspective and learn a good thing or two. She states “Having an idea of what a new platform can do will only act on your behalf in many ways”.
When people are young and in their university days, that is the time they make the most progress and come up with their brightest ideas. This is so because the youth are always raring to try new things. When people are too set in their ways, they start to stagnate. I hope that that doesn’t happen to this developer community.
So to all programmers out there, I suggest they you try Mono out. That’s the only way you’ll learn whether you’ll like developing in it or not.
To all naysayers, if you’re really interested in the progress of Gnome, get off of your soapboxes and provide more objective comparisons of the language aspects.
Matthew, I think you are seriously confused (almost as much as root). Nobody wants to rewrite GNOME, Mono will allow us to write additional applications, which don’t exist yet in a very short amount of time.
Another advantage of “rapid” development frameworks like Mono is, that new user interface ideas can be tested in a very short amount of time. And besides, it’s just plain fun.
It doesn’t even matter if Mono will ever become a part of the GNOME core. Applications will be written and distributions will integrate the Mono runtime (at the very least, Novell/Ximian/SuSE will) to make those applications run. Mono will be a possibility to write GNOME applications. Whether or not there will ever be a “core” part of the desktop written in C#, that remains to be seen but is ultimately irrelevant.
Matthew,
Nobody is suggesting rewritng GNOME or GTK+ in C#. This would be a horrible and stupid idea, and as you said would cause instability in the platform. A port to C# is only advisable when one wants to do a complete change of the structure of a program anyways, and wants to reduce the effort required.
Remember, Gtk# is a wrapper around Gtk+. 99% of Gtk# is generated by a tool with transforms the C api into C#. As well, many C applications could allow C# plugins. I know the Evolution team is making an effort to allow such an API for plugins.
There’s alot of public comment out there which says ‘zero cost’ for using the various ECMA specs – I’ve never read an official document which says this – but we’ll assume this to be the case since I doubt they’d pull back from this public statement.
It’s so not the problem.
Cost is only *one* condition of the use of the patents related to the ECMA specs – what are the rest? Does anyone actually know? One could easily be “It cannot be open source” … which would be a bit of a bugger.
That would be `discriminatory’ so it would be a violation of the terms of the ECMA work.
If this were a requirement for the use of the ECMA specs then you might be correct – but that’s not what I mean.
This could be a requirement for use of the patents. Since ECMA doesn’t control the terms of patent use, I don’t see why this or some other terms couldn’t be applied. Patent terms can certainly be discriminatory.
The requirement is for patents. As a condition of being a member, all patents required to implement a technology in their ECMA spec must be licenced RAND
I would use Mono if I could use C as a back end, and if Mono had good documentation, and a nice library. Better yet, I’d use it for web applications or as an API to a server…but I wouldn’t want to abandon C as the back end.
To those who believe .NET will have no take up until a few years after the release of Longhorn really should take a look at MS’s move concurrently. They are actively promoting and pushing Windows developers in the direction of .NET which will be the underlying API for Longhorn when released.
I fully support the ability for me to take the aps I like from a Windows platform accross to Linux. This would break me free from using such a dodgy OS and Mono helps in this regard. I do Audio work at home and Graphic design and comp administration at work and to be able to take the apps I use and use them on Linux would be great and I believe that is the aim of Mono. This will help give people cross platform choice and compatability which is a good thing isn’t it.
I haven’t used .NET apps but I know for sure MS will have a load of developers who will have some decent apps ready to coinside with Longhorns release and developers I know who use .NET rave about it. If mono could be compatable or at some future time become the defacto standard this would be a great win for people.
Also Java doesn’t cut it on a UI base it is clunky and slow. It is not, in it’s current itineration, capable in a GUI space (re: GUI apps) and it will need a lot of work to get it up there. It has it’s place but not for large scale application development with GUI front ends.
There are some great developments taking place which will make alternative computing to Windows more viable for the average user. Long live Open Standards and freedom of choice. (-:
i know java & qt. i like wxwindows the most the community/resource is better than qt or gtk.
both wx and mfc share some same ‘weakness’ so its so easy to port mfc to wx.
waiting for c++builderx 2.0
RE: Anonymous
You should check out how much easier it is to use native code in c# than it is in java. None of this jni tool crap that produces a header file and then you roll your own glue library. You just declare that your going to use a function from a library, marshall some data into native code, and then just use it. All in the c# code. It just blows away java in that regards.
RE: Piers
Regarding java on the client, Sun’s big mistake was that they were and are now to a certain extent in denial about linux. They probably could have owned the desktop on linux but it’s too late now. Some java gui apps aren’t that bad, like IDEA, ut the Intellij guys know what their doing and workaround Swing quirks. Eclipse is good, but I don’t know about SWT. The last time I checked the interface was a bit clunky. But your right on in regard about longhorn. Everything is going to be managed apis. It’s just stupid not to leverage that stuff for linux. But of course, you’ll get the zealots who will tinker around Python out of blind vitriol of Microsoft.
Ben,
Okay … that sounds good to me. So if I were to use Mono in a project would I need a RAND license or is this something you have already?
Quote:
I just found this:
http://www.go-mono.com/faq.html#patents
If I read it correctly, the only parts that would have problems are ASP.NET, ADO.NET and Windows.Forms.
Close Quote.
That would be the sound of Microsoft shooting itself through the head. If an ASP.NET clone isn’t allowed on Apache as a module, then Microsoft has already confined itself to about 23 % of the Internet development market. If ADO.NET likewise isn’t allowed on Apache, then Microsoft can’t sell any SQL Server licenses to be accessed on a MS Windows backend server. Windows.Forms doesn’t appear to be such a problem – neither Mono – as I read it – or dotGNU seem to be worried about that. It’s only interface.
You should check out how much easier it is to use native code in c# than it is in java. None of this jni tool crap that produces a header file and then you roll your own glue library. You just declare that your going to use a function from a library, marshall some data into native code, and then just use it. All in the c# code. It just blows away java in that regards.
On _ALL_ platforms? On my mobile phone, my PDA, my desktop, my server,my browser,my smartcard? On I386,IA64,Sparc,ARM,etc? OR _WIN32_ _only_?
Why not use something aspect oriented instead of object oriented? OOP paradigm is too weak.
As I said, no license is needed. You just need to accept the license on the code, which is implied by your use of the software. Mono’s code is under 3 different licenses:
— Class libraries : X11/MIT
This is so that you can link to the framework with fearing that your application will be required to follow the terms of the GPL. Non-free programs are able to link to the classlibraries, as are GPL’d programs
— Runtime : LGPL
This is so that the runtime can be embeded in any program, but gives greater protection to the JIT. Most people will not be linking to the runtime, and so will treat it as if it were licensed under the GPL.
— MCS : GPL
MCS is licensed under the GPL as there is no need to link to MCS, given that it is a tool.
Sorry if I’m being thick here, but ….
To use the mono code I need to abide by your licenses – I understand this.
To use the ECMA related patents I need to abide by the appropriate RAND license.
Mono contains code which uses these patents – so it would seems like I need a RAND license, with its terms and conditions just like your licenses.
Having .Net on linux will allow easier porting of the numerous .Net applications that will be developed on the Windows platform. In that regard, Mono is a good idea. Mono is also a good idea for companies wanting to migrate to Linux from Windows, where they have done alot of .Net development.
C++ with the very mature gtkmm bindings (www.gtkmm.org) is where I believe Gnome development should be concentrated. C is a good language, but C++ offers OO and a higher level language, with almost no speed penalties as compared with C. Furthermore, C++ is just as easy to code in as any of the newer languages (C#,JAVA) etc. The gtkmm gnome bindings are the most promising and most mature at this point. Furthermore, C++ is one of the official bindings of the new Gnome bindings release. This should help further adoption of C++ in gnome/gtk+ applications.
Exactly
the RAND license costs you $0.00, and has no restrictionns that prevent the use of the Mono licenses.
I am not a lawyer, I cant really help you any more than that. If you think there are legal issues, you should talk with a lawyer.
You should realize that if there is a license that prevented the Mono licenses from being applicable, Novell would take action, etc. If microsoft had ground to sue someone, which they dont, it would be difficult to go after end users. The larger target would be Novell. They have had lawyers look into this.
Note the FSF sponsers PNet, which is also an implementation of the ECMA spec. Their lawyers have looked into it as well, and determined it is not an issue.
If you havent noticed, Microsoft is not against mono. There is an interview with Miguel on MSDN, and many of the Mono developers are great friends with the Microsoft developers. Novell is a member of the committee reviewing the v2 specification. Miguel has direct input on the v2 c# specification.
For the last years, Mono has been welcomed as an implementation of the .net platform. For example, we have had a microsoft employee on our IRC channel. He said to me once something like;
`At Microsoft, we do not have `how to bash the penguin presentations’ wrt mono. You guys report alot of bugs in our framework and we love it’
Even assuming that Microsoft would take a turn for the worst against Mono, their legal position would be very weak. There is alot of prior art for there patents, and it would not be wise for them to bring it up in court because it would likely be marked invalid.
Again, talk to your lawyer…
“If you havent noticed, Microsoft is not against mono.”
Oh, well, some are just never going to learn!
And you even help MS to iron out the bugs, for free. Simply briliant!
So, let’s recap; you guys are going to build complete .Net enviroment which will lead to instant and painless portability of all new Windows apps to Linux. Which MS will gladly accept because some of their developers said so on mailing list.
And if that fails you will leave just ECMA core for which you think there won’t be RAND “costs” ever in the future and build non .Net but better set of API’s around that.
I do understand that Mono was a cool project to start; much cooler than helping classpath, kaffe and gcj efforts to get better and finished; after all, there were quite a few Java incarnations on Linux (blackdown,sun,ibm + those OSS ones) and no .Net ones. I even can have simpathy for value classes and few bytecode tweaks + CLR spec – JNI which make a life simpler when mixing C,C++,C#,Java libs and languages together. Managed environment is a plus too. And that is all fine and nice. But, I’m suprised with how fast some people forget who are they dealing with; like Stockholm syndrome, really; now we like MS? Because they say they’ve changed? They will tolerate you just for fun of saying that “OSS community doesn’t innovate”, some Java hurting portability issues (see, you CAN be portable in .Net) and some benchmarking PR nonsense (but, see how much is that same app nicer and faster and more stable on Windows). Then they’ll throw all their WinFX, WinFS, XAML, Inidigo and DRM inovations on you every two-three years, just to show how “OSS community doesn’t innovate” and “but, see how much is that same app nicer and faster and more stable on Windows”. They may even surprise you with some XML related patant application on New Zealand (like for single XML file with word processing data that can be manipulated with some apps that know XML). And if it ever becomes possible to have the same important app (like Office, uhm, 13, lets say) better running on Linux, and you start eating their lunch using their tehnology, they will sue. Period.
Just a little reminders:
J ++
> The “strategic objective” of its new toolkit is to “Eliminate/contain cross-platform Java by growing the polluted Java market,” “migrate and lock Java developers to Win32 Java,” and ultimately to “kill cross-platform Java by grow[ing] the polluted Java market.
Statement by a Microsoft vice president:
> I would explicitly be different — just to be different…. [W]ithout something to pollute Java more to Windows (show new cool features that are only in Windows) we expose ourselves to more portable code on other platforms.
Another Microsoft memo:
> At this point its [sic] not good to create MORE noise around our win32 java classes. Instead we should just quietly grow j++ share and assume that people will take advantage of our classes without ever realizing they are building win32-only java apps
Or, read the http://www.theregister.co.uk/content/archive/5618.html article
“Analysis: How MS used the WISE Trojan Horse against Unix”
> By 1996 Gates is wondering if “by creating cross-platform solutions we risk weakening the Windows franchise – hurting ourselves rather than let Netscape hurt us.”
> Neault’s staff are writing that they want “the WIN32 layer (on unix) to be fairly mediocre in performance and feature coverage. We want it to be just good/cheap/timely enough to get a lot of people to use it,” and that “we don’t want it to work too well. A non-objective is total redeployment of Windows on Unix.”
The idea was to push customers who relied on these APIs in the direction of Windows NT:
> Neault actually devised a list of technologies to “jerk” from the source, describing it as a “beautiful” list which removed “the technologies that third-parties are going to try their damnedest to put on Unix.”
Or, as Microsoft’s Jim Allchin put it:
> “What we’re trying to do is to get Netops to add NT services to their existing Unix networks and to migrate over time all of their services to NT.”
(above quotes are from groklaw article submitted by anonymous)
Doesn’t all of this sound familiar to you guys. MS simply looooves you in your current form. Especially when you fix their bugs for them! And lure Java developers. But you are going down. I’m sorry, but that is the FACT.
Filip, it is not a matter of whether we like MS or not, the matter is whether we like the .NET technology or not. If a technology is good, and it is a ECMA and ISO standard, who cares who designed it? There isn’t any legal or technical reason for not using it, only “religious” reasons (and if your reasons are religious, stop reading, since anything won’t convince you against it).
We dont’t need to stay and wait for WinFX, WinFS, XAML, etc. to be released. We can use Mono as the core for our own technologies, which can be eventually better that MS’s ones. Or do YOU think that we can’t innovate?
Cross-platform portability is a nice side effect of the CLR, and Mono is trying to take advantage of it by implementing non-ECMA libraries. But portability is not the main objective of the project, as you seem to think. You should read the rationale of the project (http://www.go-mono.com/rationale.html).
Regarding all those quotes about MS poluting Java and tying it to Windows, don’t worry, we are also going to polute .NET and tie it to Linux, and MS can’t do anything against it because we are just extending a published standard (we can’t say the same about Sun, who sued MS for this very reason).
Great to see another object oriented language to use for development of Gnome applications. Doing object orientation by ideom in languages like C puts too much burden on the developer, and the result is usually diminished code quality in terms of maintainability and testing. C# is nice language no doubt about that.
But I don’t think mono ever will be a major part of Gnome, Sun will make sure of that. They will probably rather fork Gnome than addmitting C#.They will use java instead.
Many Gnome developers make the mistake to think that Gnome apps will be created from Java Gtk bindings. They will not, instead it will be written like standard java applications using standard java apis like swing, etc. It is the job of the Sun Gtk Wrapper to make the application behave like a Gnome application if run in a Gnome environment.
The article states that almost no developers use the Gtk wrapper, and this is how it should be. If you write in java you should not need to know or use anything platform specific. The whole idea of creating java-bindings for things like gtk is flawed.
If your system is configured properly, all modern java applications should get Gnome UI automagially. Today this is supposed to be the standard configuration of java on Solaris. Unfortunately most Linux distros require additional steps by the admin.
Unfortunately, there are a lot of bugs in the current wrapper, but from what I understand Sun is working on them.
It should be interesting to see how it looks in the upcomming JDK1.5.
>Because it makes it easier to port windows apps over to Linux.
Well, that is true as long as the apps you port have no
windows GUI, or use databases. The windows GUI and database parts are non free.
>Java is not better then mono. Also a commercial product. At this moment the JRE and the JDK freely available, and many java clone or similar solution exists (kaffe, gcj + klasspath, etc). But it is also can change in future, let see the ex-caldera SCO: one of oldest and biggest linux company sue the linux.
The risk of Sun sueing gcj is probably not higher than Microsoft sueing the mono/dotGnu projects.
Even if Microsoft never sues over any patent issues, third parties might find patent issues in mono code and sue both mono and the MS version. In that respect it would probably be safer to use a commercial product as java where Sun would be hit first, giving the community the ability to act.
>In other aspect, the C# far better language then java, and the CLR is better idea then java runtime environment: if you start a java application it use one JRE, and if you start a second java application it start an another JRE, etc. It is not too useable for desktop applications.
Don’t expect that to last forever, my guess is that we have shared JREs long before mono is commonly used in Gnome. Have a look at the prereleas of the next version of java and you will see that it almost looks like it was specifically designed to beat the crap out of C#. This is competition at its best.
Besides if you use gcj your java applications can be compiled as native applications and you don’t use a JRE at all.
We can argue about whether .NET is better than Java or vice versa until we are blue in the face. They are so close it makes no difference, and each will continue to get better because of the other.
The winner is NOT going to be the one that is technically better, but the one that can snag the “VB crowd”. That is not a slight to VB developers. In fact VB-like RAD development is exactly where most development should be done (and is in the business world). Right now, I don’t see Linux having a really easy-to-use, visual, RAD environment other than the major Java IDE’s (JBuilder, NetBeans, etc…). Even these are not “easy” enough. Microsoft has always been very good at this, so there is no doubt they will continue to be. We will have to wait and see what project Rave from SUN, and any other similar projects bring to Java.
For GNOME developers all that doesn’t matter. I’m sure they use Emacs or Vi. However, it matters most as to which technology will stand the test of time, and which platform those developers chose to develop on. As we all know, the platform that you use to do development is probably the platform that you prefer to target your apps for.
For those that want a native GTK binding without being tied to a single platform, take a look at SWT.
All this is can be doomed by Ms anytime, so why on earth am i to waste my time on it??? See what has happen with Fat and Xml patents and how can you avoid it ?? Huh did you ever wonder??
A major issue is that C# support will not bring portability of Windows applications into *NIX platforms. Microsoft are developing the Longhorn infrastructure : WinFS, WinFX, Sharepoint. The .NET infrastructure is only a small part of their vision. X# anyone?
I agree that there are benefits to having the compilers and runtimes available, but the developers should not overhype this. Its just going to be another development environment, and there are plenty of these as it is.
Don’t get me wrong, having a ‘C’ or ‘C++’ alike interpreter is a good thing. For performance and safety.
As an aside, experiments with VMs (HP, and perhaps also Sun, have tested these) which implement a full processor instruction set and then dynamically compile at runtime showed (HP’s case) a 25% improvement over optimised code.
Cheers
Neil