Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
X GUI

Ask Slashdot: Comparing the GUIs 539

Hanno asks: "It seems to me that some folks think that X is outdated and should be replaced. I know of the Berlin project and the announcement of Amiga to use the Linux kernel seems to be another candidate of a non-X windowing system (if the new Amiga is ever to happen). I wonder about the reasons. With this question, I don't want to start a discussion if X should be replaced or not, but I only want to find out what's bad about it and where other solutions are better. And I don't want folks to simply bash X, just some solid, technical reasoning. Which other windowing system (on which other operating systems) are out there and what are their pros/cons compared to X?" All I ask is that you folks PLEASE restrain from the rampant advocacy. I think this is a good question that might start a thought provoking discussions. Have at it.
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Comparing the GUIs

Comments Filter:
  • GTK accesses X via GDK, which can be rewritten.

    How IMLIB interfaces with X I dont know, I expect it has some direct connections to help speed the process.

    QT is availible for other operating systems, so rewriting it for another windowing system should be easy
  • I assume he means that anything selected automatically goes into the primary paste buffer, to be pasted via ctl-ins (usually) or the middle mouse button.
  • XFree requires practically nothing. They don't have to comply with the X standard : they just choose to do so.
  • There are some points you make that are good. There are other points that are either lies or stupidity.

    1) Bullshit. Anyone can join XFree86, who wield substantial influence.

    2) X consortium tried to make X11R6.4 proprietary. They failed. Want to know why? Because they didn't want XFree to fork their own release, as they knew that everyone would just ignore the X consortium.

    5) and 7) (which are the same point, really).

    It will be as hard to push Berlin onto unwilling users as it is to push gtk+ / QT / whatever onto unwilling users.

    Yes, you are biased on the subject. Please stop spreading lies about X.

  • Anyone know WHY X feels slower?

    IMHO X feels slow because you can see separate widgets being redrawn in cases when Windows does double-buffering that works simultaneously on multiple widgets in the same window. Redraw time may be the same, but looking at static picture that changes at once makes it feel that the whole process happened faster.

    In my case i have not much use for network transparency, and pcanywhere appears to do this much better anyway without the transparancy.

    This happens because you use relatively high-latency or slow network without lbxproxy or compressed ssh X forwarding.

  • 11 is not a version number.

    /usr/X11R6/include/X11/X.h:

    #define X_PROTOCOL 11 /* current protocol version */
    #define X_PROTOCOL_REVISION 0 /* current minor version */

  • If I remotely start Applix-UNIX on a SUN it runs faster than a remote Applix-NT. Whether this is just my imagination or real, I dunno. I don't think this is important anyway, since it's always subjectivity that counts.

    Most likely you run it over low-latency line, forwarded over ssh X proxy in compressed mode while other have high-latency line and no proxies.

  • When I first began using X, I found it to be ugly and difficult to use. As it turns out, I had unfairly prejudged it, because they were the applications that were ugly and difficult to use.

    When you say folks think that X is outdated and should be replaced, that doesn't really say anything about what's wrong with it. Yes, X is very old, in computing terms, but I think its longevity has proven something about its incredible capability. Not to mention, nice projects like GNOME and KDE have definitely alleviated the ``ugly and difficult to use'' situation.

    Despite any problems I've ever had with X, all that goes away when I start a remote KDE session on my Windows box using the MicroImages X server. The whole remote display thing is pure genius as far as I'm concerned. And using Xnest to get a session on another box is just rockin'. I don't even know about another windowing system that can do anything like this. If there is, I'd like to see it.

  • X has never looked better. We already have two excellent desktops, window managers that cater for just about everyone's tastes and are soon to get an OpenGL DRI and Xinerama.

    While it is a pity that X still lacks alpha channel and anti-aliased font support in the server, there is no reason that this cannot be added because X is fully Open Source. It also has the distinct advantage over its "challengers" in that it is not just vapor :)
  • There's an old saying:

    "X is the second worst window system ever invented.
    Everything else is tied for first."

    How true that is!
  • Posted by Nr9:

    bwhahahhaha
    NT has MDI applications
    ahahhahahhaah
    MDI microsoft invented MDI
    i hate MDI. don't u hate it when ure running a word processor and typing in two documents and can't have a web page on top of the bottom document and typing from the top document?
  • One of my friends told me that that was an SGI machine and that they really do have a 3d fm for it...he wants to see one for Linux, matter of fact...


    Who am I?
    Why am here?
    Where is the chocolate?
  • Actually font aliasing blurs the font out, most often making it harder, not easier, to read (IMHO). It's helpful for lines, curves, etc. but definitely not for fonts. Unless you don't value your eyesight that is.

    Antialiasing doesn't sharpen anything. How can it? It's blurring it to make it smoother. And it's not a really trick of the human eye either. I've yet to see a computer graphics book that properly discusses the reasons for antialiasing. But a lot of that is because many CS types don't have a good background in Fourier analysis. The human eye, much like a monitor, is a point-sampling device. However, the human eye has much higher resolution than any monitor can hope to achieve. As a result, the lower sampling frequency of the monitor is visible as the so-called "jaggies" (high frequency transitions). Anti-aliasing attempts to reduce the impact of the jaggies by interpolating pixels to produce smoother (lower frequency) transitions graphically.
  • Unless they've changed their mind again, the new Amiga will be using X.

    You are correct, according to their recent technology brief Amiga is using X, and AFAIK they haven't changed their mind. This makes a lot of sense, and follows along with their plan to integrate existing technologies instead of reinventing everything.

    I suspect that the only Amiga specific additions will be a Workbench window manager and desktop environment, and probably a new gui toolkit as well. It will be interesting to see if they base their stuff on Qt/KDE or GTK+/Gnome, or if they do something new. There has to be something new and different in order to interest people enough to buy, and it's probably a safe bet that they're going to concentrate on the visible elements, and leave the "below the surface" stuff alone.

    TedC

  • The good bits of NeWS seems to be one of the design aims of the Berlin project. However, so far as doing it the right way is concerned, consider that they used 'Object Orientated Postscript'!!??
    John
  • There are a number of design flaws with X, though I think the commonly claimed ones are pure madeup nonsense. Here are some of the real ones.

    --

    1) X doesn't let you store "methods" on the server side. This means, for example, to draw a rounded box you have to draw 4 arcs and 4 lines. Need to draw another rounded box? That's another 8 drawing operations.

    More modern windowing systems (such as Display PostScript) let you store procedures/methods on the server. You can create a method DrawRoundBox which performs the 8 operations. Then you send only 1 command to draw rounded boxes.

    Server stored methods don't seem to be popular though. Probably because the server is far more complicated, needs far more ram, and in practice the overhead of the device independent language outweighs the benefits of reduced pipe traffic.

    2) X uses a client/server model. All instructions pass over a single pipe. This is often (correctly) accused of being X's most significant bottleneck for performance. But most people incorrectly think the solution is to throw the pipe away.

    However the pipe is only truly a hinderance when doing large bitblits, such as for games or doing an animation. The X pipe isn't a problem for any normal windowing operations (drawline, drawtext, createwindow) which constitute 99% of normal work.

    If you think about it, all systems need some way of synchronizing multiple client requests to the display, and a pipe does so neatly. No serious windowing system uses clientspace functions which directly modify the framebuffer!

    So the actual problem is how to keep the pipe but decrease the time spent copying pixmaps over this pipe. And remember, this is only for the benefit of programs which heavily blit the display (quake or xanim are perfect examples).

    MITSHM tried to solve the problem by letting you draw directly to pixmaps on the server's side of the pipe, but you still needed to copy that pixmap into the framebuffer. No good.

    DGA solves the problem by giving you full access to the framebuffer. You write directly to vidcard memory. There are no wasted copies. No problems with the pipe getting in the way. DGA wins.

    Take note that MacOS/Win32 (the components which can be compared to X11) work exactly like X, with queued messages to communicate between clients + display and a direct graphics access mode for any apps that need high speed unencumbered blits.

    3) Font handling in X is ancient. There isn't any way of arguing against this. X fonts were designed before scalable fonts gained popularity. Scaled fonts in X are a nasty hack onto a system which doesn't understand them.

    Font and cursors were also implemented as bitmaps instead of pixmaps. This means you get black/white fonts with no anti-aliasing against the background colour. It also means that cursors look ugly and have limited capabilities.

    The only solution here is to extend the protocol (ie start coding X12).

    4) X has tonnes of legacy baggage. This can't be argued against either. XResources? Great idea, but don't seem to be used very much. XIntrinsics? Not a bad idea, no widget set seems to use them. XPrt? Exactly the same as GDI or QuickDraw printing, but nobody in the X world wants to use it. Support for DECNET? Throw away that baggage!

    --

    New extensions to X are fixing problems that have been caused by advancing hardware. DRI, XKB and Xv are all perfect examples of new advances in X that have loads of functionality and in some ways have been implemented better than commercial windowing system alternatives.

    Most of the problems in X are honestly a problem with users and developers, or people's failure to understand that the X way of solving a problem is no worse than competing windowing systems. A good example of people not understanding the problem and the solution is evidenced by the neverending complaints against the X client/server pipe.
  • I could be talking out of my ass here, but I believe the icons are actually 48x48. Of course, the screenshot link was bad, so I couldnt check for sure... I do know that a lot of mac users were bitching over the initial rhapsody stuff when they found out NeXTStep/OpenStep/Rhapsody used 48x48 icons rather than the 32x32 icons of traditional MacOS.
  • Damn... and I was so particular to NOT use the term "X Windows" in the body of my text too. Gotta watch that, too easy to slip in it.

    --
    rickf@transpect.SPAM-B-GONE.net (remove the SPAM-B-GONE bit)
  • X eats bandwidth for breakfast...sends lotsa primitives
  • Hrm...about Netscape...I use Netscape with an XFree server and notice no problems when scrolling. What kinda card are you using?

    15 toolkits to run *8* apps? Is this New Math???

    I use apps from different toolkits, and they're all pretty consistENT, but that's because the toolkits all mimic Motif. (Ever heard of it? :^)

    I'd personally like to see the Windows machine that can run flawlessly for 8 hours :^)

    Are you a Microsoft troll or what? ;^)
  • 'Nuff said. :^)

    Actually, no...with XDPC ( I think that's the name) X over a dialup line is quite bearable...try doing much of anything over a dialup using VNC 8-P
  • We're not talking Linux, we're talking X. While we're at it we're talking advantages, not selling points. :^P

    Quite frankly, it amuses me that, all told, despite the fact that EVERY connection to an X server is a network connection (even if the client is on the same machine) that benchmarks are comparable to Windoze systems.

    I love the fact that X doesn't seem to be too much of a bottleneck for projects such as, say, Wine. I'd say, given more development (hint, hint, developers looking for a challenge :^) that Wine on X could blow the doors off of Windows.
  • Looks like D11 is actually a proposal for an X11 replacement, but I'll bite...

    Would this be possible, what the original author of the post proposes? Would it be possible to add a special case for "localhost"? I've always wondered about this. I know that some of the paleolithic "network computers" used some kind of special localhost-only X server; perhaps something like this could be done...

    Just idle ramblings.
  • XF86Setup is part of XFree86, not part of FreeBSD. I use it on Linux all the time.
  • Confusing user interface

    X doesn't have anything to do with a user interface, it's a display server. I fail to see the point. Separating the mechanism of display from the things displayed is a *good thing*.

    Too much versatility, leading to overly complex or impossible interprogram communication: "cut-and-paste never works properly with X (unless you are cutting and pasting straight ASCII text)

    I agree, cut-and-paste with X is problematic. On the other hand, middle-button paste is way cool. :) I want to see that extended to more data types in the next X iteration..

    X is a non-extensible window server - in contrast to NeWS. X was based around the concept of a dumb graphical terminal, and it uses a lot of data to achieve that.

    I don't know much about NeWS, but:
    -> I like the iea of a fairly dumb display server. A display server just display :) Putting widget sets and stuff server-side, if that's what you're talking about, is kind of interesting. I'm not sure how I feel about it :)
    -> I'm not sure what you mean about non-extensible. That sounds like a problem with particular implementations -- there are various X extensions floating around (such as OpenGL, shared memory, and other things)

    X programs have lots of nasty user interface problems, including X configuration.

    That's an application problem, not X's fault.

    X has bad hardware support - This is out of place, isn't it?

    Sounds like a problem with particular implementations to me.

    X isn't device independent, or maybe has a limited graphical toolkit? "Drawing arcs is probably impossible in a portable fashion."

    They may be referring to colordepth handling, which is a definite problem.

    Other criticism I've heard that the X protocol should take advantage of the locality if the client and server are operating on the same machine. This only makes much sense to me if the cpu overhead in dealing with the network protocol is noticeable; being able to transparently work from another machine is too nifty to throw away.

    I really think this is a baseless comment -- I haven't heard any solid explanation of *how* X would 'take advantage of the locality'. Given that we have a client-server model, there must be a mechanism of communication; this is almost certain to be a stream protocol, and indeed X uses UNIX-domain sockets. These tend to be extremely efficient for almost everything; those programs that really need more bandwidth can use DGA or SHM. (even on a totally non-accelerated server -- fbdev -- SHM gave me a good framerate in the Myth2 demo)

    In general, I feel that the UNIX-hater-handbook folks are a lot of people who were frightened by sh as a child or something and now feel that their purpose in life is to make snide remarks about UNIXy systems without offering any real suggestions for improvements. Which I guess is why it's called 'the UNIX Hater's handbook'

    Daniel
  • No! No, no, no, no, no! This is the job of a printserver and a printing library (maybe the widget set) -- not, I repeat NOT the display server! The display server displays. The print server prints. The mail server mails. The foo server 'foo's. This is a Good Way to do things.

    Gnome's solution here is (IIRC) to make the drawing canvas support multiple targets, one of which is Postscript to be sent to the printer.

    That said, print support in Linux sucks. :) But it's not X's fault.

    Dnaiel
  • Um, this has absolutely nothing to do with X itself. X just draws what programs tell it to, if they don't tell it to draw menus when the user clicks that's their problem. You want more integration between the WM and the programs.

    Daniel
  • HOWEVER X really doesn't "feel" as fast as my win95A partition (needed for school) on my computer. The mouse seems sluggish and jerky (very much like when playing 8 player starcraft on it (p120)).
    Anyone know WHY X feels slower?

    Probably because X is just a normal process, while the Win95 GUI is partially integrated into the kernel. This means, in particular, that the mouse doesn't move until X is allowed to read from /dev/mouse. I think reaction time to mouse clicks is no more in X than in Windows, but the mouse seems like it's moving more slowly.

    In my case i have not much use for network transparency, and pcanywhere appears to do this much better anyway without the transparancy.

    As I keep pointing out -- given a client-server architecture, no-one has suggested out a realistic alternative to some sort of stream protocol to communicate between them. UNIX sockets are extremely efficient for most cases, and SHM is available for things (ie, big pixmaps) which need more bandwidth. Once you have one stream protocol, though, you can generally support TCP with a trivial code change (most operations have the same semantics on any socket-based connection). The small bit of extra code won't be loaded into memory if you don't use TCP so it's not a loss that way. In other words, network transparency really doesn't hurt a local-machine situation much. Now, you can argue about what is transmitted over the network (some people think the display should be abstracted at the widget level..I don't, but..) but network transparency itself is a Very Good Thing. [tm]

    Also, i think it would be a good idea to wait for V4 to come out before we switch to a faster windowing system.

    AFAIK, X is currently at Version 11, Revision 6. (hence X11R6) So you're a little late :)

    Daniel
  • by starting over again with hardware acceleration on every drawing function and modern programming techniques like multithreading and message queues,
    The only thing I can see helping them is multithreading..message queues, AFAIK, aren't much different performance-wise than pipes/sockets like X uses and probably are worse than SHM (although I'm sure Berlin supports SHM) -- and I believe X can already hardware-accelerate everything if it chooses, no? (yes, I don't fit your criterion for replying, but the thing about message queues was too much :) )

    BTW, how is Berlin coming? Last I heard there was celebration because they'd gotten it to draw two overlapping triangles on the screen or something.. :-/

    Daniel
  • 2. Device transparency which has true WYSIWYG support for all devices. The code which talks with the screen should also be able to talk with my printer, plotter, network, etc. What I display on one device must look the same on another device within the bounds of that device's capabilities.

    I think this should be the job of some document-rendering engine (like GnomeCanvas) rather than the windowing system. X is just a server to draw on the screen. Trying to make it replace lpd is a Bad Idea..

    Daniel
  • It's worth noticing that the network model IS being worked on in X4, with the Direct Rendering Infrastructure (Interface? I've forgotten already.)

    Wow, I must be really advanced..I seem to be running X11 here.. :)

    We have QT and the GTK, and Motif, and some other toolkits, but there's no unifying conceptual interface.

    Whether this is good or not, this soapbox is (or should be) totally irrelevant to X itself. X's strength is its simplicity: it draws stuff. This is a fundamental concept in UNIX: make small, specific but general within a specific area, and powerful tools. If X is to be replaced it should be with another general-purpose display server, not something which thinks that the only thing you want to draw is a button.

    Daniel
  • ) X doesn't let you store "methods" on the server side. This means, for example, to draw a rounded box you have to draw 4 arcs and 4 lines. Need to draw another rounded box? That's another 8 drawing operations.

    I like this idea. Let's do it in Guile :) *ducks*

    No, we'd need a simple language (like the pseudo-assembly used for Mac SCSI) that can go into the X protocol..sounds like a great idea for X12..

    2) X uses a client/server model. All instructions pass over a single pipe. This is often (correctly) accused of being X's most significant bottleneck for performance. But most people incorrectly think the solution is to throw the pipe away.

    However the pipe is only truly a hinderance when doing large bitblits, such as for games or doing an animation. The X pipe isn't a problem for any normal windowing operations (drawline, drawtext, createwindow) which constitute 99% of normal work.


    Thank you!! I've been yelling myself blue trying to explain this to idiots who think network-transparency explains the 'slowness' of X..

    MITSHM tried to solve the problem by letting you draw directly to pixmaps on the server's side of the pipe, but you still needed to copy that pixmap into the framebuffer.
    No good.

    DGA solves the problem by giving you full access to the framebuffer. You write directly to vidcard memory. There are no wasted copies. No problems with the pipe getting in the way. DGA wins.


    I disagree. Both are good in different circumstances. MITSHM, while actually adequate for games, is best for window-managers, graphics programs, and other systems that just want to display pixmaps. These programs don't need to be suid root or writing directly to display memory -- in fact, doing so would be a security and stability risk. SHM is a good comprimise for these. Games, on the other hand, would do well to use DGA.

    Also, you forgot a third option: server-side pixmaps (in fact I think many window-managers and so on may use this..but I know Imlib at least uses shm) These work well, even over a network, for many programs -- especially games whose graphics are built using tiles (Freeciv for example :) )

    3) Font handling in X is ancient. There isn't any way of arguing against this. X fonts were designed before scalable fonts gained popularity. Scaled fonts in X are a nasty hack onto a system which doesn't understand them.

    Absolutely.

    New extensions to X are fixing problems that have been caused by advancing hardware. DRI, XKB and Xv are all perfect examples of new advances in X that have loads of functionality and in some ways have been implemented better than commercial windowing system alternatives.

    I still haven't worked out how to use XKB/Xinput yet.. :-/


    Most of the problems in X are honestly a problem with users and developers, or people's failure to understand that the X way of solving a problem is no worse than competing windowing systems. A good example of people not understanding the problem and the solution is evidenced by the neverending complaints against the X client/server pipe.


    <AOL>I agree</AOL>

    Daniel
  • No sound support in X stream. I can export my display to a remote machine and work great from there -- until I want to do audio/input or output. Then my sounds comes out halfway across the universe. Great.
    X is a display server. It shouldn't be in the job of playing sounds. You need a sound server (NAS, rplay, ESD, ...)

    No 3D support. You can graft OpenGL on top of X, but then you've got this kludge with two APIs. The OpenGL API has nothing in common in the Xlib API. Weird. This should be unified.
    No! OpenGL's strength is that it code for it can run on many systems. For example, it can be integrated into X..or Win32..or BeOS..or Hurd (well, not yet)..or..or..

    Gross design. Does the protocol *really* need that many things in it? Can't we abstract some of that into a higher layer? Ugh.

    My impression is that it is intentionally general-purpose and low-level; it's a protocol for drawing on the screen. Widget sets are for higher-level operations. (there are some interesting ideas of 'widget servers'..berlin being the most obvious one..but I don't think you can cut out the low-level stuff without hampering the client's ability to decide what to do)

    Daniel
  • [compression snipped..it would be a good thing although it's not critical]

    And from what I hear other people saying about the protocol, there is some room for simplification.

    I'm generally careful about what I hear people saying..there are always people who dislike a system and then come up with explanations. (not that that's necessarily the case here, but in general :) )

    Efficiency. The protocol needs to make better use of information already sent. Invalidate-areas would be great. Additional primitives to do basic stuff like BitBlt could help things along.
    Maybe I'm confused, but Expose events already give the exposed area and there is a pixmap-copy operation unless I miss my mark..

    Common controls aka widgets. You shouldn't need a toolkit to draw the standard user interface. There is a lot to be said for a few simple controls built into the standard. (This might be a "layer" issue--do they go in the window manager, the toolkit, or the GUI?) I think widgets belong in the GUI so every programmer can depend on them being there. I've seen 10 different shapes of buttons, 3 major types of scroll bars, etc. etc. Make it standard, so the programmer doesn't have to worry about it, and the user understands what they see!

    Repeat after me:

    X IS NOT A GUI!
    X IS NOT A GUI!
    X IS NOT A GUI!

    X just draws stuff on the display. Agnosticism about GUI style is one of the things that makes it so flexible.

    Daniel
  • Excuse me, but this is completely irrelevant. X is a network display system and has nothing to do with your sound card. NOTHING! If you want a network sound server that's great and I think it's a worthy goal, but it is not a deficiency in the X server that it doesn't have a sound server welded to it. If nothing else, people using text-mode or other windowing environments might want sound as well!

    Daniel
  • (I'm using traditional, rather than X notions of client and server)

    Um. A server is something which accepts connections, takes requests, and Does Stuff (possibly returning information to the client). This is exactly how X works: a client conencts to the server, requests that the server do things for it (in this case, draw on the screen), and the server does it. There's nothing backwards about this at all.

    Daniel
  • This has nothing to do with X. X just displays stuff on the screen. Saving state is the job of the client libraries/session manager. (none of which work right but that's a separate argument)

    Daniel
  • X is, currently, pretty much as you say, "a network [video] display system". But it's also the core piece of software for user interfaces. Audio I/O is an important component of the computeruser I/O interface. And it's only natural that X should be extended to be a truly multimedia display system.

    No. That's Windows thinking :) The only benefit of putting audio into X is that you could easily coordinate audio and video. This is something that should be addressed, but putting audio in X is a nasty kludge; some sort of general way to synchronize X with other systems is a better way to do things IMO. Small discrete systems are more correct, and a more correct system is more user-friendly *in the long term* because of flexibility and stability even if a hack will be better in the short-term.

    And I still want to be able to play audio from another machine without running X. :)

    Daniel
  • I haven't had a chance to see the shared memory or OpenGL extensions; I heard that extensions have to be compiled in and I postponed it indefinitely.

    Which distribution are you using? I think Debian ships them either as modules or compiled in (I think XFree doesn't support modules yet so they're probably compiled in)

    Hardware acceleration/locality: Playing Quake2 over 10baseT is awkward; that's an area where client/server could definitely use an intelligent terminal, and avoiding streaming over a socket if possible (yes, bypass client/server entirely). It's a bit of an extreme, I know, but video and games should be no challenge whatsoever for Linux and X.
    Video and games can use OpenGL, SHM, DGA, etc to bypass the usual mechanisms. SHM and DGA speed up blitting on the local machine; OpenGL (as you know) provides a graphics-drawing interface with much support for hardware accel. The really nice thing about OpenGL is that (er, I think) it can actually (!) be run network-transparently; I don't know exactly what sort of performance you get with (eg) Quake but some modeling programs at Brown run quite nicely over the LAN.

    I have been wondering how multimedia (specifically, video) can be added to Linux and X. Streamlining seems necessary to me; a video extension, perhaps? Or a window manager (see NeWS) that handles different protocols? Or would you guess that shared memory can handle these efficiently? I just want to see the multimedia capabilities of Amiga added to Linux, and I'm curious about what is preventing that.

    I think that things like DGA/SHM and DRI can help a lot. Since with DGA you're basically writing to video memory directly, you can't speed up much more than that :) (although this doesn't work in a window) I don't know how DRI works; SHM needs at least two copys (app to SHM segment, SHM segment to display). I'm not sure you can really do much more (someone could correct me of course :) ) without jeopardizing the stability/security of the system. (non-exclusive direct writes to video memory are really dangerous)

    Daniel
  • It wastes some. It goes as much as 5 to 10% slower because of it.
    That is about it.

    Ha! Try ``an order of magnitude.'' Where did you get this idea?


    For that matter, where did *you* get *this* idea? Have you benchmarked?

    Further, exactly what do you mean? I agree that communication speed may decrease by quite a bit, but that's not directly correlated to *display* speed. Individual pixel operations are slow, Quake shouldn't use the X pipe. That's obvious. It's slightly less obvious that this is a significant problem for other programs. Sockets are slightly slower than direct memory copy, but unless the video card is *really* fast I suspect the time spent servicing a request far exceeds the time spent in the request. (I haven't benchmarked this either)
    Finally, it is my observation after using it that X is not an 'order of magnitude' slower than other display systems -- at worst, 5-10% is a reasonable estimate.

    Do you have a constructive suggestion for improvement or are you just getting a kick out of making snide remarks? Having a well-known email address doesn't mean you can simply make insinuating remarks with no explanation to back them up.

    Daniel
  • WindowMaker- Quick, feels light and stable. Just not that flexable. For instance, you can't maximize a window to full screen and then back to a small window. It just doesn't have the features of GNOME or KDE.

    Actually, you can do that. You can also hide all windows associated with a program, something incredibly useful that I haven't seen anywhere else. The dock is also pretty cool -- it's similar to the panels. WindowMaker also has Gnome-compliance; in fact I have Gnome panels hanging around on my screen right now :) I switched to Enlightenment for a while, but it didn't seem as solid, either in terms of widget layout/animation, design, or features. WindowMaker's themability is enough for me.

    Daniel
  • I actually like this..it drives me crazy to have to go and select paste. On the other hand, it is sometimes a nuisance the way X does it too. I wouldn't say 'dated' as much as 'different'.

    I think it would be nice if support for both mechanisms could be added, but that's nontrivial..

    Daniel
  • Within the next year, there will be a new, large base of non-X Unix applications for Mac OS X. Everybody that writes Mac software will be porting their code to Carbon (think of it as the Mac Toolbox, take II). A lot of people will also write write new applications with OpenStep--er, Yellow Box--er, "Cocoa".

    GNUstep [gnustep.org] is almost to the point where serious OpenStep porting and debugging can take place. (The text system is in flux right now; when that's over, I think it'll be ready.) This means that people writing new Macintosh applications will have a relatively easy time also targeting Linux; Macintosh software developers are the best in the industry when it comes to building usable, consistent interfaces to high-quality end-user applications. (Hey, I'm allowed a little egotism, aren't I?)

    What's my point with all of this? It means that X isn't necessarily as entrenched as you think it is. GNUstep runs on X right now, sure, but it could also be made to run on a sane display subsystem without affecting application-level code. So the situation isn't quite as hopeless as it seems.

    My prediction: If there is half as much effort put into Display GhostScript and GNUstep as there is being dumped into XFree86 and GTK and GNOME and Qt and KDE right now, X can be put on life support within two years. And there'll be a resolution-independent, device-independent, network-transparent window system with a sizable base of consistent first-tier end-user applications and a very elegant programming interface to show for it.

  • The only reason I suggest Display GhostScript is because it's most of the way done (from what I gather it still needs a good amount of display-oriented functionality work and a lot of optimization, but at least the rendering code is complete and works well) and it implements the PostScript imaging model. I think the latter is the important part.

    Most of the time in OpenStep application development you don't need to write real PostScript code. If you do need to do drawing, you call functions like PSmoveto() and PSlineto() that send messages to the DPS server. You can also write "pswraps" -- PostScript procedures that get compiled into a chunk of code that you can call from C, which when invoked send the whole chunk to the server at once. (This can improve performance because you reduce the number of round trips/context switches required.)

    In Mac OS X, because it uses Quartz rather than Display PostScript, the PSxxx() routines should still be usable but pswraps are going away.

    Incidentally, one of the reasons Apple is dumping DPS (besides Adobe's outrageous licensing fees) is to get better performance. They're doing this by making most of Quartz a client-side library that draws directly to the screen (or the backing store). They say they're leaving hooks in so remote display can be added back later; of course, some people are freaking out about that, but IMHO Apple has their head on straight. Optimize the common case, make the uncommon case possible.

  • The trap you point out though is so easy to fall into that you fall in yourself. "Mechanism not Policy" isn't a fault of X, it was the feature that made it possible to become a standard!

    X? A standard? What planet do you live on?

    There are two standard graphical interfaces in the personal computer industry. The Macintosh interface is the one every other interface tries to be, and the Windows interface is the one most people use. X isn't even on the radar.

    (And yes I know there are people who will insist that it isn't X that's the interface, it's KDE, or GNOME, or CDE, or some other crap. They can bite me. X refers to the whole ball of wax now, no way around it, no matter how much semantic BS you try to invoke.)

  • I'm glad to hear that.

    The last time I mentioned something about Berlin and its strong linux ties, I was told that all the commercial Unicies are gonna fall by the wayside and only Linux mattered.
  • This is all IMHO:

    • Over-reliance on bitmaps.

      This is the root cause of the no-anti-aliased fonts problem. Since a lot of the primitive Server-side objects are bitmaps, including fonts, they can't be extended once better ideas come along.

    • Context switch on all drawing apps.

      Since you have to tell the X-server what to do even in the local case any drawing requires a context switch. Not doing things synchronously helps, but the answer is that the Xlibs should be able to do some of the drawing directly. I believe that this is a partial goal of XFree86-4.0, but I'm not sure.

    • Lousy color handling. IMHO X's replacement should ONLY support 24bit color. Let the server decide how to draw 24bit colors on a 256-color display, not the app. This might cause problems with graphical programs, but would be a better interface for the vast majority of apps.

    • Primitives are too low level. Higher level primitives allow the X server more optimization opportunities with fast video cards.

    • Wonderfull usefull cruft that is no longer used, like the stuff that supports resedit.

    • <FLAMEBAIT>No sound support!</FLAMEBAIT>

      Seriously, that's not an X issue but a clean networked sound standard would be a good thing. Especially one that allows dynamic mixing.

    That should do it for me...

    Doug

  • There is definitely a lot of mileage variation there. I'm a lot more productive on my Indy (running fvwm2 rather than 4Dwm) than on my NT box with four times the horsepower.

    The NT interface is great for its emetic properties, though.


  • Java is kin to DPS, and XML is becoming second cousin.

    What in the world do you mean by this?

    Genuinely curious,--Q
    Beer recipe: free! #Source
    Cold pints: $2 #Product

  • If you haven't already read this, you should, especially if you think that X is the great god. (Yes, I'm talking to all the Linux twinks in the audience)

    UNIXUX: click on the cursor [catalog.com]

    The X-Windows Disaster [catalog.com]

  • This is an X extension that is supposed to speed up the protocol for slower links. It works by running a remote proxy daemon (lbxproxy) and then having all the remote X programs on that machine connect to the proxy (by changing DISPLAY). Has anyone tried it?

    The reason I am asking as I proposed this as a possible bypass to a complex remote Citrix setup at work, but it doesn't seem to be available on the target Sun machine(s) (where the X applications live) - and so I never had a chance to try it out...
    --

  • PM had numerous technical problems, the SIQ
    being most notable. Most of the good parts
    of PM were very high level, and could be
    done by a well-written window manager.
  • 1) Better network transparency -- something akin
    to ssh should be built-in, except modified
    so a single channel can transparently
    have new applications connected through
    without needing to do it via the shell
    on the other end. This would eliminate
    the need to ssh multiple times. Ideally,
    the connection would be handled by a
    library instead of a terminal application.
    Also, ideally sound would be handled by
    the same mechanism.
    2) Window Manager agnosticism -- We've all gotten
    too used to our favorite window managers
    to move to a single one, no matter how
    wonderful it might be.
    3) Ideally, more of the frontend of applications
    would be run on the client, to minimize
    communication. This could be accomplished
    a number of ways, but a simple way would
    be to have multiple application modes, one
    of which would tell the client (I'm using
    traditional, rather than X notions of
    client and server) where widgets are and
    only generate events when the mouse is
    over the widget. Several other modes for
    different kinds of programs would be
    needed (consider Xeyes)
    3) Automatic dithering and a single color API that
    acts like truecolor.
    4) A way to nicely disconnect a running
    program's GUI from one client and then
    resume it elsewhere (to some degree this
    relies on #3)
  • What I meant was I was using client to mean where
    the user is at, and server to mean the other
    place :)
  • by jonabbey ( 2498 )

    What an excellent suggestion.. it seems like the best way to get to a better place would be to extend X to X12 and include a more rational color and font system, and to include audio, and retain X11 compatibility for existing apps (an absolute must, really.

    No, this won't get rid of X bloat, but it will allow programs written to GTK/QT to have a better substrate to operate on. Of course, high-color displays and the sort of stuff coming in XFree86 4.0 is already going a long way towards a better tomorrow..

  • No, it's not entirely X's fault, but X doesn't lift a finger to help. Windows and Mac both have a common graphics model for printing and on-screen imaging, and it's silly that X has nothing similar. Yes, you can go up the chain to GTK for this, which is good enough, but it's silly that we've had to wait 12 years to get libraries that will allow on-screen display and printing.

    It wouldn't hurt my feelings at all to have a display model based on PostScript or PDF or something sane, but junking X totally is not an option. If we depend on GTK for a high-quality imaging model, though, that means that a lot of the rendering decisions will be made on the wrong side of the client-server pipe. Java 2 does this, and it lets you have a nice and powerful and consistent rendering model cross-platform, but performance on X sucks beans because the X server is basically acting as a dumb framebuffer for pixel-level operations.

    That just doesn't cut it. There should be a rich drawing model that can be effectively supported by the rendering server and which can be retargeted in library code to PostScript or any other printer imaging language.

    I wouldn't mind seeing Java 2's imaging model made part of a next-generation X protocol, but I don't know whether everyone has enough experience with Java 2 and whether its Graphics2d model has stabilized enough to re-implement it with pixel-precision in C for a graphics system.

    If Java2's Graphics2d model was stable enough, and if the ownership terms could be worked out, I'd love to see Java2's model supported on an X type server.. would speed Java code greatly, and would provide a rich and powerful (PostScript-level) imaging model.

  • It's been 5 years since I've done any Xlib/Xt coding, but the biggest problem I remember is that the color model blows chunks on palletized displays.

    With Windows, each app indicates what colors it wants, and all graphics operations are done using a handle to the color returned by the graphics system. If another window is in front, the windows rendering layer will automatically dither and/or approximate colors in the background app to maximize color fidelity using the common color map. A similar process is done on the Mac, I believe, with dithering and approximation done for the coder by the graphics layer.

    X Windows is different. With X, a program on a palletized display allocates color cells which come straight out of the hardware palette. When a program asks for RGB FFF083, it will get back a simple integer, '5'. From that point on, all rendering done by the program is done using color 5. If the 256 colors are exhausted, the system may try to return color '16' if it is close enough to the requested color, but the system can't change how the program does its rendering behind the scene to give the front window a better color fidelity than the background windows.

    This is why Netscape users on 8bit displays are stuck between either running into color starvation extremely rapidly, or forcing the Netscape window to use its own color map, causing horrendous false-color flashing when the window is selected or de-selected.

    This problem may thankfully be a thing of the past with modern video cards, but it was always one of the big ugly achilles heels of X. The Athena widget set, font system, and Xt resource complexity were the others, but fortunately we're finally getting away from Xt and all that ilk.

  • Hmmm. It this a significant issue anymore? Since the broohaha where XFree nearly forked from the Open Group's standard, I've been wondering who really controls X. I'm not sure either group does at this point. But whatever. In any case, if there's some modification to X I want, I'd rather hear XFree is implementing it than the Open Group or whatever the frick they're called now. DRI will not remain an XFree86 specific extension unless there's really no need for it. If there's truly a need, it'll get adopted by others. If that happens, it'll be a sure sign that the torch really has been passed, and XFree is now in control. Which is good, because I don't think they *want* to be in control. What's the old saying? "Anyone who *wants* to be President should absolutely not be allowed to do the job."

    --

  • Of course we use get the XShm extension correctly, and have suitable fallbacks, but thats because we all rip off your xscreensaver code, Otherwise I'd still be in the dark.

    I don't suppose you feel like writing a simple app that uses all of the XShape extention features so that I can figure out how to use that one as well, coz that one has me beat entirely, the man pages and xc documentation on them are scanty to say the least,

    C.

  • What do you reckon about this D11 style of reducing or removing the dichotomy between client and server for the locahost situation, while retaining the networking for the remote situation ?

    This D11 [sgi.com] idea is a new one to me until i saw it posted here earlier.

    C.

  • by Roxy ( 2746 )
    Some of us uses laptops (like mine IBM 600E) that only has 2MB builtin vidoe memory. NON-upgradeable. And I like 1024*768. It doesn't help to change supplier either, as most laptops that can be carried only support 2MBs. Think before talking.
  • by acb ( 2797 )
    The problem with MacOS is that other than that, it sucks. The system itself was designed for use on tiny microcomputers, and retrofitted into a workstation role. There is no command line and no scriptability. The tangle of APIs and Managers grows more impenetrably dense by the day. Not to mention that the system is unstable (no memory protection, for example), inefficient and so different from everything else to make programming a nightmare.

    From an end-user point of view, it's very pretty, and better for most things than Windows 95. Look any deeper and you see its rotten guts.

    (I own a Mac and use MacOS, mostly for running various media applications. I've tried programming under it, and after UNIX, it's a pain, even with tools like CodeWarrior.)
  • by acb ( 2797 )
    Not to mention NeWS. Another client/server windowing system from the late 80s/early 90s. Only NeWS did things The Right Way. Rather than simply throwing dumb requests and responses back and forth, a client application could send Display PostScript code, which would live in the server and handle UI aspects.

    Of course, back in those dark, unenlightened days, Sun (the owners) either demanded exorbitant licencing fees for the technology or just refused to licence it, thinking that being the only ones with NeWS gave them an advantage. And so, sadly, NeWS died.

    The inventors of NeWS went on to create another client/server system, albeit one with a different scope. We know it as Java.
  • Have you ever programmed in PostScript? It's a remarkably elegant language.
  • Different name, same difference.

    X.Org Becomes X Technology Steward Industry consortium to guide the future of the X Window System

    Menlo Park, CA., May 12, 1999 - X.Org, a newly formed organization of The Open Group, has today become the official steward of the X Window System technology and the technical experts for the X Window System standards. Member companies include Compaq Computer Corporation, Hewlett-Packard Company, Hummingbird Communications Ltd., International Business Machines Corporation, SGI, Sun Microsystems Inc. and many others.


    --
  • As much as I respect Jamie, I beg to differ. The 'dubious feature' to remotely display lets me get my work done very effectively.

    As a sysadmin / app supporter my screen is littered with windows displayed from all manner of Unix hosts, and not all of them are xterms. It saves me countless hours of walking across the hall or campus.

    (I'm curious, what are those non-xterm tools?)

    The ability to admin machines remotely is obviously a great feature. But X decided that it was such an important feature that it had to be built into the window system at such a low level that local access pays the price: that is, that it was more important to be able to use the machine down the hall than to be able to use the machine on your desk!

    X could have been designed to be efficient locally, with remote access being possible but slow. It wasn't. It was designed in such a way that local and remote access are about equally slow (if you have a fast local network, which was another fundamental assumption of X.)

    In my view the remote display capability is one of the best assets that X has. Granted, it makes X a dog compared to other windowing systems

    Wouldn't it be better if remote access was a dog and local access was fast, instead of both being a dog? That's how other window systems do it.

    The idea that the way to do network transparency is to have the remote machine be the one tracking the mouse is just crazy. It would be far better for all GUIs to live locally, and for the on-the-wire activity to happen with some more domain-specific RPC, or other services.

    (Like, for example, through a web server. CGI is a great example of how to do remote operations while keeping UIs local, and doing it portably as well.)

    but that's why my desktop is an SGI. Their X server is as great as it gets.

    SGI has a great X server, and it's a credit to them that they made it go as fast as they did (I've never seen a better X server than SGI's.) But it's still ridiculously slow, given what their hardware is capable of! You only have to compare X performance to GL performance to see this.

  • What's XCopyArea there for?

    Guess what, Netscape doesn't (and can't) use XCopyArea for scrolling. Because that just moves bits, not subwindows (think form elements.) Netscape plays crazy tricks with window gravity to move all the windows at once, since the alternative (moving each subwindow by hand) is insanely slow.

    But probably the reason you see flicker isn't really X's fault, but is because the table redisplay code isn't great.

  • This means that people writing new Macintosh applications will have a relatively easy time also targeting Linux; [...] What's my point with all of this? It means that X isn't necessarily as entrenched as you think it is.

    I hope you're right; that would be a very good outcome.

    It does give me some hope that MacOS X is looking so Unixy, because people who have experience writing Macintosh applications just will not tolerate the kind of UI free-for-all that X brings to the party, so maybe they will actually do something about it.

    My prediction: If there is half as much effort put into Display GhostScript and GNUstep as there is being dumped into XFree86 and GTK and GNOME and Qt and KDE right now, X can be put on life support within two years. And there'll be a resolution-independent, device-independent, network-transparent window system with a sizable base of consistent first-tier end-user applications and a very elegant programming interface to show for it.

    I don't know about that; I don't think that rescuing all of those NeXTstep applications will really make that big an impact, given how marginal NeXT has always been in the market. It's a nice looking system, no doubt about that, but that doesn't mean it's ever going to catch on.

    I'm also somewhat dubious of Display PostScript. I've done a lot of PostScript hacking, and it's frankly a lousy language to program in. (It's a great page-description language, but these days I really believe it's more suited to use as an output format than to use as a language you would actually write code in, and debug.) Of course, I haven't actually hacked on a Display PostScript system, so maybe the DPS APIs are different enough to make it bearable. I don't know. Would someone who has hacked DPS care to comment? Do you end up actually writing PostScript code, or is that hidden behind the scenes somehow?

  • I guess my point is that for many apps real life performance is not as markedly affected as you'd guess based on the internal workings of the X protocol. In my pedestrian view that means X is mostly good enough to get work done.

    Well sure -- if what you're doing doesn't require high performance graphics, then the fact that X can't deliver high performance graphics doesn't much matter, right?

    It's certainly true that most applications don't require high performance graphics. But when you need it, you need it. And X can't deliver.

  • A Direct Rendering Interface is required, and with X 4.0 should be introduced, and should solve the speed problems without restricting the remote operation enjoyed by legacy X programs. The inclusion of the DRI should help solve a majority of the complaints heard about X's speed.

    This, of course, is The Way of X. Got a problem that people have been suffering from for ten years? Fix it by adding yet another new and optional API! So now all the applications writers get to code their graphics routines twice, with lots of runtime feature-checking. Have you ever written X code that made use of XSHM, the shared-memory extension? Did you do it in such a way that your program actually worked when the extension didn't exist? Are you sure? Did it still work when the extension existed on the server, but the server was on a different machine? Are you sure? (In my experience, 99% of the programs that try get it wrong.)

    This is no way to fix a bug. X's refusal to add required features to the protocol (SHAPE is still optional, for pete's sake!) makes life hell for application writers until the end of time. Or leaves users with applications that mostly work most of the time.

  • 2) Client Server Architecture. This means that we can have any number of Window Managers and switch among them at will. This is great becasue different people work differetly. What is efficient to you is ineficient to me, etc.

    The fact that the window manager is not built into the server really doesn't have much to do with the client/server model. In a Windows-like library world, the window manager could as easily be a pluggable DLL with the same effect, but without taking the X hit of all the context switches and network traffic.

  • One of these days he will come into the present. And maybe just maybe we'll get some constructive critisizem out of him.

    Nice words, coming from someone who's too chicken-shit to attach their name to them. Don's one of the smartest people I know. Who are you and what have you done?

  • there's just no reason to use a non 32-bit color depth. There's that one xscreensaver hack that uses palette shifting on 8-bit displays and is slow on other color depths... but that's the only advantage to 8bit color left, and there is no advantage to 16 bit color.

    Actually, quite a few of the xscreensaver hacks behave very differently on PseudoColor versus TrueColor: the difference will be that, when a colormap is available, the whole screen will be alive with motion, and when there is no colormap, the screen will be pretty much a static image. There are some things you just can't do fast without colormaps.

    Another reason for using 8-bit depth is speed: that's 1/4 as many bits that the server has to move around. You might expect that this wouldn't be a big deal, but it turns out that it is. The difference really is perceptible: there are a few hacks in xscreensaver (``compass'' comes to mind) that very obviously run 4x faster in 8-bit mode than in 24-bit mode. Sad but true.

    SGI got this right, of course, by having an X server that allows 8-bit-deep colormapped windows and 24-bit-deep non-colormapped windows to exist side by side on the same display. That way, each application can pick the color depth that is most appropriate to its task.

  • It wastes some. It goes as much as 5 to 10% slower because of it. That is about it.

    Ha! Try ``an order of magnitude.'' Where did you get this idea?

    However, the benefits are well worth it. Imagine all the recompile cycles needed if all the programs were dynamically linked to the server (like Windows does). Ouch...

    WTF? Do you recompile libc every time you compile your program? Are you aware of how libraries work?

  • You're absolutely correct that graphics can be accelerated tremendously by dumping the functions that get in the way of performance and running on the bare metal the way Windows does.

    I am most certainly not talking about ``dumping the functions that get in the way'' or ``running on the bare metal.'' There's a world of difference between having every application have hardware-specific knowlege; and having every application use proper high-level abstractions, but having the implementation of those abstractions not involve handshaking between multiple processes!

    It's a fundamental architectural decision: do you build a graphics system on top of an operating system or an operating system on top of a graphics system?

    What's this supposed to mean, besides being a dig against the fact that Windows doesn't have memory protection? I think you're confusing memory protection and the client-server model. Neither implies the other.

    The latter approach has screaming performance as long as the various clients play by the rules and respect each others' memory, screen, etc. space. By interposing networking and security functions between the layers, OTOH, the client-server approach buys stability, security, and portability at the expense of performance

    Maybe you don't realize this, but any X program can scribble on the windows of any other X program. Or even free resources allocated by other programs, causing them to get X errors and (usually) crash. It's not particularly easy to do this by accident, but X does nothing to prevent it (in fact, it's explicitly allowed.) Once you have a connection to the display, you have free reign.

    The client-server approach buys you nothing in terms of stability, security, or portability. Those are all orthogonal issues. All the client-server approach buys you is network-transparent graphics.

    Likewise, having an implementation that gives you in-process access to the frame buffer (and the ability to do graphics fast) does not imply lack of memory protection. Remember that these clients are still going to be doing their drawing through high-level APIs, and the implementation of those APIs can do whatever bounds checking is appropriate. The X server does such checks internally anyway -- in addition to all the IPC overhead.

  • Fonts under X were painful to use even by the standards of 1987 when X was introduced, and are just pathetic today.

    I agree, but...

    "-adobe-courier-bold-o-normal--12-120-75-75-m-70-i so8859-1"

    Ack! Even worse, this notation *has* to be used in X resource files and other preferences.

    "-*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-1"
    is actually what you should be using, if you want your resources to have a better chance of being portable from one machine to another. That X's font names are verbose doesn't mean you need to specify all those fields.

    But what they want is to be able to say "Switch from the Adobe font folder to Bitstream and redisplay", not the anal level of detail that X requires.

    X doesn't require that level of detail. However, neither does it make the operation you described easy. This is largely because there aren't a set of library routines for doing things like asking for a similarly-sized font in a different face, or the next-larger font size that is displayable and/or looks good.

    I'm sure lots of people have rolled their own solutions to this over the years. I did it once in emacs-lisp, and did it again twice for Netscape (which is on its third or fourth version of the font-selection code now, so if you still hate it, it's not my fault any more...)

    X's font management is lousy in many ways, but I don't think that its long font names are a problem.

  • Another note: if X is so dated and clunky, what about SGI? I thought that IRIX uses X. I can't envision a much better media OS! Maybe they know something I don't. Hopefully they will share :-)

    SGI uses X, and they have an X server that is insanely optimized for their hardware. On top of that, for anything that actually needs to go fast, they use GL instead of X. Basically, they use X to allocate a rectangle, and then X stays out of the way. The GL library then talks to the hardware directly, without a zillion context-switches in the way.

  • For that matter, where did *you* get *this* idea? Have you benchmarked?

    Further, exactly what do you mean? I agree that communication speed may decrease by quite a bit, but that's not directly correlated to *display* speed.

    I get that idea from having spent ten years trying to squeeze every drop of performance out of X programs as I can. The inefficiencies that the design of the X protocol forces on clients are just staggering! All the handshaking back and forth between the client and server (and associated context switches) adds up really quickly. I see it every day -- I see operations that are fast in every window system that preceeded X slowing X programs to a crawl, and because I know X inside and out, I understand why. It's no mystery to me, it's because of the fundamental design decisions that went into the X protocol on day 1.

    I have not done bechmarking, because I have had no reason to. I know X is slow, but I also know I'm stuck with it. However, if you want to try it out for yourself, try and do some simple 2D graphics that do double-buffering using Xlib. Now rewrite that same program using OpenGL (note that we're talking about 2D here, not 3D, no textures. Just line drawings.) Code both programs such that it replaces the image as quickly as it can, yet results in no perceptible flicker. Tell me which one runs faster. Here's a hint: it's the one that can touch the frame buffer in-process, rather than having to suck bits through a straw. (Use the joke of the X Double-Buffer extension if you like, and the XSHM extension. It won't help.)

    Individual pixel operations are slow, Quake shouldn't use the X pipe. That's obvious.

    Obvious, is it? So what you're saying is, ``Quake shouldn't use X.'' Which is to say, ``X is unsuitable for anything graphics-intensive.'' Which is my point.

    Sockets are slightly slower than direct memory copy, but unless the video card is *really* fast I suspect the time spent servicing a request far exceeds the time spent in the request.

    You're missing the point again. It's not just the fact that there's a pipe involved, it's the fact that there is synchronization between multiple processes: one writes, and flushes, and then some time later the other becomes runnable, and eventually gets around to reading from the pipe, then talking to the hardware, then writing a response, then flushing it, and eventually the first process becomes runnable again and...

    When window operations are involved, you often have to block waiting for answers from the window manager, resulting in a three-way cluster-fuck between the client, the server, and the WM. Oh, but isn't it great that they could be running on three different machines? Whatever.

    Do you have a constructive suggestion for improvement or are you just getting a kick out of making snide remarks?

    Ah, we've reached that point already I see. We always get here whenever the failings of X, Unix, or anything else Linux weenies hold dear are discussed: the fallacy that, before one has the right to point out a problem, one must have already handed the world the solution on a silver platter. Well guess what, the fact that we're stuck with X forever (because it is completely entrenched) does not mean that X has no problems, or that those problems are not severe. There appear to be some people, like you, who don't understand the extent of those problems, so don't bitch at me for pointing them out, ok?

    Having a well-known email address doesn't mean you can simply make insinuating remarks with no explanation to back them up.

    Bite me, fanboy.

  • X was designed in a server-client way, where X clients (the programs you run) talked to an X server (usually a display) through the X protocol stream. The stream went over internal pipes, or over IP, or what-have-you. It made it REALLY nice for remote operation, but is not well designed for local graphics rendering which is what most of today's software requires. A Direct Rendering Interface is required, and with X 4.0 should be introduced, and should solve the speed problems without restricting the remote operation enjoyed by legacy X programs. The inclusion of the DRI should help solve a majority of the complaints heard about X's speed.

    I've also heard a fair number of people complain about X's API and the basic toolkits (Xaw) and how ugly and kludgey they are, but that's what things like qt and gtk are for.

    --
    rickf@transpect.SPAM-B-GONE.net (remove the SPAM-B-GONE bit)

  • X's greatest strength is far andx away its configurability. Pair it with enlightenment, and you can almost literally draw an interface out on paper and have X look and feel that way.

    If it's possible to have too much of a good thing, though, this is it. X is great for configurability, but it goes too far. Without any sort of "standard" toolkit, window manager, or any such thing, there's no standard sort of interface on which a user can rely. This isn't saying that configurability isn't bad, it's saying that if you're going to make something configurable, you need to set defaults too. X doesn't do that. Consider the multitude of GUI toolkits, three or four drag-and-drop protocols (all of which are incompatible), four desktop environments which don't even share common API's on most things (meaning that support has to be written into an app four times if the author wants to support everyone), and so forth.

    X's major weakness, though, is its age. Now, old software isn't necessarily bad. It all depends on how far ahead the developers think. X's original developers thought ahead several years. Problem is, those years ended quite some time ago. Things like drag-and-drop, inter-application messaging, text antialiasing, support for TrueType fonts, and such never made it into X. They've come in since as bolt-on solutions, but these things are so vital to a modern GUI that they really ought to be rolled in (which you can't really do without shelling out obscene amounts of money).

    I don't know. XFree 4.0 appears to address some of these concerns. I'll still be giving Berlin a spin when it's usable, though, if only to see if it's a better system.
  • X is actually a really efficient protocol for what it does. Very sparse.

    As for remote apps.. X rules in this dept. I find that nothing can come close to X for performance. Things like pcanywhere, carbon copy, etc. have a noticeable lag. (caveat: every win32 Xserver i've tried is slow.. XFree86 on a 486-33/32MB is a magnitude faster than X on win32 on a P11-450).

    With X however is impossible to tell whether apps are remote or not. Also, X is perfectly feasible over 33.6k modems for simple Xt type apps (xterm, etc), and even complex apps if you use lbxproxy.

    I once ran Netscape 3.0 from a computer in scotland over the internet displayed to my computer in ireland (connected via 33.6k). Took a heck of a long time to draw (~5min), but from then on it was useable (with a little patience). And that was just plain X. I didn't even compress it with lbxproxy or ssh! Try that with anything else and you will not get anywhere.

    As for those who argue that "X needs this, and needs that, And that the fact that they weren't included means it must have beem badly designed": The intention was to provide a basic protocol, which could be easily extended, so it's meant to be like that by design.. want Direct rendering? -> extension. Owant penGL?->extension, DPS.. etc.. by design.
  • Specifically, I thought about the laptop sitting next to me as I posted, with 8MB video RAM. Granted, that's not as standard on new laptops as on new desktops, but it will be very soon. RAM (even the cool RAM your video card uses) is cheap and small - there's no reason not to use a ton of it.

    On the other hand, there are a lot of old laptops out there that aren't upgradable, at least not in the video chipset. If you can upgrade the system RAM (or have enough to begin with), running two X servers at once in different bit depths is a useful workaround. Depending on how you work, that may be less or more convenient than flipping desktop settings back and forth.
  • Ok, granted, font anti-aliasing would be nice and needs to be added (although current improvements in the existing renderers are visually helpful without antialiasing), even just as an extension for future applications.

    But is it really such a big inconvenience in this day and age to be unable to change color depths on the fly? Being able to go from 800x600x32 to 1152x768x8 (or whatever; I haven't done the math) might have been important when trying to balance out resolution vs. color depth on a 2MB video card... but every video card in every new computer or store shelf today will do 16 million colors in any resolution you please, and there's just no reason to use a non 32-bit color depth. There's that one xscreensaver hack that uses palette shifting on 8-bit displays and is slow on other color depths... but that's the only advantage to 8bit color left, and there is no advantage to 16 bit color.

    It costs $15 now to get a 4MB video card; $30 to get an 8MB card. Bring sandwiches to work for a week instead of buying lunch, and never worry about sub-par color again.
  • Many of the advantages that made X so powerful in "the day" may no longer apply. X has an extensive security mechanism that exists more or less to provide authentication/authorization in an insecure, networked environment (such as a bunch of X terminals connected to one app server). While this environment does still exist (primarily in university settings), "most" users of X only have a single display to work with and won't need the security considerations X offers.



    X tends to suffer from what I call "Win32APItis", a huge assortment of functions of dubious utility (it would be "GTKitis" if it weren't documented). Other projects, such as Berlin, seem to have learned this lesson -- it's possible to make an entire windowing system with the simplicity of a "regular" toolkit. Any step in the direction of a less stressful API is therefore a step towards unification of look-and-feel, since developers won't be compelled to write entirely new toolkits to scratch the itch of hating Xt/Xlib :)



    While some of the various extensions that X is now sporting (patches for TrueType support, GLX, and printing) are useful accessories, ultimately they reveal X's age. A lot of the features a modern GUI designer would like simply aren't that easy (or sometimes possible) to implement.



    All this isn't to say that we just need to chuck X in the garbage can and start supporting Berlin/GGI/whatever; I would prefer to see a thin (hah) Xlib wrapper on top of such projects, in parallel to ports of GDK or Qt or whatever people like. X has some very strong advantages, which should not be overlooked.
  • $ top

    PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
    391 root 12 0 38356 35M 2576 S 0 1.5 57.0 18:11 X

    That's 38 megs, 35 in core.

    I now await the standard blather about how "RAM is cheap" and how that justifies this astonishing bloat.
  • While it would be best to have some X experts like Raster or Mosfet comment on the subject, I think a few things are quite obvious to the end user.
    • X has similar backwards compatibility problems as Windows: There is support for many things like strange old font formats that are not necessary anymore. Often the code itself is quite old (pre-ANSI) and hard to read.
    • Lack of modularity: At least XFree is just a big junk of code that doesn't allow run-time modules to be loaded. Result: Bloat and little flexibility. Apparentlt XFree 4 will change this.
    • Lacks essential features like Anti-Aliasing, TrueType support requires additional software
    • Optimized for networking, not 'local' desktops: Performance critical apps like games or video need hacks that are either dangerous (suid root) or not available everywhere
    • For networking: Rather inefficient protocol, doesn't support compression (without proxie tools) or encryption of a session
    • 'Understandardized': No modern GUI toolkit included -> many different looks&feels, Motif as perceived 'de-facto' standard expensive and weak.
    • No component model: There is still no way to use e.g. CORBA and X-based components over a network, as there is no authentication mechanism available.
    • Implementation language and coding style: A lot of the code was written when there was no ANSI-C, let alone C++. So code is somewhat difficult to read and the object oriented nature of X is achieved only with a complex and fragile (=error-prone) construction in C.
    • Risk for stability: As X has direct acess to the hardware, it is as stability-critical as the kernel, for desktop users. Moreover, the kernel has no control over X memory management, and X doesn't 'shrink', so it's actually a kind of memory leak...

    Alternatives
    There is the GGI-Project, the Berlin consortium and Y. GGI is an abstraction layer for grafics programming, but relatively low-level (e.g.games). It serves as driver lib, can be partially controlled by the kernel (KGI) and can output to different "targets" like svga or X. It also serves as the basis for Berlin, a new windowing system using OpenGL, among other things. Don't know about Y.

    Hope that helps a bit
    Avus
  • I'd be curious as to the details of why this is a good idea. Sure it's cool, but for pretty much every serious job I can think of, a third dimension would just get in the way. The reason is simple: monitors are two dimensional. The trick is to use that space efficiently, and I don't see how adding a third dimension would help any.

    There are also control issues. How do I deal with these windows? Do you seriously want to have to do FPS-style moving around to move to a different app? Frankly, this would just be confusing. Please eleaborate as to where this would be useful.
  • I agree that X is a little cruddy. It is too thoroughly networked, so there's a fair amount of overhead in performing local operations. It also takes up a lot of RAM. Oh, and it has too much heritage behind it; it really was meant for black and white display, and color hacks atop it make code that supports multiple display depths a massive mess. Luckily toolkits can get rid of most of this pain, but still, if these toolkits could be ported to a new X, that would be neat.

    There are two X alternatives that I can think of besides the Berlin mentioned. One of them is The Y Window System [hungry.com], by the Hungry Programmers (specifically Christoph Toshok), which isn't very far along and as far as I can tell hasn't been worked on in a while (since about February 1998). It promotes the use of a single fixed depth, which I think is a bad idea. It does have some good ideas though, like a somewhat separate memory architecture. Download here [hungry.com].

    The other one, NanoGUI [linuxhacker.org], was originally developed by Alan Cox. It was designed with a lightweight memory footprint in mind. I'm not sure if it supports networked display, though, but I believe they're going to at least port VNC. It's being used on the new Linux7k project [calcaria.net], which is attempting to create a usable Linux system for the Psion 5 series palmtop (it uses an ARM7 [linux.org] processor). It seems to be undergoing active development. Download here [linuxhacker.org].

    So I hope that's a good starting point.

  • In response:

    1) There is no excuse for this one :)

    2) See #1

    3) Not true. There IS a lot of backwards compatibility because it DOES get used. X is not all that bloated, although a diet would improve things.

    4) If you want a speedier environment (#6) then this wouldn't help. Coding GUI's isn't hard in C, it's merely a matter of preference, and I'm sure many people will fight to the death to keep coding gui's in C.

    5) Standardization is a Bad Thing. The whole idea of X is to make something that interfaces witht the video drivers and provides only the very basic tools. Standardization of GUI's is beyond the scope of it. Use KDE or GNOME, this is what they're made for.

    6)Your card probably isn't supported very well. There are a variety of reasons for this. Netscape never flickers grey for me.. and my PC isn't exceptional, nor is my video card. Netscpae is a bad example anyways, since it isn't exactly a high-performance piece of software.

    7) This is where the windowmanager comes in. And the graphics toolkits. You can't blame X for the variety out there, and X shouldn't make one standard at the cost of hurting the others. GTK+ is making a bid these days for the default toolkit, and things like GNOME and KDE do somethign similar.

    Besides the X-consortium thing, your arguments miss the point.

    Probably the biggest complaint most people have is the client-server architecture, but there are benefits to this as well (in computer labs, etc..)
    which IMHO far outweigh any problems.

    Besides, it's not like opening a connection to your own computer is slow, and I remember hearing if X knows its working on the same computer it makes optimizations (but I am not sure on that.)

    Which dosen't mean the berlin project is bad. That's the spirit of open source operating systems like BSD and Linux, if you don't like what's out, write your own!


    - Paradox
    Man of the C!!!
    perl -e "print join q( ), split(q.z. ,reverse qq;):zrekcahzlrepzrehtonaztey; );"
  • The experience of using X is, in my opinion, far inferior to using windows or macos. It is the feel of it that always gets on my nerves.
    Using X, the mouse seems just a tiny bit less smooth and responsive than running windows on the same machine. Responsiveness to a click lags a little bit behind other systems, and for some reason a click does not always register. And yes, my video card IS supported, and my processor is a Pentium 350, my bus runs at 100mhz and I have 96MB of sdram, so I don't think the computer is the problem.
    The speed things are actually drawn at is usually way better than windows or mac, but responsiveness to the mouse and sometimes the keyboard is usually way worse. If X would just start feeling as smooth and responsive as other GUIs, I would be very happy with it, but right now it is frustrating.
  • I didn't mean that the mouse is too slow - it isn't.
    I think the best way to describe my experience with X is to compare it to that of using a cheap, POS mouse with a light, slipping ball bearing and defective buttons. Using windows, with the same mouse, feels like using an expensive, heavy mouse with a grippy ball and pad and precise, weighted buttons. I dunno, maybe it's just my computer.
  • Well, since you are biased, could you take those points and explain how Berlin has fixed/is-attempting-to-fix these things? I can guess the answer to 3 and 4 pretty easily but I'm curious as to how a start-over approach would deal with the rest of the items.
  • That's font antialiasing in action. It uses a trick of the human eye to "blur" each character in a way that it actually appears sharper. For a fuller explanation, pick up advanced book on computer graphics.
  • If you check out:

    http://reality.sgi.com/opengl/d11/d11.html

    there is a really good article about how to extend X11 with the special case of 'local host' and that would improve the performance that I find could be made better. And that would definitely be good if it is to be used for games and such.

    All other stuff about easier configuration, prettier window managers and such is already being worked on and will get better and better. If you can't wait for it you could donate money to people doing it for you unless you can yourself :-)
  • True, X is old. BUT, there are a lot of things that X has that blow the pants off of other GUIs (Here I'm thinking of Win and Mac).

    1) Network support. The ability to start a remote X session is a HUGE advantage. It allows you to run machines without monitirs, it allows you to work in a GUI when you want to do remote administration, etc.

    2) Client Server Architecture. This means that we can have any number of Window Managers and switch among them at will. This is great becasue different people work differetly. What is efficient to you is ineficient to me, etc.

    While it's true that X is aging, something BIG would have to be developed to replace it (not an impossible task, just difficult).

    The truth of the matter is that XFree 4.0 will offer some very modern additions to X's capabilities. Integrated 3D (GLX) support for direct hardware access for rendering, true multi-headed support, etc. The rewrite for 4.0 is also making a lot of 'under-the-hood' changes. They are making X modular (much like the Linux kernel), this means that generally X will be stabler because it will have more common code that will not have to be recreated across a bunch of different servers.

    I like X. It could probably be better (what couldn't), but I think it's probably the best GUI system that I've ever come across in terms of flexability and user choices. X 4.0 will bring out many features that will modernize it greatly.
  • by Jamie Zawinski ( 775 ) <jwz@jwz.org> on Wednesday August 04, 1999 @10:57PM (#1765312) Homepage
    The argument that "X is slow because of its network capability" doesn't hold any water and is really used only by people who don't understand X. X is slow (in some ways, it is) for other reasons... ones that, generally, can be solved.

    In a word, wrong.

    X is slow because of the separation of servers and clients, i.e., the client-server model, i.e., its network capacity. It doesn't matter that it uses shared segments in the degenerate case -- it still takes a dozen context-switches amongst three different processes before an X client can even pick its nose.

    Windows and other window systems are way faster because when a program wants to draw a line, the DrawLine call in the graphics library ends up putting bits in a frame buffer. On X, the amount of overhead for every operation is just staggering. Even more so when window operations are involved rather than simple graphics operations.

    For the dubious feature of sometimes being able to have clients and servers on different machines, you pay the price of never being able to have decent performance in the common one-machine case.

  • by Jamie Zawinski ( 775 ) <jwz@jwz.org> on Thursday August 05, 1999 @10:03AM (#1765313) Homepage
    With this question, I don't want to start a discussion if X should be replaced or not, but I only want to find out what's bad about it and where other solutions are better.

    There has been a lot of discussion here already about what X's failings are. Quite a lot of it has been wrong (X has many problems, but it's not that ``tvtwm sucks.'' That has nothing to do with X.)

    The X chapter [catalog.com] of the Unix Haters' Handbook [catalog.com] really does do a great job of covering the major points. Yes, this was written several years ago, and not all of it is relevant any more (for example, most Linux users don't use Motif, so all the abuse piled on the Motif implementation probably isn't relevant to most of you; and GTK doesn't even use the X resource manager, so most of you probably don't use your .Xdefaults file any more.) But where he talks about the X protocol, the low-level X API, and the horrors that X's fundamental design decisions have inflicted on us (``run xterm well'' with window management added as an afterthought) it's spot-on. The ``Myth: X Demonstrates the Power of Client/Server Computing'' and ``Myth: X is Device Independent'' section are especially key.

    But none of that matters . Why? Because it doesn't matter how much X sucks, because X is entrenched. It works badly, but it works well enough. It is the de-facto sub-standard. It cannot be replaced, or even fixed, without rewriting every single graphical application you have ever seen, and that's just not practical.

    Worse is Better [jwz.org].

    Another point I feel the need to make is that most of the people who have been posting to this thread don't understand what X actually is. Some people are talking about X, and some people are talking about ``the sum total of the graphical Unix experience'', of which X is only a small part. In particular, if you're flaming the way your window manager works, you're not talking about X, you're talking about some random crummy application. There are a ton of window managers (there are possibly even more WMs than there are IRC clients, and that's pretty impressive.)

    The source of this confusion is that most other window systems come with policy: the look of the window management controls are built in to the window system itself, as are all kinds of other things like cut-and-paste and drag-and-drop: in the interest of ``flexibility,'' X left all of these things undefined, meaning there is no consistency at all.

    X itself is very low-level, handling graphics operations and little else. Though small, it imposes serious performance restrictions by the nature of its design.

    Because X itself does close to nothing, on top of it, many organizations have built the so-called ``toolkits'' that let you actually build user interfaces. These toolkits impose policy, and implement all the things that one would expect from a window system if one's first experience with a window system was something other than X.

    These toolkits inherit all the limitations of X, and then add more of their own: Athena is ugly as sin, and does very little (it doesn't even have real menubars.) Motif was insanely buggy for years, and is still incredibly inefficient. GTK is slow, and isn't really finished yet. KDE requires C++. And so on. And of course all of them are incompatible with each other to various degrees.

    If you're bitching about things not being ``object oriented'' enough, then you're bitching about a toolkit, not about X. X itself is so low level that there's just no need for OO hair: those abstractions come at a higher level.

    Some people think it's a great thing that X doesn't come with policy. I say nonsense: rampant customizability is almost always an excuse for not having taken the time to get it right in the first place. I just want an appliance that works, I don't want to have to spend days tweaking it before I can turn it on.

    Here's what X's lauded ``flexibility'' has given me: right now I'm looking at a screen that has applications on it written using five different toolkits. They all work basically the same (which is to say, they all work basically like a Xerox Alto), but each one renders menus differently, and half of them do cut-and-paste in incompatible ways. Thanks to the flexibility of X, there is no consistency. I really don't care what menus look like, or how cut-and-paste works; I just wish it was possible to pick one and stick with it.

    The other efforts to provide consistency across the desktop (Gnome, KDE, whatever) all start off with the requirement of rewriting every single application to do so! What a colossal waste of time! But there is simply no other way, thanks to the legacy of X: thanks to X's refusal to dictate policy, there is no one policy to replace, there are dozens.

  • by Roundeye ( 16278 ) on Wednesday August 04, 1999 @01:52PM (#1765314) Homepage
    I have no problems with X once it is up and
    running. The X server idea with the server
    running close to the client is highly useful,
    as well as removing the window manager from
    the server (as opposed to the options on most
    prevalent systems).

    Configuration does seem to be the problem
    area with X -- especially now that XFree86
    has become so popular. Our local NLUG just
    had an hour-long lecture devoted to X
    configuration (and many of the listeners were
    the Linux Literate).

    If X could be made to be more readily
    configurable (which is not an X issue per se...)
    by better configuration tools than currently
    exist -- hell, even fetching specs from
    www.xfree86.org automatically given a known
    card name/chipset would dramatically ease
    installation in most cases (most users don't
    know where to look and most tools guess horribly
    wrong about what numbers go with what cards) --
    then X would be more usable by more people.

    Another issue is security. Most X installations
    are grossly insecure. A secure X distribution
    (one that installs more securely by default)
    would be a nice touch.

    I don't, however, see any competing protocol which
    offers anywhere near the utility of X.
  • by Jordy ( 440 ) <jordan.snocap@com> on Wednesday August 04, 1999 @01:55PM (#1765315) Homepage
    1) To develop for X you have to be an X Consortium member which costs about $50k/year to do any real work. This is why so much work is being done on layers above X, because no one can actually submit the kind of radical modifications to X that are needed to bring it into the 90's.

    2) The X consortium maintains full control over X itself... meaning they can (and have at least once) change the licensing to kill off any free implementations such as xfree86.

    3) The software is extremely dated with over a decade of backwards compatibility which no one even uses any more bloating the code base.

    4) C... Object Oriented environment.. please. I'm sure a lot of people will bash this, but writing GUI programs in an OO language is simply easier. And before you start on the OO toolkits out there, read the next point.

    5) Of course there are C++ and Java toolkits out there, but until they are standard within X, it's a big war. I have roughly 15 X toolkits on my machine to run a total of 8 programs and a window manager. Doesn't anyone else think this is silly?

    6) Sluggish. I have AccelX and I have to admit the entire experience is still very slow. Netscape flickers gray every time I scroll up and down, windows take ages to redraw when switching between them, etc. I multiboot to Windows and don't have any of these problems, everything is quite snappy... even if it crashes every 8 hours :)

    7) Inconsistant. With all the toolkits out there, it is so very hard to get a nice consistant desktop. I wouldn't even claim that Windows is consistant, but it is pretty close. MacOS is better.. but at least both environments are intuitive.

    Once you understand the basics, you can switch between different applications and automatically pickup that the scisors in the toolbar means cut or that the file menu will have an 'exit' entry or even that ctrl-c will copy the selected text (most of the time at least :)

    Of course, I am biased on this subject...

    --
  • by Jordy ( 440 ) <jordan.snocap@com> on Wednesday August 04, 1999 @02:39PM (#1765316) Homepage
    Berlin is a new windowing system for Unix systems designed to replace the aging X Window System. Berlin is currently released under LGPL and is developed using an open development model. We are sponsored in part by SPI who also sponsors the Debian and GNOME projects.

    Berlin operates on the object level. All GUI components (widgets), applications, and non-visual components such as audio components, are CORBA accessible components. This means they are network transparent, platform independent, and language independent.

    To do things like displaying an application run on a server on your local workstation (the way X does), we abstracted 2D and 3D APIs as much as possible, we also implemented commonly used functions in the display server to reduce the network traffic as much as possible.

    If you are familiar with how ActiveX components in Windows work, this should be a very familiar model. All communication between components, applications and Berlin is done via CORBA using the OmniORB2 CORBA ORB (which is recognized as the fastest CORBA implementation out there).

    Because we use CORBA, any language with CORBA bindings will be usable for writing Berlin applications and components. These include C, C++, Perl, Java, Python and much more.

    We adopted a paradigm similar to the classic Model-View-Controller so that the look of individual components such as buttons is not directly tied to it's interface and can be swapped out easily and painlessly. New components that ship with applications, and indeed the applications themselves, can be used freely by other applications extending the reusability of code to the extreme.

    A lot of Berlin's design was taken from Fresco, the competing toolkit to Motif. Fresco is still one of the most advanced toolkits out there and it's influences can be seen in several newer toolkits such as Java's JFC.

    Instead of implementing our own video drivers in userspace as X does, our backend currently uses Mesa an OpenGL implementation, but can be replaced without much work. Current versions of Mesa can use a wide variety of video drivers from the integrated drivers in the Linux kernel to X itself.

    Overall, we hope to provide all the power we can to developers while ending the excessive desire to create new toolkits in order to add a single widget or modify an existing one.

    --

Saliva causes cancer, but only if swallowed in small amounts over a long period of time. -- George Carlin

Working...