The "U" Word

Making Windows safe for Unix people since 1995


Why is there no X Server in Services For Unix?

  • Comments 5
  • Likes

As I've been trolling blogspace for posts on the new Services For Unix, I've noticed one question coming up more than any other: “How do I turn on the X Server in this thing?”

There is no X Server in Services For Unix.

“But... How can it be Unix if it doesn't have X?” I hear you cry. (If you haven't cried it yet, go ahead - I'll wait until you're done crying. :-)

I've been at Microsoft for more than four years, now, and I've been intimately involved with the SFU product for that entire time. I know that the SFU team has considered the question “Do we bundle an X Server” every six months, like clockwork, during that entire time. Each time, we reluctantly came to the conclusion that the answer should be “no”.

Let me talk through the analysis that would have applied up until the decision was made to release SFU for free. (As you'll see, that decision simplifies the analysis quite a bit without changing the answer.) There's nothing earth-shattering here; with a year of b-school or five years experience as a professional software developer at a company that makes software as a product, you could predict everything I'm about to “reveal“.

Suppose the SFU team had decided to bundle an X server. The next question to be resolved is “which one”. That devolves into two decisions: Make vs. Buy, and in the latter case, ISV vs. Open Source.

If Microsoft were to license a commercial X Server, it would have to pay a licensing fee to the owner of the software; that's serious money, and they'd have to raise the price of SFU. Remember that SFU cost $99 for a single copy; volume discounts and educational discounts were not insignificant. Commercial X Servers cost a significant fraction of that price; heck, Hummingbird Exceed retails for over $200. The price increase would be large. Moreover, we knew that many of our customers already had licensed a commercial X Server for other purposes; they didn't want or need another one, and would be annoyed to pay for it.

Microsoft could ship a freeware/OSS X server (i.e. XFree86). By putting it in the product, though, the company would be committing to support it, and that's an expensive can of worms.  Microsoft wouldn't be adding value to Xfree86 by putting it in SFU; getting XFree86 from elsewhere is precisely as useful to our customers. Sure, the SFU team does bundle gcc, but that particular technology is demanded by many customers and it had to be ported to run under SFU anyway; that is, Microsoft added value to the gcc we built over the one that was availabile prior to our participation. Since we did the port of gcc, we understood the technology well enough to support it. (By the way, the source code for the gcc in the SFU package is, and has always been, available from Microsoft. Details are in the SFU package.)

Microsoft could build one of its own. That's really expensive, and saddles the company with support expenses, and competes with companies that have been good partners to Microsoft in the past. Yes, there are times Microsoft chooses to do that. You can imagine the internal analysis required to support that kind of decision. An X server is not a strategic product for Microsoft, and the company would be adding no value to the product (vs. any other X implementation) by making its own, so piddlin' in someone else's tea would be completely unjustified by any rationale analysis.

With SFU 3.5 being free, the economic choices become even more stark. We could put XFree86 in the package, but people would expect Microsoft to support it (and rightfully so); Microsoft wouldn't be adding any value that way, so there's just no reason to do it.

So what are the alternatives? I've used these three:

  • XFree86.
  • Hummingbird Exceed. (Best pricing I've seen is from Interop Systems; they repackage Exceed so that it doesn't try to install other networking stuff SFU already has.) Probably the best OpenGL support and performance of any X Server. Certainly the market leader in terms of installed base.
  • X-Win32 from Starnet. Lower-cost, good perf, good stability.

There are probably a dozen others. I stick with exceed, but that's because I need to play with Unix OpenGL code from time to time. Your mileage will vary. Try a bunch; find one you like that delivers the best value. Only you can determine what “best value“ means.

Note: The preceding information is given as-is with no warranty.

  • First: Your documents are kind of confusing regarding this. I really thought there was an X-Server shipped with SFU. Anyway, I tried Cygwin/XFree ( and I'm satisfied with it.

  • It was pretty clear to me that no X server was going to be bundled, for the reasons given. I'm also a satisfied user of the Cygwin distribution, but it's a shame to take up disk space with substantially duplicative code. It would be nice if someone could come up with a HOWTO for building XFree *using* the SFU SDK. My main reason for running SFU, however, is its integration into the POSIX subsystem of the Win OS -- even down to the device level, something Cygwin and its other competitors don't do.

  • SFU is free since January, 15 2004. Still no X server. So use cygwin.

  • It's not possible to build XFree *using* the SFU SDK; an X server needs to talk directly to the graphics componentry which is all Win32-based stuff. An app built using the SFU SDK cannot make Win32 calls.

    Probably the best thing someone could do is to extract XFree86 from the rest of Cygwin and make just that available as an easy download.