Editorial: X Could Learn a Lot from Vista, Windows 7

Over the past couple of months, and especially over the past couple of weeks, I’ve been working very hard to write and complete my thesis. I performed all the work on Windows 7, but now that the thesis is finally done, submitted, and accepted, I installed Ubuntu – and immediately I was reminded of why I do not do any serious work on Linux: the train wreck that is X.org.

Yesterday, I was quietly using my Ubuntu 9.04 installation. I have few problems with GNOME as a desktop environment, except maybe for the fact that Evolution and I don’t get along – for some reason, Evolution crashes about 5 times a day. It has been doing this for years now, on different machines, and I still don’t know why. After a crash, I need to kill all the Evolution-related processes to get the mail client working again. My wish: replace Evolution with a simple, to the point email client, and leave Evolution to the big boys that really need it.

Anyway, I had a whole bunch of applications running, but I decided to have some fun and watch an episode of 30 Rock. I browsed to the directory, and double clicked on the episode I wanted to play. Totem loaded up, but playback was unbearable. My entire quad-core 4GB powerhouse was brought to a screeching halt, and the video playback was choppy, audio lagging – it was terrible.

Since I never had much love for Totem anyway, I installed VLC, and I tried to play the video with that media player. VLC performed better, and the video was actually watchable, but it did make the rest of the machine quite slow and unresponsive. Then, I decided to resize the VLC window to make it a little bigger.

Poof.

And here we see why the X.org stack is a steaming pile of dog poo. VLC was using the XVideo output, which is what it defaults to. Apparently, the resize operating crashed XVideo. Which crashed X.org. And as all you educated Linux geeks know but some of you might want to forget: if X.org crashes – so do all of your applications. Evolution. Chrome with a number of tabs open. Pidgin with a number of IM windows open. Twitux. Evince with an insanely cool study open (‘Mathematical Modelling Of An Outbreak of Zombie Infection‘). OpenOffice.org Writer displaying a friend’s thesis which I was proofreading.

They were all gone.

Now I know what’s going to happen. The Linux fans will come out of the woodwork, and they will start doing two things. One, they’ll start saying that this is not a problem, as the machine is still running, and X restarts – and if not, I can ssh into it. Second, the finger-pointing will begin. Always with the finger-pointing!

I don’t care if X restarts, and I don’t care that I can ssh into it. I’m a user, and what matters to me are my applications, and the data and documents they’re holding. X restarting or the ability to get my nerd on by ssh’ing into my box is pointless and useless.

And then we get the finger-pointing. I’m sure the usual suspects are already busy churning out comments about how this is the fault of the driver, VLC, myself, the 30 Rock video, planetary alignment, anal probes, whatever. And all of you will miss the point completely: I don’t care where the problem lies. Bugs happen. Crashes happen. That’s a fact of life, and something that you have to accept when using software. However, under no circumstances should resizing a video window result in a complete system failure!

Let’s take a look at operating systems with a modern, advanced, and robust graphics stack: Windows Vista and Windows 7. Both of these have a graphics stack that is so far ahead of X.org that it’s like comparing an Airbus A380 to the Wright Flyer. Do you know what happens when a graphics driver crashes on Windows Vista/7?

Absolutely bloody nothing.

The screen will flicker a few times, you might get dumped back into Aero Basic for a few seconds, and then the graphics driver will be reloaded, and everything will be back to normal. A dialog may appear asking you to send debug information to Microsoft. None of your applications will crash, no data will be lost – in fact, you’ll barely even notice. The graphics stack in Windows Vista and 7 is so advanced, that even updating graphics drivers does not require a restart of the operating system or even the graphical environment – the screen will flicker, Aero Basic for a few seconds, and poof, new drivers running (note, though, that graphics chip makers do not yet take advantage of this, and will still force you to reboot. Use Windows Update, and you’ll see how they should do it).

The end result of all this is that I simply cannot entrust my work or my documents to a Linux installation. The graphics stack is so badly designed that resizing a video window can bring down the entire stack, taking with it all your applications, work, and documents. It would be like changing the radio station in your car, only to have your entire car explode.

