Slashdot Mirror


Miguel Says Unix Sucks!

alessio writes: "On the front page of Linux Weekly News there is a report from the Ottawa Linux Symposium where the adorable Miguel de Icaza supposedly states that Unix has been built wrong from the ground up." It's actually a pretty cool interview, and as always, Miguel makes his point without any candy coating! The major point is the lack of reusable code between major applications (a major problem that both KDE and GNOME have been striving to fix for some time now).

21 of 478 comments (clear)

  1. Sounds like Mac OS-X by burris · · Score: 4
    What raptor21 wants will be out in January as Mac OS-X:
    1) Unified standard printing architecture.
    Mac OS-X has this. Since the display uses the same imaging model as printing (PDF), you get WYSIWYG for free. To print you just tell your objects to display themselves into a different buffer. The print panel, printer selection, print queues, and everything else are done for you and shared by every application (and it's not based on lpr)
    2) Resuable components for the primary functions of applications.
    Cocoa comes with many reusuable components. It has the obvious ones: text fields, buttons, scrolling views, matricies, table views, gas guages, check boxes, pop up lists, etc... It has many more. It has an extremely powerful multi-view text system that does multiple columns, rich text, unicode, spell checking, etc... There's tab views and "drawers", font and color panels, color wells,split views, a database independent access kit that rules (EOF), printing, faxing, and more. There's a document framework, undo, an extremely powerful pasteboard system, services, and filter services (plug ins that translate files from a foreign format to something your application can understand).

    All of these resources are shared by all applications, where possible, to conserve resources. Most of them are very easy to use and many require no coding to setup. For instance, to add retractable drawers to the sides of your windows, you just drag-connect lines from the drawer instance to the window instance, to the view to be contained inside the drawer, and a line from the button/actuator-widget to the drawer instance and boom you are in business. No coding...

    3) a standard for user interface (menu options e.t.c) Like edit->prefrences and not tools->options and file properties and every other place .
    Apple certainly has the best reputation for this. All of these details are specified in a UI guidelines document and standard menu configurations are built into InterfaceBuilder.
    4) A standard method for software installation. Like src goes here and binaries go here and so on.An API to make installation easy such that icons get put in the menu and links get crated automatically on the desktop.
    X has a nice built-in software installer. When you install it leaves a receipt you can click on to uninstall or just compress some software.

    X has a very powerful "Bundle" system (from NeXT). A bundle is a directory containing various subdirctories that contain application resources (binaries, source, headers, documentation, images, sounds, strings to be displayed the user, UI's, etc..). Localizable resources (like string, images, UI's) are kept in seperate directories for the region/language the resources are specific to. The Bundle class automatically fetches the proper localized resource based on the user's localization preferences. The Application itself is a bundle and there are bundles known as "Frameworks" for shared libraries. Frameworks can contain anything (code, headers, source, docs, images, sounds, etc...) and are stored together and are versioned (two or more different versions coexist peacefully: no more problems of a newly installed app installing an incompatible version on top of an existing version).

    No API is needed for putting icons into the dock since the user can simply drag the application icon there himself; no having to drag icons into some obscure folder deep inside the system hierarchy.

    Oh yeah, it's all running on BSD Unix with a Mach kernel. The sources of which are available here.

    So you see, Unix can be made into a modern operating environment for all users, with a consistent user interface, and an API that is a joy to use for developers. However, they didn't build it on X and you'll probably have to buy a Mac to get it for now.

    Burris

  2. Re:Less than what?... by PD · · Score: 4

    less sucks less more than more. That's why I use more less, and less more.

    Another one:

    There's a town in MI outside Detroit called Novi. Everyone uses emacs there.

  3. Wrong. by roystgnr · · Score: 4

    Because of that standardization, that's why most of the world's commercial software for desktop machines -are- being written for Windows

    No, most of the world's commercial desktop software was written for Windows, because *big drum roll here*... most of the world's commercial desktops run Windows!

    And that's not because of API standardization, or you would have seen people fleeing in droves at the Win16->Win32 switch which forced everyone to rewrite all their software. Borland's OWL libraries and Microsoft's MFC would have destroyed the Windows programming "community".

    That's simply because Microsoft managed to get contracts which put their software on the majority of clone computers, because clone computers, and because Microsoft allowed (some might say forced) network effects to turn that majority into a monopoly.

    The problem with Linux above the kernel level is that you can run into a situation of multiple competing API's for most everything, which can become a bit of a programming nightmare.

    Bullshit. Name one GUI Linux program you've written. Did you try to write it using two toolkits? If not, then exactly how did the existance of whatever toolkits you didn't use make your life a "nightmare". All it did was give you extra choices to find an API you liked best before you started to program.

    Remember, if programmers were forced to use one toolkit, we might be stuck using Xaw, Motif, or even Win32...

  4. Noone ever claimed that unix doesn't suck. by Anonymous Coward · · Score: 5

    We've only ever claimed that it SUCKS LESS.

  5. Fuck Miguel by Dr.+Sp0ng · · Score: 5

    So Miguel started the Gnome project because of the licensing problems with KDE/Qt. Good for him. Gnome has some excellent ideas, but they've taken it too far. There's no reason to need a fast machine with 64+ Megs of RAM to support a desktop environment, for crying out loud. Now don't get me wrong, I like Gnome and I use it all the time, but it really is a bloated piece of software. I've even written popular software for Gnome (sorry for the shameless plug :-), but I really think it could have been done much better and require less resources. The only reasons I used Gnome for PowerShell is that I like the look and feel of GTK+ much more than Qt or Motif, and Gnome includes a terminal emulator widget which saved me a lot of work. If there was something else that provided similar functionality (of the stuff people actually use, not all of it) and looked as nice, I'd use that instead. Until then, I'll keep using Gnome, but it looks as though it's heading down the Microsoft path of bloated software with tons of rarely-used features.

    And why is it that Miguel is held in such high regard among Slashdot users? He wrote a fairly nice desktop environment. So what? So did the KDE team, but most people can't even name a single person who worked on that project. So he thinks Unix sucks? Good for him. Everybody is entitled to their own opinion, but that doesn't mean that they are right.

    </rant>
    --

  6. Miguel de Icaza is an Idiot by UID30 · · Score: 4

    I maintain that Unix does not suck, but rather that it is beautiful in it's flexability. This bozo claims that it's weakness is "not deciding policy" ... what kinda horseshit is that? That is it's strength! If I'm working on a server, the last thing that I want to do is get bogged down in boneheaded system policies which were put in place by some software engineer who had NO idea what I was attempting to do.

    Go program for M$, Miguel.

    Unix (and for that matter the entire Open Source movement) is about freedom, not about having mission-critical decisions made by some corporate suit who, incidentally, is only interested in making their company more $$.

    I repeat, Go program for M$, Miguel.

    Miguel claims that a weakness of Unix is in not sharing more code between applications. M$ shares code extensively betwen applications ... Lets put this to a poll ... which is more stable: Unix or M$ Windows (choose your flavour). M$ products are so tightly bound together, in the biggest cluster-f*** of shared code, that an "upgrade" in MS Word brings out a security exploit in Outlook. The patch for Outlook then breaks certain macros in Excel ... which is then addressed in the next round of patches. Meanwhile the poor outside company that is developing application on the M$ platform (lets say Dreamweaver for example) are left behind ... their product simply ceases to work as a result of the upgrade (and subsequent patches) to the M$ shared code base. Please ... tell me ... when was the last time upgrading StarOffice on a Unix platform conflicted with a previously installed Apache?

    Miguel obviously has a LOT of trust in M$ ... I suggest that, in the spirit of that trust, he get duplicate credit cards made and drop off the copies at the nearest M$ office.

    that and ... Go program for M$, Miguel!

    The Unix approach of not deciding policy is "a defense system for hackers," since that way nobody has to take responsibility for a bad decision.
    Making decisions (good or bad) and taking responsibility for them is part of being an functioning adult. The ability to make decisions is essential. To have the decisions already made and have no control over them is unacceptable. Any competent Unix sysadmin knows that security is his responsibility. A Unix sysadmin who has his boxes repeatedly compromised is likely to be out of a job before too long. When a M$ box gets compromised, it is no great shock, in fact the sysadmin of that box can't be held accountable for a system in which he has no control ... and you're only solution is to continue deeper down the M$ path. Who decides system policies on your server?

    I can't believe this idiot sucked me in and made me waste time stating the obvious...
    </rant>
    --
    "Glory is fleeting, but obscurity is forever." - Napoleon Bonaparte
  7. Re:Lack of a graphics design by BinxBolling · · Score: 5
    The problem with *NIX (and he really doesn't mean *NIX - there's quite enough shared code in a console-only system, the problem is with the X apps he named) is that X windows is just an overgrown framebuffer, not an actual graphics and development kit. If you look at something like BeOS, it provides a whole bunch of "servers" (a microkernel design) that handle different functions, but X windows was an overgrown framebuffer stuck on top of a command line to provide a clock, a load monitor, and a terminal.

    True. When I read this:

    The Unix approach of not deciding policy is "a defense system for hackers," since that way nobody has to take responsibility for a bad decision.
    I couldn't help but think of X. The lousiness of that system is the best example of the problems that come when you avoid policy decisions. And the awful arguments made in X's favor whenever the topic of its suckiness comes up in Slashdot are certainly consistent with the idea that this avoidance of policy decisions is a 'hacker defense system'.

    Probably the best example of what Miguel is talking about is the difference between what you can do with cut-and-paste in X and what you can do with cut-and-paste in Windows:

    • X has more or less followed the Unix paradigm where 'everything is a file' - which really means that everything is a flat, unstructured lump of text. Or at least, this the only way that most programs have to interface with external data. This is fine when the data you're dealing with is relatively unstructured: A csv file is tolerable for, say, a list of phone numbers, and simple text oriented tools like sed/awk/grep/perl are okay for most of the operations you'll want to do on such a file.

      But once you move to a graphical environment and thus aquire the ability to effectively represent much more structured data to the user, you need to provide higher-level interfaces to that data. Those text-oriented tools will be pretty much worthless if the file you're dealing with contains a description of a structured drawing. As a result of X's adoption of the Unix approach, all you can really cut-and-paste in X is (surprise!) flat, unstructures text strings.
    • In Windows, on the other hand, you can cut much more structured data to the clipboard. You can rip out a piece of a Visio drawing and stick it into Word, and it will retain all of its structure. This is because Windows provides facilities that make it relatively easy for programs to expose higher-level interfaces to the data they generate. This permits a degree of application interoperability that X apps can only dream of.

      This pays dividends far beyond cutting and pasting: strong application interoperability means that you can easily access and 'reuse' an existing application's functionality. An example out of my own experiences as a Windows developer, a few years back: I once spent a month working on a project whose goal was to build a graphical scripting tool for a specialized purpose: Users would draw out simple flowcharts, then our tool would generate code from these flowcharts. Rather than build our own flowchart-drawing tool, we were able to use Visio: We designed a set of custom Visio shapes that users could use to draw flowcharts. Then, the development environment we'd built would send users into Visio whenever they wanted to edit charts. When the user was done editing, the development environment would talk to Visio via OLE automation, pull out a highly structured description about the flowchart (basically, a list of all the symbols and their types (including some parameters that the user could specify, such as the conditional expression for a decision symbol), and of the links between symbols) and build a simple C++ representation of the chart that the code generator could then take as input. My job on the project was to build the layer that talked to Visio and built the code generator's input data structure, so I dealt pretty heavily with OLE. It worked out great for us, saving us an enormous amount of development time. And we ended up with a much higher-quality final product - instead of building our own mediocre tool for graphically editing flowcharts (which we would have probably ended up having to do if we were working in unix /w X), we were able to provide the user with the much more powerful, mature facilities of Visio.

    I liked Miguel's comments. I'm glad to see that someone is willing to stand up and say that while the emperor may not be completely naked, he should probably put on some pants...

  8. Paridigmns for a new OS? by shutdown+-h+now · · Score: 5

    I think UNIX did alot to change the way OS design was viewed. UNIX treats everything as a file. UNIX focused on making a system with multiple users on the same system at the same time.(multiprocessing anyone?)

    I think the boys over in Murray Hill are doing alot now with Plan9 and a few other ideas I sometimes hear they kick around.

    My question to all of you obviously more experienced coders out there:

    What's the next paridigmn for creating the next less sucky OS?

    Treat everything as a data object? a module?

    I don't know. I would love to see an OS based on a functional programming language. Something small and compact without too much bloat to it. Code up a decent GUI as well. Or how about this...the GUI is the text. Multiple windows of text ala an Xterm, clicking on the word disk0 or some such thing would open up another window showing you the contents of the disk0 object.

    Every piece of text is a mouse clickable object. If you type in disk0 it becomes a mouse clickable object which links to the contents of disk0.

    Perhaps we would arrive at a new GUI or a new concept that makes either more sense to users, or perhaps is faster to operate with, with minimal learning curve.

    A natural language based OS?

    A user can type in his questions (eventually speak to the computer ala voice recognition) and receive textual and aural inpouts from the machine. I.E. "Computer, please tell me the contents of disk0." "The contents of disk0 are, foo.txt, bar.c, baz.h"

    Eventually somebody or something has to sit down and figure out a different way of looking at the data we are presented and see if it makes more, or less sense than what we currently have.

    I don't know who that somebody is but I think it won't kill me to sit down tonight and see if I can come up with a few ideas.

    I'm thinking about using a functional language because it forces me to look at things slightly differently than when I write C code.

    Anyone else have any ideas or pointers to projects currently looking at stuff like this?

    It would be a nice project to jump in to, no?

    Dan O'Shea

  9. Do something about it by codemonkey_uk · · Score: 5
    Its open source. Do something about it. If you don't like it, change it. If its broken, fix it. Its the open source mantra.

    Actually, Miguel is one of the few people who is in a position where doing something about it is actually feasable. Whatever happened to that KDE & GNOME common component archetecure? That would have been a step in the right direction.

    I do believe that there is to much ego flying about for a lot of good things to get done. It takes a big man to climb down and say, okay, lets merge. Lets reuse. You can do it better than me, and with OS development kudo is currency, and to loose ego is to loose currancy.

    Hmmm... does Miguel have the courage to take a step towards consolidation?

    Thad

    --

    Thad

    1. Re:Do something about it by angelo · · Score: 5

      And a mantra is all it is.

      There is a very small core taking care of the software. A lot of us are users who at the end of the day working with computers, perhaps just want a free OS to check mail and surf the web. For the most part we don't want to put in another 8 hours debugging un-mapped, un-documented, and un-planned code. For the most part we run the most "stabile" version in a program, collected by a package tool.

      Every once in a while we may compile something. But for the most part, we have neither the time, nor the inclination to code. This may explain the popularity of Netscape 4.x, AND the lack of programmers for Mozilla. A lack of eyeballs is due to both the "works good enough" mentality from years of commercial OS use, and the above mentioned apathy.

      If you complain, then fix it. If you can't fix it, find someone who can, or email the primary author. If they give a nasty response, then use another program. This is certainly possible with 10 ICQ programs, 5 Napster clones, 3 Gnutella clients, and 15+ browsers. There is your freedom.

  10. Lack of a graphics design by 11223 · · Score: 4
    The problem with *NIX (and he really doesn't mean *NIX - there's quite enough shared code in a console-only system, the problem is with the X apps he named) is that X windows is just an overgrown framebuffer, not an actual graphics and development kit. If you look at something like BeOS, it provides a whole bunch of "servers" (a microkernel design) that handle different functions, but X windows was an overgrown framebuffer stuck on top of a command line to provide a clock, a load monitor, and a terminal.

    The terminal does just fine with the components it has. There are quite a few shared libraries, and for (for instance) printing, everything uses lpr - plain and simple. But a drawing model like X does not a application kit make.

    Personally, I think that the best approach for an application development framework is a server-based model like BeOS. In Windows, programs duplicate functionality that's handled by one server in BeOS. Linux (and UNIX) is a great command-line environment, and provides a rich environment on top of that. Just don't use X for anything more than xterm, xclock, and xload.

  11. Not really accurate statement by Carey · · Score: 4

    The statement that UNIX has been wrong from the beginning is not what he said.

    What he said is that there is no innovation going on in UNIX and that number of its fundamental features while attractive to our community, are preventing the whole world from using the operating system.

    He cited Apple's work on MacOS X as an example of a team that changed some of the fundamental kernel designs on behalf of "end-users".

    Miguel's big point is that there isn't a component model and code reuse simply doesn't happen. He is right on the money with that.

    However I don't know about the solution of just copying COM/ActiveX/OLE, especially when Microsoft is now dumping COM in favour its .NET architecture.

    I suspect Java is in the Linux desktop future whether people want to admit it or not. The Java2 integration on MacOS X that was demonstrated at JavaOne proves how much Microsofts component model for applications is obsolete.

    In the rest of his keynote he talked about innovation in specific applications such as mail and the whole INBOX/foldering problem. I hope GNOME (and now SUN and StarOffice/OpenOffice) can address some of the design problems with Microsoft Office.

    He did say UNIX sucks, and he is correct, many things about it do, but there is suckage on every platform. His point was we have to fix the things that suck on UNIX and he is not advocating re-doing it from scratch.

  12. Oh brother. Can't see the forest... by sillysally · · Score: 5
    If we believe Miguel's opinion of Linux vs. Windows development, Linux is going to lose. In fact, his argument is so strong that we can see that Linux won't even be today where it is because five years ago Windows was even farther ahead with more reusable code.

    More evidence of Miguel's genius can be seen in his critique of Unix in general. Unix is not a platform of innovation. Take the biggest development in all software markets in the last five years: the internet. Unix could never have produced the innovation of the internet...

    Miguel's a little confused.

    It drives me nuts when people who are a little bit smarter like Miguel, start to think they are really smart, because while he can see problems, he is still not smart enough to see solutions. Allowing for many many window managers is not a mistake, it's the trend: think about skins. No, the problem is that the developers who are writing all the window managers keep starting from scratch, or pay little attention to the other window managers. For example, I like the focus to follow the mouse. I'd like to set that one time in one place, then experiment with different window managers to see which I like (today... :) But you see? That's a simple solution to a problem. There's no need to throw the baby away with the bathwater, which is what Microsoft did. Microsoft was a unix systems house back when they produced DOS, and many features of DOS were modelled from Unix. It took them years and years to reintroduce simple things like memory management and multitasking, and then they set off to create NT, an OS that nobody even wants to clone.

    Yep, it's true that some areas of Unix are very weak, like printer drivers, but that's more a reflection of the culture: Unix isn't used on office desktops much. Windows has equally glaring deficiencies: think of how much Windows code gets "reused" every day by hackers exploiting the security holes :)

    Nope, Miguel, you are not onto anything big, just another Dvorak in a different suit.

  13. OOP Reuse Myth by codemonkey_uk · · Score: 4
    So what does that have to do with OOP?

    Althought you don't expicitly state it, you seem to be implying that OOP encorages more reuse than other programming paradigms, now, while OOP does encorage more reusable code to be written, it had not been shown that this actually generates more reuse in practice.

    Thad

    --

    Thad

  14. Intresting..... by raptor21 · · Score: 5

    What he is saying is.....

    I have a crapy graphics card so my whole computer is a piece of crap!!!

    Just because UNIX lacks in some resuable code in it's graphical shell it sucks. What about the fact that I can do almost everything i need to maintain a system over a serial port.

    Unix needs a lot of changes inorder to become a desktop OS. UNIX was designed for mainframes Three decades ago. X and desktops came into existence decades afterwards. Miguel's analogy is like saying a 1960 automobile doesnot have airbags so it sucks. But the basic engine and chasis design is the same only todays cars have improvements.

    Resuable code.... Just count the number of OSes out there that were built using a UNIX kernel.UNIX must have done something right.

    I wouldn't say X sucks, I would say X is too old for todays standards. Just like a PDP11 is old by today's standard.

    What the *nix world needs a newer grphical shell that defines a standard API that people can utilize. You can write all the Window Managers you want as long as you confirm to that API.

    The API should include:
    1) Unified standard printing architecture.
    2) Resuable components for the primary functions of applications.
    3) a standard for user interface (menu options e.t.c) Like edit->prefrences and not tools->options and file properties and every other place .
    4) A standard method for software installation. Like src goes here and binaries go here and so on.An API to make installation easy such that icons get put in the menu and links get crated automatically on the desktop.

    All this and many more standardizations are key to Unixes entry into the desktop. Standardization doesnot mean one window manager but that the basic UI should remain consistent.
    The only reason people like windows (Yes ,seven out of ten people I talk to think windows is great) is that it functions the same every where it runs. Most people don't want to learn every option on every application and every platform. Trust me i have experience with computer novices.They want consistency.

    Till we realise this and look at it from a consumer point of view I don't see unix or linux on every desktop in the world.

  15. Duh!! by Shotgun · · Score: 4

    You need the features provided by ls combined with the features of grep....

    ls ???? | grep ?????

    You want to combine a whole bunch of components? You can use a shell script or even perl.

    We've got reusable code running out our ears.

    --
    Aah, change is good. -- Rafiki
    Yeah, but it ain't easy. -- Simba
    1. Re:Duh!! by CMiYC · · Score: 4

      We've got reusable code running out our ears.

      Did you read the even read the article before posting this? When he said we are lacking resuable code he mentioned APPLICATIONS like Acrobat, Staroffice, and Netscape. Aside from the C libraries, there is *NO* re-used code between any of those applications. His example was Printing. Each application has its OWN printing system, configuration, and method of working. The sad thing is, they all pretty much do the same thing... generate a Postscript file.

      He isn't talking about ls, grep, cat, cut, paste, and UTILITIES like that. He's talking full-blown applications. You know, applications...the things that people have to have to USE their computers.

      ---

  16. I can't decide whether to laugh or be afraid. by Black+Parrot · · Score: 4
    Unix's problems come from its longstanding approach of not deciding policy. The kernel does not decide policy; neither does the C library, the X libraries, or the window system in general. The people who decided that X users could pick their own window manager created a situation where there were many, many window managers to choose from; "they were smoking crack."
    So what's he offering to do? Start "deciding policy" for us? Is this a thinly veiled excuse for heavy-handed GNOMification of existing apps like xscreensaver, rather than the more sensible solution of letting them be visible through GNOME?

    But the real problem, according to Miguel, is that the Unix approach does not lead to any sort of significant code reuse. A list of modern applications was presented; it included names like Netscape, Acrobat, FrameMaker, StarOffice, and others. The amount of code sharing between those applications was pointed out as being almost zero.
    Well, duh. Did he expect independent commercial software shops to share their code with each other?

    Miguel is an open admirer of how Microsoft does software development.
    Someone please tell me this is a belated April Fools joke!

    He goes on to make reasonably valid points about how "reusable components" are available under Windows. What he misses is that this puts other software shops completely at the mercy of the components' owner, Microsoft. Is he proposing a Unix where everyone is similarly dependent on GNOME's components?

    OK, GTK+ and Qt provide some nice reusable components. The advantages are obvious. I use them myself. So why is he dredging up all this irrelevant/clueless/scary stuff?

    I am a GNOME user, and often defend it when it is unfairly maligned, but I don't think I like the way this is headed. No, not at all. Hopefully he's just talking out his ass rather than presenting a carefully thought-out position.

    --
    --
    Sheesh, evil *and* a jerk. -- Jade
  17. The Solution is... A Monopoly! by Phaid · · Score: 5

    One of the main reasons Unix is so fragmented and inconsistent, which really is what he's complaining about, is that the whole system (kernel, libs, user interface) never been under a single entity's control. Someone above cited MacOS X as a great example of what Unix can become if it's done right. This is true -- it's easy to be consistent when a single entity controls every aspect of the platform. The problem is, that's not what most Linux users want.

    Where he is completely wrong is his claim that Unix is no longer a platform for innovation. He's got that completely backwards -- indeed, the whole reason for the inconsistency of user interfaces is the very openness and relative simplicity of Unix. Each layer is separate from the next, so it's easy to write a new GUI system on top of the OS without changing any of the underlying layers. And people have done just that, which has led to several generations of X and other apps lying around (Xaw, Motif, OffiX, etc) -- people see a problem with the existing GUI and they reinvent the wheel, leading to a proliferation of incompatible interfaces.

    Hmm, just like KDE and Gnome.

    The upshot is, because it's open, we have a choice. And choice can lead to inconsistency. So if he wants to work on a platform where everything will always be consistent, he can go work for Apple or Microsoft. Otherwise, he'll just have to make Gnome so good that no one will want to use anything else, because there isn't any way to shove things down people's throats in the *nix world.

    And that's a Good Thing (tm).

  18. Balance is Key by CountZer0 · · Score: 5

    As a developer I refuse to link my applications with GNOME because it has taken a few good concepts and gone WAY overboard. GNOME initially seemed to be a set of developer guidelines to promote a common look-and-feel. A few "meta-widgets" were created on top of Gtk+ to promote this. (gnome-stock-this and gnome-stock-that)

    This was good. Then someone decided to go even further. More widgets where added. Many of these widgets should have been added at a low level (read Gtk+) but instead where added in at the GNOME level. Now you have widgets that depend on gnome-libs and a fairly incestious circle is starting to emerge where GNOME depends on GNOME and its getting so complicated that no developers I know are willing to shackle thier projects to the great beast that GNOME has become.

    Miguel and Co. can't see the forest for the trees. I recently ripped the GNOME out of GtkHTML and created CscHTML (http://www.cscmail.net/cschtml) Miguel and several of the other GNOME developers couldn't comprehend why anyone would do such a thing. They couldn't understand the need for a non-GNOME dependant HTML widget. They couldn't agree that a "Gtk Widget" (GtkHTML) shouldn't depend on GNOME. Circular dependancies are a bad thing. GNOME depends on Gtk. GtkHTML depends on GNOME. Chicken, Egg?

    Code re-use is a good thing in moderation. Not every hunk of code needs to be a re-usable object, and interdependancies can be bad if they get out of hand (which they clearly have in the case of GNOME) Miguel has stated many times that the dependancies in GNOME will only GROW as time goes on. He sees interdependancy as a wonderful thing, and is so hell bent on code re-use that he is turning GNOME into a huge monster of code that no one wants to link to because no one wants to depend on 20 or 30 different libs. GNOME needs to be split, some of its libs more appropriately belong in lower level widget sets (such as Gtk+) and some of its items should be stand alone utilities. Trim the fat from GNOME and maybe developers would start to use it again.

  19. Unix design philosophy by Chops · · Score: 5
    In my view, a lot of the things Miguel is talking about stem from people abandoning Unix's traditional lots-of-little-pieces philosophy just because what they're building is a GUI application. We need to go back to the shell-scripts-and-files analogy, instead of copying Windows' APIs-and-shared-libraries model.

    Think about it -- it's silly that GUI programs are calling something that looks "internal" to them to pop up a dialog box. They should be issuing a shell command, like 'dlgmsg "Your repartitioning is complete." -b OK'. Or 'dlgmsg "Do you want to purge your deleted messages?" -b Yes -b No'. /dev/proc/ is massively useful; why don't we have /dev/gui/? It seems to me that the whole Window Manager Bloating Wars came about because we chose to ignore the features of Unix that would have made it easy. Why do we have window handles instead of files (i.e. named pipes created by kde)? Why is changing a window's menus any more complex than 'menubar /dev/gui/win46 -m 0 File -mi 0 0 Open...'? Why is listening for window events harder than parsing /dev/gui/win46?

    I know it's a hell of a lot more complicated than that, of course, and I can see a lot of flaws and complications in the above... but hell, maybe the window manager should have to run as root anyway (sarcasm). Does anyone know of a project that tried to do something like this?