Slashdot Mirror


X Window System Turns 30 Years Old

An anonymous reader writes "One of the oldest pieces of the Linux desktop stack still widely in use today is the X Window System that today is commonly referred to as X11 or in recent years the X.Org Server. The X Window System predates the Linux kernel, the Free Software Foundation, GCC, and other key pieces of the Linux infrastructure — or most software widely-used in general. Today marks 30 years since the announcement of X at MIT when it was introduced to Project Athena." X wasn't new when I first saw it, on Sun workstations the summer before I started college. When did you first encounter it?

37 of 204 comments (clear)

  1. DECwindows ;) by TheGratefulNet · · Score: 3, Interesting

    that's where I first saw X. at DEC we had DECwindows on ultrix (bsd like unix) and vax/vmx.

    motif was the toolkit we developed guis in. and we used UIL to describe the UI, which was data that was read in and could change the look/feel of the widgets or their layout without rebuilding from source.

    instead of node:1 for a display it was node::1 for the display (double colon meant decnet instead of that newfangled thing called IP)

    --

    --
    "It is now safe to switch off your computer."
    1. Re:DECwindows ;) by Archtech · · Score: 2

      Likewise: VAX/VMS over DECnet. I still remember vividly the sudden paradigm shift I experienced at the time: one day I was used to "green screen" alphanumeric terminals, the next I suddenly understood the immense power and flexibility of a large bitmapped colour monitor. Previously I had thought that such workstations were only for graphic designers, people using CAD/CAM packages, or poncey pretentious managers who just wanted to have the latest hardware. After the first couple of hours on a training course, I grasped how useful it was to have several terminal windows open simultaneously - optionally on different computers.

      As an afterthought, I might point out that no PC I have used since 1985 has offered any fundamental improvement over the VAXstation I had then. Processor frequency, RAM, and hard drive capacity have all increased vastly; but response time and basic capability have hardly improved.

      --
      I am sure that there are many other solipsists out there.
    2. Re:DECwindows ;) by Archtech · · Score: 5, Interesting

      We spent an inordinate amount of time and effort explaining (often to people with considerable software experience) why "client" and "server" were the wrong way round.

      --
      I am sure that there are many other solipsists out there.
    3. Re:DECwindows ;) by gman003 · · Score: 5, Informative

      The best way to explain it, that I've found, is this:

      A server lets clients access a shared resource. On a file server, it's storage. On a web server, it's documents. On a compute server, it's processing. On an X server, the shared resource is the display, and clients are given access to it.

    4. Re:DECwindows ;) by jbolden · · Score: 2

      That is a good brief one liner to explain it. A single display (server) has multiple clients connecting to it using its display. That being said, the problem is that:
      client = what human works on
      server = what systems's team maintains

      seems to be the more common definition. The objection is really about the definition of "server" as your definition makes clear.

  2. time to die... by bumba2014 · · Score: 3, Funny

    30 years is long enough.... time for the ritual of "Carrousel"...

    1. Re:time to die... by Anonymous Coward · · Score: 2, Interesting

      Another "network transparency" myth supporter.... I'm 44 yo, and was also amazed by X11 and has been a good company all this years, but NEEDS TO BE REPLACED. All X11 devs say the same, and all of them hate the useless X11 heritage and cumberstone codebase. Not to talk about graphic driver makers.

      No one is using the "network transparency" of X11 as it was intended to be used anymore, and has been like this for years. (Unless you use Motif, like 0.0000001% of the X11 apps). NO ONE USES SERVER-CLIENT PAINT PRIMITIVES.

      It's just image buffers sended over. Like VNC but without any optimization and using ugly paintig primitive trickeries.

      We just need some rootless VNC-like something, and that's it. Trivial to do on wayland. It can even use the same "DISPLAY" method and make nostalgic oldschoolers happy.

      Please wayland devels, implement this and shut "network transparency" gurus forever. They are annoying.

      Hell, I'm about to start doing it myself.

    2. Re:time to die... by Anonymous Coward · · Score: 2, Interesting

      It is possible to have network transparency with Wayland.

      The architecture resembles PulseAudio's concept of sinks/sources: in this case, applications and compositors.

      Look it up!
      http://tech.slashdot.org/story/13/04/03/1219239/remote-desktop-backend-merged-into-wayland

      I realize it might not be as impressive as X's way of viewing it, but I'm sure you can do per-application and per-session forwarding with RDP (and if not, it should be possible to code an interface and allow people to choose their remote method). As it stands right now, X.org is basically sending screenshots back and forth.

    3. Re:time to die... by fuzzyfuzzyfungus · · Score: 4, Informative

      Network transparency is a very nice feature; but it's debatable how 'transparent' X still is once you try anything remotely fancy or modern.

      OpenGL, in particular, wasn't really part of the plan. It's been hacking in (in a number of different ways); but it's still pretty easy to trip on a mine: If the program is running on the remote host; but using your GPU, GLX indirect rendering should work, as long as you don't hit any OpenGL extensions that expect direct hardware access; but if your application likes to throw big textures around as though it were developed for computers where the 3d card is separated from the CPU by 16 PCIe lanes, rather than a LAN(or, god help you, WAN), you'll notice.

      If you want the server to do the work, so that you can use an actually-thin thin client, you end up with something like VirtualGL, which uses X11 on both ends; but actually handles slinging the image data with VNC...

    4. Re:time to die... by Creepy · · Score: 2

      Except Carousel is at 21 years of age :)

      I know, you are referring to the film, though - they extended it to 30 so they could use "known" actors and actresses.

    5. Re:time to die... by Arker · · Score: 4, Informative

      It's used every day, just not by you.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    6. Re:time to die... by BitZtream · · Score: 3, Informative

      Ah, spoken in the true voice of slashdot ignorance.

      The protocol is fine, the library isn't that horrible unless your a newbie to dev, nothing needs replaced and it was designed with extensibility to deal with modern problems in a sane way.

      Just because you read some document written by someone who wants to replace it for selfish reasons like making their display system the standard doesn't mean its actually true.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    7. Re:time to die... by TheRaven64 · · Score: 3, Informative

      The problem with network transparency in X11 is that it's done at completely the wrong place. With competing systems of the same era, such as NeWS, there was some code running in the display server for display updates. This meant that, for example, you could handle the visual feedback for a button press in the server, while transmitting the 'this button has been pressed' event to the client. In X11, you press the button but the server just sends a 'mouse clicked at x,y' message to the client, so you need a network round trip just to update the button. If you want to animate the button press, then you need to wait for network round trips to get the 'redraw finished' events. Wayland isn't a step backwards in this regard, but it's also not a step forwards.

      In a modern X client, you don't really use much of the server's drawing functionality. You do store some images for compositing and will use XRender to composite them, but that's about it. The line drawing stuff can't handle antialiased lines, the text drawing stuff (aside from XRender) can't handle fonts provided by the client easily, so all you're really using the display server for is getting some texture memory and compositing it. With Wayland, you just get an OpenGL context and do the same thing. To be honest, if you're targeting X11 that's also what you should be doing for modern hardware: the rest of your drawing code most likely uses OpenGL (or something higher-level with an OpenGL back end), or just generates pixmaps, so doing the per-window compositing in OpenGL is a lot easier than doing it in a completely different API.

      --
      I am TheRaven on Soylent News
    8. Re:time to die... by TheRaven64 · · Score: 4, Interesting

      The protocol is fine,

      Except for the fact that it has a limited set of extensions that can be supported and a load of command numbers are used for 'core protocol' stuff that no one has used for over a decade. It has no concept of security (you can easily steal input from another application, for example).

      the library isn't that horrible unless your a newbie to dev

      XCB is pretty nice, but xlib is a clusterfuck. It hides interfaces that need to be used asynchronously for good performance behind synchronous API calls. It's impossible to write an application that performs well over a network and does a nontrivial amount of drawing with xlib. It is with XCB, but it requires carefully designing your toolkit for asynchronous drawing, and all modern X toolkits have too much xlib heritage to easily adapt to using XCB as it's intended to be used, rather than as a lighter-weight xlib.

      --
      I am TheRaven on Soylent News
    9. Re:time to die... by KonoWatakushi · · Score: 2

      Worse yet, all of those round trips are done synchronously. If the goal is network transparency, X is awful no matter how you slice it.

      It is desirable to minimize the display to input path for interactive applications, and I'd love for the ability to use tablets as a custom interactive input panel for desktop applications. There will always be a delay in the event processing loop of an application, but I believe that this is the one which should be minimized, allowing truly interactive multitouch or pen based controls to be created. Then, for remote applications, one can move the control surfaces to the local display.

      It isn't clear that this needs to be baked into the protocol, and may work fine as an API on top of a minimal system like wayland. Putting this logic into the display server may not be flexible enough, as one could imagine a whole spectrum of uses. At one extreme, the whole application could be running local (on your remote display). Then, perhaps only the filesystem, network, or other OS services could be proxied, and so forth. Creating a truly universal protocol is a daunting if not impossible task.

    10. Re:time to die... by Arker · · Score: 2

      "Creating a truly universal protocol is a daunting if not impossible task."

      This is true. Everyone likes to criticize X, but X actually gives us something close enough for many purposes. The projects attempting to replace X have not aimed at creating this truly universal protocol, nor have they even aimed at the much more accessible goal of simply producing a protocol that is a bit closer to perfect than the one we have. No, they have avoided taking on this crucial task entirely.

      I think that is more than enough reason to discount their 'replacements.' It's not a replacement for X when it does not even attempt to provide the same functionality we already have with X.

      Get back to me when one of them mans up and provides network transparency at least as good and at least as useful as X does, and until then I really dont want to hear about them. I cant say they failed, they havent even attempted to do the job.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    11. Re:time to die... by thegarbz · · Score: 2

      No. Remote display is used everyday. Network transparency is not. Funny enough remote display is a feature possible on Wayland too.

  3. Too old. by Anonymous Coward · · Score: 5, Funny

    30 is ancient in computer years, the X system is too old for the new generation of developers. I recommend we replace it with a far more superior one written in Javascript and Rails. With AGILE development methods we can have a better system up in a week.

    1. Re:Too old. by itamihn · · Score: 2

      With AGILE development methods we can have something in a week. Whether it will be better or worse will depend on the features that could be developed within that sprint.

      Anyway, I'd say 1 week is a very aggressive timeline, right? Do you work as a PM for Accenture?

    2. Re:Too old. by squiggleslash · · Score: 2

      Absolutely. And my view is we should make sure whatever we build embraces promising new technologies like THE CLOUD. Imagine a future where, instead of however it is X11 works now, it can display applications running on computers that could be anywhere in the world, managed by other people, with you doing no more than connecting to that remote server and launching the user interface for whatever application it is you want to use.

      I bet they never thought of concepts like that when they designed X11...

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:Too old. by Linzer · · Score: 2

      Indeed, and mouse click events will be tweeted individually. The client can access them by "following" the relevant window!

      Along the same line, framebuffers will be replaced with tumblr accounts.

      --
      Gravitation is a theory, not a fact.
  4. 1994-95 by wbr1 · · Score: 3, Interesting

    Was in school, supposedly the first community college on the internet (ISDN to UVa across town) and we had NeXt workstations. I do not remember if they used X11, but that clued me into Unix. Later that year we wanted to get our gopher and mosaic servers on a better box, so I took an amazing 486DX2 and setup Slackware. There I know I saw X (although it was later removed from the server). IIRC I downloaded the entire set of Slackware discs directly to floppy using FTP from Sunsite the first time and NFS the second from UIUC (after searching hours for open NFS exports in the mirror lists). I did it directly to floppy as I did not have enough HDD space for the files and the currently running OS. I think that was Linux kernel 1.2.10. Am I old?

    --
    Silence is a state of mime.
    1. Re:1994-95 by CptJeanLuc · · Score: 2

      Oh, the memories. 1994 in university, and they had a room of SGI Indy workstations, with Internet connection. Everything was utterly confusing with Unix, X11, ctwm and what not. Asking the wizards for help was pretty scary, as they would stare you down as if you were a waste of perfectly good carbon. Those were good times.

      And then installing Slackware from floppy, onto a 486DX33 I think it was. Getting the X server up and running was pretty scary, which involved getting a supposedly supported graphics card, and playing around with dot clock frequencies while reading warnings about how this could fry the monitor. No manual, no search engines to turn to for help the way you can look up almost any question today and find an answer in a forum somewhere, and no internet at home.

      I think it was a couple years later when Linux got initial support for multiple processors, and this was before the concept of "cores". Which was pretty cool. Got a Tyan Tomcat III motherboard with two pentium processors, and had a lot of fun figuring out how to get that to work. Those were the days when you had to compile your own kernel, at least for that type of functionality.

      Actually, the Tyan Tomcat III motherboard was the only piece of hardware I owned which got ruined due to Y2K. Because I was afraid the PC would get broken, I downloaded a new BIOS and followed instructions to flash. The computer never booted again; would probably have been just fine if I had the wisdom to just leave it alone.

  5. WABI by just_another_sean · · Score: 3, Interesting

    First time I saw it was also on a Sun. Lowly kids like me (data entry clerk) had to use DOS on the job but the cool guys (engineers) had Sun workstations running WABI*. I was blown away by how much more advanced their stuff was than what we were stuck with. First time actually using it was when I finally managed to get Slackware installed along side Windows 95.

    * Sun's Windows Application Binary Interface which allowed a full blown Windows 3.1 installation to run on their "desktop".

    --
    Creationist Textbook Stickers Declared Unconstitutional by CowboyNeal
  6. Sun Lab in '87 by Greyfox · · Score: 4, Interesting
    I saw it in a Sun lab at RPI in '87. It was running some clunky-ass version of CDE. Or maybe it was just plan CDE.

    It's funny, I'm working on a project for which a lot of the components were coded back in the mid '90s. The state of the art really hasn't advanced since then. The basic API (Xlib/Motif/Xcb) are nominally well documented -- you can find books and the library calls have man pages. Newer libraries and X extensions are a hodge-podge of largely-undocumented and generally incompatible API calls that take more work to integrate than they do to program in (Assuming you can find an example to work from.) The actual frameworks typically require you to drink all their kool-aid in order to use the framework. So I could go GTK+ or QT, learn their idioms and framework implementation details and that's great assuming I never want to change frameworks again and am willing to accept their quirks. And outside of QT, everyone (including motif/xlib) re-invent C++ badly with home-rolled type systems which often involve pushing strings around. Brilliant.

    Somehow despite all this it still does what it does better than anything else I've seen. I'm not sure how this is possible, but there you go.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  7. Ultrix (was: Re:DECwindows ;) ) by erikscott · · Score: 2

    Mine would be as a first-year EE student, NC State U. 1987. OSF wouldn't ship Motif for another year and half, so it was Athena Widgets and TWM all the way.

    God, I miss the screaming. :-)

  8. time to die... by Danzigism · · Score: 4, Informative

    They are replacing X11 with Wayland. There's definitely much of X11 that is obsolete from a developer's standpoint. Pretty cool actually. http://en.wikipedia.org/wiki/W...

    --
    *plays the Apogee theme song music*
  9. Slackware 2.0.12 by Dishwasha · · Score: 2

    Back when REAL Linux distros were named by the kernel version.

    1. Re:Slackware 2.0.12 by IrquiM · · Score: 2

      And the best part is... it still works!

      --
      This is blinging
  10. Grad school. 1990. by 140Mandak262Jamuna · · Score: 3, Interesting
    Sun diskless workstations. Knew motif window manager inside out. Had taught a unix course using a strange Sony workstation that had a TV card in it displaying live TV in X windows. Eventually became the root (of all evil, according to my students) of the lab.

    Employer morphed from being a Unix shop (1990-2000) to Microsoft + Mainwin (2000-2010) shop, then slowly coming back to display agnostic (2011 - till date) (but limited to X11+OpenGL or MSWin) shop.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  11. Paul Asente's Stanford masters project by peter303 · · Score: 3, Informative

    Paul and his adviser, whom I forget, wrote it in the early 1980s at Stanford. MIT liked it and decided to manage its development. It was after Xerox Parc and Apollos distributed graphics system, but before Sun, Apple and MicroSoft. Following Unix's minimalist toolkit naming convention "X" was the command stream and "W" the display api. Our Stanford computer joined in at version #5 on a VAX. It was commercially supperted around version 10 by DEC and Sun. And "froze" at version 11, going into 2nd and 3rd digit numbering after that.

    There was always the intent to make it objected-oriented, hence the tootlkit kludge called Motif. The early 80s was in flux over OO languages Xerox MESA, way-to-slow Smalltalk, ObjectPascal, etc. C++ and ObjectiveC wouldnt be around for a few more years.

  12. Somewhere at MIT, maybe Media Lab by weav · · Score: 2

    I was still working at Symbolics back then. We thought it a little silly that the input focus followed the mouse.
    Now I sort of prefer it that way...

  13. June, 1997 by tsqr · · Score: 3, Interesting

    On a re-purposed Win NT 4.0 box running OpenCaldera 1.0. That was when I first dipped my toes into the Linux pool, and I've been swimming happily ever since.

  14. Re:Comparison to Windows by serviscope_minor · · Score: 2

    Back in the day the repaint strategy of XFree86 was terrible and windows flickered a lot when their contents were updated. Windows did not have this problem. X got rid of the flicker it when we moved

    You are confusing an implementation XFree86 with the general case (X). As it happens, X supported BackingStore on windows for a long time, which meant flicker-free updates in the 90s. I think XSGI had that on by default and it looked amazing.

    Whichm, on-topic is how I first encountered it. Something on an Apollo (by that stage a rebranded diskless HP workstation running CDE) and an SGI of some sort, in 1994. Holy fuck the SGI was amazing.

    --
    SJW n. One who posts facts.
  15. Network transparency of X has always impressed me by Admiral_Bob2000 · · Score: 4, Insightful

    I've been using Linux/UNIXes for 15yrs now. One of the beauties of X11 has been the fact that the application programmer typically does not even have to /plan/ for network transparency - it's built in right from the start (in the various graphics toolkits), no special APIs to .

    This means that whenever the users have a need for displaying X11 apps remotely (e.g. needing to deploy new thin clients at short notice to accommodate new staff in a corporate environment - very quick setup time), you just simply set $DISPLAY and away you go. I've long come to count on this feature and I value having that option kept open all the time.

    I believe in the future fibre optic LAN equipment will come down in price and will offer much lower-latency and higher-throughput than today's copper-wired Ethernet. It may even get to the point where transmit times of sending bitmapped real-time graphics over fibre may be as fast as a CPU writing to a reasonably modest PCI/AGP graphics card.

    I think the Wayland project is making a SERIOUS mistake in treating network transparency as a second-class citizen, and will likely see the project relegated to a toy-like status (useful only for gaming and entertainment, or apps that need extremely low video latency like video editing suites) and shunned by the corporate world.

    If the current X11 protocol makes it hard to do anti-aliased text, glossy/brushed GUIs, zooming fading menus, wobbly exploding windows and the like, then what we need is a new set of core drawing primitives, much like Apple's Display Quartz system (IIRC). Call it X12 if you will, but keep the network transparency in and that decision will pay off many times over.

    I personally have no need for such resource-hogging eye-candy - I turn all of that off and prefer a minimalistic slick-but-functional snappy inteface. I am perfectly happy with X11, and all the current-version applications I use work well with it. It has its quirks and faults, but I believe they can be reasoned with and there is certainly room for improvement: http://www.x.org/wiki/Developm...

    I also think the Wayland proposals of polling (pixel-scraping) window buffers and sending them over rdesktop for remoting is only going to lead to massive CPU overhead on shared application servers, for one thing.

    At the very least, I'd like to see the major graphics toolkit groups (Qt, GTK, WxWindows et. al.) collaborate on designing a standard remote drawing protocol that has similar transparency to X11 - then I might have more respect for Wayland attempting to replace X11.

    (sorry for double post - accidentally selected wrong formatting mode. Mod my other post into oblivion if you wish).

  16. Re:Comparison to Windows by TheRaven64 · · Score: 2

    There are four different protocols that permit double-buffering on X. These days, pretty much everyone has converged on using XRender and manually doing the buffer management. For most of the history of X, different vendors supported different double buffering APIs and writing code that would detect which one was available and using it was painful. Double buffering isn't part of the core specification, because the RAM requirements for two copies of the frame buffer were too big for a lot of early implementations.

    --
    I am TheRaven on Soylent News
  17. When did I first see X? by Anonymous Coward · · Score: 2, Funny

    I first remember seeing X11 on a family vacation. We visited my uncle on his remote tropical island on which he was building a theme-park. My sister actually introduced me to it, because she knew it.