Mono Poises to Take Over the Linux Desktop
Edd Dumbill writes "Miguel de Icaza and the Mono team recently hosted a two day open meeting in Boston. O'Reilly have just published
my report of the meeting. Highlights include
Miguel's view that 'C is dead!' and the Mono approach
to dealing with Microsoft patents on .NET."
This falls under the "I can't believe what I'm hearing" category...Mono is *not* ready as a plug in replacement for .NET, and it won't catch up before MS releases 1.2...for the foreseeable future, it's trailing behind the Windows implementation and is not likely to catch up.
I see PyGTK as a much more reasonable (and WORKING) alternative to C programming for people who want to write Gnome apps. Or GTK--, for that matter. Mono currently has crappy System.Windows.Forms support (even with Gnome#), broken serialization support, the list goes on and on.
I've been playing around with the Mono implementation of C#, and it's pretty good. It's not quite as good at RAD tasks as Python, but it has some advantages, and the syntax is much easier to play with than C or Java (but again, not quite as easy as Python, but I'm biased in that regard).
However, Mono suffers from the fact that they're trying to play follow the leader by following Microsoft's implementation rather than creating a system of libraries from scratch. Microsoft has a history of pulling the old "embrace and extend" trick, and I fear something similar may happen here.
My guess is that Microsoft will significantly alter the .NET APIs for Longhorn, leaving Mono behind with older legacy libraries that are no longer interoperable with the Microsoft compiler and the rest of the Windows-using world. Needless to say, that would be bad for the Mono team.
Still, if Mono can remain independent, it could very well have a bright future. The Mono team has done a great job of implementing most of the 1.0 .NET API, and the mcs compiler is pretty fast. The GTK bindings are quite nice for such an early release.
Still, the cognitive dissonance of compiling a Linux program and getting a file with an .exe extension is rather difficult...
There will be a functional language in .Net, called F#. Slashdot had an article about it some time ago. But, like all .Net languages, it has to fit the .Net design, which was build around Java^H^H^H^HC#.
Disclaimer: The opinions expressed are not necessarily my own, as I've not yet had my medication today.
I don't know if it was the language at first, or if it was something as simple as the IDE that first turned me, but after having played with both Java and C#, I like C# better. If Mono is able to pull of a full port to Linux, I will be there cheering them on. Everyone knows that competition is almost always a good thing, and this will only make java work harder to improve itself. This will also give companies another reason to look at Linux.
.NET applications will run on linux" Guess what? A lot of windows applications are starting to be written in .NET now, and as more and more people move away from 95/98/ME, and to newer OS's, they will require .NET applications (we all saw how well legacay apps run on the new windows OS's).
"yes, all of you
This is a good thing, and I think people should support the MONO project as much as possible.
Now if you'll excuse me, I haven't slept in 2 days and I have to get back tZZZZZZZZZzzzzzzzzzzz...........
Now, if that makes sense to anyone, could you please explain it to me? I think I've confused myself.
A very good illustration of this is in the attempt to create a Python.NET implementation by the folks at ActiveState. The report on the lessons learned is rather enlightening.
the growth in cynicism and rebellion has not been without cause
You might want to look at Nemerle (www.nemerle.org) .NET and
a nice functional language that runs on
Mono.
How?
.NET except for the Microsoft namespace of the class library. They have given up their right to sue people who use .NET or make .NET compatible implementations. The evidence isn't on their side.
MS has given everyone license to implement every part of C# and
Hint: ECMA.
====
Crudely Drawn Games
A word of warning Miguel and friends, taken from the lessons learned by the previous companies who have partnered with Microsoft:
"There is only one rule in dealing with the Devil - Don't!"
"Straddling the sword of technology..."
Put in a GTK or QT library interface instead of the slow and huge Swing (that Smalltalkers foisted on Java) and you're golden -- there's every reason to use Java, especially for applications.
SWT is a crossplatform UI toolkit that feels like a native app, unlike Swing. In Linux it's just a wrapper over GTK or Motif.
yeah, and the drivers. Let's not forget the drivers. Particularly the network drivers.
/sarcasm
Oh, and whole bunch of other code, too. Like kernel code.
But no, C is dead. Long live C. Blah blah blah.
Has Icaza lost his mind?
SB
It's old. The more humans I meet, the more I like my cats. At least they are honest.
Uhm, why would MS do this?
Introducing a crippling change for Longhorn would not only hurt this goal, but it'd bring down the rath of a few regulatory agences all over again--and piss off everyone using
Java's write once, run anywhere is pretty real - it's harder for GUI's of course and works best for server side stuff (who even thinks anything of compiling and testing in windows or linux and just moving Java compiled code up to Solaris or some other system?).
But to address your point above, the introduction of Generics will change the
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Autoboxing yes, but I don't believe that they have operator overloading in mind. I've heard Gosling say that it adds a lot of complexity to interpreting a program while adding relatively little expressive power.
(A picture of Gosling standing in front of a slide explaining what's wrong with operator overloading).
I'm definitely looking forward to autoboxing and the new printf-style methods. (Maybe variable-argument methods were what you had in mind?)
Evidently, you haven't visited SourceForge lately. Practically everything is written in Java. Also, what about JSP? Apache has gajillions of Java projects. Sure, maybe there aren't a bunch of RPMs of Java apps, but that's probably because Java doesn't fill a real need on the desktop (desktop? what desktop?) yet. On the command line, you don't want to wait for the JVM to run a few command line tools. On the desktop, everyone favors KDE or GTK for their GUI, although I imagine there are Java bindings for GTK somewhere. Then there are the licensing issues (Java rarely seems to be installed by default). As for gcj, it's interesting, but who really wants to compile their Java applications? It's already good enough as it is. And the classpath libraries still aren't quite there yet.
Why do you think they did that, I wonder?
Mike Hoye
And I think a lot of people really would be interested in what these systems are.
Cocoa and GNUstep are very nice.
How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
" Microsoft didn't just dream this up overnight..."
.NET was *purchased*, not created, by Microsoft.
.NET when they
purchased Colusa Software on on March 12, 1996. .NET CLR?).
Like most/all of Microsoft's "innovations",
Microsoft inherited what become
At this time C/C++ and VB environments already existed for Colusa's "OmniVM" (which became the
To clarify - I do alot of work with C# and find it to be the least unpleasant Microsoft development environment I have experienced.
Score 5, Troll?
I think that, at this point, there will be two major complaints and I want to adress them both.
.Net application and it runs in a reasonable amount of time. it seems to me like Java's JIT compiler IS just in time... just in time to be slow.
1) it's just Java 2.0
yeah, ok... it is. I have to admit that I like C# and it DOES have a "striking" similarity to java. ignoring all the other things that are done better, the thing I like the most (on Windows AND Linux... x86 style) is that I can run a
2) layers of abstraction are bad.
I don't care who says what, unless you're writing everything in binary your'e using SOME layer of abstraction. as long as the underlying libraries are written WELL and STABLE then abstraction leads to increades productivity and reliability.
Jeremy Logan's Website.
Well, if we can get to the point where we can do things like those shown in this Longhorn video, development for Linux will definitely increase.
By the way, the video is worth watching not only for the cool technology but also to hear two Microsoft programmers ragging on each other. Totally opposite the kind of atmosphere you'd expect at Microsoft, I suppose.
Operator overloading could redefine the equal sign to mean something else (such as compare if a equals 2).
Property You can think of this as a wrapper around a variable. When the variable is accessed, you can do some automated processing before returning (or storing) the value. In code, you can treat a property just like a variable.You seem all worked up over nothing. The article is specifically talking about desktop applications.
Boffoonery - downloadable Comedy Benefit for Bletchley Park
Exactly, there will be "kind of" a functional language - which has to use the same libraries everyone else does, which are all just like the Java libraries. So people using this pseudo-functional language will be hard-pressed to really see the advantages of a functional language as you would if you had a real function language with a set of libraries as broad as that offered by Java. .NET bindings would probably have to be weird.
I heard F# was supposed to be based on OCaml.
OCaml already comes with a nice set of libraries, not to mention parser tools (which I heard were missing from C#). It even has bindings for SDL!
And I don't know why you call it "pseudo" functional.
Although I agree on the fact that the syntax for
Actually, Mono includes a VB .NET compiler, so you might be right.
Former Iraqi Information Minister Mohammed Saeed al-Sahaf
Game over.
Nerd: Derogatory term typically directed at anybody with a lower Slashdot ID than you.
Christ man, quit sniffing glue before you hurt yourself. RAND doesn't mean they give up the IP; it means they agree to license it to all parties who wish to license it, and that all parties will pay the same rate.
I used to work for a company who got their heavily patented IP accepted as a standard. It has since become ubiquitous it its field. It was accepted as a standard under the same type of RAND terms which are being discussed here.
The numbers have likely changed since then, but when I worked there if you wished to implement it, you had to pay a $25,000 up front fee and a $70 fee per shipping unit. If you implemented without paying those fees?
Hint: their lawyers would be up your ass with a flamethrower before you had time to blink.
.NET is a framework or idea. It is not the same thing as C#. C# is a language, like C, C++, Tcl or whatever. .NET is about portability of meta-data, XML web-services, and whatever other buzz-words MS feels like using today. In any case, .NET is not C#. You can write COBOL and still utiilze .NET. (Funny thing is they advertise that...COBOL.NET that's just funny)
Once you sit down and use VS.net, you'll know why it's the best development set.
It's not just the environment, it's that the IDE is so well designed to work with the language. You can pull up a dialog and create a new window easily. You can quickly modify the defaults for properties, and connect your callback code.
Should the exact argument order escape you, a quick tooltip will show you what's to be done. Plus, with the documentation being wedded into it, you can quickly explore related API areas and structures, allowing you to come up with more creative solutions.
It even does efficient code folding for you. And it's not a huge set of ctrl+key shortcuts like Emacs!
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
If you want more informations about parrot and perl6, you might want to have a look at the mailling lists (parrot|perl), you can also access them via nntp at nntp.perl.org, or subscribe here. You'd perhaps perfer to browse the summaries of Piers Cawley.
For more documentation, consider the parrot's wiki, Dan Sugalski's blog, or even browse the source.
For the languages supported -- some are already functionnal, some not -- here's what i have in the last tarball i took: BASIC, Befunge-93, befunge, bf, cola, conversion, forth, imcc, jako, m4, miniperl, ook, parrot_compiler, perl6, plot, python, regex, ruby, scheme, tcl, urm.
Who said parrot didn't had fun?
-- search the web
C# does have some nice things that, say, Java lacks. Operator overloading, automatic boxing and unboxing of primitive types, and properties come to mind.
.Net lacks too.
Operator overloading - no, and it probably won't ever be included for good reasons. It's neat to have that power, but makes your code harder to understand and less maintainable for everyone else.
Autoboxing - yes, here in Java 1.5. You can already download a beta SDK.
Java have a lot of libraries that
Being bitter is drinking poison and hoping someone else will die
The first programming language(s) were coded in ASM, Assembly Language. Although ASM is a "language", it doesn't need to be translated and compiled like something like C. Each operation corresponds to opcodes, which are usually one or two bytes, that the CPU can directly read and interpret. Once powerful and stable C compilers (written usually in ASM) started to appear, new languages were usually directly written in C, but always containing some ASM.
The main problem that confuses people (such as the argument that C# was written in C#) are the IDEs (the Integrated Developpement Environment), which is merely a graphical frontend to do your work. So yes, the VS NET 2003 UI was made in C#, but the compiler for C# was written in C and ASM.
I hope this makes sense...it's 2:30AM...lol
Best regards,
Alex Ionescu
Relsoft Technologies
I believe you have boxing & unboxing reversed. I didn't know the definitions before this, but the ones you gave didn't seem intuitive to me, so I searched google for "autoboxing", and found several definitions that are the reverse of yours.
No, Eclipse is ! ;-)
...). That's why you use Layout. Insteadof giving X & Y, you just give them constraints (i want component A to be next to component B on a FlowLayout ... or , i want A to be "like a toolbar" positioned, see BorderLayout...).
.net is nothing more that a Java proprietary clone. Why proprietary ? Just because when you can have the complete specficiation of Java and implement it ! You only have a small subset of the Specification of .net (the few ones MS has pushed to ECMA). The other are just closed to public eyes ;-)
Just look at the number of people using eclipse and look at the number of people using VS.net
Why is eclipse the best : free, opensource, tons of plugin that fit every need !
You you are looking for a RAD tool (Delphi or VS like) then on Java JBuilder is still the best out of the place, because of the "two waytool" feature (a borland patent!). The idea behind, is that you got a DOMish view of the Java source file (APi is called JOT), then a second API make a component builder abstraction on top of this (API is called CMT). This result in possibility to just create visually an application like if you were doing some Delphi form design. But at the same time, the source code is automatically generate (and you can update it, move it, whatever you want with it, going back to design mode, the designer will be able to display it !).
FYI, the main design problem VB user suffer when going to Java RAD is the paradigm of Layout. Even if such things exist in a simpler way, they are only used by advanced users. In Java you by default use Layout. So first reaction of a Java Swing newby for instance is try to put component "like in VB", ie X & Y position.
But Java has I18N and portability in mind. Hence, positioning in X & Y is nonsense (how do you know the side of the font used on the machine, or the size of the theme
Once you clearly explain those facts to newby, after a few days they just forgot VB !
Trust me, i develop on Both platform made lots of training for newby.
All you have to remember is MS'
Ever tried to ask a .net developper using VS.net to develop on mono ?
;-)
... got a huge support at Apache Group, W3C, ... and is 100% Working on ALL the major OS !!!
;-)
"Why should i restrict myself to code with mono API ? In order to run on Linux that hold 5% of desktop machine ? No way, i need feature & don't care of that 5% !"
So it is only a one way swing : It will help Linux developper to be ready to migrate on windows !
That is "Virus development"
For those Linux people who still don't remember there is a platform called Java, that is supported by the FSF (ClassPath project) got tens thousands of project under GPL, BSD
Want to be usefull to the open community, go and help FSF to bring us an opensourced implementation of Java at Classpath
Miguel said, "C is dead", sure.
But how about some context. This is what he actually says: "To me C is dead. Except for the JIT!" (emphasis mine).
He's not saying C is gone, that nobody is going to use it anymore. He's saying that he's not using it anymore, except to write the JIT compiler for mono.
So the quote is accurate, but the meaning is completely changed once you put it into context!
Eclipse is way more useful hat Vs.net (which I have used).
.Net for server side ASP development you have Weblogic Workshop which can help define things like flows between pages graphically.
.Net. It's probably a bit of a wash as both sides have Ant, but Java has a wide range of ant tasks defined already.
.Net is a platform furiously trying to re-write every useful Java tool - and almost succeeding. Can it keep up the pace though?
For one thing, imagine having a compile error and just saying - "Please fix". Often Eclipse gets this right in one, or can offer a range of choices (not all of them right all the time, but even so...).
And then there's great refactoring support that is really lacking in Vs.net.
With Java you actually have a range of editors that all offer more advanced features than Visual Studio. In IDE's you have Eclipse as I've said, or Idea, or JBuilder (expensive but very very easy). To compete with
And those are all if you have to have IDE's - developing Java without an IDE is I think simpler than
In every regard,
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I take that to mean, "As far as the world of Mono/.Net goes, C is dead."
Actually Gosling advocated for adding operator overloading to Java, in order to improve its ease of use in the domain of numerical computing. Unfortunately the URL for the document doesn't exist anymore since he's replaced his homepage with a blog.
:
g -0 1.html#overloading
It used to be
http://java.sun.com/people/jag/FP.html
referenced here
http://math.nist.gov/javanumerics/reports/jgfnw
Mono is also write once, run anywhere - the .NET platform is designed to be cross platform (even if Microsoft were hesitant to make use of that).
.NET runtime on Windows, and it ran without any problems (obviously you have to make sure you don't use the Mono APIs if you're doing this).
I have written programs in C# on my desktop, compiled them with mcs (the c# compiler with mono), and then e-mailed it to a friend running Microsoft's
To push it to further extremes, that person could then upload the same compiled file to their PDA, and *still* be able to run it, so long as they have the runtime installed.
How much more cross platform do you want?
nobody thinks about KDE?
In europe KDE has way bigger marketshare compared to Gnome.
I use it too, and to take over Linux Desktop, Gnome has to pass KDE first.
'Take over linux desktop' - This all sounds a bit arrogant.
Not true; while Microsoft's first C# compiler was probably written in C++ and ASM (do they use plain C at Redmond?), Ximian's C# compiler was written from the beginning in C#.
Remember they could simply use Microsoft's C# compiler to bootstrap it.
Michel
Fedora Project Contribut
"To me C is dead. Except for the JIT!"
So let's get a bit of perspective here. All he's saying is that HE doesn't code in C much anymore.
Portraying his statement as a "Peace in our time" or "End of History" style pronouncement is ludicrous.
Simon Hibbs
C#
This is essentially Microsoft's new version of the C programing language.
Not at all, C# is essentially Microsoft's new version of the Java programming language, and platform.
I beleive DotGNU project is better. While Mono is faster on i386, here and now, Portable.Net is really portable to anywhere, does not rely on non-standard things, have working System.Windows.Forms and so on and so on. And is GNU project. Surprised why ou never headr of it? Because mono is actively PRed by articles like this.
Maybe you mean the applications used by sysadmins or business managers --- such applications are usually I/O or database-bound, so it is good to use a high-level language; but not everyone write their codes for such purposes.
Bowie doesn't just blow smoke, he has real software and very firm opinions and convictions. If you don't agree with his opinions that is fine, but don't slam him for them, and make like he's someone who does nothing for the community.
You can write your boostrap compiler in any language you want, even an interpreted one. All you need is something that can let you parse the source and produce the binary output. Once that is done, now proceed to write the real compiler in the same language you created that it will be compiling. Once you have that working, you no longer need the bootstrap compiler, at least on that platform. Getting your language working on new machines might then involve that bootstrap compiler again, presuming what it was written in is already on that machine (so choose something reasonably portable).
One possibility for making a compiled language is to produce as compiled output something higher than assembly, such as C itself. This is how C++ got started so maybe C&& can get started the same way, too. That might be your bootstrap compiler or even your real compiler.
So C is not really dead. It's just being trampled on.
now we need to go OSS in diesel cars