Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There is a strong perception (whether accurate or not--and I honestly don't know the answer) that it's the same old story with Microsoft: if you go the .NET route, you've gotta buy into the entire Microsoft ecosystem. It's not just .NET that you're choosing; you're also choosing Windows servers, IIS, Visual Studio, etc.

If that perception is accurate, it's entirely reasonable to say, "Despite liking a lot of what .NET has to offer, we don't want to buy into one specific company's ecosystem that deeply."

If that perception is inaccurate, then there should be some serious marketing around changing that perception (and not just from MS--but more like this type of grass-roots post).



Not so sure that's the driver here. Many devs have bought into the iOS ecosystem. This certainly isn't cheap: macbooks, imacs, iphones, ipod touches, ipads. It's also a pretty deep dive to get into.

On the web side, I really think cost is the driving factor more than anything. As long as there's a free (open source) solution to MS's framework that is on par (we can argue either way which frameworks/platforms are better) there's little incentive for startups to go .NET. If a LAMP stack started costing as much as a .NET stack the landscape would be very different. .NET faces the problems going against the Java stack.

In the end, it's about the money. Which platform can I make more money on and does it more than pay for the costs to be on the platform? Right now on mobile it's iOS and on the web it's typically LAMP or lately a Ruby on Rails stack.


"Not so sure that's the driver here. Many devs have bought into the iOS ecosystem. This certainly isn't cheap: macbooks, imacs, iphones, ipod touches, ipads. It's also a pretty deep dive to get into."

There's a pretty big difference here: lack of choice. If you want to deploy native apps to iOS, you literally have no choice but to get into that world. If you want to deploy web applications (as many startups, especially HN startups do) there are dozens of options to choose from aside from buying into a single vendor's full stack.


True. The point I was trying to get across is that lock-in doesn't necessarily stop devs or people from jumping in. The potential to save or make money is to me the more powerful driver.


Microsoft has tried time and time again (with their various .Net initiatives explicitly!) to lock the web into their platforms, because they saw back then (and are blinded by the fact now) that the web is the new platform and pretty soon nobody is going to need Windows anymore.

Just look at Silverlight. Who wants to install that on their Apple or Google device? Flash is bad enough. And yet it's what Microsoft wants you to use to make your ASP.Net app have fancy graphs. L-L-L-lock-in.

Even iOS and Android wouldn't be as powerful as they are had fully-interoperable webservices not come first (killer apps like Gmail, Twitter, Facebook, and Dropbox are webservices first, apps second. You can't compete with them by making an app first, they're platform agnostic.)

So yeah, given the chance Microsoft will try and make Windows 7 running IE accessing a Windows 2008 Server running a .Net app on IIS with a MS-SQL Enterprise backend the only option. It's a testament to the fierceness of the FOSS and LAMP communities that Microsoft is losing this battle (and the world is better off because of it.)


The first time I had to re-buy something because I had invested time in a project and could not do without a certain vendors product I looked for (and then used) a freely installable tool that offered the same functionality. I suspect all people of common sense do this. People do "vendor lock-in" as a last resort, and the reason people don't use the MS stack is because they never figured a out a way to stop piracy without stopping (or negatively effecting) honest production. That and not allowing their products to be used as independent pieces. IMHO.


When you buy apple related products to develop for their mobile platform you are buying the tool chain required to develop for that platform. This is very much different when compared to purchasing sofware for the servers for back end development and deployment. Its like you purchase the iOS toolchain(hardware and software) and sell the app to the user. The user purchases is own iPhone and runs that on it. You don't buy iPhones for the users do you?

As far as backend development is concerned. You have to buy the tool chain as well as the software(read OS, SQL Server, IIS etc etc) for the servers that your developed software runs on. Now the problem comes when you need scalability. Adding more servers to your stack means not just spending money on hardware but on the software stack as well.

So now it all boils down to buying real large and powerful servers since scaling out is not cheap. This has added risks like on issues like replication, back up etc etc.

No one wants to be caught up in this sort of a situation. Especially start ups.


>> Many devs have bought into the iOS ecosystem. This certainly isn't cheap: macbooks, imacs, iphones, ipod touches, ipads.

It is a mobile tool chain. You don't need to use Macs for servers... (And the cost of an iPad, iPhone and iPod touch isn't high. You will need a phone anyway. And iPad is the only real game in town for pads, so you'll probably buy one anyway.)


And then you'll develop for them using what?


The laptop I was already using for Rails development.

The notion that every dev getting into the iOS space was converting from Windows at an enormous upfront cost seems rather daft. OS X had a lot of dev traction before iOS existed.


I obviously don't have hard numbers on this but I can say from my own experience we purchased macs exclusively to build iOS apps for clients. We run a pretty lean shop so we viewed buying macs just for web dev a luxury item. We spent the money early-on on bigger monitors and beefy PCs for less than getting some MB Pros. However with iOS apps being something clients now want, we had to spend the money and of course buy the devices to test. The money spent upfront certainly wasn't trivial. But I admit we could be the anomaly; maybe we were the last shop on earth still coding on PCs. :)


