70 comments

[ 2.1 ms ] story [ 138 ms ] thread
Yes.
And in many ways other than monetary.
how do you mean?
Wasted experience, when Microsoft decides to totally change their dev chain/libs for business/marketing reasons. VB, .net, activeX. Last 20 years of MS dev is littered with them.

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.

For instance, let's measure it in terms of hacker news comments.

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. ;)

If your chosen stack slows you down by being more painful/cumbersome to develop on, set up and maintain, then it's costing you money. The fact that it's lost income rather than extra outflow doesn't change the fact that it's a cost.

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.

> Compared to PHP or Django (which we also do consulting in), ASP.NET is just plain faster to develop in.

I'd love to see any info backing this up.

It's all subjective. Naturally, I've done my share of development across a wide range of frameworks and languages, and I've made my choice. The best advice I can give would be to do so as well.

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.

Uhh, just finished a week's intensive training in a supposed to make stuff more rapid .net based framework, and coming from a Django / Code igniter / Ruby on Rails / Grails background I'm utterly stunned that anyone would claim that the basic asp.net environment is a productivity boost over a top of the line MVC framework like Django?

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

Always be careful when talking about something that you only have one day's exposure to. I was pretty slow my first day of writing Django/Python too, but I stuck with it.

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.

Ah, so you actually built some other framework on top of ASP.net and that's homegrown and that might be better for your purposes than something like django, that's a fair bit more believable.

You make cool stuff, I wish you all the best with it, catch you at a beach retreat some day. :)

I'm no PHP hacker, nor (sadly) am I unfamiliar with ASP.NET. I was stuck at an "agile", highly "successful" .NET shop for 2 years.

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?

This sounds cool, could you please describe what you use to achieve all this?
REPL in eMacs? Looks like Lisp to me.
It's hardly an achievement, heh. ;) (But returning to comment anyway, because if this is news to you, I envy you the joy in your future).

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.

On the Microsoft stack side, everyone knows about Visual Studio. The licensing cost for the Team Suite is $10,939. LAMP developers just love to point that kind of thing out. But folks, the fact is, that price is not measurable as the equivalent of LAMP freeware. It’s for an enterprise shop that needs very advanced and sophisticated tools for performing every corporate software role in a software development lifecycle.

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?

Not to mention the subtle insinuation that the open source "freeware" is just a toy and everyone knows you have to pay for the real stuff.

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.

You realize that you can use the same copy of Visual Studio twice, right?

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!)

I guess I just don't like integrated mega-software like "team studio". Give me some nice, loose tools that work together well. Git is all the collaboration tool I need.

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

Of all of Microsoft's technologies, I have considered SQL Server, because from what I've seen it is an extremely powerful database engine with really good BI tools. There are two reasons I don't use it though: 1) it would be prohibitively expensive (for me anyways) to use across dozens of nodes and 2) it means introducing Windows into my environment, which quickly becomes very expensive and a nuisance.
I agree completely, Windows isn't that expensive (look at the difference in EC2 pricing) but SQL Server is where they get you. It's not Oracle bad, but for a small startup it might as well be.
I haven't really paid attention recently, but at a conference several years ago a former Microsoft sales rep said that nearly every "enterprise" product they sold required accompanying SQL Server licenses.
Most "enterprise" products are complex enough to need some complex backing store. A SQL server database is a natural choice for this in the MS world. Even TFS (source control and associated work item tracking, kitchen sink, etc.) is backed by one. This is not a bad thing, (e.g. you get atomic transactions from the DB), but it's interesting that most other source control systems are not backed by any relational database.
A small startup would sign up to the BizSpark programme, tho'.
I am a BizSpark member and network partner and I agree it's a good program. The problem is that it's only for 3 years, so you still need to keep costs in mind.
Yeah .. haha .. "The shell and all that fluff is a separate download" .. fluff :-)
Microsoft SQL Server 2008 is, by far, a vastly superior RDBMS than most anything I have seen from anyone, in every respect

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.

Which ones do you think is one a par with it, and why? "vastly" may be an overstatement, but it's very good.

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.

Well, while SQL Server has its merits, I wouldn't consider it vastly superior (or superior at all) to Oracle or IBM DB2, although SQL Server 2008 is indeed getting very close.

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.

Do you have bad experiences with MSSQL (or any other popular RDBMS) in an enterprisey environment ?

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.

(comment deleted)
Databases such as Oracle, and DB2 are either equal or better in certain respects. Furthermore, I personally find PostgreSQL to be on par if not better than MSSQL. Aside from PostgreSQL's inability to return multiple recordsets, IMHO it's easier to write stored procedures, functions, views, and triggers in PostgreSQL. In addition PostgreSQL is significantly more consistent syntacticly. Every so often my brother who works for an MS shop will ask me how to do something relatively complex in MSSQL, I'll show him how, but in addition I'll also show him how much easier it would've been in PostgreSQL.

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.

