When I started doing Ruby on Rails work, I was using a Mac at home. When I left Plaxo, and started consulting, I needed a cheap laptop. I got an inexpensive Dell / Windows laptop. I have a lot of experience with Windows, and I have some really good developer tools on the Windows side. When I wanted to do some Rails on the laptop, I found a windows package that gave me a full Rails setup. For a while this was great.
Windows is caustic to open source libs
When it was just me, I deployed from the Windows laptop to the Unix cluster. Once I started integrating with the developers that we hired at work, things started to break down. They were all on Linux, and my checkins started screwing with their editors (linefeed issues). The really big problem was that certain gems and packages didn’t exist on windows. I’ve developed libraries in the past and I can understand that many library authors don’t want to deal with windows. Microsoft doesn’t have a decent, free environment for building open source software. Even with Cygwin, all sorts of things break. It is a hard platform to support so most of them don’t do it well. What could I do?
Oh yeah, just to be explicit, there is no way we’re going to run a web app on anything other than Linux. It is a commodity. Another Unix would be possible and fine, but we don’t have that need at this point. Would we ship on windows? Not even if you paid us. Windows has been irrelevant on the server side for so long. It is too opaque, too proprietary, has licensing issues (how many sockets am I allowed to open?), build issues (see above paragraph). The Unix API has won, its free, and that is where all the action is.
Windows is a fine desktop, but I needed a solution. I had free Unixs as my desktop in the past, and they weren’t and still aren’t ready yet. I needed to be productive, so I wasn’t going to go back to that. Also, we are a startup, I’m not about to drop $4k on a Mac laptop right now. Finally, I’m not going to deal with driver hell with Linux on a laptop. As I was researching a solution, an old friend from Plaxo, Ethan, mentioned that VMware had a free VM player. After thinking about it, this looked like a really appealing solution. I only needed a Linux box that I could telnet/ssh into. I could have a real windows environment, yet have a little Unix server running inside. This looked like the ideal, no compromises for either setup.
VMware Player Rocks
I gave it a try, and in under an hour it was working really really well. The CPU hit wasn’t noticeable at all. I’m so pleased with the solution. To any of you (the two people out there reading this), if this was obvious to you a few years ago… I apologize for my slow uptake on this. I’m a believer now. Seriously, even if I was on a Mac, I could imagine running a little Linux distro in Parallels just to be compatible with my production environment. In fact, if I moved to a Mac, I could probably keep the same VMware image!
Windows Libs Are No Longer Relevant
About 9 months later, this setup has been great. Today though, it really hit me. I still see Ruby gems and modules for other languages supporting windows. Why? I can say that if I were developing an open source library, that was useful in a server/web environment, I would drop support for the hardest environment to support: Windows. People shouldn’t use Windows for a server. With the free VM systems out there, they don’t even need it for their windows dev box. If the library developers out there didn’t have to support Win32 anymore, how much lower of a load would that be? Something to think about.
If anybody complains, point them at this post 🙂