This is simply bad design through-and-through, and it has been haunting the Linux desktop for a long time now. In the X world’s rush latch onto the “me-too” bandwagon of GPU acceleration, they completely forgot to actually fix their bloody design and move it from the 1990s into the 21st century. As long as X stays the way it is, I will never advise any of my friends or family to use it, because I know that X.org is simply not capable of robustly powering the multimedia and multitasking machines that computers of today have become.

I’m sure the blame-game will be played thoroughly in the comments, but it will only detract from the real problem here. The Linux desktop needs a modern, robust, and advanced graphics stack, which makes sure that crashes and bugs remain isolated, without them affecting the users’ work. Microsoft has shown us how it’s done, now all the X world needs to do is follow.

368 Comments

  1. 2009-08-15 6:03 pm
    • 2009-08-15 6:10 pm
  2. 2009-08-15 6:07 pm
    • 2009-08-15 6:08 pm
      • 2009-08-15 6:57 pm
        • 2009-08-16 2:50 am
      • 2009-08-17 5:36 pm
    • 2009-08-18 9:03 am
    • 2009-08-18 10:32 pm
  3. 2009-08-15 6:09 pm
    • 2009-08-15 6:48 pm
      • 2009-08-15 7:01 pm
        • 2009-08-15 7:03 pm
          • 2009-08-15 7:09 pm
          • 2009-08-15 7:53 pm
          • 2009-08-16 6:32 pm
          • 2009-08-16 7:10 pm
          • 2009-08-18 10:22 pm
      • 2009-08-15 9:41 pm
        • 2009-08-15 9:48 pm
        • 2009-08-17 8:17 am
        • 2009-08-17 10:56 pm
      • 2009-08-17 12:50 am
        • 2009-08-17 12:56 am
          • 2009-08-17 2:40 am
    • 2009-08-15 8:12 pm
      • 2009-08-15 9:26 pm
        • 2009-08-16 1:58 pm
          • 2009-08-16 5:34 pm
          • 2009-08-16 10:20 pm
          • 2009-08-17 8:45 am
          • 2009-08-17 3:15 pm
          • 2009-08-17 4:10 pm
          • 2009-08-17 11:00 pm
        • 2009-08-17 1:00 am
          • 2009-08-17 2:06 am
          • 2009-08-17 2:46 am
          • 2009-08-17 2:20 am
          • 2009-08-17 2:37 am
          • 2009-08-17 7:46 am
          • 2009-08-17 8:45 am
          • 2009-08-17 2:14 pm
          • 2009-08-17 10:35 pm
  4. 2009-08-15 6:14 pm
  5. 2009-08-15 6:22 pm
    • 2009-08-15 8:00 pm
    • 2009-08-16 12:59 pm
  6. 2009-08-15 6:25 pm
    • 2009-08-15 6:46 pm
      • 2009-08-15 6:54 pm
        • 2009-08-15 11:31 pm
          • 2009-08-16 8:22 am
          • 2009-08-16 1:27 pm
          • 2009-08-16 3:12 pm
          • 2009-08-17 4:39 am
          • 2009-08-17 9:31 am
          • 2009-08-17 5:47 pm
          • 2009-08-17 8:24 pm
          • 2009-08-17 2:29 pm
          • 2009-08-17 3:24 pm
          • 2009-08-17 9:57 am
      • 2009-08-15 11:58 pm
    • 2009-08-16 5:54 am
    • 2009-08-16 1:58 pm
  7. 2009-08-15 6:27 pm
    • 2009-08-15 6:33 pm
      • 2009-08-15 6:37 pm
        • 2009-08-15 11:58 pm
          • 2009-08-16 2:01 am
      • 2009-08-15 9:53 pm
    • 2009-08-15 6:40 pm
    • 2009-08-15 7:38 pm
    • 2009-08-15 9:14 pm
    • 2009-08-16 2:21 pm
    • 2009-08-16 6:03 pm
      • 2009-08-17 12:17 am
        • 2009-08-17 1:22 am
          • 2009-08-17 1:27 am
          • 2009-08-17 7:56 am
      • 2009-08-17 7:54 am
  8. 2009-08-15 6:35 pm
  9. 2009-08-15 6:35 pm
    • 2009-08-15 6:46 pm
      • 2009-08-15 6:53 pm
        • 2009-08-16 3:56 pm
          • 2009-08-16 5:19 pm
      • 2009-08-16 5:42 am
        • 2009-08-16 4:52 pm
          • 2009-08-17 10:43 pm
      • 2009-08-16 6:30 am
        • 2009-08-16 6:26 pm
          • 2009-08-17 12:11 am
          • 2009-08-18 5:08 pm
    • 2009-08-15 6:54 pm
      • 2009-08-15 6:58 pm
        • 2009-08-15 7:01 pm
          • 2009-08-15 7:08 pm
          • 2009-08-16 12:13 pm
          • 2009-08-15 7:11 pm
          • 2009-08-15 7:37 pm
          • 2009-08-15 8:59 pm
          • 2009-08-17 12:19 am
          • 2009-08-15 10:45 pm
          • 2009-08-15 11:35 pm
          • 2009-08-16 2:03 am
          • 2009-08-16 6:30 am
          • 2009-08-17 8:25 am
          • 2009-08-17 9:12 am
          • 2009-08-17 9:21 am
          • 2009-08-18 9:21 am
        • 2009-08-15 7:29 pm
    • 2009-08-15 6:57 pm
      • 2009-08-15 6:59 pm
        • 2009-08-15 10:02 pm
    • 2009-08-15 7:02 pm
    • 2009-08-16 2:18 am
      • 2009-08-16 2:24 am
        • 2009-08-16 2:34 am
          • 2009-08-16 2:40 am
      • 2009-08-16 4:04 pm
    • 2009-08-16 2:44 pm
      • 2009-08-17 12:21 am
  10. 2009-08-15 6:35 pm
    • 2009-08-15 11:37 pm
  11. 2009-08-15 6:36 pm
    • 2009-08-15 6:38 pm
    • 2009-08-16 12:34 am
    • 2009-08-17 12:20 am
  12. 2009-08-15 6:38 pm
    • 2009-08-15 10:16 pm
      • 2009-08-16 10:33 am
  13. 2009-08-15 6:42 pm
    • 2009-08-15 6:52 pm
      • 2009-08-16 7:22 am
    • 2009-08-16 6:05 pm
  14. 2009-08-15 6:43 pm
    • 2009-08-15 11:38 pm
  15. 2009-08-15 6:46 pm
    • 2009-08-16 10:26 am
    • 2009-08-16 5:41 pm
  16. 2009-08-15 6:52 pm
    • 2009-08-15 6:55 pm
      • 2009-08-15 7:31 pm
    • 2009-08-15 7:55 pm
      • 2009-08-15 8:32 pm
    • 2009-08-16 8:26 am
      • 2009-08-16 2:01 pm
        • 2009-08-16 9:41 pm
  17. 2009-08-15 6:56 pm
  18. 2009-08-15 7:02 pm
    • 2009-08-15 7:27 pm
      • 2009-08-15 7:33 pm
        • 2009-08-15 7:42 pm
          • 2009-08-15 11:43 pm
        • 2009-08-15 8:03 pm
          • 2009-08-15 11:44 pm
          • 2009-08-16 12:00 am
          • 2009-08-16 1:22 am
    • 2009-08-15 7:59 pm
      • 2009-08-15 10:48 pm
    • 2009-08-15 8:21 pm
      • 2009-08-16 4:17 pm
  19. 2009-08-15 7:09 pm
    • 2009-08-16 5:17 pm
  20. 2009-08-15 7:12 pm
  21. 2009-08-15 7:21 pm
    • 2009-08-17 10:48 pm
      • 2009-08-18 12:06 am
  22. 2009-08-15 7:23 pm
    • 2009-08-15 8:26 pm
      • 2009-08-16 4:59 am
        • 2009-08-16 9:40 am
          • 2009-08-16 3:42 pm
      • 2009-08-16 9:21 am
      • 2009-08-16 5:29 pm
  23. 2009-08-15 7:33 pm
  24. 2009-08-15 8:10 pm
  25. 2009-08-15 8:23 pm
  26. 2009-08-15 8:55 pm
    • 2009-08-15 9:12 pm
      • 2009-08-15 10:11 pm
        • 2009-08-15 10:26 pm
          • 2009-08-16 9:49 pm
  27. 2009-08-15 9:05 pm
    • 2009-08-15 9:21 pm
      • 2009-08-16 1:09 pm
        • 2009-08-16 5:38 pm
  28. 2009-08-15 9:31 pm
    • 2009-08-16 6:41 am
  29. 2009-08-15 9:45 pm
    • 2009-08-15 10:16 pm
      • 2009-08-17 12:29 am
        • 2009-08-17 5:05 pm
          • 2009-08-17 10:16 pm
    • 2009-08-16 5:51 am
      • 2009-08-17 12:34 am
    • 2009-08-16 1:12 pm
      • 2009-08-17 12:37 am
  30. 2009-08-15 9:58 pm
    • 2009-08-16 12:19 am
    • 2009-08-16 5:48 am
  31. 2009-08-15 10:37 pm
  32. 2009-08-15 10:48 pm
  33. 2009-08-15 10:48 pm
  34. 2009-08-15 10:56 pm
    • 2009-08-16 10:30 am
  35. 2009-08-15 11:36 pm
  36. 2009-08-15 11:39 pm
    • 2009-08-16 1:29 am
  37. 2009-08-15 11:50 pm
  38. 2009-08-16 12:49 am
    • 2009-08-16 6:11 pm
    • 2009-08-17 9:46 am
  39. 2009-08-16 1:19 am
  40. 2009-08-16 1:20 am
    • 2009-08-16 2:32 am
      • 2009-08-16 3:24 am
        • 2009-08-16 5:58 am
          • 2009-08-16 6:09 am
          • 2009-08-16 11:59 am
          • 2009-08-16 4:26 pm
          • 2009-08-16 4:38 pm
          • 2009-08-16 9:47 pm
          • 2009-08-18 11:29 pm
        • 2009-08-18 11:26 pm
      • 2009-08-18 11:21 pm
  41. 2009-08-16 2:02 am
    • 2009-08-18 11:32 pm
  42. 2009-08-16 2:31 am
    • 2009-08-17 12:31 am
      • 2009-08-17 1:02 am
  43. 2009-08-16 4:17 am
  44. 2009-08-16 5:03 am
  45. 2009-08-16 5:23 am
  46. 2009-08-16 5:26 am
  47. 2009-08-16 6:19 am
    • 2009-08-16 7:47 am
      • 2009-08-16 4:24 pm
        • 2009-08-16 6:45 pm
          • 2009-08-16 7:39 pm
          • 2009-08-16 8:29 pm
          • 2009-08-16 9:23 pm
          • 2009-08-16 10:29 pm
          • 2009-08-17 3:47 am
  48. 2009-08-16 6:35 am
    • 2009-08-17 12:55 am
  49. 2009-08-16 7:43 am
  50. 2009-08-16 8:33 am
  51. 2009-08-16 8:51 am
  52. 2009-08-16 8:57 am
  53. 2009-08-16 9:06 am
    • 2009-08-16 9:15 am
      • 2009-08-16 9:57 am
        • 2009-08-16 10:05 am
          • 2009-08-16 10:17 am
          • 2009-08-16 10:18 am
          • 2009-08-16 10:03 pm
          • 2009-08-16 11:41 am
          • 2009-08-16 12:08 pm
  54. 2009-08-16 9:11 am
    • 2009-08-16 5:18 pm
      • 2009-08-16 5:22 pm
        • 2009-08-16 7:03 pm
        • 2009-08-16 7:17 pm
  55. 2009-08-16 9:29 am
  56. 2009-08-16 10:07 am
  57. 2009-08-16 10:11 am
    • 2009-08-16 5:47 pm
    • 2009-08-16 9:57 pm
  58. 2009-08-16 10:53 am
    • 2009-08-16 11:00 am
    • 2009-08-16 11:21 am
    • 2009-08-16 11:21 am
      • 2009-08-16 11:24 am
        • 2009-08-16 11:45 am
  59. 2009-08-16 11:39 am
    • 2009-08-16 5:52 pm
    • 2009-08-16 6:13 pm
      • 2009-08-17 1:08 am
        • 2009-08-17 1:23 am
          • 2009-08-17 10:18 pm
  60. 2009-08-16 11:45 am
    • 2009-08-16 7:32 pm
  61. 2009-08-16 11:57 am
    • 2009-08-16 12:10 pm
      • 2009-08-16 12:24 pm
        • 2009-08-16 12:39 pm
          • 2009-08-16 12:51 pm
          • 2009-08-16 1:02 pm
          • 2009-08-16 1:19 pm
          • 2009-08-16 4:39 pm
          • 2009-08-17 7:36 am
  62. 2009-08-16 12:04 pm
  63. 2009-08-16 12:18 pm
    • 2009-08-16 12:22 pm
      • 2009-08-16 12:33 pm
  64. 2009-08-16 12:45 pm
    • 2009-08-16 2:20 pm
    • 2009-08-16 10:09 pm
  65. 2009-08-16 2:29 pm
  66. 2009-08-16 2:45 pm
    • 2009-08-16 3:07 pm
      • 2009-08-16 7:31 pm
      • 2009-08-16 7:59 pm
      • 2009-08-17 7:18 am
  67. 2009-08-16 3:01 pm
  68. 2009-08-16 4:35 pm
    • 2009-08-16 6:00 pm
  69. 2009-08-16 4:54 pm
  70. 2009-08-16 5:39 pm
  71. 2009-08-16 6:56 pm
  72. 2009-08-16 7:36 pm
  73. 2009-08-16 8:27 pm
  74. 2009-08-16 8:36 pm
  75. 2009-08-16 8:42 pm
    • 2009-08-16 11:07 pm
      • 2009-08-16 11:33 pm
      • 2009-08-17 12:09 am
      • 2009-08-17 12:15 am
      • 2009-08-17 1:20 am
        • 2009-08-17 1:47 am
          • 2009-08-17 2:37 am
      • 2009-08-17 1:20 am
      • 2009-08-17 10:50 am
  76. 2009-08-16 9:34 pm
  77. 2009-08-16 10:17 pm
  78. 2009-08-17 3:40 am
    • 2009-08-17 3:48 am
  79. 2009-08-17 4:40 am
  80. 2009-08-17 6:50 am
    • 2009-08-17 7:48 am
  81. 2009-08-17 7:51 am
  82. 2009-08-17 8:02 am
  83. 2009-08-17 8:57 am
  84. 2009-08-17 9:19 am
  85. 2009-08-17 9:46 am
    • 2009-08-17 2:01 pm
  86. 2009-08-17 10:06 am
    • 2009-08-17 2:58 pm
  87. 2009-08-17 10:13 am
  88. 2009-08-17 11:09 am
  89. 2009-08-17 11:24 am
    • 2009-08-19 3:04 am
      • 2009-08-19 12:35 pm
        • 2009-08-20 12:11 am
        • 2009-08-20 8:52 pm
  90. 2009-08-17 2:13 pm
  91. 2009-08-17 2:54 pm
  92. 2009-08-17 3:43 pm
    • 2009-08-17 4:05 pm
    • 2009-08-17 8:06 pm
  93. 2009-08-17 4:28 pm
  94. 2009-08-17 6:11 pm
    • 2009-08-17 11:02 pm
  95. 2009-08-17 6:30 pm
  96. 2009-08-17 8:06 pm
  97. 2009-08-17 8:37 pm
    • 2009-08-17 10:26 pm
  98. 2009-08-17 9:15 pm
  99. 2009-08-18 1:02 am