> I don't know why more web developers don't try it
I'll list my own reasons (beyond Linux "just working"):
- Unusable command line (unless you install Cygwin)
- Lack of tools (unless you install Cygwin)
- Case-insensitive filesystem (in 2012!)
- Drive letters (in 2012!)
- You can't delete open files (in 2012!)
- It's ugly - Windows 95 GUI elements often poke through everywhere
- No package management - I have to download software from sites all over the web
- If I'm deploying on Linux (or other Unix) why deliberately use the most different OS possible
Don't get me wrong. If you are developing for Windows or other Microsoft platforms, there is nothing better than Windows to develop on. It's just that it doesn't make sense in any other case.
Most of these things don't matter if, as I already explained, you just mount a network share from a Linux machine and edit the files over the network.
What are the advantages? You can test all browsers, including IE.
> - It's ugly - Windows 95 GUI elements often poke through everywhere
Not in Windows 7.
> - No package management - I have to download software from sites all over the web
What sort of software are you talking about? I don't have any development tools on my local machine except for Notepad++ (text editor) and KiTTY (SSH client).
> - If I'm deploying on Linux (or other Unix) why deliberately use the most different OS possible
To the contrary, I'd say it's the most similar OS. Windows will be the OS used by the majority of your site's visitors. They will be accessing the site from a Linux server, which you will be also be using, for development.
Your approach sounds dangerous: if your development machine is shared, how does your team manage versioning and avoid conflicts? How do you test individual changes? If your development server is yours only, I fail to see the point: your real development machine is the remote one and your Windows box is nothing more than a glorified VT-100.
> if your development machine is shared, how does your team manage versioning and avoid conflicts? How do you test individual changes?
Of course the machine is shared, but our development workspaces are not. We all have separate accounts on the staging server. The idea is that the staging environment is identical (in terms of software) to the live environment. Of course, we would have to coordinate any sort of hardware stress testing in order to get accurate results, but that's a rare edge case and would be true even if you were developing locally (since stress testing on the local machine wouldn't give useful results).
> If your development server is yours only, I fail to see the point: your real development machine is the remote one and your Windows box is nothing more than a glorified VT-100.
Oh come on, don't be obtuse. The reason I use Windows is because Windows 7 is a genuinely good OS that helps me to be productive. The UI is well-designed and I have direct access to all the various browsers I need to test sites on. I have good text editors and SSH clients. I have a solid laptop with features that I desire (easily upgradable, TrackPoint, much more durable than a MacBook). The only downside is that Windows comes filled with bloatware, but that's a matter of just installing a clean copy of it.
Your constant mentioning of cygwin tells me its been a long time since you've dipped your feet in microsoft OSes. Windows 7 has an extension called Subsystem for UNIX-based Applications (SUA) that basically makes a full POSIX compatible layer and a full shell (and you can install all your GNU tools).
I think they pulled an OSX and embraced and extended to deny cygwin their market. Typical. But whatever you think about the strategy, SUA works really well.
I'll list my own reasons (beyond Linux "just working"):
- Unusable command line (unless you install Cygwin)
- Lack of tools (unless you install Cygwin)
- Case-insensitive filesystem (in 2012!)
- Drive letters (in 2012!)
- You can't delete open files (in 2012!)
- It's ugly - Windows 95 GUI elements often poke through everywhere
- No package management - I have to download software from sites all over the web
- If I'm deploying on Linux (or other Unix) why deliberately use the most different OS possible
Don't get me wrong. If you are developing for Windows or other Microsoft platforms, there is nothing better than Windows to develop on. It's just that it doesn't make sense in any other case.