A Mac Mini is really not that expensive. (Do I have to list the $100/year cost, too?)


> It's not just .NET that you're choosing; you're also choosing Windows servers, IIS, Visual Studio, etc.

That's accurate as far as Microsoft has every incentive for it to be true. Microsoft developed .NET to promote the future of Windows and to compete with the JVM and other cross-platform VMs. As far as I know, they are competing with Mono.


That's the thing about Microsoft. It's lack of compatibility with the non-Microsoft world means that if you just "want it to work" you have to go all Microsoft.

The side effect of just wanting it to work is that eventually the whole infrastructure of the company gets dragged into the Microsoft nickel-and-diming machine and the relentless upgrade treadmill. They make you pay license fees every year for unnecessary upgrades that just move the menus around and often break applications.


I have both a .Net start-up which is a Bizspark member and a non-.Net start-up.

It's not the software costs for me it's the development costs of using .Net that make it tough.

.Net developers get paid a lot which means it's expensive to quit your .Net job and form a start-up and it's expensive to hire people to work on your project.


Tell me about it :) My co founder and I were both .Net developers before we quit and started working on IActionable. But its worth it in the end!

Edit - Do you have an email where I can reach you to talk about StockYoyo.com?


I see the .NET "culture" has transferred through even to your company name!


I'm glad someone got it! You wouldn't believe the number of people who spell the company name as iActionable. How dare they turn it into an Apple product!


I read it and thought, "Ok, so what does it implement exactly?" :)


Another reason for startups not to use .NET is that Microsoft-based hosting for web apps tends to be more expensive than the other alternatives.


You can get a windows VPS for 30$ with 1 gig memory that will perform quite well. Ofcourse Linux is cheaper but a licence to Windows Web Server edtion is 15$ a month on most hosting companies. You also have the BizSpark and WebSpark programs where you get it for free (for 3 years). Dont think the hosting cost is going to matter much in most cases. SQL server is expensive but who says you have to use it...


Very true, I actually made a post on my personal blog about that a year or so ago.


I think it really is just a perception. I use .NET for developing Windows desktop applications. Visual Studio and .NET's basic framework are the only things I consistently use. By choice. In my experience, there's many open-source options for everything else I've needed.

What's interesting is this perception is exactly why the medium-sized company I work for uses .NET. They pay big money for the MS support. So they are reluctant to use other non-MS product because of the cost and risk of introducing another place to go to for support. The other big issue for them is licensing.


I don't think this perception applies to Windows desktop applications; but I also don't think there's a large contingent of startups (the focus of the original article) building Windows Desktop Applications.


Currently the same applies to every known service. You have developed using AWS or App Engine and try to migrate to other systems without changing a line of code?


I'd buy your argument if Ruby on Rails only worked on Amazon servers, or if by using Ruby you could only use nginx and not Apache.

