It is not a secret that Novell/Ximian will be pushing C# and Mono on Gnome in the coming years when it will be more full-featured and ready for adoption. Programming-wise, there are several advantages of using Mono over the plain GTK+ (oh, and by the way, GTK# 0.13 was released today). So, what’s your opinion on a .NET/Mono-aware Gnome?Note: The poll is now closed. I closed it as soon as I saw it got tampered (jumping the “no thanks” from 21% to 29% in a matter of a few minutes, something that can’t happen normally). You know who you are.
Hello Tim,
I agree that building complete class libraires that work on .NET and Mono and are completely open benefit both as opposed to only benefiting open source.
But I see .NET and Mono as a new wonderful foundation, and we should encourage as much as possible cross-polination: open source code being used in Windows, and allow Windows users to get a taste of open source. And we should do the same.
The Mono job is to bring this platform to Unix. If you want to do other things, like highly innovative things you are free to do so. Mono is not the end of the world, and nobody is stopping others from building fantasitc things on top of Mono, or fantastic things that compete with the Mono vision.
This is not directed to you Tim, I think your post is well thought out, and I like it.
But I often encouter the `Mono should not do X, and instead should do Y’, where Y is `innovate, do something new’ or `work on my fav project’ or what have you.
My answer to those people is: if you want to do that, feel free to do it. We are enjoying our work on Mono very much, and we are enjoying the applications we are building. We have only control over our time and our lifes, not over yours. This world needs more innovation and more ideas, please, please, go ahead and build those, everyone wants to be marveled, everyone of us wants to see what the future holds. The Mono project has one particular objective: bring a platform that we love to Unix. Whether you will innovate on top of it or not is a different matter (I think you will enjoy it though 😉
Miguel.
Java is a mature language than C#. I bet on java .
I think people need to realise that Microsoft is not shy to take ideas from open source and implement them in its own products. Why should open source developers do different. They should take good bits out of what Microsoft does, not just dismiss it because it came from there.
Mono does implement bits of .NET which are questionable, but only to those who wish to write platform independent code, or more specifically, software which uses those parts that are currently of most use to Windows software. The rest, open source products can pretty much do without. Heck, with GTK#, one can write apps that probably work on both Windows and Linux, and might actually avoid using the Windows bits. Might look a bit out of place though on WIndows, but not much more than Ofice System 2003 looks out of place on Windows XP. (Don’t believe it, check it out)
Linux will exist without GTK# and with it. It might be hard for Microsoft to justify why it want to basically own all developers who use C# and the .NET. If yo uuse the standard parts of Mono only, you will be ok.
The thing is.. I’ve used apps that are written in perl and python for gtk2… They are fast and work as well. You could not tell they were written in a scriting language. That is one thing I can’t say about Mono or Java.
Thats until Microsoft starts the law suits.. justified or not.. with the money they have they could pull one hell of an SCO.
It’s all about, if mono is just another choice to get my work done (like language bindings now) bring it on, but if mono means * mono – culture * for some things, forget it.
I am really happy to see that so many people are mentioning Python in connection to GTK/Gnome, because it is a very good language for GUI design (and maybe everything else), you have easily maintanable code, you are not (!) forced to use only OO techniques, but also functional ones (though they are not as powerful as Lisp/Scheme/Haskell – but there are many news ideas for Python 2.4), and so on.
Looking at all the articles written by people having been to the PDC and are now full of praise for the new technologies and shouting “Linux has to catch up to this or it will die! Horribly!” I just think, that all this what we have seen is in the first hand a great marketing blurb. And nothing else. It becomes reality in 2006, not earlier, presumably later. And why does OSS have to catch up? This, of course, makes perfect sense if you are either
1. a Microsoft user, who feels (!) warm for Linux, but is to <fill in your favourite adjective> to switch to Linux (may he even use OS/free software) .. who cares, I mean really? I do not think that those people’s opinions count
2. some hacker with a vision
3. some hacker with a plan for world domination.
On osnews.com, there are plenty people of kind 1, and we (at least I) have to read their articles over and over again. But I do not know, whether the people of Ximian/Mono/Novell/whatever belong to type 2 or 3. Anyway, both ways can lead into great success or great disaster.
What I personally would like to see would be some language-transparent thingie like Fresco has, so that every language supporting Corba can be used to program it. In contradiction to .NET, where a runtime has to be written for each language.
Mono could fail if it is not well documented. There should be several easy to find tutorials aimed at beginners and intermediate solutions developers. Don’t forget to market your product.
It also should be preinstalled on SUSE professional.
Mono with GTK looks exactly like Python with GTK or C with GTK. It is the same toolkit, it renders the same. Packaged properly (with RPM for example) a Mono app will run without you knowing what’s under the hood, as long as you’ve got the mono RPM installed (same as Python).
Someone else said it’s really a gnome-aware mono. I don’t really know what a mono-aware Gnome really is – maybe someone can clue me in. Is it that certain core parts of the Gnome desktop would/could be rewritten in c#/mono?
Mono is just basically a compiler, some libraries that will/are compiled down to MSIL, and the run-time engine.
I think the core should probably still be written in c(so it’s fast as possible), and then apps could be written in gtk#/Gnome# or any other language the developer chooses.
I think in a way the title is misleading and gets the anti-mono/.NET people all worked up.
You can embed mono into a c application, but I don’t know what gains that gives the Gnome desktop. Maybe someone else knows what mono can REALLY give to Gnome.
I did not research the implementation but I gather that Mono C#/GTK# code is translated (the whole program) by a compiler into an intermediate language, and than the intermediate language is interpreted by an interpreter which translates the intermediate language to machine code (line by line or rather instruction by instruction). So fundamentally there is a compiler and an interpreter.
It appears that you are correct, that Gnome would be implemented in C#/GTK# so that it takes advantage of the dynamic runtime capabilities of managed code.
Think of it as a software layer, or as some call it, a virtual machine. So Gnome would be ported to a higher layer of software.
I imagine that some of Mono’s infrastructure was implemented in C such as the interpreter, so that it would be portable.
If you want to know more about computer organization than get a book such as “Structured Computer Organization 4th ed” by Tanenbaum. The other popular author is Hennessy.
MS will find a way to break compatibility one way or the other. It’s an option, fine, but if this is some new way of legitimizing GNOME, then it’s a bad idea.
Look, didn’t you GNOME critters out there support GNOME because it wasn’t based on a proprietary standard (like KDE?)
“Look, didn’t you GNOME critters out there support GNOME because it wasn’t based on a proprietary standard (like KDE?)”
You’re confusing the issue. Qt’s problem was licensing. The potential issue with Mono is patent-related. Mono’s licensing is absolutely fine.
There are a couple circumstances that mitigate against Microsoft ever suing anyone over this:
1. Anti-trust agreements. Suing Mono over inter-compatibility wouldn’t go over big in the courts, patented or not.
2. Microsoft has no history of using patents against anyone, and they have not made any objections whatsoever to Mono thus far.
But, most of all, I don’t understand what the poll question is even about. Is it really going to hurt anyone to slap on yet another binding for GTK+? Even if I prefer GTKmm (which, incidentally, kicks ass), why should I deny someone else the choice to use something else?
You guys didn’t interpret the poll as “should we use Mono only?”, right?
-Erwos
I have mixed feelings on Mono. First I can’t find a good reason to really use C#. It looks like a decent langauge, but nothing to really explain why people seem to be drooling over it and why Linux people want it so badly.
Also how come it says on Mono’s page it’s for UNIX OS’s and yet Mac OS X the biggest UNIX OS out there doesn’t have a download, neither does any of the BSD’s (at the minimum i’d expect FreeBSD), and I can only see like 4 Linux distributions on the download list ? Is this a UNIX thing or is that statement just a guise to hide behind while only supporting 4 some OS’s ? And yet DotGNU is attempting to do the same thing except it’s for Mac OS X, FreeBSD & many Linux distributions. Im not trying to be a troller here, but I see so many projects say they are for all UNIX’s and yet leave so many of them out of the cold at the same time.
I’d have to agree this is a bad thing in terms of copying something someone else has already done. Why can’t Linux seem to innovate if Apple does it every year with Mac OS X. After Mac OS X 10.3 Panther came out I heard a bunch of Linux people talking about making something similar to Expose on Linux. Again your not innovating, your copying. I think Linux could be a really good OS, but it needs to come out with something good that makes everyone else jeaous, im still waiting for something like that to come out. I don’t doubt there are some really smart Linux programmers out there so why can’t you seem to think of anything really innovative ?
Personally I like Objective-C the best, but I also really like C++. I don’t get how some people say C++ isn’t really OO when it’s entirely OO. But im also going to learn C#, I’ve read the specification and seen some code, but still don’t see any big deal about it. Im willing to learn C#, but personally I’d like to see a good and ORIGINAL IDE for Linux with an easy to use language and interface.
–: )
I don’t get how some people say C++ isn’t really OO when it’s entirely OO.
>>>>>>>>>
There are elements of C++ that aren’t OO (like the STL). The language itself can support OO just as well as Java, but a lot of the library is (with good reason) not OO. The STL is actually a little bit functional (the designer didn’t believe in OO). What’s funny to me is that people criticize C++ for not being “pure OO” and then point to Java as the solution. Java lacks a lot of advanced OOP features. Then, there is still the huge schism between built-in types (strings, integers, floats, etc) and full objects.
Im willing to learn C#, but personally I’d like to see a good and ORIGINAL IDE for Linux with an easy to use language and interface.
>>>>>>>>>>
PyQt/PyKDE is getting there. KDevelop has preliminary support for Python (they are working on fuller support for Python in wizards or whatnot). Also, it has full support for GUIs layed out visually using Qt designer. Lastly, there is Psyco, which gives a 4-100x boost to your unmodified Python code.
http://developer.kde.org/documentation/library/cvs-api/kdevelop/htm…
Having Gnome Mono aware would make creating apps for it much easier.
Just think if Borland Delphi 8 for .net supported it, it would make creating desktop apps trivial and super easy, and because everything you need for deployment would already be in place, we would not run into Kylix type deployment issues.
Deployment was the big downfall of Kylix.
1. Java: IMHO it is obsoloted. No properties, no operator overloading, stupid virtual machine (every java application start new one), it is a big fall.
2. PHP/Python: IMHO scipting languages very good for scripting, but not too good idea to create professional business applications.
3. C++: it is a very good tool to create system applications (RDBMS, compiler, etc) but for desktop or server applications IMHO not too good idea. I wrote a relative big (> 20 000 lines) business application it C++ and wxWindows, and IMHO it is not a good idea. The next version of my application written in Kylix, because it is more efficient and easier to maintenace. But IMHO the future of Kylix and Object pascal a little bit doubtful.
But if gnome support CLR anybody can write PHP, Python, Perl compiler to .NET.
The “microsoft-dependency” IMHO not a problem. The current Gnome also use similar technology: CORBA, html, etc…
Python isn’t really a scripting language. Its an extremely powerful real language that happens to be interpreted. With Psyco, its runtime performance is usually good enough for most applications.
This is the classic case of scratching an itch here. Migual and other parties decided they wanted to implement .NET because it was good ofr developing applications they wanted to make, and they made Mono. Just like it will be possible for people to just use plain old C++ on Windows and avoid Mono, it will remain possible on GNOME, in fact, more likely than not, Mono will be a secondary, albeit very very viable devlopment option.
But many people will just move to .NET and I would like to think if Mono is superior to whatever is there, people will take to it and use it instead. Its about using the best tool for the job.
Thanks for the info Rayiner. I do work mainly on Mac OS X right now and i have done programming on Windows also. However Linux seems to elude me, I consider myself to be a pretty good programmer ( I know C,C++,Objective-C,Java,Visual Basic,assembler,etc.) but for me in Linux programming it’s hard to figure out what to use, and whats god & bad.
On Windows the best IDE is Visual Studio, on Mac OS X the 2 best are Apples Developer Tools or Codewarrior. However whenever I load any Linux distro it’s not clear if you use 1 of the 3-4 that usually come with whatever distro you use, what the app will be able to run on and what languages are supported or how you get started. How hard/easy is Python to learn?
IMHO the CLR is better solution. You can write your code in Python, C++, C#, PHP, Object Pascal, VB.net if your compiler can produce CLR output, and you can use Python code from C# or Pascal code from Python, etc. Let’s see PythonNet.
The speed will be relative slower then C++ but IMHO not slower then Psyco or other similar tools, and faster then interpreted PHP, Python, etc. And without processor dependecy. If anybody write CLR code to his compiler it can produce output all of CLR supported processors (in practice all processors, because if JIT doensn’t exists you can run interpreter, slower but it always work).
The CLR really isn’t good at supporting dynamically typed languages like Python. For production work, dynamic typing is a preference (a lot of people like strict typing like in Haskell or Ocaml) but for rapid development, its commonly accepted that dynamic typing lets you usable results very quickly.
“The CLR really isn’t good at supporting dynamically typed languages like Python. For production work, dynamic typing is a preference (a lot of people like strict typing like in Haskell or Ocaml) but for rapid development, its commonly accepted that dynamic typing lets you usable results very quickly.”
although I never wrote a program with a dynamic typed language I doubt it. I mean what’s the advantage? You type a word less but spend a lot tome searching for errors and have no IntelliSense. I’m not a pro developer but I think the opposite is the case, what’s the problem with making a cast? Unlike VB C# sytax is very nice for that ((int)myInt/myInt as int/Convert.ToInt(myInt)). Maybe I’m missing something. Also I think .NET ca handle dynamic typed languages like VB with option strict off or JScript .NET good
I agree. The dynamic typing not too good idea if you want to create complex applications.
“although I never wrote a program with a dynamic typed language I doubt it. I mean what’s the advantage?”
First try it out, then judge about it. Otherwise shut up.
In Python, I never had the use for a debugger.
In C/C++, I am dependent on it.
> In Python, I never had the use for a debugger.
> In C/C++, I am dependent on it.
It is very nice 😀 And in your opinion it is argument for dynamic typing ?
No, but is argument against the fud that you spend a lot time for searching errors introduced through dynamic typing
“I’m not a pro developer but I think the opposite is the case, what’s the problem with making a cast?”
The problem with casts is that you circumvent the type system, which is not the same as a dynamic type system. I don’t want not repeat the debate about dynamic vs. static type systems — use google if you are interested in it.
Just let me tell you this: static typing means the type of an entity is determined during compile time while dynamic typing determines the type during runtime. Casting is neither static nor dynamic (Forgive me if I do not consider here the various forms of casts that C++ offers). The advantage proponents of dynamic systems cite is that it is trivial to develop generic containers and algorithms. In static type systems you need a form of generics (eg. templates) to achieve the same.
Have he, and his followers, forgotten?
“Don’t imitate, inovate”
It’s still so true…
The CLR really isn’t good at supporting dynamically typed languages like Python. For production work, dynamic typing is a preference (a lot of people like strict typing like in Haskell or Ocaml) but for rapid development, its commonly accepted that dynamic typing lets you usable results very quickly.
I hear this a lot but I never seen any technical information about this issue.
I would love to see gtkmm/c++ adapted into gnome, currently not many distributions have it installed by default, and in my opinion gtkmm is alot nicer to use than the standard gtk and c.
I still don’t get it why do linux users/developers still bet on .NET technology more then they do on Java, they prefeer to adopt a Microsoft tactics to overthrown Sun in using a good technology then to go against it and make Unix use Java. It just doesn’t make any sense! And btw Java is not slow, Swing is, ever tried Java-Gnome? You should.
I know that we need mono/dotGnu like we need wine and samba but making it standard for a platform is just insane, seems to me that there are alot of windows migrated users that just feel that they are not at home until they have all the useless mombo jambo they had before.
Because the technology is better. Because the developers of .NET learned the fall of java and skipped the dumb things of java. Java is slow because always start a new virtual machine for every application. And not only the swing slow: the eclipse platform also not too fast but at least very slow 😀 (with Intel P4, 512MB RAM, on linux).
IMHO in this area (virtual machines, class libraries, languages) nobody can produce too innovative (and useable) thing. Languages and platforms are developed from about 1960. It is evolution and not revolution. If you see .NET it is not a bunch of a new innovations, only the synthesis of the best parts of the existings systems (Java, C++, Object Pascal).
My company has a product an accounting package.Version 4.0 was written in C/C++. Its was fast reliable and ahead of its time in terms of the interface. Our clients loved it.
Then the Buzz word Java cropped up(this was a while back). Stuff like cross platform compile once. The product manager decided that for version 5.0 we will shift to java.
In addition we made many changes. It became client server enabled and used servlets for its backend. And a whole new plethora of features making it a mini erp package.
We released it for jdk 1.3. It was slow, resource hungry. The clients hated it. Finally we shifted the entire backend to C++. The servlets were there to recieve the client’s request and make native calls.
But the client was still in java and needed a minimum 128 mb ram to run properly. For an accounting package that is a joke. Our clients weren’t happy but they needed the features (Besides they had payed a bundle) So they upgraded. But even then there were so many problems. We kept getting ‘out of memory’ exceptions client side because it just couldn’t handle the sheer volume of data sent by the servlet. So we implemented our own classes, to enable harddisk caching just like windows virtual memory thingummy. I wonder when sun will implement that ??
Look java is an easy language no doubt. But it is just too resource hungry. There is so much that goes under the hood that the programmer doesn’t know about. And I don’t think it really is the language’s fault. The higher the level of abstraction., the more generic it becomes and less flexible. It is very very frustrating.
IF there is something ****ed up in there, there is nothing you can do, except throw the damn thing away and reimplement it with his own classes, and for cripes sake that’s what we anyway do in C++, so why do it in a language that sacrifices performance??
And besides please don’t give me that bull about memory management and crap in C++. You try to use it directly and you will have hell. Obviously it expects you to take care of every detail, which u can’t do on a large scale . So take care of the minor details first. Write some small efficient memory management classes/functions that are pertinent to YOUR PROJECT/PRODUCT. There is no one size fits all in this world, because machines are still not that fast. Maybe one day in the world of 256 bit processors and 1 terabyte ram or something java will run decently but that day is pretty far off. And my company has been burnt and they have learnt their lesson.
Right now we are striking a balance. The actual classes make native calls for efficiency. But the general framework is is in java.And now everyone is happy. You can’t write an entire damn thing in java, or a higher level language, they just aren’t efficient enough. So strike a balance and stop going to extremes. C/C++ is useful when you have a tight-knit team of 10-15 people who know what they are doing and good QA (The inner circle). 100 ppl using C++ you are looking a disaster in making. The outer circle is a bunch of ppl who use java or a another high level language to use the components written by the inner circle. You can’t get the sheer performance of pure C++ true, but this model helps you to deliver stable robust products on schedule without the client going to fits of apolexy. For OSS, this is not a problem so use C/C++. Just look at the performance of BeOS/Abiword/Gnumeric. Now imagine it written in Java.
MORAL: Use the right tool for the job and don’t think about trying to make fashion statements.
AND THE SAME PPL WHO COMPLAIN THAT THEIR APPLICATION IS NOT RESPONSIVE AND THAT THEY WANT IT FAST, WILL BE HOLLERING FOR JAVA.(This is a client who really got on our nerves!!!).
First of all, what JVM did you use? Looking at some benchmarks sun’s JVM is know for to be bloated in memory usage, you should use IBM’s jvm if you really want to achieve performance. J2EE is known for it’s speed, stability and good threading abilities, JIT really makes things faster in long term usage. My question is the following is .NET/Mono/GnuNet good enough? I think not, so i still ask again, why not support a good JVM like Kaffe or GCJ (which even they have a smaller memmory footprint then sun’s JVM) and make it mature enough to be usuable in that kind of projects?
The best program microsoft created so far is probably VisualStudio 2003. It is impressive in any aspect. As for resources and performance, it takes maybe 100 Milliseconds to load and uses 10 MB memory after startup, it’s .NET based, like .NET very well designed. Time consuming assemblies like the forms classes are compiled using a technology called ahead of time compilation. Try VisualStudio 2003 C# for a few weeks and you probably fall in love with it like Miguel
Novell might release a C# version of Gnome or GTK or whatever, but I highly doubt it will ever be included in Gnome itself. Gnome is part of the GNU project, even the G in Gnome stands for GNU. There is now way the Free Software Foundation is going to include Microsoft’s .NET in it. It’s just not going to happen. Think about it.
“there is now way” = “there is no way”
Oi, spooty typos.
Too many possible reasons as to why your product is underperforming when written in Java. One of the big things that I found Java to be really slow in is the UI. Swing is really well designed, but if you’re doing anything with tables, trees, etc you’d do well to write your on model classes as the supplied ones just don’t cut it. You mentioned an accounting package, so I’m guessing you’ll use these components a lot. Rewriting the datamodel class normally helps a lot, and is recommended procedure.
That being said, there are big apps that use Java, and isn’t immediately obvious that it is Java. Take ThinkFree office for example. It is a pure Java app that runs well on my Powerbook. Sadly, it doesn’t have certain features that Office has, else I’d be using it exclusively.
It’s none of the FSF’s business what Novell does. They can implement GNOME using code mangaged by their MONO runtime. The only constraint is that it probably has to be open source.
It’s wrong that the FSF or the open source community control vendor interest in Linux. They need to give up some control so that a vendor can have a unique product line. It’s in the FSF’s interest to promote competition on Linux. The system itself, that is, the operating system layer is always going to be open source, but any layers ontop of that will be commercialized. That’s the way it should be.
Linux has to allow a vendor to differentiate it’s product, it has to clearly support business interest in Linux or else I think that businesses should go elsewhere.
If you make the system open source and protect it with the GPL, than that will prevent one company from controlling the factors of production. On the other hand, any layers above the operating system have to support vendor freedom to establish a product line and not have that stolen from them.
If the open source community wanted more control over the higher layers than they should generalize software that they build so that a vendor interest can specialize that software and differentiate itself, yet the open source community would be supplying their leadership.
Dude, VS is not created with .net, that is why it loads so fast. It’s a c++ non managed app.
Check out SharpDevelop, it is a pure .net app and it loads much slower.
@Anonymous:
I ended up writing a bit more than fits here. You’re very misinformed about dynamic typing. Please read:
http://www.prism.gatech.edu/~gtg990h/dynamic-typing.txt
@Keiname:
See http://www.parrotcode.org for rationales on why .NET isn’t well suited for dynamically typed languages.
Where the fsck is MdI hoping to go with this? Attending MS marketing speil to try to catch up with what they will be doing in the future, hoping only ever to catch up with their latest toy, regardless of the quality.<BR>
Refreshing to see that he does question some of their decisions, but he’s happy to go along with (and take Novell along with) whatever MS does.<BR>
Still, I guess Novell are used to taking “that position” with Microsoft.
I am sorry Rayiner but I didn’t find anything of a technical nature indicating why the .NET runtime is unsuited for dynamically typed languages.
“I ended up writing a bit more than fits here. You’re very misinformed about dynamic typing. Please read:”
thanks a lot, not everything was easy to understand for me because I know only .NET and things like generics are not supported yet (will be in the next version) but I will save it for later studies
“I use Python a lot, and most of my errors are not due to dynamic typing, but Python’s propensity to auto-vivify variables. So if you do something like k.myVariabl = 2 (note the spelling error) it will create a class member called “myVariabl” in ‘k’, even if you meant to assign to an existing memeber called ‘myVariable'”
why not simply using a editor capable of code/auto complete/IntelliSense like features? It appears to me as extremely helpful, maybe it’s just my laziness or lack of keyboard skills, I think without I would have a problem
Dude, VS is not created with .net, that is why it loads so fast. It’s a c++ non managed app
Large portions of VS is written in managed code.
It’s a seriously awful idea to try to do .net on linux.
Microsoft can be counted on to support mono in the beginning, when .net needs all the help it can get, and then to break mono compatibility when MS no longer needs the help and just wants to lock up the .net software market for itself.
Microsoft is just the worst business partner anyone could have. They’re all about backstabbing with just the right timing – just right for them, not for their partners, not for the industry, not for endusers.
I don’t object to implementing something with some of the advantages of mono/.net. In fact, I think that’d be a good idea.
they can’t breack it because different .NET versions run side by side. For every MS version there will be a Mono äquivalent