I last used Oracle circa 2002. The experience of using the SQL workbench tools, and installing a new server was far worse, just awful compared to the SQL Server equivalent.
Oracle's tools and installers are still not what you'd expect for the price. They are vastly improved from 2002 however.
All the research I've seen shows Microsoft consistently in the top three as far as sales, and in the top two as far as sales on the windows platform. This has held true over many, many years.

Got some points you'd like to make that amount to something?

Sales don't magically equate to better technology or a superior product.
So?

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.

Please offer us some more statistics and facts, then. Unfortunately, I don't see a lot of value in sales figures. Remember that Microsoft is huge, with a ridiculous number of resources, and control of a dominant platform; they would have to be completely incompetent not to achieve high sales figures, especially on their own turf.

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?

> So?

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.

Sales do mean that the technology they make is better suited to the actual needs of their clients, especially with re-sales to the same client.

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.

1: inertia

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.

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

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.

So, you believe judging quality boils down to how popular something is?

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.

Scaling horizontally is considerably more expensive on the MS stack, as the StackOverflow folks discovered recently ("discovered" is a poor word choice maybe). I distinctly remember a blog post or podcast where Jeff basically lays out the numbers and says that the software costs make scaling up more enticing than scaling out.
SQL Server Express is so limited that you really can't use it in production, and I've never had a case where Postgresql or Mysql couldn't handle the load (with enough architecture tweaks).

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?

For reference's sake, Windows Web Server 2008 costs $469 and is likely the version of Windows you would use instead of Windows 7 to run IIS in production.
I don't trust a Windows server to provide reliable uptime. I have no other arguments that I wish to make.
We recently deployed a system (linux based on a windows server with vmware) on a huge infrastructure provider. Every week the box was going down, and we asked why - it's because they reboot ALL microsoft servers once per week, across the entire infrastructure. He claimed they were so unreliable it's good practice. WTF?

Uptime on my first linux production server box was over 4 years.

Yes, in all large shops a weekly/monthly reboot cycle is a requirement. Duly note that this requires several hours of overtime from sysadmins, adding additional cost.
This article was all over the map in terms of numbers. Here at Expat, we develop on the Microsoft stack whenever we have a choice in the matter, including for our own products such as Twiddla, Blogabond, Rootdown, S3stat, etc. and here's the breakdown of what we pay for what:

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.

take a look at the hosting cost on something like slicehost.com for a server. add in bandwidth costs to your server costs. does it still seem better to be developing on windows?

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's actually what I imply above. Given that we pay $800/month for rack space, power and bandwidth, and would do so regardless of our development stack, the extra $100/mo for the luxury of developing in C# is just noise.
And how does your reckoning change when the big day comes that you have to buy another server? And another? And then another 20? And you've locked yourself into the MS stack?

That $2k/box starts adding up real quick.

First off, I'm not a Microsoft salesman, so please take anything I tell you as the experiences of one person, and weigh it against your own.

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!

Seeing a few startups' websites fall over says precisely nothing. They could have been on $20 VPSs for all we know - a twenty dollar VPS being something that is possible with OSS. Or maybe not well tuned - since the vast majority of startups use open source software, it's only natural that you will see a disproportionate number of sites using that software fail.

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.

You failed to account for:

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

You're seriously telling us that when the hardware changes, instead of updating the license, you have to reinstall the entire stack?

Got a link for that?

If you go beyond the license limits of your Windows or SQL Server and has to install the next product on the lineup, that's pretty much what you have to do.

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)

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

Only if you don't plan to grow beyond 50 CALs. Then it skyrockets.

So what is the cost when your EmpowerISV program ends?
Microsoft's development products are not that good. I've used Visual Studio, and I found the interface so incredibly clunky that it was easier for me to mount a network drive to my Linux box, and use a real text editor, "vim", to modify the project XML directly to make changes. (And that is not a joke.)

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.

Eww. Among his arguments:

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

Windows can also execute all the Java and Ruby stuff that you see in nix platforms.*

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.

I know as a student, it's waaaay too expensive. I could eithter get 4 months of rent, or a legal copy of some microsoft software. Guess which one I chose?
Except that as a student you get most everything on the MS Stack for free.

Enjoy your straw man.

They have student pricing for microsoft server and sql?
Yes. They are both free under the dream spark program.

To be clear, it's SQL Server express or developer edition, but if your goal is just learning the stack then it's enough.

https://www.dreamspark.com/default.aspx

What restrictions are there, exactly? I'm not familiar with licensing of these products, as I mainly use open source stuff at the moment.
Simply put, the restriction is that you cannot profit from it. I use all the 'Express' stack to develop at home. All free. Including the XNA lib.
Do they have an express version of windows I can hack on?