It was quite the coup at the time for Microsoft, especially the SQL Server team, to have such a high profile, high-traffic site.
At the time, major "web development" stacks that people would have thought of on Linux tended to be much more resource hungry (still are), meanwhile the people behind StackOverflow had very good .NET skills that they could apply immediately. This translated into being able to serve more people per server than if they used, let's say, PHP, Ruby, Python, etc.
And as people said, SQL Server. Which is a very, very capable database server with impressive performance.
Not sure how the story goes for Rails, but Python (Django) used to be a pig when SO was started over a decade ago, for similar reasons as PHP.
Django's execution model is not at all similar to how PHP code is being run. Pretty much every python web server uses wsgi (or mod_python before that) which relies on a persistent app server. Whatever are the reasons for django's assumed performance issues, PHP's runtime model had nothing to do with it.
SQL Server has huge amounts of tuning and cooperation with NTFS driver team to ensure good performance, and frankly, it's at the high-end of the databases, and I really wouldn't mind using it except for price :(
C#.NET performance is up there with C++. C#.NET is only slower than C++ during garbage collection. When garbage collection is done, it is back in business and running at the same speed.
That's not a great summary. .Net is complex. There's AOT compilation but not available for all purposes. There's JIT which applies most of the time to C# code compiled into msil. From there different things can happen depending on implementation, which may also include running the code via an IL interpreter.
Put those things together, and it’s fairly evident that C#/.Net greatly outperformed the Django/Rails stacks that were popular at the time.
2. JavaEE??? What has the StackOverflow team done to make you hate them so much? :o)
More context: https://blog.codinghorror.com/why-ruby/
License costs wouldn’t be a good reason to pick another stack over the one you know.
Although, tooling was very heavily Windows based at the time (no Rider); so it is understandable why StackOverflow took the direction they took.
It was an amazing achievement, but never quite got me there.
Source: Was runnin .NET on Mono 7 years ago or so.
That's not a source. This is a source:
http://www.techempower.com/benchmarks/
Yes, it does show Mono's ASP performance is substantially worse than .NET, and probably more-so in 2008. I never said otherwise.
There are a lot of things to take into consideration when selecting a tech stack for a brand new, entirely unproven product. It's certainly on the list, however if performance ranks highly, then I'd be seriously questioning the diligence of whoever made said list. Expenditure (e.g. Windows Server licensing fees) would rank high on the list, however so would developer familiarity with a given stack as well as tooling familiarity.
As I said, I can see why StackOverflow made the decision they made, but I'm doubtful performance was, at that time, a major driving force.
But I guess that is something people will argue over for a long long time.
Well... my opinion, based on my experience...
Anyway...
I was certainly not saying that there are not scenarios where it is better to go with windows servers. Things don't happen in a vacuum.
This isn't true. I managed and supported a fleet of Windows and Linux servers for a web hosting company for 14 years. Both OS's have their time sinks and gravity wells of failure.
You can disagree with me ok, but if you want to convince me that I am wrong it would be nice with substantiated material.
As a sysadmin with 30 years of experience running Linux and Windows servers though, I'll offer my own anecdote - I'd say that Windows is far easier to manage for many common scenarios. It's all point and click and you can basically figure out what to do without looking at any documentation anywhere.
It's so easy, you can teach a monkey how to configure a workgroup, domain, users, dns server, firewall, etc. on Windows.
Also, which Linux distro are you talking about? What with all the fragmentation, nothing is ever the same on every distro.
Figuring stuff out without documentation when there is documentation is a bad idea. If you know what to do the GUI can guide you a bit, but it does not do work for you. If you want to do something that you don't understand you should really read more about it, the context being irrelevant.
I doubt you could teach a monkey to do anything like that.
At my last work we used the same distro for everything, why make it hard for yourself. Personally I think most things are the same in the most commonly used distros. Everything is generally just a file. Use mount to mount disks /dev /etc /var folders all standard normal stuff.
You're ignoring overall Total Cost of Ownership (TCO). Licenses are a drop in the ocean compared to the cost of long term ongoing management of your platform(s).
Wether they choose to move to linux is a different matter.
Additionally, SQL Server is a very good database, fast, reliable and feature-rich.
Additionally part 2: Microsoft owns Github, can’t get more open source than that!
> Spolsky is former MS and familiar with their stack
That is key: often experience (i.e. the cost of problems caused by lack of experience) can outweigh licensing considerations, particularly in the fast moving PoC/prototype stages and the subsequent quick growth phase.
> Additionally, SQL Server is a very good database
No argument there. While other DBs could certainly do the job too, SQL server is a good choice, even without that "experience bonus".