The fact is when writing a .Net web app, if you don't like the way IIS or Windows Server or their providers are handling things, you're out of options. Oh and if you want those nice features that make the ecosystem usable, you get to upgrade everybody to the Pro version (not just the people who need the features.) Remember to buy the next version, too, so you don't fall behind on updates and enhancements. And the next version.


That's not really true. The providers in .NET are similar to the convention over config philosophy present in RoR. IIS and ASP.NET provide a lot of features in what they consider the "most common" manner. However, almost every one of the built-in providers can be overridden with a custom provider. In fact, I've set Wordpress up on IIS a few times and used a custom ISAPI module to allow mod_rewite like functionality to create friendly URLS.

You don't have to rely on the built-in providers any more than and RoR app has to use only the scaffolded views.

Also, the Mono project has made it possible to run almost any .NET app on Linux. There are a handful of projects at Novell that are written in C#, but are served via Apache on a Linux box.


> Also, the Mono project has made it possible to run almost any .NET app on Linux

I'd argue that the gap between 'any' and 'almost any' is larger than what you're implying - at least large enough that it can't be ignored.


There's some level of tie-in there; but it's not nearly as intense as a full-stack lock-in like .NET.

"We're tied to AWS and we need to edit some code to deploy on Rackspace Cloud or into our new DC"

vs.

"We're tied to MS so our options of where we're going to go are severely limited by the fact that we can ONLY move to providers who work with MS."


huh? on AWS I can develop python/php/ruby/c/lisp/go/whatever on linux/freebsd, using pretty much any software stack i want.


It's not accurate, for what it's worth.

I'm working on a startup with .NET, and while I do use some parts of the MS Ecosystem (Visual Studio, C#, ASP.NET MVC, SQL Server, IIS) I use plenty of tools that aren't from Microsoft (NUnit, JQuery, Github, ReSharper, TeamCity, DotTrace, DotCover, Selenium).

Any good technologist mixes and matches the things that work best for their solution, right?


That's not really saying much. You just mentioned a Microsoft stack with a few client-side or third-party libraries. How easy is it to, say, use Eclipse with C#, nginx and postgres?

The pieces you mentioned are either all on the Microsoft stack or irrelevant to it. jQuery and github, for example, have nothing to do with your backend's stack.


How easy is it to, say, use Eclipse with C#,

You do realize that C# in VS is just a compiler? It's csc.exe. There's no reason you can't host it in Eclipse. In fact there are several 3rd party components that allow you to host a C# editor anywhere you like.

The problem, in this case at least, is that the C# experience is so solid that the motivation to create an Eclipse one is pretty low. Maybe the Mono folks have something for it. But the amount of work that MS has done for the C# experience is truly impressive. I can, and have, written C# programs in vim, but it's not something I'd like to do on a regular basis.


I do realise this, I just added eclipse as an afterthought, as it's arguably as irrelevant as jQuery. The main focus was on the webserver/database, I just didn't expect someone to single the IDE out.


Database isn't relevant, there are .Net drivers for pretty much every popular database. Loads of .Net devs use MySql and Postgres, and using document databases like MongoDB is also an option now


Ah, that's promising, thank you.


Webserver might be true. But database is not. SQL Server probably has 75% share from what I've seen. But 25% is a pretty large market, and you see everything under the sun there. You'll see Oracle, DB2, MySql, Teradata, and other stuff that I'd never heard of.


ASP.NET works with Apache and Nginx. See http://mono-project.com/ASP.NET


Monodevelop is apparently a pretty good IDE, even though I haven't used it myself.

I personally can't see myself using Eclipse on purpose again.


I used MonoDevelop to write a WebForms-based ASP.NET 2.0 site last year. It was relatively pleasant, had most of the niceties one would have expected out of Visual Studio. I usually development on a Linux stack, so maybe I'm just not enough of a VS power user, but MonoDevelop was fine for me. :)


SharpDevelop is good for C# development.


