
Thoughts on Unix vs Windows - gsharm
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.<p>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.<p><pre><code>    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
        Windows design's closedness lends to closed thinking
            Design decisions unknown/private mostly
                Discourages thinking about what is going on
                    Weakens understanding</code></pre>
======
awfabian2
I think one of the problems with Windows is monoculture. One of the great UNIX
ideals is 'reject all claims of the one true way.' Microsoft always advocates
the one true way--Windows, Visual Studio. Everything Microsoft. But because
no-one-true-way is built into UNIX's philosophy, it becomes whatever people
want. You want minimal? You can use small command line tools. Reject
minimalism? Use perl and emacs. UNIX is the Borg. Apple can spruce it up into
a consumer operating system. Linux can go every direction at once and not
collapse, and OpenBSD can go fanatical about security.

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.

------
CyberFonic
I pretty much agree with much of what you wrote. But feel compelled to point
out a couple of things.

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.

------
latch
For me, the benefit of abandoning (or, at least, not focusing on) Windows, is
that you aren't constrained in terms of tools and toys. Things like memcached,
varnish, nginx, redis, mongodb, node, (etc, etc, etc) either only work on NIX,
work considerably better on NIX, or come out much earlier for NIX. Microsoft
and its [mostly commercial] partners are significantly out-paced/innovated by
the OSS world.

I 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.

~~~
batista
_and then lumping Apple into Unix on hardware? Apple != Unix_

Actually, OS X is a certified UNIX (tm).

Ironically, Linux is not actually a UNIX.

------
dromey
GPL is essential when you are hacking your own stuff because the last thing
you want is for someone to take what you've done, improve it, sell it and then
close it off...and Linux is GPL. BTW, GNU stands for GNU is Not Unix, which
comes from the fact they had to rewrite AT&T's Unix utilities from scratch.

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.

------
userulluipeste
I've asked myself a similar question - what perspective do I have with
Windows? Is my experience with Windows technology useless in the long term?
...then I found the rising ReactOS! I'm curious which of those listed points
will still stand in Unix vs ReactOS. If you'll wait a little (because we are
talking about the long term here), I think all that Windows experience of
yours will be in a great demand! That if you are willing to get involved in it
like you would in any Unix FOSS thing and not just taking it as you would take
Windows, of course.

------
teyc
Most startups running unix use Java on the server-side anyway. Unless you are
prepared to learn about tuning JVMs and learning its idiosyncracies, you could
choose to pay the MS tax and use the CLR.

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.

------
batista
I'm a Unix guy myself, but I'm not particularly convinced with the "unix is
god" listing below. Let's see:

 _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".

~~~
caw
I agree with everything stated here.

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.

