Is The Microsoft Stack Really More Expensive?
jondavis.net
jondavis.net
And the set of downloads is irrelevant, because it shouldn't even be necessary. On Linux and Mac, most of what I need is already there; while I do download other packages from time to time, they're for good reasons (like getting a new version). The base Mac and Linux installations already have python and perl and a real shell and a real terminal and an SSH client and a good web browser, and the list goes on. The number of things Windows completely lacks out of the box is mind-boggling, given the size of Microsoft's budget. And remember, you have the privilege of downloading and installing it all again every 6 months when Windows' holes make your PC useless.
But it isn't even about the cost or quality for me. It doesn't take much of a history lesson to realize that the vast majority of Microsoft's wealth has come from questionable business practices; practices that resulted in "de facto standards" through which they gain even more undeserved business. At this point, they could have the best products imaginable (they sure don't), and they would still deserve no business.
The entire computing industry has been set back at least a decade due entirely to Microsoft (and a number of other IT-dependent industries have been harmed). Microsoft has destroyed entire companies through unfair means; Microsoft should receive no recognition whatsoever as a credible business, and should receive no new contracts. I know it's just wishful thinking now, but it's the absolute truth.
I was willing to continue reading the article, up to the above line, at which point it became clear that there's no basis for anything said.
The only issue is that for simple designs a smaller, free product (e.g. postgreSQL) may have all that you need.
A lot of the new stuff in SQL server seems to be Business Intelligence tools, which I don't pay much attention too. the SQL stuff where you "select * from ...." seems to be much the same for several versions now, and gets only minor updates since it's already done right.
Of course it depends on your requirements; for most purposes MSSQL is perhaps a better choice but if I needed an enterprisey-schwenterprisey zero downtime database server no matter what it costs, then of course I would go for Oracle or DB2.
The only RDBMS I worked with that was too limited for the enterprise ... is MySql. But that's because when you have a "Big Ball of Mud" it is easier to patch many things in the data-store and MySql has bad support for stored procedures / triggers / views and I also wouldn't trust it to store a data warehouse. But Postgresql was more than suitable for such a scenario.
MSSQL is also more than adequate for any task you might have.
I've seen this argument many times before ... that Oracle is more reliable. But with Oracle unless you have a DBA with years of experience to administer it, you're pretty much screwed. And a RDBMS that requires so much tweaking and maintenance just to keep it working doesn't seem so reliable to me.
True story ... while working at Adobe I participated in meetings about the future of Oracle at the company. Long story short: the company holds much of its data on 2 big Oracle servers and the problem with the setup is that it doesn't scale horizontally. And many newer projects are using Mysql, because it has a good-enough replication system and it also has a hidden gem (mysql proxy).
It seems to me (at least as an outside observer ... I'm not a professional DBA) that these are just effects of marketing campaigns.
One can argue that when working with SQL Server Studio you don't have to worry about how to do things since the IDE will create most of what you need. However, the same can be said of decent IDEs for PostgreSQL, such as EMS.
Personally, I like the ability to read my functions, views, and triggers, and be able to easily understand what's happening; which is not something I usually experience when working with MSSQL.
Got some points you'd like to make that amount to something?
At the very least they amount to people doing due dilligence and making the best choice they can.
Now you can argue all those people don't really know what they're doing, and you sit in a position of actually knowing they're making a mistake, but that's all so much posturing now, isn't it?
The point is, I'm providing stats, facts, information. It's great to be able to argue their relevance, because it's great to have something more than an unfounded opinion to base a discussion on.
Which is my point.
Here would be a more interesting statistic: can you show a case where a business or university IT department spent several weeks evaluating a number of competing products in detail, and concluded (complete with spreadsheets) that Microsoft's solution was undoubtedly the cheapest and most robust long-term investment?
That seemed to be your point.
> At the very least they amount to people doing due dilligence and making the best choice they can.
No, it doesn't mean that, especially not if they follow your reasoning which I don't doubt a lot of them do.
It also seems like you're still pushing the same point, that sales numbers mean a better product.
> Now you can argue all those people don't really know what they're doing, and you sit in a position of actually knowing they're making a mistake, but that's all so much posturing now, isn't it?
So... because these people are in a position to buy software, they must be making the correct choices? To question the meaning of the SQL server sales figures is posturing? That's some blind faith in "people who buy things".
Odds are most people who have purchased MSSQL did so because they are hooking it up to Exchange or IIS in a company that is all Microsoft from top to bottom. Is this such a horrible thing? No. Like they say, nobody was ever fired for buying Microsoft. Does any of this mean that Exchange or IIS or MSSQL are better than the alternatives? No, it just means they are the safe and easy choices for people who make software purchases.
> The point is, I'm providing stats, facts, information. It's great to be able to argue their relevance, because it's great to have something more than an unfounded opinion to base a discussion on.
You're providing irrelevant stats, facts, information, and offering up an unfounded opinion that "higher sales mean a better product".
> Which is my point.
It may have been your intent, but it was not your point, at least not the point you seem to keep trying to make.
It's sort of why the iCrap consistently dominates the mp3 market, despite the overwhelming lack of features: it is better suited to the simplistic needs of its users.
It took a long time to displace COBOL. Microsoft's technology is not superior. Their main advantage is the shady deals they have with computer manufacturers that push their software to people who don't know they do have options.
Oh... and BTW, where are the sales figures for all the people who download, say, Debian or CentOS or *BSD or OpenSolaris and just go about doing their business without showing in any sales chart?
That said, I find both Debian and OpenSolaris have strengths Microsoft doesn't. Do they have software management comparable to APT? Do they have file storage comparable to ZFS? Instead, people learn to live around their limitations and fail to notice there are better choices to whatever came bundled with their computers.
Well, to be fair, Windows is still the best OS choice for consumers.
I don't use it myself, as I've got Debian/Ubuntu on my workstations, and Debian on the servers. I used to have a Mac, which is user-friendly and decent for all kinds of users.
But Windows is friendly to consumers, it has the best application support, and it does install on commodity hardware. I tortured my wife at some point with Ubuntu on her home computer, but it really didn't work out. I mean, even I have a laptop with a dysfunctional wireless, and just yesterday Debian-testing broke my Gnome setup.
If you want to help out Linux/BSD to gain more market-share, it doesn't help pretending it's a good choice and that Windows is used because of "inertia". The way I see it, Linux/BSD missed their opportunity a long time ago.
If you'd like for popularity to be the point of comparison, then Microsoft loses on pretty much every front in the war for the web server. PHP is more popular than any MS language for web development, MySQL is more popular than SQL Server for web development, Apache is (dramatically) more popular for web development, BIND is more popular, Postfix and Sendmail are more popular on the Internet at large than Exchange, and Linux is more popular on web servers than any MS OS. Apache runs 47% of the web, while IIS runs 23%. The remaining space is mostly taken up by other Open Source web servers, like nginx and Lighttpd.
1. It's OK that the MS developer tools cost money, because there exists an IDE for Ruby, PHP, etc., that costs money. (No matter than Eclipse, NetBeans, etc., are free.)
2. It's OK that IIS/ASP.NET costs money whereas Apache/PHP doesn't, because ASP.NET is more sophisticated than PHP. (No matter that, e.g., Rails is also more sophisticated than PHP but is also free.)
3. You probably won't have to pay for Visual Studio, because typically your employer pays for it. (Apparently in Mr Davis's world costs don't count when they are paid by employers.)
And you still need IIS. You can get that with Windows 7 Ultimate, but that's $319.95 for the retail price. And you pretty much can't get away without buying the retail version. We have deployed 8 HTTP servers, 2 MySql servers, another server with Varnish, 2 servers with Memcached and one for logging ... for one of the applications we maintain. Of course, we're using virtualization with Xen. But if we were to use Windows 7 Ultimate, then we'd have to shell out ... 13 * 319 = 4147 USD
On such a quantity you can probably get a discount, but let's be honest ... 4147 USD is almost the price we payed on the hardware, and I wouldn't run anything else than Windows Server in production which is a lot more expensive.
And if you're developing on top of PHP, Rails, Django, Mysql, Postgresql ... why on earth would you want to use a Windows server?
Tools: $399 total. For Everything MS makes, for every developer in the shop, once every 2 years. That's what it costs for an MSDN license through the EmpowerISV program.
Servers: ~$2000 per production box. That's Small Business Server, which comes with production licenses for SQL Server, Exchange Server, and pretty much all the backend stuff you could want.
And that's it.
Assuming we buy a new server every 2 years, that means we pay about $100/month for the privilege of developing on the MS stack. Put another way, that means that the MS stack need only gain us 20 minutes worth of productivity every month to pay for itself.
Like I said up top, we build on the MS stack whenever we have a choice in the matter. It's just a no-brainer.
also, what are you charging your customers if 20 minutes or your time is worth $100, that's impressive. I wish I worked for a microsoft platform company so that customers would be willing to pay that much for a simple service.
That $2k/box starts adding up real quick.
That being said, one box on the MS stack can handle a lot of capacity. Enough that I'm constantly amazed to see other people's startups folding under the load of, say, a single slashdot article or a few thousand people kicking the tires at once.
The box that Twiddla lives on has seen some pretty heavy days, and it's never had its CPU over 5% in anger. Considering the number of paying users we'll need before we need to add a second one, well, I'd be delighted to pay another $2k out of that stack of money!
Anyway, I'm glad your technology choices are working out for you. However, you must understand that a $2k per box markup would be a stroke of death for many lower-margin startups.
- mandatory downtime for updates: every couple months your Windows server has a bunch of security updates that require a reboot. It's no problem for a development server, but just measure the wait SQL Server takes to start on a high-load environment. Compare that to Linux where the only reason to reboot is a kernel update and even that will be soon be history.
- The added cost per server. As someone pointed out, if you have to scale to 10 or 100 servers (just imagine one of your apps got successful) you will soon have to deal with their account managers. And they will know exactly how bad your position is. And you are pretty much stuck with x86 hardware too. You just can't employ a a Sun Niagara server for front-end business (instead of 5 x86s) because it doesn't run Windows.
- You are stuck with their licensing/core/memory limitations. You can't just pop a couple more gigabytes of RAM or a couple more processors in your servers without paying because neither Windows nor SQL Server will use them without - gasp - a reinstall.
Windows is cheap. It's not always inexpensive.
Got a link for that?
Let's suppose you just added a couple extra Opterons to your server at the same time you decided to max out the memory available in the box. You went from single-socket quad-core to four-socket 16-core and from 32 GB to 128 GB (it's your database server, after all). What are you supposed to do? You will have to upgrade in-place. Unless I am very wrong (I never faced this situation - I am a Unix guy)
Only if you don't plan to grow beyond 50 CALs. Then it skyrockets.
These arguments are walking tightrope of avoiding the obvious. Installing all of the Microsoft free tools will make the stack cheaper. But as soon as you want to do something even close to challenging you can bet you'd need support and a license for the real tools. Apparently it's the open source crowd that is subjecting the "market" to FUD?
I cannot imagine how Microsoft developers begin a project. "Today, I'm going to write this new web app to change the world! Right after I spend the day setting up Microsoft Team Studio and purchasing software licenses for every computer I plan to use!" How inspiring.
As in "Today I'm going to write this new web app, as soon as I install Eclipse, Django and SVN" would sound just as silly. It's just development tools.
Oh, and for what it's worth, Microsoft will give you 15 seats worth of MSDN Universal for $400 if you tell them you're a small business. Per seat, the MS tools are the cheapest part of setting up a new dev box for me. (CodeSmith, ReSharper and Ants Profiler are the ones that hurt!)
And, for what it's worth, the open source community will give you unlimited seats worth of all the best web development software in the world for $0.00 :D
Uptime on my first linux production server box was over 4 years.
Wasted time upgrading / relearning OS because MS has end of lifed it and requires new OS for tools to run.
Wasted opportunity when you discover there is market outside win32 but it's too expensive to target cause all your products/libs/experience is invested into a proprietary stack. Vendor lock in is expensive in other ways as well.
Inability to find/fix bugs in stack cause it is closed source.
Inability to tune/add feature/etc stack cause it is closed source.
Those are some of the first that come to mind. There have been essays, articles, papers, and blogs galore written about how and why closed, proprietary < open / standards compliant. I'm sort of stunned anyone reading HN needs to schooled in that.
The fact that this is identifiable from the title as a MS PR piece means that most HN regulars completely lack the desire to respond.
The very idea that the question is being asked is enough to indicate that any discussion would be pointless. Clearly, this person has a diametrically opposed worldview, and is going to try and win me over with arguments based on that worldview.
Cost of my "stack": $0. A free OS, a free IDE (emacs), free tools.
Well, I guess I paid for photoshop. ;)
Compared to PHP or Django (which we also do consulting in), ASP.NET is just plain faster to develop in. I can get my own stuff out the door quicker, which means that I can bill more of my time to consulting clients, which means that I'm net ahead at the end of the month.
So I guess you need to stick opportunity cost into that equation to see where you actually stand.
I'd love to see any info backing this up.
Personally, I consider it a slight competitive advantage that so many shops avoid Microsoft stuff on ideological grounds. If they never try it, they'll never know. And we'll have that slight edge in getting things to market faster.
Maybe the problem is your competence rather than your tools? I don't mean to be blatantly offensive, but wow, asp.net > django? Really? ... Man..
6 months later I was quite fast, and could compare apples-apples the things that Django doesn't quite do as quickly or elegantly as our home-rolled ASP.NET framework (which, to be fair, has been in development a lot longer than Django.)
So yes, having given both sides a decent shot, I went back to ASP.NET. As I said above, your mileage may vary. But until you've put in the time to build something big with .NET and get fully up to speed, you'll never know if you're right.
You make cool stuff, I wish you all the best with it, catch you at a beach retreat some day. :)
Client-corporate-intranet-land is completely divorced from the realm of what is possible. That entire world enforces such silly requirements on you that, well, maybe it is better to use .NET.
But who wants to work in that kind of an environment?
Who wants to use the MS tools to manage their servers?!? I'll take Puppet and Monit, thanks.
Opportunity cost? I develop with a REPL right there in emacs, so I can see how the running dev-server code is working, able to instantly see the effects of what I'm doing. Once I've got it where I like it, I type a single line, and my tests run, and if they all passed the app deploys to staging.
Where's the room for opportunity costs?
It's just your regular emacs + ruby(merb) workflow.
Merb console in one buffer for a repl-a-like (you can do more of a "real" merb repl if you want, starting the merb console from a ruby buffer in emacs, so you get the benefits of built-in ruby-mode for evaluation of forms at point, etc; I never use those shortcuts, so I use a regular old merb console running in an emacs shell, and either type into that or drag code from a code buffer when I want to see the effect of code live for some reason instead of just saving the file and letting merb auto-reload, which is default behavior).
The 'test, deploy' is just a rake task that wraps a capistrano deploy task (which is usually 90% wrapping git, heh) in a conditional: call the deploy task if rspec succeeded. Easy-peasy!
It's a joy.
Anyway, I don't see how the lack of .NET could even remotely be costing me ... anything. This is the standard way of developing for a LOT of people, you write the code, you deploy it if it doesn't break, you do it all with as few keystrokes as possible.
Of course, I'm sure one can concoct horror scenarios built upon stupid coworkers and unmaintainable scary piles of text and inscrutable shell scripts and lions, tigers, bears etc.
Well, don't work with idiots, and the FUD vanishes into thin air. Plenty of complex open-source projects thrive on a foundation of hardly more software than (vi,emacs) and (git, svn, whatever), so manifestly these tools are no obstacle to coding awesomeness.
As I said in the root: Microsoft PR piece.
Enjoy your straw man.
To be clear, it's SQL Server express or developer edition, but if your goal is just learning the stack then it's enough.
Really? Hit any Ruby mailing list and every second post is a Windows user complaining that something doesn't work. Not just obscure things either - DataMapper doesn't work on Windows, or didn't a few months ago. Capistrano, the "official" Rails deployment tool, is not supported on Windows. And good luck with any gem that requires compilation.
Not to mention you lose out on all the command line tools. You'll need to install cygwin, of course. At that point you may as well just stop trying to run unix on a Windows box and just, you know, run Unix.