It's pretty good for small-medium projects. We currently have a project at ~300kloc and it's painful.


I don't do .NET currently, but did up until about a year ago and my main dev tools were Emacs and msbuild. I almost never fired up VS.


My point is that lots of people buy into the popular story that in order to use any tools from Microsoft, you have to use all of them. That's just not true.

Microsoft has tools for test automation, but many people use nUnit because it's better. Microsoft has automated refactoring tools, but many people use ReSharper because it's better. Microsoft has source control tools, but many people use git/hg because they're better.

I've known people who do C# development with Eclipse. It's not as nicely integrated, but whatever. Nothing in the backend stack enforces your IDE tools.

It's the same with postgres or MySql. I personally don't use them because I prefer SQL Server. But I'm not tied to SQL Server by anything but affection for it because it works really really well for what I need.

I can't speak to nginx as I have no experience with it.


Yes, there's definitely a split. Core infrastructure like the CLR, OS, and IDE greatly benefit coming from MS (although none are requirements, as Mono demonstrates). But anyone who does serious .NET dev work knows that tons of third-party tools are used.

One big difference I notice in .NET shops is that they seem a lot more willing to pay for the best solution. Whereas for FOSS shops they seem more likely to get an adequate solution for free.


     although none are requirements, 
     as Mono demonstrates
Not to bash on Mono, as Miguel and the Mono team did a fantastic job, but Mono has been more focused on client apps (like for embedding in games).

Another reason for why hosting ASP.NET projects on Linux is awful is because ASP.NET was built for Windows. Things like async operations are built for the Windows kernel, having architecture decisions that have a negative impact on Linux. Last time I tried it, it also leaked memory, heavily.

Nobody sane uses it, unless they made a bad decision to build on ASP.NET at the beginning and it is cheaper to just try using Mono.

    tons of third-party tools are used
But only tools that are replaceable, used mostly in development mode.

How many .NET shops are using MySQL or PostgreSQL? How many of them are using NGinx or Varnish? How many are using CouchDB or MongoDB?

    .NET shops ... seem a lot more willing 
    to pay for the best solution
This is wrong on so many levels I can't even begin to comment on it.

First of all, .NET shops are digging themselves in a hole by using .NET in the first place.

Of course the best solution is SQL Server, because stuff like LINQ doesn't work reliably for PostgreSQL and because the performance of the PostgreSQL client is awful and because the reliable way of designing a database is through Visual Studio, which again, doesn't work so well for PostgreSQL. You would be mad to choose PostgreSQL if working with .NET

That's the whole point - Microsoft doesn't care to have interoperability with third-parties. Microsoft wants you to buy Window Server licenses that are limited in the number of CPUs you can use and it wants you to use nothing less than SQL Server, even though for the same money you can buy multiple kick-ass servers and use PostgreSQL for free.

This isn't about cheapness, it's about the value provided (i.e. being frugal). Running a business should be done frugally, since you're only in business as long as the money supply doesn't run out. Paying more money than you should is irresponsible.


But only tools that are replaceable, used mostly in development mode.

I'm not sure what "tools that are replaceable" means (because to me everything is replaceable), but the comment about mostly in dev mode is just not correct.

There are tons of uses of Oracle. In that 25%, it's probably 75%. Tons of MS shops use Flash. Tons of MS shops use EC2. Tons of MS shops use SQLLite. Tons of shops use nHibernate. Tons of MS shops use components from Telerik, Infragistics, Actipro, Component Source, ESRI.

Those are all things deployed with the application and not made by MS. Again, the characterization you made is just false.


    to me everything is replaceable
Well yes, you can always rebuild from scratch.

    There are tons of uses of Oracle
Microsoft has been collaborating with Oracle for the integration provided. It's the only third-party database with that privilege.

     Tons of MS shops use Flash
What's more interesting to me is that tons of MS shops are using Silverlight, even though it isn't the best solution by any stretch of imagination, having the extra handicap that its reach is at most half than the reach of Flash, even inside an intranet environment.

    Those are all things deployed with the 
    application and not made by MS
