Thoughts on Unix vs Windows
I'm a .NET developer of 8 years and am walking away from opportunities paying $1000/day at the moment, with plans to move away to Unix for my own products later this year, because deep down I feel increasingly uncomfortable with Windows, although I can't pin down exactly why.
Any comments/corrections welcome on my below attempt to understand differences based on my limited experience. I especially welcome any thoughts in areas where Windows is perceived stronger as a server-side operating system, because I can't think of any. Are there any startups here building on Windows Server? I know this shouldn't be a big deal, but I can't shake off the feeling that it is.
Flexibility (Unix +1)
Unix can be installed on more types of computers
In future, this could be something as
small as a watch
large as a supercomputer
sophisticated as a robot
innovative as a new CPU
Scalability (Unix +1)
Managing 100 servers would be
easy using Unix
Can SSH into systems quickly via terminal
Could even automate this process
As it's completely text-driven
kludgy using Windows
would require using remote desktop
is automating from outside even possible?
Aims (Unix +1)
Linux
Benefits everyone involved
Windows
To increase shareholder value for Microsoft
Accessibility (Unix +1)
Windows is closed system
Have to fit solution around OS
Linux is an open system
Can fit OS around solution
People (Unix +1)
Most people working on
Windows Server do it primarily for the money
Windows people can usually not comfortable with Unix
Use Windows because they have to/told to
Unix do it primarily because they want to
Unix people can usually comfortable with either
And choose to use Unix
Notebook/Desktop Hardware (Unix +1)
Windows
Decent hardware (ThinkPad/Dell) and client OS experience (Windows 7)
Can target .NET or JVM with this
Ideal for targetting Windows Server
Not ideal for Unix (no native terminal)
This is not acceptable (restricts freedom to target other systems)
Can use cygwin but this is a 2nd class option
Unix
Best designed hardware and client OS experience (Apple)
In my experience better designed than any Windows options
Can target JVM with this
Ideal for targetting Unix (tabbed terminal/shell built-in)
Cannot target Windows
This is acceptable (does not restrict freedom to target other systems)
Dependency (Unix +1)
If Microsoft goes down
Entire server stack will be left unsupported and frozen
Expensive migration to Unix or other platform
All invested time goes to waste
If Unix ecosystem goes down
Impossible situation
There will always be a Unix ecosystem
Has already exist around 50 years
Timelessness (Unix +1)
Skills learned 20 years on Unix are still relevant today
Not the case for Windows!
10 years from now
Windows will likely require learning of many new things
Windows 2008 is very different from Windows NT
Unix will operate with knowledge of most of the same things
Linux of 2012 command line identical to Linux 2002 one
Philosophy (Unix +1)
Unix design's openness lends itself to socratic method
Every decision can be defended/attacked
Encourages thinking about what is going on
Strengthens understanding
Win...
9 comments
[ 6.4 ms ] story [ 44.5 ms ] threadI don't want to go over each of your points, but I think some of them are silly. Abandon Windows because "if Microsof goes down"..come on. Or, talking about the open philosophy of Unix, and then lumping Apple into Unix on hardware? Apple != Unix.
For your product, you should pick the solution that makes sense. And there might be more than one. Cost should probably be a factor, so should funness.
Do what feels right, learn from mistake, iterate.
Actually, OS X is a certified UNIX (tm).
Ironically, Linux is not actually a UNIX.
Unix was initially widely used on DEC computers - PDP 16 bit and then VAX for 32 bit versions. DEC management were less than impressed so they scrambled to improve on Unix and released VMS. The key designer of VMS was lured by Microsoft and thus NT came about. Once you strip away the GUI, a lot of Windows server is quite a bit like Unix.
In the world of heavy duty servers, Unix and its many derivatives were there first - by a long shot. The key players were Sun - Solaris / SunOS, IBM with AIX and HP with HP/UX. More recently IBM have been building super-clusters using Plan9 which is a descendent from Unix and created by same guys. The increasing performance of x86 multi-core CPUs and the freedoms of GNU/Linux effectively negated the early advantages of the proprietary Unix based systems and that is the core reason for their decline, not any competitiveness from Windows server.
Windows Server won a lot of support because it was easier to click around on a GUI than to remember commands. Of course, the real Windows gurus use command line stuff and scripts. But they are the minority when it comes to Windows sysadmins.
The vast majority of big systems, think Google, Amazon, et al. use Linux systems.
Now for a fun fact. Back in the 1980s, when Microsoft only had MSDOS, they actually licensed Unix from AT&T and sold it as Xenix. Once Windows gained a foothold, they sold Xenix to Santa Cruz Operation (SCO) who marketed it quite vigorously through the later 1980s and 1990s. A lot of office servers ran Xenix on IBM PC/AT hardware - some tricked out with larger disks and extra memory cards.
You have to wonder how things would have panned out had Microsoft kept Xenix and wrapped their Windows GUI around it. That same strategy worked out pretty well for Apple with OS-X which is Mach/BSD at the core with a very nice GUI on top.
Windows is great for earning money precisely because it is so deeply flawed and requires so much support. It's an endless money pit for the people deploying it, and a guarantee of lifetime employment for you. I've hacked on systems like Windows that were closed source and unfree, and it was not rewarding except in money terms.
Unix can be installed on more types of computers
Sure, but does it matter to YOU and what you plan to build? If yes, fine, if not, then the flexibility doesn't matter.
Managing 100 servers would be easy using Unix
It's easier than Windows, true. Enabling some services is easier on Windows on the other hand.
Accessibility (Unix +1)
Actually Windows wins in accessibility. Exactly because it's a closed system, and a single entity can design a coherent UI and accessibility experience. OS X even more so. Anyway, the majority of users with accessibility issues (impairments etc), use Windows FWIW, and there is tons of specific software available for it as well as devices.
Most people working on Windows Server do it primarily for the money
I don't think so. I've known many Windows admins, and they either don't like unix or like windows better. It's only unix admins forced to administer windows that only do it for the money.
Notebook/Desktop Hardware (Unix +1) Not ideal for Unix (no native terminal) This is not acceptable (restricts freedom to target other systems) Can use cygwin but this is a 2nd class option
You can always use a Virtual Machine to developer for Unix on Windows. Some people even do it to developer for unix on unix itself (it isolates every development system, has snapshots, you can pass it around, etc).
Best designed hardware and client OS experience (Apple)
While Apple might have the best designed hw/os experience, Windows is the second best. Linux is a third (for example: everything comes with Windows drivers from it's maker, not everything comes with Linux drivers).
Cannot target Windows
Actually you can. You can dual boot OS X and Windows. You can also run Windows on a VM inside OS X.
Dependency (Unix +1) If Microsoft goes down Entire server stack will be left unsupported and frozen
The "end of the world" is a more plausible scenario. You're grasping at straws here.
All invested time goes to waste
How come? Linux/OS X run .NET via the Mono runtime and libs. And there will be tons of third party support for Windows technologies if a company that has the 90% of the desktop share goes down.
If Unix ecosystem goes down Impossible situation There will always be a Unix ecosystem Has already exist around 50 years
Actually most of old time Unixes have died or are in the decline. Iris, HP-UX, AIX, Solaris.
Linux is an exception (although, technically Linux is not a UNIX, it's close enough). FreeBSD also, but a less widespread one.
And after nearly 20 years, Linux haven't got any real traction on the Desktop, over something like 1-2%.
A future were we all run mobile devices without a traditional UNIX is entirely possible (e.g iOS, Windows Metro and Android which has a UNIX core but no other resemblance to what we usually call UNIX), and Linux is relegated to obsolete desktop machines and servers (say, in 10 years).
Timelessness (Unix +1) Skills learned 20 years on Unix are still relevant today
And half of this is good (some timeless technology) some of it is bad (some stale shit still going strong on UNIX-land).
Windows Weakens understanding
Yes, but the upside of this is: "I don't fucn care how it works, I just want to build my stuff on top, it's not my problem".
I'm also a Unix admin, but I used to be a Windows admin.
Unix people can usually comfortable with either
That depends entirely on the person. Most of the Unix admins I know would jump through hoops to not work on Windows. Also, I've found that the more zealous their enthusiasm for Unix, the less comfortable they were with Windows.
To increase shareholder value for Microsoft
To me this means that while you don't have much of a choice in their direction, they're not going to do something totally off the wall that causes a large backlash (ala Gnome 3 or Unity) because they still want you to buy the upgrade. Yes there's the ribbon, it's not a perfect example. But it also means that every piece of hardware that comes out is going to have Windows drivers.
I'm also going to have to throw in a new category:
Support
There's paid support for Unix, but it's nowhere near the prevalent as Windows support (does this translate into cheaper?). If I had to give a computer to someone who may need technical assistance I would give them Windows. There's some individuals that can maybe have a user friendly version of Linux and be fine with it for months, but as soon as they want to hook up their new shiny, it's going to result in phone calls.
I think, ultimately, openness, and no One True Way make UNIX evolve and survive. Whatever ultimately supplants UNIX, it's a lesson worth remembering and applying everywhere. Even when the One True Way is grafted onto UNIX (i.e., Apple with OS X), the Way of UNIX makes it possible, and ensures that it will survive over whatever temporary One True Way appeared superimposed on it.
The other option is to go with a dynamic language like Ruby and follow along the same path as Twitter did, where they slowly replaced Ruby components with JVM ones.