Coding The Future Linux Desktop [updated]
the.jedi writes "With the release of GTK+ 2.4, and Gnome 2.6 due out some time next week, it seems of some the Gnome developers are looking at how they'll be coding Gnome and the rest of the Linux desktop. Havoc Pennington of Planet Gnome has written a short blog pondering and analyzing the available options as coders move towards high-level languages like java and C#. He gives a good overview and assessment of technologies like mono, OO.org's UNO framework, as well as other ways of tying new languages to the existing code base. An extremely interesting read for desktop linux hackers everywhere."
Update: 03/17 14:44 GMT by T : Speaking of the future of Gnome, aeneas writes with a list of Gnome 2.6 release parties around the world (linked from gnome.org/start/2.5).
[] in C
[] in scheme
[] in mono
[] in asm
[X] in a penguin suit
[] whilst eating a banana
[] upside down
[] badly
[] perfectly
[] in an easy to use fashion
[] as a placeholder for my terminal windows
[] to look just like Windows
Beep beep.
We'd actually get a performance gain without a 4 way Xeon and gigs of memory, and apps would even downscale acceptably to mobile devices?
This is not about the frigg.... file selector. It is OK now, so lets move along to the actual topic:
The future technologies behind the desktop.
Why are other peoples sig's always more witty ???
Gnome/gtk kind of sucks for X performance, even compared to the Motif libraries, which are no speed demons. It makes WAN/dialup/dsl use of X even more painful than it need be.
Deleted
Very high level languages, Java, C#/Mono, frameworks, newest GNOME, newest KDE, how many buzzwords can we use at once?
Seriously, guys. Use what you know. Write in C++, write in Python. For GUI use GTK or QT or wxWindows, or just GNOME/KDE libs. If you write game use SDL or plib or ClanLib or anything else you will find. Do not check what is "trendy", just code.
I am asking same question again - why Linux world need to copy everything from Windows world? Do not integrate, do not unify, be free.
From the article:
/dev/clue ;-)
The question then is: many strong proprietary companies such as Microsoft are moving full speed ahead on high-level managed language platforms. Can open source compete, or is it too unable to make hard decisions? Rephrased: is there some way we can find to move away from C/C++, without causing massive alienation and forking?
It's time to start the discussion. Rather than fooling around in the background, companies should get involved in a broad community process where we work out a common direction for the open source desktop codebase. [emphasis mine]
I'm not a coder, or technical in any form, but I can see how this makes sense. I'd love to adopt Linux but am still trying to mount
It's my guess that more people would want to adopt Linux distros, regardless of their flavour, if the open source OS community worked out those kind of specs as a group, so that different desktop versions of Linux were broadly the same.
(Yes, I know about the kernel, but matters that the article addresses seem to be important. IMHO, it could harm Linux in the future if different distros become too divergent, leading to a loss of interoperability or the requirement of, say, 14 different varieties of OpenOffice.org depending on your distro.)
"It is dark. You are likely to be eaten by a grue." -- Zork
Windows XP's Fisher Price interface is much faster than KDE/GNOME.
Flame me, call me a troll, but it is.
This is why I stick with one of the 'minimalist' window managers. Sure, I'm missing out on a lot of things, and Joe user probably needs KDE/GNOME and all their associated parts, but I don't.
On the extreme side there are still people who only use a terminal.
As a Java programmer, maybe im bias but i really hope that .net doesnt become the de-facto language on the linux client.
:o\
Feels like 10 years building a viable alternative to Microsoft and just as the goal is in sight... handing it over
Having development environments like KDevelop and Glade are very important to the linux desktop. If these programs had more point-and-click UI design features, it would allow anyone with basic programming experience to put together a program. It's both good and bad to have this in linux though; it allows almost anyone to point and click an application together, and this will help corporations utilize a linux desktop. It also allows for the same problems that windows development has: lack of granularity in visual basic and really bad, unoriginal programs.
I think improving the visual part of KDevelop and Glade is very important. I also think leaving C/C++ and possibly Java as the languages in which the applications are written is preferable. C# is simply Java by Microsoft.
It would also be nice to have a development environment that allowed any language to drive the UI.
http://github.com/gbook/nidb
Did you guys switch the polarity on the temporal transducer again? It's *LIKE* a re-post, but not.
Here ya' go, from yesterday.
"Lawyers are for sucks."
- Doug McKenzie
Your point is well taken, but it is rather surprising that you seem to have forgotten invention also drives economies. "They" want this waste/consumption of resources to force people to buy the Next Big Thing.
This isn't American and it isn't even Capitalist; it's Human, and probably vexed Pharoah as much as it vexes you or the lower income individual on the upgrade treadmill (MS/Software/_or_ Hardware.)
Regards,
A. C.
...as coders move towards high-level languages like java and C#... ... and soon Linux will not run anymore on low end systems, either requiring a super machine (like Windows) or running painfully slow.
I mean, we all like java, but have you ever seen a normal user application (with a GUI) written in java that is even a bit fast?
...is a nice C++ GUI framework. Once you have one of these, be it gtkmm, qt or wxWidgets you're set.
People need to avoid the language hype - C# and Java are not the way to go. There's quite enough bloatware out there already, and running code inside virtual machines does not help.
There never was a problem with the file selector. The file selector is good. Lies were told about it by ungood MS and the hated Billgates
/. collective hivemind
Linux already is the best desktop. Anyone who lies about that spreads MS FUD and is guilty of thoughtcrime
Linux could not be improved, as linux is doubleplus plusgood already
Disliking Linux is a sign of ungood crimethink
Signed, the
These guys realize that they have to move on, failing to provide a decent desktop. Good luck for the "new, improved" project.
The large open source projects could drive Java deep into Linux, and bring it new life, just as Linux revived UNIX as a whole. (my emphasis)
I disagree with this statement. Unix was doing quite well in the server and workstation market in the mid-1990s when Linux began to make its presence known. (Yes, Linux existed before then; no, it had not made significant inroads as of ~1995. Sorry, fanboys.) Yes, Linux made the Unix-oriented evnvironment available to more people, but piggybacking on a current and widely-used platform != revival.
I want to drag this out as long as possible. Bring me my protractor.
The battle for the Linux desktop has really been heating up lately, and with the planned release of several big commercial apps (Macromedia), it's getting even hotter.
.NET; what makes HP think that GTKmm or QT isn't good enough? Don't believe the hype dude; the MS marketing machine has been blowing a lot of smoke up a lot of asses.
As a bit of a GNOME fanboy, I hope GTK+ and friends can lure ISVs to use G-technologies when porting their programs. GNOME currently seems to have a large base of commercial support, although I've heard QT is being used in commercial development more. The integration of commercial apps with a desktop platform could be a make-or-break for said platform, especially as Linux market share grows and more Aunt Tillies and suits move off of Windows.
I've got a bone to pick with the FA though; it states that FOSS needs a new high level language and toolkit pronto if it's going to lure new developers. I haven't heard of the Adobes, Macromedias, or Intuits of the world scrambling to rewrite their apps in
Is this rock and roll, or a form of state control?
-- ac at work
How sad: the only alternatives taken into account by Havoc are C#, Java and C++. If only the open source movement decided to embrace Mercury (logical paradigm) or Haskell/Clean (functional paradigm), and build .NET-like infrastructures for them, their productivity would be so increased that that they would surpass Microsoft before longhorn comes out.
Instead, you go check and find out that the Mercury and Haskell projects are sponsored by Microsoft. Also ML and Prolog are being ported to .NET.
Well, I suppose we (the OS movement) will get what we deserve for our lack of foresight.
I was a gnome diehard for a long time. But now they are opening it up to legal issues with this .net copying.
Further, WTF is with object oriented nautilus in 2.6? Can someone explain how having hundreds of windows exploding onto my desktop as I browse is beneficial? And if it's for "ease of use" then can someone tell me how abandoning what the other 2 Major OSs are doing is "easy of use"?
Methinks there is some UseInterface Jihad warriors who could be kept under control. This is ONE thing where you do need an easy to use control panel to change between options.
Gnome is going in the wrong direction IMO.
I opened up KDE 3.2 to find konqueror quite nice actually, their tabbing is comparable to moz/fox now and the interface is cleaner. Sure KDE had "lots of options behind the scenes" but they are still behind the scenes, only one or two more "on the surface" extras to gnome.
There might well be a migration to KDE from Gnome to avoid legal issues if too many apps get developed in mono.
I've been professionally developing using C/C++ since 1985 on everything from device drivers to GUIs on every platform imaginable and I love C++.
BUT I've also been doing Java and C# the last three years, and they are a *huge* win in developer efficiency. Watching people working on my projects, I can see marginal developers immediately become much more productive (2x in some cases) - and I've been measuring this using several objective metrics (modules/week, LOC, PR #, time/PR).
I would rather see Java "win", but unless Sun blinks on the free/open issue _very_ quickly, I think C# will win by default.
Something I posted to osnews:
Nice article Havoc!
One very key thing is that many many developers who aren't open-source fanatics still use OSS when it suites them - development tools mostly, especially mingw etc.
Now from my empirical sampling of programming buddies, I'd say these developers outnumber the OSS crowd 10 to 1. There just are so many of them, and they're going to be writing software primarily for Windows for years to come.
The key thing is supporting windows in order that we can get those developers to start writing portable code accidently rather than by design. I've already managed to get many of them to use wxwidgets but obviously C++, as Havoc pointed out, isn't best for every project.
Any OS framework has to be aimed primarily at infecting the windows world and building accidental dependance there these portable tools, so that windows apps can magically run on our alternative OSS desktop.
An OSS desktop gains momentum through supported apps making it easy for normal (windows) users to use, not through advocacy.
My personal opinion is that Mono must never come into the code base. It is a project doomed from the start, and I don't want it polluting the code base.
Java is good, but I don't know if any actual advantage in speed or performance will be gained by using Java over C/C++
But this is a wake up call for the community to direct the course of the all important desktop environment, which if corectly done, will make Linux usable to the average Joe.
"In questions of science the authority of a thousand is not worth the humble reasoning of a single individual."
I find it interesting that C++ is not a consideration. He mentions "moving away from C/C++" but probably 99% of GNOME is C, not C++. I wouldn't be so quick to group C and C++ together like that. A lot of pain in Gtk/GNOME development is due to the pure C interfaces. I don't see many KDE developers complaining that they need "higher level" languages. They already use one: C++.
C++ offers everything Java and C# do but it also can do so much more. I mean Java and C# have only recently gotten generics. In C++ it is beyond simple to old your old C API's (although C# is pretty simple also).
Some people complain that C++ is too complex, but as Java and C# mature they are becoming just as complex. Why not make it easy get the best performance out of your hardware? Why not use a language that already has tons of power and flexibility?
As for cross platform compatibility... Both C and C++ are extremely portable. It's the API's that are not always so easy. However, this is no different than Java or C#. At some level you're using a C or C++ subsystem that needs to be ported to each platform. Why not just use it in the first place?
The ratio of people to cake is too big
I find all this talk about GNOME possibly becoming based on Mono extremely unsettling. GNOME is part of the GNU project. The Mono project is not only not part of GNU, they're even openly hostile to the GNU efforts that they're competing with.
I'm not favoring XUL, but if I read ok, the article mention sthat XUL only has bindings to javascript. These are maybe the best implmented, but ti has also bindings (or being worked on) for perl, python and ruby.
Michel
I hate to say it, but I feel it needs
to be said:
Ocaml.
what? why is no one suggesting Kylix? then i could recompile with delphi and have Gnome running on my windows boxes too :)
That's quite an facile editorial but you can't expect better from normal users. My screenshot looks better than yours. Evolution is better than KMail, GNOME looks more polished than KDE and so on. I do use XChat, Abiword, Rhythmbox.... ...usually you get stuff like these from normal users. And this is ok since you can't blame them for stuff they simply don't know about or don't have a slighest knowledge about.
Such editorials are hard to take serious since they are build up on basicly NO deeper knowledge of the matter. Most people I met so far are full of prejudices and seek for excuses or explaination why they prefer the one over the other while in reality they have no slightest clue on what parameters they compare the things.
If people do like the gance ICONS over the functionality then it's quite ok but that's absolutely NO framework to do such comparisons.
I do come from the GNOME architecture and spent the last 5 years on it. I also spent a lot of time (nearly 1 year now if I sum everything up) on KDE 3.x architecture including the latest KDE 3.2 (please note I still do use GNOME and I am up to CVS 2.6 release myself).
Although calling myself a GNOME vetaran I am also not shy to criticise GNOME and I do this in the public as well. Ok I got told from a couple of people if I don't like GNOME that I simply should switch and so on. But these are usually people who have a tunnelview and do not want to see or understand the problems around GNOME.
Speaking as a developer with nearly 23years of programming skills on my back I can tell you that GNOME may look polished on the first view but on the second view it isn't.
Technically GNOME is quite a messy architecture with a lot of unfinished, half polished and half working stuff inside. Given here are examples like broken gnome-vfs, half implementations of things (GStreamer still half implemented into GNOME (if you can call it an implementation at all)) rapid changes of things that make it hard for developers to catch up and a never ending bughunting. While it is questionable if some stuff can simply be fixed with patches while it's more required to publicly talk about the Framework itself.
Sure GNOME will become better but the time developers spent fixing all the stuff is the time that speaks for KDE to really improve it with needed features. We here on GNOME are only walking in the circle but don't have a real progress in true usability (not that farce people talk to one person and then to the next). Real usability here is using the features provided by the architecture that is when I as scientists want to do UML stuff that I seriously find an application written for that framework that can do it. When I eye over to the KDE architecture then as strange it sounds I do find more of these needed tools than I can find on GNOME. This can be continued in many areas where I find more scientific Software to do my work and Software that works reliable and not crash or misbehave or behave unexpected.
Comparing Nautilus with Konqueror is pure nonsense, comparing GNOME with KDE is even bigger nonsense. If we get a team of developers on a Table and discuss all the crap we find between KDE and GNOME then I can tell from own experience that the answer is clearly that GNOME will fail horrible here.
We still have many issues on GNOME which are Framework related. We now got the new Fileselector but yet they still act differently in each app. Some still have the old Fileselector, some the new Fileselector, some appearance of new Fileselectors are differently than in other apps that use the new Fileselector code and so on. When people talk about polish and consistency, then I like to ask what kind of consistency and polish is this ? We still have a couple of different ways to open Window in GNOME.
- GTK-Application-Window,
- BonoboUI Window,
- GnomeUI Window,
Then a lot of stuff inside GNOME are hardcoded UI's, some are using *.glade files (not to mention that GLADE the interface buil
If they worked on KDE we by now would have a far better Desktop..
Would we? It seems to me that a lot of effort on KDE is wasted by continually reinventing the wheel, or just wasted with downright complete rubbish which shouldn't be there in the first place.
Exhibit A: KPaint. What the hell were the KDE release team even thinking? It doesn't work. What is doing in KDE?
Exhibit B: Kview & Kuickshow. KDE2 had KView, which worked, had a nice interface and was very useful. Now we have Kuickshow which is klunky, over engineered and less useful than KView. It takes a lot longer to load, too. Why?
Exhibit C: KBiff. KBiff was damn useful when I was running KDE1 all those years ago. Where is it now? Oh, it died a long time ago with the change to Qt 2.x Droping features like that is just bad.
Maybe if the KDE guys would spend some more time and actually invest themselves in less duplication and wasted effort instead of worrying about whatever GNOME are doing, wKDE would be a far better Desktop?
Java and C#/.NET are great tools for coding high-level applications. Development is a lot easier, since you don't have to spend hours looking for those small memory leaks. It's a few times faster, hence RAD: Rapid Application Development. (Mikael Hallendal described how his RSS/RDF-reader BLAM! was ready in 1 week.) Arguably, it's better maintainable.
Indeed, there's a performance price to pay.
There are already a few small GNOME-based applications written in C#: RSS/RDF reader BLAM!, WoodPusher chess game, Muine music player, ...
At some point, GNOME will have to decide if such applications can be part of GNOME, and I agree that GNOME should choose a high-level language and environment as their default high-level language and environment. That doesn't mean GNOME should drop C.
Ok, first of all this is not a troll.
>"Do not integrate, do not unify, be free."
If I have Windows, I download a Windows binary and USE it (ok, I might have to choose the Windows version, but that's all).
If I have a Mac, I download a Mac binary and USE it (ok, I might have to choose the MacOS version, but that's all).
If I have a Linux or BSD distro, what do I need to do? Why are the end-users asked to know what their OS is? What the hell is a dependency? Why should I have to know how to compile (or even know what "compile" is)? Why can't something for Mandrake/GTK work on Slackware/Gnome?
While I agree that choices are good, this is what is slowing down Linux development (too many options to support) and is also what confuses the normal end-user (can't even *choose* what to download, I won't even get into installing the damn things).
Stop thinking as programmers and stop saying immature things like "the user should understand his PC, know about KDE/Gnome, X, insert_random_lib_name_and_version_here", because last time I checked, 99.9999% of car drivers out there only know how to fill their gas and windshield cleaner tanks. But they all still own and use their cars.
We have people who can barely use Windows or MacOSX, they would have no chance in hell with Linux.
If you take this as a flame or a troll, then you're indeed the proof that you don't have the slightess clue about what end-users want/need/understand.
Microsoft and Apple understand this YEARS ago (even if Microsoft still don't know how to make decent software at decent prices).
...to gnome being a project that you could code for in any language?
I think this is going to bite them in the ass. Instead of putting all of their eggs in one basket, I think a better focus would be to improve all of the bindings to higher level languages. I'd REALLY like to be able to code for gnome in Lisp, but the bindings just aren't there.
Mono and KDE seem to have the right idea. They're making what looks like a first class development platform. With the limited time I have to code, if the development platform is working against me, I'm going to drop it. Gnome's development tools are awful. Kdevelop is much better, and Mono looks promising.
And wasn't this the whole point of basing Gnome on Corba in the first place, so that you could later incorporate objects from other languages? It seems to me like they haven't thought this through at all. Use of Corba seems to be extremely limited...probably because it's a pain in the ass to use and the project has done little to make it easier for developers.
If I could suggest a direction, I'd say concentrate on Gnome the development platform, instead of Gnome the Environment that Launches Mozilla and OpenOffice. The developers they'd attract will then take care of the rest. Solve the language interoperability problem, make sure bindings are up to date, and the apps will follow.
If moderation could change anything, it would be illegal.
The whole discussion is not actually about programming languages. It's about how you get people to agree on a coding platform that allows component A to talk to component B when the components are in different products.
Do not integrate, do not unify, be free.
Be free to have to specify each individual UI preference for every new app I use, you mean?
Be free to have to spend hours trying to get my new word processor to talk to my printer?
You're kind of missing the point re: integration, I think.
A million times YES.
/certain problem and solution domains/. However it is not the best tool for everything (nothing is). One of the things it is probably NOT the best tool for is the vast wilderness of user-level applications, where the "value" is not in unrolling a loop with duff's device to gain 5% performance, but instead, /integrating/ components together to create something seamless for the end user. Sure you /can/ do this with C. But there is tremendous productivity gains in a high level language (and platform) for which you don't have to resolve all the same damn problems that we have been solving for decades: memory allocation, which libraries to use, consistent user interface, abstracted IO, etc. Of course my saying this doesn't make it so. But there is a big fucking wave of high level component-oriented platform coming - Java came over but for various reasons the crowd with their little hammers didn't like it (mostly because it was a rather large and foamy alternative). The CLR (.NET) alternative however is much more attractive because it can integrate so well with existing C and C++ code. And that allows you to stay 31337 and "keep it real". Good for you. Anyway, this wave is absolutely going to crush you if you don't get on it fast. It will no longer be funny when Microsoft and other proprietary vendors start reaping productivity rewards /despite/ their supposed inferior design methodology.
Unix and C put a zillion little hammers into open source developers hands. This tool was FAST and UBIQUITOUS. Of course that was in the 60s and 70s where unarguably the software and computing landscape was wildly different. Now we have legions of happy go lucky open source developers running around solving every problem with their cute little hammer. They are painting (GUIs) with their hammer. They are reading and writing (XML) with their hammer. They are describing high level concepts with their hammer (ok, the analogy sort of breaks here). "The Hammer" has been a damn fine tool. It still is a damn fine tool for
So don't listen to the din of hammer bearing legions. Open Source needs a damn consistent platform to compete. Pick something. Java, Mono, Parrot... There are several alternatives. (I'm a Java developer, but CLR presents obvious benefits for integration). I think Miguel has his head on right here.
It's 10 PM. Do you know if you're un-American?
I'd be curious to know why the auther thinks Python isn't a good language for writting large desktop apps.
.NET.
Seems he's pretty quick to rule out every language except for Java and
This is all so bizarre. Now, several years after Microsoft started promoting C#/.net as the way to write new Windows applications, Linux desktop developers are getting into a debate about whether to switch to C#. Why? What's the real win here? C# is a good language, but it is a far cry from Python, for example. Little, me-too babysteps is not the way to approach this. You need to be bold. Choose something with big wins and big advantages.
Note #1: I am not a Python zealot. I have some criticisms of that language, but I'll still admit that it's a huge win over C#. Huge. Period. For starters, just being able to interactively test can double your productivity.
Note #2: There will be the usual claims about performance and how you really should write everything in raw machine code, blah, blah, blah. The first rule of engineering is make it work. The second rule is make it reliable. Then you worry about making it fast. There are many options for speeding up Python, the simplest of which is simply profiling and restructuring the code. After that you have specializing compilers like Psyco, and as a distant third you have C extensions.
>Sure- having a ton of choices is great for development and customization, but for Joe User it is hell to have to learn so much crap to get things working.
I do agree with that, but I will even go further and say that since there's so much crap to learn in the first place, Joe User won't even *TRY* to get into Linux because of that.
Ever since I started to work in computers years back java been around as the great solution. First it would change the web. Remember all those applets? Gone. Then it would change web pages on the server. Well that is still hanging around but I see more perl/asp/php then java.
It was supposed to be cross platform. Well I use the azureus bittorrent client and it is indeed cross platform. It is also a bit of a resource hog.
And that really is my problem. While intrestting in many ways java has always left me with the impression that its insides are a mess or the people who code for it are on 2gig memory machines.
Lean and efficient are words I look for in my desktop. Java would not be the first language I would think off.
For years people been predicting the death of C and it hasn't happened yet. Could this be a clue? That perhaps all the pretenders are just that? Pretenders without any hope of ever coming close to the true king of programming languages?
If this guy really wants a mono or java desktop then let him fork gnome and code it his way. Prove that java/mono is the better way.
Surely that is the opensource way? He got an itch, let him scratch it.
As an aside, anyone know how much of suns java desktop is actually written in java?
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
If Sun were to release the Java (spec.) on an Open Source compatible license then we would be laughing. We wouldn't even need an implementation as there is one: blackdown.
----
Now, several years after Microsoft started promoting C#/.net as the way to write new Windows applications, Linux desktop developers are getting into a debate about whether to switch to C#.
H HH HHHHHHHHH!
AAAAAAAAAAAAAUUUUUUUUUUUUUUUUGGGGGGGGGGGGGGGGHH
What is *wrong* with you people?
GNOME is not "switching" to C#. Linux is not "switching" to C#. KDE is not "switching" to C#. the FSF is not "switching" to C#. Miguel de Izca is likely to produce his next app in C#. Much like the other eight million languages on Linux (including Java, rep, perl, ruby, and God knows what), C# now has Linux support. It also happens to have GTK/GNOME bindings, like a whole hell of a lot of other existing languages out there. That's *it*. Jesus.
C# is a good language, but it is a far cry from Python, for example.
Great. Use Python. There are GNOME and GTK Python bindings. I suspect KDE has Python bindings. Code in Python to your heart's content. There are a handful of people that would like to use C#, and now they will use C#.
May we never see th
From his website: http://ometer.com/
My full real name found on my official government documents is "Robert Sanford Havoc Pennington." Everyone calls me Havoc, and always has. I didn't make it up. There isn't a cool story about it, my parents are just weird. It is not a nickname. No, I do not wreak havoc, usually. Yes, I have heard any and all jokes you can think of about this.
Letting Havoc Pennington decide what the Linux desktop should look like is like hiring Stevie Wonder for an interior decorator--He may be talented, but there are areas he should just simply stay away from. Far away from. Deciding standards for others, being among them.
Long story short, Pennington simply doesn't get the big picture of what the Linux desktop needs to be. For example he thinks having multiple, competing standards for GUI layout is a good idea. Ding ding ding ding! Hey Havoc, here comes the Oxymoron Train! "multiple standards"?!
Here's a real revolutionary idea...Instead of spending years trying to mimic every aspect of the Windows desktop, we build one of our own, with our own ideas! (*gasp*) !
Also, a couple years ago, I experimented with gnome's corba implementation, Orbit. It was pretty darn lightweight and fast. Since then, Orbit has made so much progress, maybe I should have a look at it again, and see how hard it'd be to add support for that to crosstool, so Corba could be an easy option for people using crosstool-generated toolchains.
If the gnome guys are considering all the new languages, libs and unproven vm technology, maybe they could also do qt bindings while at it. Please, this is not a flame. QT is there. The kde felas have already embraced Gtk. Gnome should do the same.
Any article about linux desktop development should talk about both qt and gtk if it is to be taken seriously.
Good call on bringing up the point about the window managers running on top of a GUI. I never actually knew that...
You've managed to echo my feelings precisely AND teach me some new info about Linux. Thanks for the insight!
"It is dark. You are likely to be eaten by a grue." -- Zork
Man, what you wrote is almost poetic.
The reasons to use Java or .NET/C# are not because they are "trendy".
In either case, you get secure memory management, secure code signing / redistribution, remote objects, clean OOP, and many many things the absence of which causes so many problems/bugs/exploits in C/C++ world.
The question is not if, the question is when. Portions of Windows 2003 server are already in managed code. Longhorn will be 100%. What will Linux have at that time to counter it?
Continous flame wars about which set of bindings to use?
I was impressed by the thoughts expressed in the original article but some slashdotters plainly scare me. Linux has no chance on the desktop and will face the sunset on the server if the move to managed code does not happen.
Unix-style fragmentation won't kill Linux, but the thought fragmentation will.
I think he's correct on point with the XAML components. All you have to do is look at what some big companies do TODAY. ActiveX is used all over the corporate world. DHTML, IE specific JavaScript hacks. MS offers a "new way to make web pages", and when you use it, you get beautiful GUIs that are fully interactive and not browser based. Will these same people use them? HELL YEAH. And what will it do? It will totally knock a Linux/Unix desktop out of hte picture unless we implement these things, or at least implement our own answers to them.
:0 They get a job done, they get people a pay check. We need to compete on the same area.
MS is successful because it makes programs people want... regardless how much the design of those programs suck.
XAML, depending on it's design, gives us a great place to leverage the Unix desktop. Consider (if) it is a generic UI describing XML document... whose to say weither it's rendered using Windows or GTK? At the same time, we would be promoting XAML.
So, we need to decide. Do we implement XAML, or do we make our own better version? I for one think we should at least take a look at XAML, if it sucks, we should make our own.
Why can't the w3c define the schema for such a document?
The original article doesn't even mention the KDE framework.
The KDE project shows that, with the Qt libraries, wise and proper use of C++ can make wonders.
Python is discarted without any discussion. Yet there are Qt and KDE python bindings, which could lead to very effective GUI programming with a very high level language and a clear syntax.
Windows users:
Internet Explorer is obsolete. Please upgrade to Google Chrome or Mozilla Firefox.
Yes, I have heard any and all jokes you can think of about this.
Is he related to Chad Pennington (Jets QB for those that don't know)?
That's one he probrably hasn't heard.
From what I've heard, the architechture of GNOME truly sucks.
Ah. According to Penny Arcade, the CEO of Infineon Systems can't have an orgasm unless he kills a dog -- apparently, Tycho heard it on the Internet somewhere.
May we never see th
My personal opinion is that Mono must never come into the code base. It is a project doomed from the start, and I don't want it polluting the code base.
;-).
My sentiment exactly. If Gnome is going to start stockpiling stuff written in C#, it becomes something you can't rely on always being available (i.e. it's over immediately after MSFT thinks they've been entertained enough). The moment C# is starting to creep in is the time Gnome should be forked. Or at least the applications that are written in C#.
BTW, what does Sun think of C# in Gnome? They are contributing to the project, I would suppose that C# has no place in Java Desktop System
KDE is starting to look more and more appealing every day. This is a sad thing to watch - on the one hand Gnome has great initiatives and innovative people, on the other hand we have people who seem to have missed the cluetrain and can't foresee the impending demise of non-MSFT CLR.
I for one don't want out Linux desktop future to be built on Microsoft-owned land. Look at SCO, you can start litigation and fuel FUD even with less obvious IP claims than Microsoft has for Mono.
Save your wrists today - switch to Dvorak
Developer time is a constant. Over time, it still takes a set number of man hours to implement certain algorithms in a computer language (provided it's still in the same type of language [imperitive, functional, etc]).
Computer time is a flow. Every 18 months, hardware is roughly running twice as quickly.
Arguing that virtual machine based software is inefficient is like arguinig that MPEG layer 2 audio compression is supperior to MPEG layer 3 because it takes less CPU time to decode (or MP3 vs. OGG Vorbis). Maybe that mattered on a DX4 100 Mhz machine that couldn't decode an MP3 in realtime, but it certainly doesn't matter on my XP1700+ where the bottleneck is typically the O of the algorithm, not if it's interpretted (since VMs are as fast, now, as native code in the majority of cases).
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Like a truly good object hierarchy (everything derives from a base class). Or the fact that memory management is automatic, which is a lot more beneficial. I hate how Mozilla is killed by the Linux kernel after I leave it open for a few weeks because of the persistent, slow memory leaks it has. If it were in C# or Java, it'd be very easy to find the problem and correct it.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
ISO standard, Object Oriented, C interfase, programmed GC.
I haven't heard of the Adobes, Macromedias, or Intuits of the world scrambling to rewrite their apps in .NET; what makes HP think that GTKmm or QT isn't good enough? Don't believe the hype dude; the MS marketing machine has been blowing a lot of smoke up a lot of asses.
Yup.
Java/C# are snazzy for:
* Custom application development
* Lightweight distributed and networked systems.
* (Java at least) Cross-platform GUI apps.
* Vertical market software development.
C/C+ are snazzy for:
* Libraries
* Horizontal market applications
Until Microsoft goes out and rewrites MS SQL Server, MSIE, and Microsoft Word in C# (not going to happen, for good reasons), I don't see any reason why there should be any interest in doing the same with the core GNOME apps.
The same goes for Sun and Java. When Sun decides that Java would make a really great language for Open Office and successfully writes an efficient Java-based Office release, then it might be worthwhile considering Java for said use.
Until then, I'd suggest rnning out and actually *using* one of the desktop apps that people have written with Java. Hey...they're slow, RAM-hungry, and annoying to run on systems with different JVMs.
There have been a zillion less efficient languages proposed to replace C (and later C++) over the years. All of them failed to replace C/C++ as a general application programming language. Efficiency matters. The fact that Microsoft is pusshing a high level language and Sun is pushing a high level language (at other people -- notice failure of Wordperfect Java port for an example of why Java/C# are not good choices for horizontal market apps) does not mean that *this* year is the time to move to a high level language. I don't think anyone here wants GNOME or KDE to have a *bigger* RAM footprint, which Java would do.
May we never see th
In my opinion, KDE is better than Gnome, for two reasons. Firstly, KDE is an older product that has had longer to mature. Secondly and more importantly, it is based on QT which is licensed under the GPL whereas GTK+ is licensed under the LGPL.
Sure, I understand that in the early days QT had licensing problems, and for this reason it was absolutely the correct thing for Gnome (and GTK+) to be brought into existence. However those licensing issue were resolved a long time ago when QT was licenced under the GPL.
This leads me to two questions:
1. Given that we have a very good desktop environment written in C++, is it worth the effort porting this (or any other desktop environment) to another language (Jave, C# etc.), given that it has already reached a high level of stability and maturity? Are we not just reinventing the wheel because we can?
2. I've read about proprietary companies preferring GTK+ to QT because it's licenced under the LGPL, which allows it to be linked to proprietary code. Is this really a good thing? Surely for software to be truly free, we need to discourage proprietary code, full stop. I therefore have my doubts about the LGPL and its suitability in the FOSS world. It can never be more than a stopgap measure, and I think it might actually be counterproductive - if anyone has strong views on this I'm willing to listen.
Seriously, these licencing issues really do concern me. I think if we don't get it right now, we are setting ourselves up for failure in the future when some predatory proprietary company manages to get a crackpot judgement in a crackpot court that undermines the GPL (or the LGPL). Microsoft have already succeeded in the Netherlands and Sweden against Lindows.com, and with patents coming to the forefront might get other spurious legal judgements - they are simply shopping around for a court that doesn't really understand the issues. They might be able to do the same with Mono/.NET, and that would be a disaster for the FOSS community if we don't get our choice of licence correct.
43 - For those who require slightly more than the answer to life, the universe and everything.
The social pressure agaist forking a project is significant, and generally beneficial. In this case, however, forking GNOME to try all of the approaches could be exactly the right thing to do.
Consider this: each of these languages has a "cheerleader" who claims it is the most productive, fastest, most secure, etc. Evaluating these claims objectively is extremely difficult.
But, if GNOME were to fork, we would surely see that one of the forks would produce software faster than the others. If we assume that producing software is equivalent to delivering value to the users, then that fork will be delivering value faster than the others. It will win.
This is truly taking an evolutionary approach. Trying out multiple strategies, allowing them to compete, and then--most importantly--killing off the failed competitors is the essence of evolutionary theory.
As an added benefit, it would provide an amazing real-world laboratory to examine the claims of those who back Java, Mono, C#, etc.
(Naturally, this assumes roughly equal distribution of development talent and project management talent across the forks. That may be the least probably outcome.)
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
However, I don't think it's suitable for large projects because it's not statically typed. (BTW, it's "lose", not "loose".)
You can usually run your unit tests in Python in less time than it takes just to compile your Java. So you actually get more checks in less time!
Tests are good, but testing is no substitute for static checking; in any large (or probably even medium-sized) project, you're lucky if you can create a code suite that causes every line of code to be executed even once, and forget about a suite that'll test a non-trivial number of paths through the code. I think the performance is a non-issue.
pychecker can spot many static errors.
Thanks for mentioning pychecker; I didn't know about it before. From reading the feature list, it sounds really helpful and I'll definitely use it for future Python projects. However, static typing gives you all that and more.
There is much less need for ugly work arounds from limitations of the type system, so less errors in the first place.
I'm not familiar with C#, but I agree that the Java typesystem does require ugliness sometimes. Generics reduce that a lot, though. And I still believe that the benefits of static type checking far outweigh the occassional hassles of doing ugly casts.
"I doubt they are using Java and Mono because they are "trendy". If anyone strays more from "trendy" things, it'll be developers. We use what is best for the job, be it C or C#."
If that were true, programmers would be using languages like Smalltalk, and not shying away from Frameworks. A lot of reason developers use not what's best for the job, but inertia of what they know. Just look at the difficulty Apple had when it released Mac OS X, getting "classic" programmers to use Objective-C, and Cocoa.
Quoting from Havoc's blog:
Unfortunately, Havoc says nothing about why he thinks the Parrot will not be the right thing: he merely asserts his opinion. My impression is that Parrot and Perl 6 development are both moving forward satisfactorily and offer the underpinnings needed for major projects. And of course are right in the center of open source development.
So what am I missing? Are there inherent structural flaws in these languages or the Parrot? Or do others share my personal opinion that Perl, Python, and Ruby are mostly out of favor because they aren't 133t enough to separate programmers from lusers?
(I thought this thread was sort of cold but perhaps throwing this gasoline on it will create some heat and maybe even some light.)
> Coding efficiency. High-level languages are
> simply technically superior to C/C++ for most > uses, desktop applications in particular.
Those who claim that do not know enough C++.
Using Boost or Loki smartpointers, C# or Java lose all the advantages they have over C++ in terms of productivity.
And properly usage of STL (including algorithms)
and templatization make C++ the most productive
language over there for non trivial projects.
One must not look at the effort needed to write
a program that do some trivial work multiply with 1000 and decide how much it take for a big project.
Take your time and learn more C++ before decide to use C# or Java.
how's it going oGalaxy...... your really should make a book about this....
I may be in the stone ages but I've been playing with Perl's Tk library a bit lately. Every thing goes together like a dream. And at least for Linux to Windows, portability is trivial. My current project works on bith with no changes. I'll probably make an appearence change. But thats trivial.
At work, I have a P4 at 2.4 ghz, 512 mb RAM, 1024 mb swap partition for Linux, GeForce 4 Ti 4200, Original NVidia drivers for Linux, Mandrake 10 C.Edition, Sun JDK 1.4.2_03 for Linux, Windows 2000, Sun JDK 1.4.2_03 for Windows.
I found that native KDE apps render _much_ slower than ProSyst's Java IDE - mBedded Builder, written entirely in Java, using AWT (PGUI - ProsystGUI on top of AWT). Also, Eclipse seemed slower (with its native GUI), not to mention KDevelop.
On Windows 2000, however, the mBB is still visually slow, espacially when compared to native apps and Eclipse.
So, I think, for Linux/X at least, Java _is_ fast enough already!
If you combine that with a plugin-in system like OSGI (IBM will be using OSGI in the next generation of Eclipse, I heard rumors) that allows for dynamic updates of portions of the code (bundles), you get the idea.
Go, JIT Languages!
BTW, JIT Langs are faster at times - the code is compiled at runtime and can thus be optimized for whatever hardware you are using - and complied code is discarded at exit (or saved for later runs, I heard rumors that JDK 1.5 will be doing exactly that)
If the JVM and the major libs are loaded only at startup (hint : OSGI), then Java becomes good for the desktop - almost zero startup time, fluent painting (like a crazy 100+ frames per sec game), etc - slick and cool.
Just make sure you deal with the ghasty mem leaks of AWT first - sometimes the GC seems unable to clean AWT objects once they are created, because AWT keeps them in some threads for who knows what.
Yes, Linux made the Unix-oriented evnvironment available to more people, but piggybacking on a current and widely-used platform != revival.
Linux made Unix viable again. Unix on fast and cheap commodity hardware. Open, unified Unix, instead of mish mash of incompatible proprietary variants.
Without Linux (and BSD's, which might be where Linux is now if Linux didn't exist), Microsoft would have collected the jackpot already. And rightly so, probably - proprietary Unices sucks, and if it's something I can't run on my home machine, I don't want to deal with it.
Also, Linux has create a Future for Unix family. Without Linux, there would be no perception of future, and every sensible manager would jump out of the sinking ship ASAP. If Windows was the "obvious way of the future", everybody would be running it already.
Save your wrists today - switch to Dvorak
Well, at least you think so... This was modded down as redundant. I wish people would at least post a response if they are going to mod a post. Slashdot should make that a requirement in fact.
Nick Powers
Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
CLR on the surface may be more "seemless", but a lot of it depends on decorating C# function prototypes of attribute information, which is documented in Microsoft circular-hyper-link fashion (each doc entry is "go link to here" which tells you "go link to there" and you end up where you started without learning anything). If the attributes don't do what you want you can go nuts.
Java JNI on the surface is a lot more wordy and clunky, but you program the interface by writing code rather than depend on some square-bracket attributes to do the automagic thing. There is a lot you have to read to get it to work, but SUN has a document that explains the whole thing with chapter, paragraph, and verse rather than hyper link Hell. Yeah, it would be nice if you didn't have to write some much code, especially on the C/C++ side, but it does the job, and since you are writing code to control it, it seems it is more programmable.
I have taken to liking the JNI that much (I am more a Delphi/C++ programmer and am just starting on Java) that I was thinking of migrating apps salami style (one cut at a time) by implementing all the non-GUI parts in Java and calling those parts from a slimmed-down native GUI part -- I might port the native GUI part to different OS's or might eventually port that to Java when I get a handle on Java GUI stuff.
But guess what, I would be taking a functioning Windows app and turn it into something that requires the JVM, and it would have been nicer in an Alternate Universe where the JVM came with Windows (heck, it would be nice if the CLR came with Windows instead of requiring an install).
Anyway, people think of program written in Java calling some low level GUI natives (like with SWT). My thinking is to write the GUI parts native but put the "business logic" in Java -- the JNI goes in both directions and lets you do that. Of course SUN's idea is Java Everywhere for Every Stupid Last Thing, while MS's idea is Java, huh?
Java-GTK is apparently also quite a mature set of bindings, though I haven't used them so I can't say for sure.
IBM's SWT is mature and has native UI bindings for an abundance of platforms, GTK2 included. That's a good place to start.
As I see it, the main benefit of Mono would be the ability to run MS apps on Linux in the future.
Unable to read configuration file '/bigassraid/htdig//conf/14229.conf'
Geocrawler error message.
Does the mono/C# model comply with the Corba CCM module ... or is it something all together for component based development ... I am personally worried that adopting mono's component model could force us away from more friendly component model standards like those from the OMG ...
... if there is indeed a conflict here ?
Could choosing mono couple development tools and methodoligies away from those of microsof
Rant:
Reading The Fine Article(R), I found it unsettling that people are seeing XAML as a potential substitute for both HTML and programming, and haven't yet articulated an answer, even if a derisive one.
If it was the first time I took a real look about XAML, from the first few paragraphs of MS' introduction to it, it is clear it amounts to storing UI and other application data (not organisational data used by the application, but data used to build the application itself) in XML, that is to say, hierarchically.
Just as every time one talks about XML and data in the same breath, or OO and data, this would be a throwback to 35 years ago before Codd had defined and published the Relational Model for database management.
This is specially worrying because we see many free software advocates, and most of new hackers, married to OO instead of fundamentally saner functional programming, even if it is a marriage of convenience just to get things like garbage collection that are included in current popular OO platforms; and it is specially disappointing given that Gnome now is giving thought to a saner if partial answer, namely Gnome Storage.
Marrying Gnome Storage with some functional programming over .Net or Java perhaps could by us some sanity back, but I feel it like a kludge unlikely to produce significantly better.
Going Java or .Net may be an intelligent way of trailing MS. But to really leapfrog it where now they have a huge advantage -- and that's not now the desktop as in an user environment or office automation apps or games, but custom software development for businesses with Oracle Developer, PowerBuilder, VB, Delphi and the like --, we have to present something fundamentally and conceptually better.
Something like a functional flavor of Alphora Dataphor integrated at the systems level since the installer could be the answer perhaps; while this would be a tall order for the near future, having it in sight for, say, twenty years in the future while implementing it step by step -- for example, first the D-compliant RDBMS interfaces, then an upwards- and downwards-scalable RDBMS engine with a quasi-SQL interface for backwards compatibility, then integration in the OS, then POSIX interoperability --, would give us the initiative and reduce MS to yet another platform direction change in the future, while we'd be able to keep our perfect POSIX backwards compatibility.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
Language choices can be good, I suppose, until you get into psuedo-religious arguments about which is better, which is superior, which is more pure for your platform, etc.
.NET programmers.
"nonmaskable" makes a great point about developer productivity with Java/C#; the only thing he leaves out is that if Mono really takes off on linux then you'll have a considerable number of very talented VB.NET programmers being able to cross over to linux for the first time as well. Add to this mix a good RAD tool or the ability to target Mono from VisualStudio.NET and now desktop linux is suddenly a viable option for every small business who relies on some sort of customized app produced by their in-house
Linux won't be broadly accepted on the desktop until you have the apps to go on it; you won't have the apps until you can quickly and easily build or move all of the line-of-business applications built with "toy languages" like VB/VB.NET to linux. Said apps may not be pretty, elegant, or even efficient, but they get the job done and that is what the suits & the MBA's upstairs want to see: results in as little time as possible.
Would someone please explain to me why Sun Java VM can not be included in a Linux distro? Is because you can't modify it for commercial use? Then what is wrong with putting it in as it is? Why exactly do we need an OSS version of Java if the JCP is in charge of changes in Java? I think that its good that there is only one variation of the Java VM/language. Isn't that what we want in a platform, stability?
Free speech is getting expensive...
Yes, I've seen it. I've thought of taking the Squeak VM and getting it to run with Darwin(1). Combine that with the work done on Evas, X, GNUStep, and things could get interesting. Objects, Frameworks and Language Bindings are the way to go. Apple lead the way with things like Cocoa, we should follow.
(1) Imagine doing virtually all one's programming this way. Gui to drivers, and software installation with the ease of a click (people who've installed software on Sqeak know what I'm talking about). Interface Builder, and Project Builder for Linux, Woo, Hoo.
OSX pretty much uses that paradigm, only with Objective-C (which was based in part on smalltalk) as the language. I can vouch for the fact that it makes a nice development model.
I'm not convinced the patents thing is really valid. If Microsoft have patents on their class libs I think it massively unlikely Sun don't have patents on theirs.
...I certainly cannot see XAML taking over HTML anytime this century, there's simply too much investment in HTML..
Sun is also a hardware company and not strictly an OS/apps company. Plus, Sun is not as f-ed up as M$ when it comes to wanting to own every piece of technology they come in contact with. (Also, see last paragraph in this post.)
I think Havoc is off base with the XAML comments. XAML will only be usable with the arrival of Longhorn which is in, what, 2008 now?
Never underestimate an M$ technology. And I keep thinking of how many projects I've worked on where they code to IE and its standards complaint HTML that does not render in anything else. If you think that HTML is in the clear for now and the near future, you're mistaken. I think it's even a struggle now to keep people from just coding to IE. In the business world, where 99% of all the desktops run Windoze, any HTML project will probably only code to IE. For them, there's no reason not to.
I think Havoc is dead on the money with this one. XAML is a threat to HTML and it's needs to be watched and one-upped by the free/open community out there - he's bringing up the right arguments. If not, then there will be little reason for people to even use HTML at all. And like I said, if there's no reason for people to develop to an HTML standard, then there will be no reason to develop to HTML at all.
As for Mono; I also agree with Havoc here in that free alternative technologies should be developed outside M$ and not with it. Until M$ want's to be a regular member of the technology community and not the sole owner of everything, then they can't be trusted. And this is not just a rant but an opinion based on their historical behavior.
While, again, I think the Mono and dotGnu guys are doing a good job, I think their efforts are misplaced. Maybe at a minimum, provide a c# compiler like gcj. But all this Winforms and the like and doing Linux client apps in c# is going to be more of a problem than a solution.
As far as using Java to do app? Hey, at least Sun has an interest in seeing Linux succeed; read: Sun will, like IBM, make more money on Linux at some point than Solaris. M$, on the other hand with their current business model, sees NO benefits from Linux succeeding. So, again, I agree with Havoc.
I have to ask (because I don't know), are their insurmountable technical barriers that would prevent compiling both Java and C# to the same bytecode?
The author calls for an open Java VM (which is a very good call IMHO), the natural assumption is that the runtime would execute Java bytecode, as it should. Is there a reason why C# couldn't be compiled to Java bytecode, and if so, then could extensions be added to accomodate non-Java languages?
I agree that Linux needs a solid front, but many of the issues raised speak to factions that want their technology to reign supreme on Linux. Why not have a runtime that runs all languages and let the coders decide which to use?
Aside, excellent insight into the purpose of XAML. You've got to realize that Internet Explorer Longhorn Edition is going to fully support all of the vector-based rendering APIs available to XAML's GDI/GDI+ predecessor. This means a full-featured GUI that can use a rich set of Microsoft's controls will be able to execute from inside the web browser using the same code you'd write for a local application. This is a huge deal, and whether it be XUL or something else entirely, Linux needs a equivalent alternative.
The trend in GNOME/KDE has long been towards integrating SW rather than making independent apllications. To me this is a distinct weakness, and one that makes me consider abandoning those desktops altogether.
To me useability means flexibility, which implies configurability and openness. And openness in particular means proper, exhaustive documentation - low level as well as intermediate and high level documentation. Which is more or less non-existent in current versions of Linux desktops and applications.
Another prerequisite for flexibility is modularity - not Windows style modularity, but a style of coding where modules are predominantly simple and have simple interfaces. Compare the mish-mash that is Windows, with all it's knitted spaghetti of interconnectedness, to UNIX in the old days (and, thank God, still today). The elegant simplicity of filter programs or the way inetd works illustrate what I'm talking about. This is what we need - somthing that 'as simple as possible, but no simpler', to misappropriate a well known quote.
Why not keep the window manager simple - and continue with C, and embed a scripting layer (like python) that allows you to extend it to create your applications? Python has an XML parser, and other things besides that you wouldn't need to implement inside of the window management engine.
:(
This doesn't seem like brain surgery to me...but then again, I am perfectly happy running Zope and kicking out web apps - or throwing together a python/Tk app if I need a gui for something on my desktop. I know...I am in the minority.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
C/C++ is a fine language to program in. There doesn't need to be change in that department. What really needs to change is the way people can interact with widgets. I'm waiting for the day that I can drag any widget from one application to another.
Example: Dragging tabs from Firefox to OpenOffice in oder to have tabbed documents. Or dragging spellcheck from OpenOffice into Firefox.
End users should be able to customize the applications to there needs. Programmers shouldn't have to choose for them.
yea... I bet the girls (read hookers) will be hot there! whoopty!
But your machine is seriously misconfigured.
Examples in question:
1. my personal machine. AthlonXP 1800+ 1GiB RAM, onboard SavagePro video.
I use KDE 3.2.1 (Debian Sid: kernel 2.6.4-rc2-love1) and I have an entire disk (20MiB) with XP installed. KDE feels 4 to 10 times faster than XP Pro. To open a window. To get the Start/K menu. to jump/open a combobox. my Kde desktop is just snappy. the XP desktop is just... not as snappy. My only disadvantage: no 3d accel. Quake is not as fast. hmpf.
2. my wife's machine. Duron 450. 300MiB (approx) RAM. SiS 630.
XP is not an option. *Dog*-slow. like 10-20 seconds to open the start menu. I installed it, she made me remove it ASAP. KDE is quite OK. the sensation of speed is the same as in Win98. 3d accel works (not very well, but does not work very well in 98 either)
conclusion: your X is misconfigured, your kernel has a problem, or something like this.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
"The grandparent will have to wait until software component [wikipedia.org]-oriented programming becomes popular. After all, why reinvent the (exact same) wheel over and over again if you can provide a stock software component that does the trick? It is like the electronic component revolution really -- you don't really have to worry about fabricating resistors or transistors or LEDs anymore -- just worry about how to put them together (so that it works). From there, it is just solder and dike."
Well as any EE will tell you, just having a box of parts will not make you an engineer. Having a box of software parts will make the job of people trained in programming easier, but it will not make someone who's not trained in programming, at best a good programmer, at worst a programmer period. Remember part of the appeal of Linux was that the people were competent, and not under performance pressure to code. That's why we have a world class kernel, not because it's done in "C".
Here's my philosophy: the computer is here to do my work not the other way around. When I write a program I want to expend my effort only on explaining how it should work and not worrying about things like memory allocation.
Right.
So do it in java so you have less work.
But... the person who is going to use it will have a bad time.
I thought the program was supposed to HELP THE USER AND NOT THE PROGRAMER.
Now you know how many people worked on the new file selector and the spatial Nautilus.
I think before the OSS community can make a decision about -how- to code a competitive Linux desktop, it needs to decide -why- to code a competitive Linux desktop. The virtues of the system clearly come from their various kinds of openness and freedom, and we need to decide which are priorities. For example, do we want to produce:
-(free-ness)A free-as-in-beer system of comparable usability and functionality to commercial systems, that levels the playing field for developing countries, small businesses, or other entities without loads of cash to spend on commercial software;
-(Freedom)A free-as-in-speech system that empowers its users with useful technology, all of which they may apply to any non-exploitative purpose they like, without subjecting them to the whims and legal departments of the corporations who own it, and which therefore poses a significant threat to any single party which might try to restrict the way people can use their own computers and the software on it;
-(Openness)A system with an open architecture, where the kernel, file system, device drivers, window manager, desktop system, file browser, print manager, etc. are all decoupled and may be substituted or can even co-exist with any number of alternatives which might suit the user's needs more precisely;
-(Technical merit) A system that is guided by technical merit above any other purpose, that in its design and implementation represents the best effort of an entire meritocratic community beholden more to engineering principles than business strategies.
These are distinct but non-exclusive goals, each of which I see supported in the OSS community. I'm not convinced that we can effectively pursue all of these at once and hope to make significant achievements toward any of them on a competitive timeframe. Because of the forking problem, an uncoordinated step forward is also a step back. Perhaps one distribution will be a landmark of usability, but to achieve that goal its designers may have compromised on extensibility and designed it very specifically for particular implementations of assorted features, or may have used non-Free software. The accomplishments of this distro would liekly be useless to an ideal system which would meet all of the above goals- at the least, applying its improvements would require duplicated effort or extra work (opening up the architecture, developing and swapping in a Free alternative to the non-Free software).
Forking is always going to be an issue where there is complete freedom, and that's fine, but then the disparate goals of the system need to be prioritized, or else a significant strategy should be developed for how they'll be pursued concurrently.
I think Havoc's post states that C/C++ is proving an inadequate solution for pursuing (Technical merit) in a way that satisfies requirements for simultaneous (Openness) and high enough usability to make (free-ness) a significant advantage over commercial alternatives. The issue, though, is that the best alternatives compromise the goal of (Freedom).
Why have only 1 way? Apple provides APIs that can be used for writing programs in Java, objective-c (blech), C++, etc.
However, to get good portability and the largest coder base, it should probably support mono and Java (maybe using SWT).
In this house we obey the laws of Thermodynamics!
What you're going to see more of is an Object Oriented base with a Scripting Language on top. Remember the Amiga discussion yesterday and ARexx?
Common joes were using it to do some impressive things. Seems what's old is new again.
One of the problems with XUL is the installation of the applications (size of installation packages and the work involved), not neccessarily the XUL as language itself.
.NET - not that it is theoretically better, but deploying applications developed on that platform will have in time less and less complications (as .NET will be in more and more machines preinstalled) than for example java.
Microsoft XAML will have this problems resolved: the language support will be available in any Windows Longhorn (or whatever they will call it) machine without complex installation. It will be integrated with C#, applications will load fast, etc, etc.
This is the "integration" that MS often mentions in PR materials. This is important advantage of
It is often a problem with "better" technologies and languages than MS's that they are in part better, but they fail to make all parts and situations of their usage easier.
Exhibit D: I haven't tried any other program in KDE to see if they might be better than the old programs.
Sorry, the problem *is* with Gnome/GTK. It is *noticably* slower than other toolkits/ UIs/ libraries which don't seem to have a problem with flickering.
Now, I don't know where the performance problems are *within* the glib/gtk/gnome stack, but that *is* where they are.
Deleted
As I see it, the main benefit of Mono would be the ability to run MS apps on Linux in the future.
.Net under Windows will really run on Linux...
Except that they are not poerting things like windows.forms, so just about nothing written for
Mono makes a great tool for migrating Linux programmers over to Windows though.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Developing software for Linux with .NET does NOT necessarily make Microsoft a winner. If it does, where's your reasoning?
Avoiding Windows Forms is your first step to ensuring Microsoft is not a winner. Look into wx.NET (however incomplete it may be, it looks promising).
Yes it's their tech, yes they're evil, no it's not the death knell for Linux.
I hate these step things but it's the best way in this case to explain the progression:
1) Get lots of Linux programmers using C#
2) Linux programmers find Windows Forms is just easier to use at the moment
3) Linux programmers are now Windows Programmers, waiting for a good port of Windows Forms to Linux
And that's a path that doesn't need the patent scenario others have brought up to occur.
As the old saying goes, never buy bread from the devil no matter how tasty - for there is always something wrong with the wheat.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I still think that much UI code do need to be programmed in a performance-conscious way. Many users have got rather slow machines, and we constantly hear cries about "THIS IS SO SLOW!", almost as often as the number-cruching scientists. Of course, for in-house work/rapid prototyping work which are used only by a few people on dedicated machines, it may not be worth the effort, but for programs ready to be used by the millions, making it 10% faster can be as valuable as making LAPACK 10% faster.
Also, C isn't that bad. Of course you need to keep track of all these memory, and I don't deny that Java/Python do make me more comfortable, I have to say that typing "g_malloc()" etc. doesn't take much thought and allows my brain to relax a bit while my hands do the mechanical job (by contrast, it does drain brain cells when trying to write Java code that don't allocate three times as much memory as actually needed or write Ocaml code that are as functional as possible. Debugging mixed-language code is much harder --- and what about your favorite language binding don't work perfectly?). Debugging memory problems can be a bit hairy, but with modern tools it is much more tolerable, and anyway subtle algorithmic bugs can also be very hard to track down. As for threading problem, well if you want to do threading and don't want to go purely functional, you pretty much have to cope with it no matter what language you use.
Disclaimer: I think I know about more computer languages than most, and I do use high-level languages in many tasks and enjoy their benefits. I just think the anti-C crowd has gone a bit too far.
I just had an epiphany in the form of a question to ask the interested SlashDot community...
Does anyone know if any former NeoDesk programmers and enthusiasts (from the Atari ST era) are presently working on any of the Linux desktop projects?
If not, that would be a shame since that desktop manager was pretty polished for its era...
"Right now, somewhere in this world, Scott Baio is plowing a woman he doesn't love," - Peter Griffin, *Family Guy*
Wow, you know you live in a serious geek area when Party number 2 is about 3 blocks from where you live.
I wonder how much I would have to be paid to .NET to the Linux community?
publicly promote
Bavarian Purity Law of Rice Krispie Squares: Rice Krispies, Marshmallows, Butter, Vanilla.
Ah yes, the never ending quest for new and better ways to bog down the Linux desktop... this time with a new load of resident interpreters. But I guess this shouldn't be a surprise... bloat is well on it's way to becoming a Linux standard.
New lanaguages and concepts are cool and help Linux to grow. New users do too. A lot of people try Linux on older hardware where they've been told it's supposed to work the best. Then it's "welcome to the modern distro" where new installs are frequently in swap before the default Gnome or KDE desktop finishes booting. Watch enthusiasm turn to grief as the new user clicks on OpenOffice or Mozilla... and waits and waits and waits on the same machine that previously ran Win95, IE and MS office just fine.
It would be nice if Linux had the clout to inspire people to upgrade their hardware like Microsoft does with every new version... but we don't. If we want carve out a beachhead for Linux on the desktop, we'll to make it run well out of the box on the older hardware that people are willing to try it on.
A group of us recently talked a local school into recycling some of their old P-III, 128 mb systems to Linux instead of scrapping them. It took a LOT of effort to unravel the bloat, provide a nice desktop and get the boxes to run Mozilla and OpenOffice without swapping. Requiring any kind of resident interpreter to support the basic desktop would have made this success story impossible.
Techie trends and toys are great. But if desktop developers don't factor in the end user experience, they'll be creating a lot of code that nobody will have the time or patience to want.
Please, guys... use efficient compiled languages for basic operating system components!
Check it out, right here!
Is ease of development really holding back Gnome?
The underlying assumption of the blog seems to be that you need to write apps in Java or C#/Mono to compete with Microsoft on the desktop in the future...
This is just is not true - look at OS X, most of Apple's apps are written in Obj-C which is just C with a few OO extensions.
Most developers like to think about low-level technologies but in the end it's usability and what apps are available (not what they're written in) that really count.
"There are currently 17 people partying in 8 different parties"
hmm 2.125 people per party... higher turnout than i expected
I feel the same way. Four years ago, I began playing around with Linux because it was FREE and OPEN. I quickly gravitated to Gnome over KDE because it was MODULAR and LIGHTWEIGHT, not to mention UNENCUMBERED.
I've noticed that in recent threads (since Miguel's pronouncement last week) NOBODY has answered your question. It's all smoke and mirrors - FUD and excuses - with a little RMS bashing sprinkled in. This includes, apparently, the comments from some of Gnome's core developers.
The impression I'm getting is that they either 1) see their long-term goal as creating a mass-market-friendly desktop environment for Linux, without regard to whether it remains FREE or OPEN, 2) don't really have any long-term plan for the codebase, and so don't care whether it all goes down the tubes in another year or two (whenever MS decides to pull their bricks out of the foundation), or 3) they have a plan and a vision, but are making every effort to hide it from the F/OSS community.
I, for one, say "see ya later" to our new backdoor-overlords. After reading the 6 replies to your question posted so far, I am now convinced that it's time to start looking for replacement applications to all my gtk+/gnome favorites.
Or do others share my personal opinion that Perl, Python, and Ruby are mostly out of favor because they aren't 133t enough to separate programmers from lusers?
It appears that Java programmers are considered the VB monkeys of today, so I don't think that's it.
Quite a few only use the languages they are taught at school, and with which they think they can get a job (those that don't have one or are afraid of losing their current job, that is). Therefore they avoid anything "exotic".
OTOH, avoiding Perl makes perfect sense.
Save your wrists today - switch to Dvorak
.../NextStep/Cocoa? it works from Apple. Objective-C already compiles in GCC, and it's less than trivial to use preexisting C/C++ code in Obj-C, making it an easy migration path.
Just raise the taxes on crack.
It turns out most S.W.F client code relies too much on poking around "behind the scenes" way of pinvoke badness and the like that there needs to be a real Win32 implementation behind it.
.NET was so they could cast off the shackles of Win32 backwards-compatability, for good and bad reasons both)
(which is also why Microsoft is backing off of S.W.F themselves; the whole point of them going with
That said, mono is in fact working on a S.W.F implementation in conjunction with Wine.
DNA just wants to be free...
There is relatively little use of languages like Smalltalk because there are relatively few existing components and frameworks available for it. Yes, you could probably rig something up for Smalltalk/Eiffel/Python/wtf else - but this stuff exists today for C# and Java.
.NET Microsoft will dominate. Coding application leveland even system level apps in C without a stable technology and framework isn't going to cut it anymore - the end user and system interoperability requirements are getting too complex. .NET exists and provides rich functionality on all versions of Windows, from cell phones to servers. Java also provides this apparently, but in my opinion Java will lose out because Sun doesn't have complete control over Java on all the platforms, while MS does over .NET. It is important that there is one maintainer of the framework and that the maintainer of the framework also controls the underlying system (the OS). I am sure there are a lot of people who would be outraged at this, but this is the only way to provide a stable platform to develop on currently.
.NET language. This comes from a guy who has been programming professionally with C and C++ for most of his career!
I think that with C# and
C/C++/Python/Eiffel/Ruby/wtf else is dying, already dead to me actually. The only thing that keeps it alive is the need for maintanace and developer inertia. Those programmers will quickly find themselves left behind and unemployable if they are not willing to embrace the new shift toward managed languages and frameworks.
For new application development there are only two real choices currently: Java and a
If you mention the strange slowness, people will blame X. But then you ask around, and "experts" tell you X is just fine, and that it's the poor window managers. Talk to the window manager guys and they blame the library guys. Someone else is always to blame, and if you complain, they blame you for not "sending a patch."
We keep talking about the best programming language for the desktop, but I think that's a bit misleading. What's most important is not the language, per se. What's important is the platform.
Look at what Microsoft is doing. They've created a platform with the CLR/.Net infrastructure. They have language products like C# and VB.Net (and J#, but no one's THAT big of a sucker) that allow the application programmer to choose a language in which THEY will be productive and/or feel comfortable. But guess what? The same resources (GUI / Network / DB / Web / etc.) are available to both. In fact, a VB.Net programmer and a C# programmer can each work on the same project and have everything work right together. Wanna know why? Because the USEFUL tools Microsoft has already written (in fast, native code) are accessed via the CLR and both programmers' code get converted to the same IL. Microsoft has created a unified ABI that all of their managed products use, so that it doesn't matter what language is chosen, you get to use all the neat toys that come with the PLATFORM.
And that's what we need. We need a virtual platform that has the following attributes:
1. Comprehensive and useful framework. It should be tuned to the needs of MODERN applications, i.e. it includes a full-featured GUI, a useful Database interface API, Network APIs, etc. The key is to provide a comprehensive foundation that programmers can use to create their apps so that they only have to write the code that is unique to their problem, not recreate infrastructure useful to many apps.
2. Provide application portability. It should be accessible only to applications via an architecture-independent bytecode system, so desktop applications written for the virtual platform will run unaltered on all compliant IMPLEMENTATIONS of this virtual platform.
With a modern JIT-ing virtual machine along the lines the JVM and CLR, the vast majority of non-platform code will run "fast enough". Making the platform bytecode engine able to pre-compile speed sensitive sections of user bytecode to native code after delivery should satisfy most people's "need for speed".
3. Have native speed. Each implementation of the platform must be written in blazingly fast native code, including the GUI! If the goal is to provide an extremely productive framework that allows developers to make useful programs in less code, it follows that the resulting programs will spend most of their "time" inside of platform code. Thus, it's gotta be FAST!
Let's be honest: Sun made a strategic mistake with writing Swing in Java. While it made it easier to only have to implement a full-blown GUI once, it was so dog-slow that until recently no one really took it seriously and it has acquired a bad reputation. In hindsight, they would have been much better off at this point to have implemented Swing natively on all supported platforms, as they do the core elements of the JRE.
4. Available to all. It must become as ubiquitous as we can make it. That means all OS platforms and that it can't be just for free/Free apps. If you want to maximize productivity for desktop programmers, it needs to become the "de facto" standard. If you're going to learn to program, THIS is what you should be able to learn at college and at your local "Learn to be a Computer Geek" training programs. If possible, implementations should be Open Source. Regardless, the platform itself needs to be protected by a community process or other trustee system to prevent hijacking by commercial interests. The idea is to provide, as a community of individuals and businesses, the infrastructure for us all to be productive.
What everyone is wrestling with is that a platform with all of these features does not yet exist. There are many platform or platform-like frameworks out there that provide some or much of this, but none of them do it all. Worse yet, the two platforms that are the closest to achieving the technical
It would also be nice to have a development environment that allowed any language to drive the UI.
UNO in OpenOffice.org does this and more.
As a serious OOo scripter, I have been able to script OOo in a variety of languages using OOo's UNO API. Furthermore, you can write new components in any implementation language, and your components' interfaces are available immediately to any other implementation language. If you write a service with a set of interfaces, I can call the methods in your interfaces, and I might not even know what language you wrote your service in.
On Windows, OpenOffice.org has a UNO to COM/OLE bridge. So from, for instance, Visual Basic, you can manipulate OpenOffice.org. (Or using any other Windows Automation language.)
It is also completely platform neutral. I have personally had a java program running on one computer controlling OOo on another computer. The two don't even have to be on the same OS.
Having an entire desktop environment scriptable via. UNO would be my dream come true.
I'll see your senator, and I'll raise you two judges.
...right, while KDE recreates the Windows mistakes of taskbars, endless sidebars, too many buttons, a start menu full of redundancies (Control Center, Preferences, System, etc.), "More Programs" subgroups for absolutely no good reason, and a monstrous Control Center.
I think GNOME and KDE both have a long way to go before they can even be considered in the same league as Windows 95. Sorry, it's how I feel.
My god, GNOME has a registry. It's just another way of storing config information. As if KDE doens't store the same kind of info simply in different ways.
You're working on old information. The Clue patch was killed by Colonel Mustard in the Pantry with a candlestick.
Open source excels at providing excellent commodity software. Microsoft claims that Open Source doesn't innovate, and when it comes to providing a well-financed unified vision, they are 100% correct.
However, open source does not need and cannot provide a single managed platform. A de-facto standard might emerge, but only after several generations of managed platform technology and only once managed platforms are already embedded in everyday computing.
In the meantime, keep on using the best tools.
It's called spacial navigation. It's the reason Apple's older versions of Finder were so beloved. You weren't using a "browser" that listed the contents of the directories on your computer. When you opened a folder, it popped open its own window with no toolbar. Users treated it like they were actually looking at the folder itself. The same thing with icons--they considered them not representations of their files but the files themselves. It's a more human and logical way of dealing with interacting with a computer.
Microsoft and Linux desktops have people so weened on "browsers" that people have forgotten the intuitiveness of the previous solutions. I handle the tech support within my company. When I'm helping them look for a file, they are COMPLETELY CONFUSED by "Back" buttons and "Move up" buttons when looking through folders. They don't relate to the concept of a browser looking through their filesystem. To them, when you tell them to double-click "Stuff" on their desktop, they're really opening the Stuff folder. I have yet to see them ever use "Back" or "Up" or even the Address bar, because to them the concepts are bizarre and foreign and unnatural.
Do a search for "spacial navigation" sometime. Arstechnica has an excellent article about it, describing a concept of a redesigned OS X Finder.
It is merely a language to define application UIs without writing mucho code (thus allowing non-coders to be responsible for UI). Your XAML UI description transparently links with code-behind, and everything is stored inside same assembly. A solution in search of a problem if you ask me, programming UI in .NET Web/Windows Forms is already easy enough, but that's the path they've chosen.
That's just a choice of the programmer, though.
Even in C, if you want to you can catch SIGSEGV and silently keep running/attempt some recovery. Free software programmers rightly have some aversion to this, but it's common enough in the commercial world.
What you describe is also a problem for Unix applications that are separated into several processes -- ignore SIGCHLD if something bad happens, and you get the precise same symptoms you describe. I've seen that happen quite a bit in Free Software. If you don't have exceptions, you have to get very religious about checking _every_ return value or you will write bad code.
It's really just about appropriateness of error handling on the part of the programmer. There are some errors that the program absolutely should not try to continue after, and others that don't invalidate the state of the process.
In general exceptions are nicer than crashes because they give you more choices than "UNKNOWN STATE MUST DIE" (SIGSEGV/SIGBUS) and "oh, that didn't work" (an [sadly often unchecked] return value), so it becomes pratical to make things like failure to open a file a slightly "harder" error that can't be silently ignored without explicit effort on the part of the programmer.
Exceptions are also nice in that they can be used to carry descriptive error messages. I wish more programmers took advantage of that.
So, in short, all the problems you describe are due to poor error handling practices on the part of the programmer, and already occur all too frequently in C.
DNA just wants to be free...
This seems like a natural fit for developing desktop applications that don't feel like they're running under a VM, yet they are still garbage collected.
Mono and KDE seem to have the right idea. They're making what looks like a first class development platform. With the limited time I have to code, if the development platform is working against me, I'm going to drop it. Gnome's development tools are awful. Kdevelop is much better, and Mono looks promising.
Uh, there's talk of Gnome 3.0 going almost entirely Mono. If you like Mono, what's the problem with Gnome?
I don't get this fear of change that many Linux users have. We have to keep moving forward. Apple and Microsoft are full-steam ahead and we're stuck still writing little transparency extensions for our X servers and trying to get fonts not to suck.
I guess you forgot that part of the beauty of .NET, and therefore Mono presumably, is that you don't have to code in C# to take advantage of it. Microsoft has documented this for years. Visual Basic .NET, anyone?
You can have all these run-time binaries coded in various different languages, and it doesn't matter to the virtual machine. It couldn't care less.
Even XFree's nvidia drivers are 2d-accelerated... unless you're using vesafb or something...
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
I haven't found a computer running ANY operating system on ANY hardware that runs OpenOffice at an acceptable speed.
Well.. maybe. Or Maybe not. But Definitely not sort of.
I don't think the point is so much "which API", but "which API is going to allow a boatload of new applications developed quickly".
:-)
The points are:
1) C development is SLOW.
2) Scripting languages (ANY of them) are (naturally!) slower than C.
3) It's the applications, stupid
4) Microsoft is patenting everything they can, even in cases where prior art exists (XML, ClearType for examples)
#3 trumps #1. SURE, C programs are less bloated and they'll run faster (unless they are the kind of program that just sits there waiting for input)
The end-user does not care about C. They care about availability of featureful applications that run respectably on THEIR computer.
I don't think people here are REALLY worried about slower aplications becoming popular... by definition slow applications are never accepted.
People are elevating the "performance" issue as a mask for what really troubles them. It's ridiculous to talk about 4 way Xeons and gigs of memory to back up issues with non-C development.
Every few years this SAME argument gets taken up, with a new costume. Yes, Mono/Java/Python are slower than C.
FACT. There's also a dearth of programs that people want.
Logically, if folks want to stick to C they can... they'll just have to work harder to get same feature throughput as the guy who adopts interpreted languages. That's evolution.
I suspect GNOME-Core will be continued in C for a very long time (longer than it matters).
One thing I've noticed is, oftentimes the person with the SLOWEST computer IS the techie. They KNOW how software works, and resent being forced to upgrade because software they like now has higher hardware requirements. They are proud of the PC they built, and question why it's no longer targeted by new code. But then they're not willing to accept that the new code allows more work to be done (or otherwise pick up the slack to offer the same pace development in C).
Free/Open software is a democratic model.. don't like what someone did in Mono in just 8 hours.. spend 40 hours and rewrite it in C! Don't begrudge everyone else to wait until your upgrade is driven by hardware failure.
It's the same thing when everyone moved from DOS to Windows, or Console to X11.
Those technologies offer a standards based means of doing UI's. The web isn't going away, and gradually browsers are getting closer to what we can do on the desktop. There are folks having some luck extending Javascript with Smalltalk features.
There already exist well supported compilers for Javascript-and those could be highly optimized with the right effort.
Javscript is _already_ well supported by Microsoft(they are supporting it as one of the major languages for the Windows Scripting Host). IMHO VBScript is just plain too buggy and ugly.
IMHO languages like Python/Perl/Ruby the best mainstream tools for Server Side Development(though Mozart-Oz has some interesting features). Client side? The browser appears to be the client of the future--and folks doing desktop stuff had best figure out how to deal with that.
Um, what language do you think Mozilla and OO.o are written in?
I am waiting for sfraggle's next comment when he tries to persuade us that we should all be using goto.
Type checking is about more accurately specifying what a function or class does, and affording compile-time guarantees as to what that class will or will-not do.
Linux and especially, needs a better way to quickly code desktop applications. I've tried coding in gnome and couldnt mamange to do it because the environment is complete chaos. How can Linux revolutionize the IDE so that rapid application development is possible? Why not set up a P2P system into the IDE so people reuse code?
People don't exist to serve systems, systems exist to serve people.
If this guy really wants a mono or java desktop then let him fork gnome and code it his way. Prove that java/mono is the better way.
.NET (and therefore Mono, I presume) is that you can use any language you want. Ever heard of VISUAL BASIC .NET? Okay, good.
When did Slashdot adopt this ridiculous all-or-nothing mindset that permeates all discussions now?
There is no "mono or java desktop." We simply have C# for Linux now.
WHAT IS THE BIG FUCKING DEAL? Sorry, but it had to be asked. All these people bitching about absolutely nothing. Another language added to Gnome in the future. Great, add it to the list (C, C++, Python, Java, etc.). Even if Gnome's insides were coded in C#, it wouldn't matter because the nature of
Language bindings are a nice thing, aren't they?
Having lived on K6-2 with redhat 6.2 for years I recently tried Fedora on a P3 600. Optimization notwithstanding the desktop is awfully slow. I'll stick with gnome 1.0 and gtk-1.2 for now, thanks.
That's quite an facile editorial but you can't expect better from normal users. My screenshot looks better than yours. Evolution is better than KMail, GNOME looks more polished than KDE and so on. I do use XChat, Abiword, Rhythmbox.... ...usually you get stuff like these from normal users. And this is ok since you can't blame them for stuff they simply don't know about or don't have a slighest knowledge about.
Such editorials are hard to take serious since they are build up on basicly NO deeper knowledge of the matter. Most people I met so far are full of prejudices and seek for excuses or explaination why they prefer the one over the other while in reality they have no slightest clue on what parameters they compare the things.
If people do like the gance ICONS over the functionality then it's quite ok but that's absolutely NO framework to do such comparisons.
I do come from the GNOME architecture and spent the last 5 years on it. I also spent a lot of time (nearly 1 year now if I sum everything up) on KDE 3.x architecture including the latest KDE 3.2 (please note I still do use GNOME and I am up to CVS 2.6 release myself).
Although calling myself a GNOME vetaran I am also not shy to criticise GNOME and I do this in the public as well. Ok I got told from a couple of people if I don't like GNOME that I simply should switch and so on. But these are usually people who have a tunnelview and do not want to see or understand the problems around GNOME.
Speaking as a developer with nearly 23years of programming skills on my back I can tell you that GNOME may look polished on the first view but on the second view it isn't.
Technically GNOME is quite a messy architecture with a lot of unfinished, half polished and half working stuff inside. Given here are examples like broken gnome-vfs, half implementations of things (GStreamer still half implemented into GNOME (if you can call it an implementation at all)) rapid changes of things that make it hard for developers to catch up and a never ending bughunting. While it is questionable if some stuff can simply be fixed with patches while it's more required to publicly talk about the Framework itself.
Sure GNOME will become better but the time developers spent fixing all the stuff is the time that speaks for KDE to really improve it with needed features. We here on GNOME are only walking in the circle but don't have a real progress in true usability (not that farce people talk to one person and then to the next). Real usability here is using the features provided by the architecture that is when I as scientists want to do UML stuff that I seriously find an application written for that framework that can do it. When I eye over to the KDE architecture then as strange it sounds I do find more of these needed tools than I can find on GNOME. This can be continued in many areas where I find more scientific Software to do my work and Software that works reliable and not crash or misbehave or behave unexpected.
Comparing Nautilus with Konqueror is pure nonsense, comparing GNOME with KDE is even bigger nonsense. If we get a team of developers on a Table and discuss all the crap we find between KDE and GNOME then I can tell from own experience that the answer is clearly that GNOME will fail horrible here.
We still have many issues on GNOME which are Framework related. We now got the new Fileselector but yet they still act differently in each app. Some still have the old Fileselector, some the new Fileselector, some appearance of new Fileselectors are differently than in other apps that use the new Fileselector code and so on. When people talk about polish and consistency, then I like to ask what kind of consistency and polish is this ? We still have a couple of different ways to open Window in GNOME.
- GTK-Application-Window,
- BonoboUI Window,
- GnomeUI Window,
Then a lot of stuff inside GNOME are hardcoded UI's, some are using *.glade files (not to mention that GLADE the interface buil
There are more code examples for C, C is a more well known language, its generally easier to learn (the syntax)
Until they make much better IDEs for linux that compare to visual basic, or some of Microsofts stuff, I don't want all this new syntax. It's going to take even longer to make programs even if the programs have less bugs.
Why can't we invent and use a new language, thats easier to learn (syntax wise) than C++, or Java, which can compete with C#, and which has the ability to be OO or not depending on how its used.
I don't really like the OO style of programming, soe people don't code in that way, and I also think we need a way to quickly code up the GUI, Glade just doesnt come close to comparing to Visual basic and until it does I don't see how Linux will compete!
People don't exist to serve systems, systems exist to serve people.
I'll try to address some of the issues Havoc presented. Of course, I'm a Mono developer, so I'm biased, but hopefully people can see my arguments are more on the technical side than advocacy.
No rewrites please: this is a very important point: we can't just throw away the current code: we need incremental changes to not disrupt stability and compatibility. I'll just note that using Mono (and C#), interoperability with existing C code is much easier than with Java because of P/Invoke.
Calling managed code from C/C++: Havoc says it's hard, but Mono provides an easy to use interface to do that. Mono is designed to be embedded in existing applications, not just as a runtime for standalone completely managed programs. Also, it would be easy to create a shared library and header files to access managed methods seamlessly: they can be automatically generated thanks to the use of Reflection and the Mono embedding API.
I'm not sure a "simple native component system bridge" would solve the issues, mostly because simple systems are always found later to be incomplete, they get changed and become big, but with all the design warts needed to make a simple design work for not-so-simple constraints.
A minimal Mono system is currently about 2 MB on disk, but no effort yet has been put into reducing it (and I think it's entirely possible, we have been busy implementing features and leaving aside space optimizations). Of course, since the default build of the core assembly has lots of features, much of the reduction in size could be achieved by trimming features that other systems don't have:-). Even without trimming, most people will concour that 2 megabytes of disk space for a shared component is small enough in a desktop setting (and applications compiled to IL code are usually much smaller than comparable C apps anyway).
Community should decide: of course, I agree. Anything that is pushed down our throats by somebody else is not going to work for the free software and open source communities. The solution will need to be choosen because it actually solves issues the developers and the users see. Java had several years to try to attract developers from our community and it had some success in some niche areas (not for desktop applications, though). Mono has just started, but from the comments of the developers that actually used it to write new applications or port existing ones from C, it looks like we are on a good adoption path (even though we didn't release a 1.0 version yet, we are still working on debugging support and documentation is sparse).
Havoc fears the adoption of Mono or Java for the desktop would alienate people and cause forks. I don't think that will happen with Mono, because Gnome will continue to have a diversity of developers who'll prefer using the C libraries directly: Mono allows to keep and interoperate with existing code very easily and we want the migration to happen incrementally, so at first only end-user applications would be written in managed code, while the foundation would still be in C (at least, enough of the foundation to have people happyly writing their own apps in c or with the existing bindings). At that point, when a managed execution environment has proven itself to both developers and users (hopefully) we could start discussing about using it for the foundation, too, if that makes sense. I think Mono is positioned better here to allow this incremental shift of both development and espectations towards a managed runtime.
Problems with a .Net clone: Havoc claims that MS controls the platform
because, even if the core is unencumbered, some assemblies are tied to MS
technologies and there is non standards body or community momentum to build
alternative solutions for a complete platform. Well, considering that until
a couple of months ago there were 5 people developing mono, we have achieved a lot,
not only in the implementation of the runtime, but also, thanks to the large
commun
Nobody said there would only be one way.
Problem solved.
I think Havoc is off base with the XAML comments. XAML will only be usable with the arrival of Longhorn which is in, what, 2008 now?
Okay, I'm sick of this. Microsoft never gave a release date for Longhorn. They said they were targetting late 2005. Then, they changed and said they'd like to hit late 2005, but early 2006 looked more possible.
They haven't changed since. But since then, Slashdotters have endlessly called Longhorn "vaporware" and even completely made up years like you just have. 2008? Give me a break.
Like they always have, Microsoft will clearly tell you early 2006 is what they're aiming for. They haven't changed since that first announcement. I don't get the big deal over jumping on them for a target release year. Linux 2.6 came out WAY later than was originally targetted.
Can I find millions of lines of refrence code to tell me exactly how to write any application I want in C#? Until I can, I wont be using C#. Even Java is more mature than C#!
People don't exist to serve systems, systems exist to serve people.
I'd think, that because everything has been done in C already, its easy to find algorithms, find open code to use for your programs, and the tools for C are mature. Why use C#? Give me some reasons, don't say its faster for development, tell me why.
People don't exist to serve systems, systems exist to serve people.
These are the languages 90% of programmers already know. Why should we all move to C# and Java now, just because people say we should? Why should we go from an experienced C or C++ programmer into a newbie all over again as we learn C# or Java? Now, if we can make a new language with the same exact syntax as C, which is also object oriented, and a lot easier than Java or C++, or even a language as easy as Basic with the portability of Java, like Visual Basic, then yes we'd have the power to do desktop programs faster. But C#? Java? Those languages are harder than the languages we currently use (more syntax), less bug prone, but harder to grasp and almost no one knows them. Why not use Basic? Everyone knows Basic, why do you think Visual Basic is doing so well?
People don't exist to serve systems, systems exist to serve people.
Each time somone talk about moving from C to some others languages, we heard about C++, C# or Java. All are kind of OOL, but whatabout typed functionnal programming languages ?
I'm using OCaml every day, for many things (in the CDuce interpreter, see www.CDuce.org, but also in other coding projects.) And it is fast (nearly as C, just take a look at this language benchmark), it is in some way safe (the famous : "Well typed programs cannot go wrong"), it has a good interaction mechanism with C librairies, programs can be compiled in native or in bytecode, OCaml native code compiler is giving very good result on many arch/OS ...
And, speaking about gnome, there's also a "wrapper" for GTK and GTK2 (called lablgtk and lablgtk2.)
Marwan Burelle co-Head of EPITA's System Laboratory
Ada is by far the stupidist language you could have possibly named. People who learn Ada are programatically retarded. Its NOT completely Object Oriented. There are hundreds of complaints I could lodge against it, but I simply dont have the time.
Click & Run was invented for people like you, people who are too stupid to install their own applications.
Simply buy the LindowsOS, then you'll be able to go to the software warehouse and simply click and run all your software, this install is easier than Windows, easier than MacOSX, easier than any OS before it. You don't even have to install, you just ClickNRun.
If you cant figure this out, perhaps you should go back to playstation, you arent ready for the land of computers yet son.
People don't exist to serve systems, systems exist to serve people.
You seriously thought MSFT cares about languages other than C# and VB.NET?
.NET bindings. It's not all C#...though that's going to be the primarily-used language in time.
Microsoft does care about developers (Developers, developers, developers!). You can write managed C, C++, Visual Basic, and other code (even J++). With Mono, I expect even more
Perhaps D (which isn't open source) shows how to ground a language more in the existing C world. The D language appears to offer the strengths of Java/C# rooted more firmly in a C-based environment.
http://www.digitalmars.com/d/
I'm sorry but gnome, kde, etc... has gotten so shitty and so much like win95, I switched back to windowmaker. Come on guys, linux needs a real desktop and one that is original and fast. Windows and apple seem to be capable of having original desktops. Gnome and KDe however just look like copies of mac and windows desktops but worse. Plus gnome is slow as donkey nuts.
.NET exists and provides rich functionality on all versions of Windows, from cell phones to servers.
Copy-pasted that straight from a MSFT marketing brochure?
Save your wrists today - switch to Dvorak
Static type checking allows IDE to
- check syntax on the fly, without requiring you to recompile the application;
- do refactorings (move and rename classes and/or variables updating all references, generate some code automatically, etc);
- help with variables/methods/classes/etc names completion.
Although lack of static typing has many advantages (your points on the matter are very good), it should be noted that a powerful IDE can speed up development enormously. (I'll never switch back to XEmacs from Eclipse to do Java development :))
Python is undoubtedly an excellent language for many applications, including some desktop apps (I developed with python+GTK, and it was really great), but I would still hesitate to use it in really big and complex projects.
Why should I pay any attention to Havoc? What has he really done for the desktop other than posture? Isn't this the guy that read "Usability for Dummies" then declared himself the ultimate authority on usability? Isn't this the guy that actively worked to sabotage KDE on Redhat? Isn't this the guy that cries foul everytime KDE refuses to immediately implement a FD.o suggested proposal?
Okay, okay, that's a wee bit of hyperbole in the above paragraph. I apologize. But I really want to know what this guy's resume is beyond writing a window manager and playing politics at Redhat. What makes him an expert on what programming language I should use?
Don't blame me, I didn't vote for either of them!
This whole thread and the discussion within
pretty much paint the picture of why Linux
will never unseat Windows on the desktop.
Just read, think, and it will be come clear.
coding in mono is okay, except..., I really hate having to wear those special glasses! You know, the ones with a green right lens, and a green left lens. (sorry, couldn't resist.... mod me down)
...in the open source community, we'd see more effort going into GNUstep.
Works with everything we have today? Check, there's compatibility with KDE and GNOME applications as well as Motif, with window style hints too.
High level language support? Check, Objective-C provides Smalltalk-like object orientation, and automatic memory management is available. There are also bindings to Ruby and Java. You can even build Java applications with native quality look and feel.
Compatible with what programmers know today? Yup, Objective-C is a slight superset of C, so almost any programmer can get to grips with it in a weekend. (Speaking as someone who did.)
Good class libraries? Yes, modeled on NeXT's excellent work, the same foundation used to build OS X. I've written Cocoa code, it's the most painless class library I've encountered. (Yes, I write Java too and have written C++.)
Cross platform? Yes again, programs are portable between GNUstep and Cocoa without too much work--see GNUmail for an example. Non-GUI programs even port to Windows without major effort, allegedly.
Good developer tools? Again, yes. Excellent developer tools on OS X. Doubtless the free tools on Linux could use some work, but that shouldn't be too hard. We can even build them using the OS X tools if necessary.
Pretty UI? Well, I think it looks OK. Not as nice as Aqua, but it's functional.
Mature? Well, the Objective-C compiler is GCC, Apple use it for their developer tools and push back improvements, the class library design has been refined over the course of 10+ years.
Think about it, people. We could unify the Linux and Apple developer communities. All work towards one common goal. Get 10%+ desktop market share for OpenStep/OS X/GNUstep in no time.
Hell, get GNUstep up to scratch and you'd probably see developers porting their commercial applications from OS X to Linux. Wouldn't you like to see products from Adobe, Macromedia, maybe even Apple available to run on your Linux desktop?
Think about all the problems that have been solved by NeXT and Apple. Application packaging? Solved, applications are bundles of files that you can just drag-drop wherever you want to keep them, and they work.
But no, the GNOME crowd will shun a tried and tested, open source, native code solution that works today and is backed by the single biggest vendor of UNIX desktops, in favor of cloning an untested patented bytecode-based Microsoft solution. Gates and co must be laughing.
But hey, go GNOME. Let's reinvent those wheels. Maybe your next set won't be square.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
So everyone that enjoys Linux as it is will instead be forced to use a system of limited choice designed for the average computer user. You know, Linux made it pretty damn far without pandering to Joe User....why shift focus now? The other operating systems on the market fill that need well enough.
I mean, isn't this why people hate the US two-party political system? Too much similarities and not enough choice? You know, some might argue that too many political choices just confuse poor 'Joe Citizens' like you and me.....
=====--=====
Together, we will drive the rats from the tundra.
Modern programming is about copying data from one place to another. It is 40% user interface and 40% database interface, the rest is business logic. What about database persistence? What about ORM tools? Java is superior here. All database persistence layers for .Net are years behind persistence layers developed for Java.
See Hibernate for example. One needs not only a UI framework, but a database framework. What can .Net can do about that? Nothing yet.
I am glad to see the direction that Linux desktops have been going. I had 1 750Mhz and found it was way too fast. So Gnome changed a bit and fixed that problem. Now I have a 3000+ AMD64 and am just sick to death of the sheer speed and responsiveness of the system. It is nice to see that the forward thinkers at Gnome have me in mind.
NR
I'm going to allow myself to get pretentious and suggest a "law" (more of a hypothesis if that):
Any belief which requires everyone to believe it, is doomed to fail.
People just don't work that way, and the free software world is almost certainly going to remain balkanized. There are a lot of great solutions out there to a lot of interesting problems, and everyone accepts/rejects different tradeoffs.
Anyway, I'd prefer a python solution, but I could deal with it if java won. C/C++ need to (almost completely) die for the good of the free software world. But that's just me. I bet a ton of you are already deciding that my choices suck and yours are much better.
For Win32 there is also a CLI-UNO-Bridge(currently in beta-state) which allows full access from a .NET environment.
It shoud be easy possible to port it to Ximians MONO, so MONO developers would have full API Access too.
CU Jorg
It seems like the root problem for almost all of these issues is that the JVM is not integrated into the OS. A separate JVM is launched for every application. If Java was the standard desktop toolkit then wouldn't it be possible to integrate a JVM into the OS runtime? This would greatly reduce the startup overhead, the memory usage per app, and also allow a faster GUI toolkit implementation.
When it comes to memory usage welcome to the real world of tradeoffs. I would rather pay more cash for extra memory than waste time while my apps crash because they use languages that don't protect developers from their own mistakes.
Still sensitive from an AC haunt that thinks I'm a zealot, no doubt inspired by my blowing off steam here and sometimes with semi-snarky humor, e.g. in the last Mono/C# vs. "C" thread, I want to be careful.
My pet peeves regarding these issues are not about what language to use in general. My pet peeves are somewhat more about semantics and about the arguments used themselves.
(1) C++ is high level, in fact, it's arbitrarilly high level. The distinction between C#/Java and C++ is better described with the term "managed code" as this really gets at what those languages offer that C++ cannot. Using the "higher level" language reinforces wrong ideas such as "you don't have garbage collection in C++" or "you are forced to use pointers in C++".
(2) It also peeves me when people crow about their language and insist it's the end all be all and your language is just lame. That goes for C++ too. It is not the end all be all of all languages or even compiled languages. These are all interesting technologies and we have to make decisions about them, to judge them, and which to use. If someone says "C/C++ is dead" or even "C/C++ will die" those are opinions they have a right to here on slashdot or anywhere else. However, if someone else, like me, says, "I don't buy it", and "if the idea is to not write the same low level code over and over, what do I get in managed code that I can't get with a class system or library in C++?" I know some answers to that question, and it's not "a garbage collector" and it's not "you don't have to think about memory", the answers is all about the managed code. Havoc points out some good ones, e.g. "A managed language solves some of the same problems COM was designed to solve, such as ABI encapsulation, versioning, and modularization." The answers to real questions tell you what circumstances a language is best suited for. And you will not find that one thing is taking over and everything else is dying.
-pyrrho
I think what's really necessary is a component system like UNO. It's make APIs not only accessable from any programming language or platform including Java and Mono, it's also possible to implement it in any language.
You can create any component in a different language , build it with different compiler versions, run it on distributet machines and all is working together as one system. Beside that UNO is extremly fast, which make it ready for performence critical applications like graphik sb systems.
UNO is well approved with OOo (Nearly every new code since StarOffice 5.2 is encapsulated in UNO components).
Curently the the following language bridges are available:
UNO-Java-JNI-Bridge
UNO-C-Bridge (which is written by SUN on request by Ximian)
UNO-C++-Bridge(most used Bridge)
UNO-Phyton-Bridge
UNO-COM-Bridge(of course WIN32 only, it allows access from VisualBasic and Delphi)
UNO-CLI-Bridge(This a Bridge to Microsofts
UNO-StarBasic-Bridge(The Basic-Language of OOo)
There are also Bridges for some Script-Languages in development(Beanshell, Jython, Javascript). They will be part of the language independent scripting-framework of OOo2.0.
CU Joerg
Have a look at:
http://udk.openoffice.org/
This isn't true. The implementation of DotGNU Portable.NET proves that it can be implemented directly on top of X, without any need for Wine or winelib.
I'm sorry, but that's simply not true.
For a start, optimisation across function boundaries is perfectly possible in C++. Microsoft's latest C++ compiler has a "whole program optimization" option that does exactly that, amongst other non-local tricks.
Also, the generic algorithms in C++ naturally allow far more effective in-lining than the alternatives you'd get in C or Java. The sort<> algorithm, which naturally incorporates the ordering test into the sort code and can then optimize further, is the standard example. And as with any other technology, effective optimization of generic C++ code has been a while coming, but it's improving all the time.
If you're going to highlight some advances in Java technology, you'll look less foolish if you don't compare it with five-year-old C++. :-)
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I know this is pedantic, the parent post was +5 hilarious, but this took me a while to figure out via googling.
,(then copy/otherwise set up your .config) then "make prepare && make modules && make modules_install && make install"
make mrproper
Please notice "make prepare".
This is essential, kernel will build but not boot if that is skipped.
Found this out on Debian and Mandrake, building custom config kernels from fresh distro provided source.
... superlint? lint++?
A tool that loads a coding standard schema to check code (on it's way into revision control and/or at build time?).
-pyrrho
What about creating/making a new lang with all you need?
Unlike Python or other scripting languages, every time you run a Java program it has to load each class that first time you create an object instance, and it does some kind of analysis on the byte codes of that class to see that it is OK and not kind of a Trojan Horse program. The idea is that Java is supposed to be secure by doing all that checking.
That checking comes at a cost that Java programs are pokey to load. Think of it this way -- Windows is pokey to load, but you load it once when you start your computer. Java is a kind of OS within an OS, and it is pokey to load every time you run an app.
I heard that the Mac has better Java on it, and they keep one image of the JVM around so once you load a class it stays loaded for the entire OS session instead of loading every time you say java myprog.
The other thing that probably brings Java to its knees is Swing on account that they tried to write Swing more object-oriented than thou and more document-view than thou and that you have gobs of little classes -- both a class loading startup overhead as well as overhead of creating and GC'ing object instances.
While people talk about "no shrink-wrap" Java apps, not only is Matlab very Java friendly, Matlab is partly implemented in Java. Matlab is a special case in that it is one of the few commercial shrink-wrap apps where having Windows/Unix/Linux versions is an important part of their business model, and I think they are migrating Matlab piecemeal over to Java internally. They say the GUI is done in Java -- if you go Files Open to open an editor window for a Matlab script file (.M file), it takes about 3 seconds to load, even on a late model P4. So you can say the MathWorks guys don't know how to program Swing correctly, or you could say Swing has some serious pokeyness in terms of loading and creating stuff.
But apart from class loading and Swing, I am not finding much that is pokey about Java.
I think that both Java and C# are influenced by the idea that byte codes can be better sandboxed and given controlled level of privileges.
On the same hardware! Beat that! (PS replaced once). Still same disk. *kachunk* *kachunk*
1987 Is the build year of the binary and the install year of the software (and OS). Its an IBM PC and the complier was Lattice C.
Do your _WORK_!?! You don't work with computers you play with them!
And, C don't force you into any way of thinking. It forces you to understand a bit more. It gives you freedom, freedom to build what you will. When you start getting into the big Lego pieces, thats when you are forced.
When I got my first Lego set, there was no "build manual" with it. It forced you to use your brain. Many kids today get the Lego kit, build them following the manual 100% and then puts the model on the shelf (and starts beggin for a new one).
They have gone from training imagination to training the ability to follow instructions.
A lot of the coders I see today are the same way; When they run into a problem they go to the "intellsence(tm)" and try to find a ready made solution. If its not there, they start to search the Internet and a dowloadable "softIC". If they cant find it THEY ARE STUMPED! The question today is not "can you do?" but "can you find?". The majority of software development is turning into a big exam cheat...
Go for Windows 1.0 (before those pesky overlapping Windows) Now thats some fast GUI action for ya! ;-)
Too many times I see people telling stories oh if only people would use programming language X it will all be better. Frankly it pisses me off since so far noone has actually gone out and bothered to prove it. .Net is hardly a runaway success. Java is still just one of many languages. And now they are adding mono to the mix as the next saviour.
Thanks but no thanks.
I am not against mono. Add all the language hooks you want. Code your desktop in php gui version if you like. Just don't tell me it is going to save the world.
Most amazing in this type of /. article is that each time someone mentions a language I never heard of before. I am no genious but after a couple of years you would expect to have seen them all. No there is always some new language someone invented to solve all the worlds problems.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
There is no such thing as Parrot! (Is there? (and if there is, is it Norwegian blue?))
Go and check the server signature and you will also see java mentioned far less often then the other platform/languages.
So far from the revolutionary language claimed by java fans it is just another tool. Suitable for some jobs, unsuitable for others. As a programmer you have dozens of languages to choose from and a decent developer knows at least half a dozen reasonably well.
I am not saying java is crap or anything like that. Same with .Net or mono. I just don't believe they are the second coming.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
I agree, its usable but its a PAIN! My flagship (2.8 HT with 2GRAM) feels like my old 486x25 with 16MRAM. Star Office for linux was a blast! Why did Sun have to mess thing up?
C++ seems to get mistreated in these debates; the picture of the language that people seem to have is an complete strawman. If you believed the Java/C# crowd, someone puts a gun to your head in C++ and insists that you
a) build massive type hierarchies with all sorts of cryptic overloads and exciting multiple inheritance paradoxes,
b) regularly cast things in and out of void * and use at least three unions per C file, as well as including a large number of K&R prototypes just for the hell of it,
c) use the worst possible C++ compilers available, and completely avoid any of the smart pointer implementations, C++ garbage collectors or tools like Purify that might help you with memory lifetime issues,
d) overload everything in sight, all the time,
e) write the occasional template metaprogram that generates 20K long error messages when you accidentally mess up a type in the splay tree of types implemented entirely in the language type system, and
f) utterly ignore any useful part of C++ that isn't directly expressible in Java or C#, or find compelling reasons to ignore the existence of such features - particularly if the feature was ever poorly implemented in any C++ compiler, anywhere.
C++ certainly gives you more opportunities to write bad code. In fact, it allows you to create huge frameworks that pretty much guarantee that not only is the code you write bad, but anyone who tries to interface with your code will also have to write bad code. However, it also allows the creation of good code and excellent frameworks that can get incredible things done. Well-written STL code, for example, is astoundingly terse, clear, efficient, and wonder of wonders, type-safe!
Unfortunately, there seems to be an increasing trend out there of half-educated programmers with the viewpoint: "if I don't understand it, to hell with it"!
"The future linux desktop"
Shouldn't there be a K there instead of a foot?
My Blog
Actually, I was speaking from experience. GNOME's architecture does suck.
Gregory Casamento
## Chief Maintainer for GNUstep
No other language provides so much rope with which developers may hang themselves.
No other language is so falsely claimed to be mastered by programmers who in fact are nowhere near an intermediate level of understanding.
No other language (even Perl) produces such obfuscated code that it is illegible to other team members.
Please let this abomination die, but not before all of my competitors decide to "reimplement everything in C++", which will surely take them out of the market.
Granted it doesn't have Gnome hooks built-in, but it is GTK+ 2 (thus fully supports unicode), have MORE features and SMALLER than the wimpy featureless Metacity.
In fact, using your analogy, Metacity seems to be the Wolfenstein 3D.
screenshot here
It seems to me that what c#/java offers over c/c++ was not a runtime and garbage collection but easier programming because with c#/java:
- primitive/value types (c structs) are allocated on the stack
- objects are allocated on the heap
Thus pointers cease to be an issue. I think Delphi got it right - a fast compiled language with objects on the heap. Its a pity it had a pascal syntax and not a curly brace C-ish one!
However things have moved on and modern 'best practice' C++ emphasise data objects working with template algorithm objects - not so much on traditional OO. Its back to data and algorithms. Isn't that what 'service orientated architectures' are all about.
A simplified version of c++ with templates but not gc - and without pointers being so much in your face - would i think be cool. It would give speed and control without the pain.
Also with AOP perhaps the object systems of Mozilla and Open Office could interact e.g:
@uno x = new OpenOfficeObject();
@xpe y = new MozillaObject();
@kde z = new KObject();
"Programming languages are programming languages, irrespective of who came up with them."
.NET is M$'s final solution to their failed attempt to take over the future of java from SUN. (That M$ failed should be proof of how hard it ito work with something that is owned by someone else.)
.net in the free software community.
No this is not at all true. A programming language needs a compiler or interpreter; all of which can be covered by patents.
We should not be endorcing, supporting, suggesting, using, talking about or anything other than ignoring
I can't believe I even had to type the word out again. Yuck.
the Y-Windows system is copyleft.
I foreseeing myself beeing beaten like the poor Pingu, so i'd like to state:
.NET is good at this, but it is the only major project i know that stated cross-language support as one of its targets.
.NET
.Net implementations will speed-up MS .NET
The opinions expressed here are not mine but of my employer.
Oooohh... Did i really told that. No, the above lines were not my opinion as well.
Now, to be serious, i'd like to put my 2 cents over some points, i often meet around. Some of them are fro mthe article, others are not.
1) We should choose language...
No. We should choose runtime library.
Personally i'd prefer to code in Component Pascal or Borland Pascal rather than C/C#/Java branch. Just because i dislike C look-and-feel. Is it serious? i think everyone will say 'no'.
So the question is about library, it is library functions/objects that developer constructs his program with. And they are at his fingertips' cache. Moving to another library makes him significantly less productive, as he has to think 'what am i to use for my task' or even browse the manual and FAQ and so on.
Let as take MS Visual C++ and Borland C++ Builder - both of them are more-or-less C++ compilers for Win32 - and they are incompatible for any complex app, since they use (and make developer used to) different rtl's.
Let as take GCC with GTK+ and Qt and wxWindows - again, GTK pro will work slow forced to use Qt library.
Broad support for languages is very good for small tasks, such as those, solved by scripting languages. But for serious development ine will need to learn GTK+ - and it will count much less what language does he prefer.
But if we want to support many languages were are to desing RTL the proper way, so that every language will have bridges to the features above Least Common.
For example Class Factories in 90% of cases are workaround for C++ lack of class refernece type and virtual constructor.
So if RTL will make use of them - then for C++ they are to look like some special simple auto-generated Class Factory. And the opposite, such a Class Factory implemented in C++, is to be class reference to a class with virtual constructor for less restricted language.
That is very hard, and usually it is not even atttempted. Usually ether
a> RTL is Least Common for all the language - and is not comfort to any of them, so languages are quickly added with there own libraries and RTL does not guard the cross-language compatibility no more. That is not a choice at all IMHO.
b> RTL is designed for C++ (or any othe language, but oinly sole one). That makes it uncomfort for all the other laguages, hence that main language becomes the only widely used one. This way we only refactor existing GTK and maybe change C++ for some other language. If that is all - does it worth the efforts on refactoring?
IMHO RTL is to be _designed_ for some set of languages agreed before, and is to allow bridges for all the features that are not natively supported in the languages.
I do not say that ECMA
And since GTK+ set of classes might be refactored but will never be abondoned - it might try to become a standard RTL for free
Though i doubt it will, there are alread ycross-platform incompatbile RTL's like Apacje's one and Mozilla's one (mostly at middle level of applications), as well as GTK and Qt (mostly as UI level of applications).
Will GTK.NET or whatever be fine and be the 1st one - it will become standard de facto, otherwise i see no chance to have one standard RTL, when we alread yahs a lot of competing ones now - will any of them want to die? only some new Terra can be base for standard RTL.
2> Free
I can't agree. Do projects like WinE and Odin spped-up Win32 ?
I think it is quite the opposite!
While projects like DotGNU and Mono are weak - the real programs are designed over MS new ideas and DotGNU and Mono are eternal step-behind compatibility layers
I don't quite understand what's so inherently wrong with using a framework that's designed to be compatible with the published standards of .NET.
Isn't that what Linux is, a free alternative designed to be compatible with someone else's IP?
got www.DotGNU.org and read PDF about Portable.NET , particularly why the 1st goal is unroller and only after it, maybe, there appears JIT.
.NET from DotGNU - and will get only restricted Compact Framework from Microsoft :-)
Result is that Windows CE may one day get full-featured
AS: afair Mono has an interpreter, along with x86 JIT.f
-
Afair same is DotGNU.
So it does not make the differences.
Though interpreters of Mono and DotGNU really was made differently www.southern-storm.com.au/download/pnet-engine.pd
"just call us hostile only because we have a different implementation from yours."
i'd put a quote from http://gnu.vlsm.org/projects/dotgnu/pnet.html
--
Do you cooperate with the Mono project?
In April 2002, we added I18N (internationalization) support to Portable.NET, under the usual "GPL plus linking exception" license. We were looking for ways to increase cooperation with Mono, and Mono has a policy of not accepting code under our usual license. As an experiment in co-operation, the DotGNU Steering Committee offered the I18N code to Mono under the X11 license.
Mono did use this code, but contributed very few changes to it. Meanwhile, we did a lot more work on this library, more than doubling its size. So we decided to go back to our standard license for the new version. The original version remains, of course, available under the X11 license.
We were still interested in ways of increasing cooperation with the Mono developers, in ways that would be mutually beneficial to Portable.NET and Mono, and therefore another attempt at establishing cooperation was made in October 2003. This also failed.
I think free software needs a designed language such as Java or C# really bad. Contributing code to freee software projects such as Gnome is really hard because you have to learn a lot of tools and languages that are all hacks. Their lack of design means the only way to learn them is to spend several years hacking their layers of obscurity, before you form an indepth understanding of all the important pieces. Being a programmer who started with assembler, then various med-level languages such and as C and only in the last few years got into high level languages Java and C#, I know the level of productivity and robustness of code gained when going from c/c++ to Java or C# is _HUGE_. I doubt the communitys ability to create something designed by itself (like Linus says the kernel isnt designed) but implementing Java or C# is definately within reach (mono/gcj). However I do think the community has to make a serious attempt at designing the API. GTK+ is very non-designed at the moment. In fact the Java-Gnome binding guys are not using the widget definition files to automaticaly create the bindings, instead they manually build a classhierachy to makes it more OO designed than gtk+ is. I dont think we will ever achieve good OO design before gtk+ and the like are implemented in an OO language, instead of C with pseudo OO. Lets see if redhat can build a fast Eclipse based on gcj. If they can do that, then it should be possible to build gtk using gcj. Eclipse has already proven at least on windows that you can build a widget set (SWT) driven by java that is just a responsive as the native widgets set. I also deminishes our efforts with design, since we could learn at lot from SWT. Unfortunately projects like gcj and java-gnome dont have that many followers, it looks like mono is going at a much higher pace. I dont mind using C# if someone would guarantie that the C# core is not encumbered by patents.
The idea of the default gnome window manager is to get higher usability through integration with gtk and others. If you want to run a desktop on 10-15 years old pc's as they do in 3rd world countries and usability means nothing to you, then why dont you just use icewm or wmaker??
With the release of GTK+ 2.4, and Gnome 2.6 due out some time next week, it seems of some the Gnome developers are looking at how they'll be coding Gnome and the rest of the Linux desktop.
;)
Oh, so the Gnome developers are going to be coding for KDE too?
Seriously, call me a troll but all this "Gnome == future" crap annoys me. KDE's OO framework and flexibility kicks Gnome's weak and feature-lacking C-coded ass, not to mention Qt is vastly superior to GTK+. Yet, for some reason, it's always Gnome that gets the spotlight.
Clearly, there are some jobs best done with higher level languages with goodies like garbage collection, like high-level GUI interface coding. There are also jobs that need low level, close to the metal languages like C or even assembler - anything that's CPU bound and requires high performance - games or number-crunching.
In other words, there is no One Great Language that everyone needs to switch to and use for everything. Lots of games are written with multiple languages - C for most low-level stuff, hand-coded assembler for the hot-spots, and Python for things like AI, level setup & such.
As for me, I don't much like virtual machines. You might as well either compile to native machine language or leave it in source and run it through an interpreter. VMs are just an unnecessary waste of cycles & memory, and an needless added level of complication. I like gcj's ability to compile Java to native binaries.
Meldroc, Waster of Electrons