This is a letter to Microsoft. It’s boring. So unless you’re Microsoft I suggest you look at something else, such as the underappreciated post: clusterduck.
It’s been about five years since I bought a new computer. At that time I made the switch from a Windows PC to a MacBook Pro. That MacBook Pro is looking a little long-in-the-tooth now, and Apple has hinted that their next OS won’t support it, so the time’s coming up when I’ll want to buy a new computer. If I’m going switch back from Mac to PC, now’s your chance. Here’s what you gotta do to make that happen:
WHY I SWITCHED TO MAC
First you need to understand why I switched to Mac five years ago. It’s because I’m a developer, and to be a developer had come to mean writing at least as much code for servers as for clients. “Server” had long ago come to mean “Linux”. Face it, part of what nearly any developer does now involves some server code, and when a developer thinks “server” they think “linux”, that’s just the way it is. Accept that!
Since OSX was based on BSD, which is basically the same thing as Linux, by switching to Macintosh my personal machine could have a terminal that acted nearly identical to my servers, and that removed a lot of friction between developing and testing on my laptop and deploying on my servers. I could run the same *nix servers on my Mac as on my Linux servers, I could compile the same tons of open-source tools on my Mac as on my Linux servers, and I could test and debug the same on my Mac as on my Linux servers. Very little friction.
If I wanted to have as frictionless an experience using a Windows machine I had two choices: 1) choose Windows for my servers (“server” == “Windows” is just a contradiction in terms for nearly any developer) or 2) run *nix emulation layers on my PC which remains an annoying pain in the ass (developers spend a lot of time on their asses, so you don’t want to be adding pain there).
So I switched from PC to Mac, felt lost for a few days learning a new set of keystrokes, and then got to work coding.
WHAT WOULD MAKE A PC AS GOOD AS A MAC FOR THIS DEVELOPER
Give me a text-mode minimal Linux environment built and supported, by default, on my PC. Make all the standard compilers, libraries, paths, and tools, be there by default. Make it use ‘/’ instead of ‘\’. That’s it. That’s all it takes, and it’s not asking very much at all. It doesn’t have to support fancy graphics or user tools or interact with other Windows programs or the Windows API (because my and everyone else’s linux servers are minimal installations and won’t support those either). The basic Linux I need is tiny compared to a full OS like Windows, and will maybe occupy just 1/1000th of the disk space, so it’s no big deal. I don’t much care how you do it (support cygwin, fix interix, use a VM, or your own linux port), just do it and make it frictionless so I can download, build, and run the same tools and commands on my PC as on my Linux server.
That’s all it takes. Do the above and I can get what I need out of a $1000 PC laptop instead of a $3000 Mac laptop. Thanks.
Oh, crap, I almost forgot. With the above I would still need a Mac to develop for iOS clients (iOS clients are important). Figure out a magic fix for that (code? emulation? lawsuit?) Again, thanks.
Oh yeah, another thing. Tell the vendors who make PCs to give us a goddam power connector that won’t break, OK? Want to know how to do that? look at a Mac!
WHY SHOULD YOU CARE SO MUCH ABOUT DEVELOPERS
I know, most users won't use the Linux shall. They won't even know it's there. But developers are your most important customers because we lead the way. The computer we get accustomed to using is the one we are gong to innovate for. (repeat after me: developers developers developers)
WHAT WOULD MAKE A PC BETTER THAN ANYTHING APPLE MAKES
As long as I have your attention, and we’ve defined how to make a PC as good as a Mac, why not take it one step further and make it better than any Apple device. I’m hearing Windows 8 software may actually be better, now tell your hardware partners to make the computers better too. Way way better. Here’s how:
Start with a tablet. In the simplest view, the next PC (aka, the post-PC PC) should be a tablet, and if I’m futzing around the living room that’s what I might carry with me. Next, add a multipurpose tablet cover that doubles as a keyboard that doubles as a support for the tablet that doubles as the carrying case. This means the computer is also every bit as good as any laptop (when that’s the tool you need for heavy work), but also fixes the tablet problems of 1) screen protection, 2) typing for long-form content creation, and 3) support when you’re lying in bed or sitting on a plane watching a movie (it gets very tiresome holding up a tablet). Finally, provide a wide over-the-shoulder carrying strap that doubles as a power cable. This fixes the laptop problems of 1) hassle of getting into and out of a case, 2) losing the power cable, and 3) the power cable getting tangled. The result is super sweet: a better tablet, a better laptop, and a better lifestyle.
WHEN DO I WANT IT?
Now. I’ve only got a few months before I start shopping, Microsoft. Can you get this done in time, or will I feel compelled to Mac it up again?
Update Apr. 18, 2011: Just saw a couple of nice posts from Charlie Kindel about how to do unixy stuff on windows here and here.