When you have to choose between software STACKS, you don't decide on the availability of a Hibernate clone, or on the availability of payed ASP.NET components that you wouldn't need if you weren't using ASP.NET in the first place.

You decide based on the 5 biggies - OS, database server, web server, application server, caching layer.

And nothing replaces SQL Server, Windows Server and IIS. And if .NET shops have been using Memcached, that's because no alternative was available from MS.


Microsoft has been collaborating with Oracle for the integration provided. It's the only third-party database with that privilege.

Doesn't explain the use of MySql, DB2, Teradata, etc... I don't know who MS works with, but I do know that there are shops that use a wide range of database solutions.

What's more interesting to me is that tons of MS shops are using Silverlight, even though it isn't the best solution by any stretch of imagination, having the extra handicap that its reach is at most half than the reach of Flash, even inside an intranet environment.

Kind of like HTML5 features right? :-)

You decide based on the 5 biggies - OS, database server, web server, application server, caching layer.

And nothing replaces SQL Server, Windows Server and IIS. And if .NET shops have been using Memcached, that's because no alternative was available from MS.

You make it sound like there are a million OSes the FOSS community chooses from. It's Linux. Done. Some random bloke uses BSD, but really it's Linux.

And half the time ppl in FOSS talk about databases its key/value dbs, and there are tons on Windows too. Plus they're often written from scratch. Apache works if you use ASP.NET MVC. Memcached, as you note, also works.

My point, virtually everything you mentioned can swapped out. And even the OS can be, with Mono. With that said the MS implementations tend to work well together. But I conceeded that in the very first line of my original post.


<i>Another reason for why hosting ASP.NET projects on Linux is awful is because ASP.NET was built for Windows.</i>

For some reason I'm reminded of Chilisoft ASP. I know it's not the same, but there was quite a market for catering to people who wanted to run ASP on non-Windows servers all those years ago. I guess it never went away.


A solution that costs money is not necessarily the "best" solution simply because it cost money.

cough perforce cough


A solution that costs money is not necessarily the "best" solution simply because it cost money.

I didn't say it was. I said they're WILLING to pay for the best solution. Not that they go and look for paid products only.


An example of this is the fact that something like ReSharper both exists and is awesome.


FOSS is adequate and .NET is the best solution, huh?

How do you reconcile that with the fact that .NET MVC is a blushingly obvious imitation of Ruby on Rails?


FOSS is adequate and .NET is the best solution, huh?

Sigh. No. But .NET shops seem more willing to pay for a solution if it is the best one for their task. But if a free solution is the best, then everyone is happy.


They're both implementations of the MVC pattern, but short of that there seem to be very few similarities between them. Admittedly, I've only built one project in RoR, but the framework itself required much less configuration and Ruby is a huge departure from the Java/C# coding style.

The MVC design pattern has been in use since 1979; it's nothing new. It's also worth noting that Java devs and Microsoft devs were building MVP (a modified version of MVC) based apps in the 90's.

I'm not trying to dis RoR, because it seems like a pretty solid framework and nobody can deny that the 37signals guys were the motivating force behind the current wave of MVC development. However, what they created was a better web implementation of an existing pattern and I honestly think Django and CakePHP are much more obvious imitations.

Finally, it's worth noting that the ASP.NET MVC framework is open source and has similar license to RoR.


ASP.NET MVC is a far closer imitation of Ruby on Rails than either CakePHP or even Groovy on Grails. Django isn't even an imitation, by any stretch of the imagination.

The similarities between ASP.NET MVC and Rails aren't just that they both use MVC, that's shallow. ASP.NET MVC is blushingly similar, nothing else comes even close, not even those who claim to try to imitate Rails.

I'm not saying ASP.NET MVC is bad, in fact it seems pretty good. But anyone using and liking it really ought to have a look at the original, from where Microsoft lifted it wholesale. Those guys must be doing something right.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: