.NET Culture Shock: Why .NET Adoption Lags Among Startups

3. July 2010

One of the other things I took away from Code Camp was a bit of .NET culture shock. As you can tell by glimpsing around on this blog, I am somewhat enamored with the idea of starting my own business. I’m a natural entrepreneur and it is my wont to think about startups constantly.

That being said, I’ve always wondered why a platform as widely adopted and supported as .NET isn’t more visible in startup culture. Many major open source  platforms and languages have very visible and vocal presences in the startup community, everything from mainstays like Python and PHP to even the more obscure and specialized ones like Clojure and Hadoop.

.NET on the other hand is conspicuously absent from the startup conversation despite the fact that it is a singularly larger platform than any of the others.

It’s like there’s a silent majority among the development community that just tinkers away on its own projects without even occasionally raising its hands and saying “here’s something clever and unique we did with this platform that no one else has done before.”

It’s somewhat tragic for the .NET community too – because the perceived lack of sex-appeal on the surface doesn’t match the reality of what the platform is capable of.

Just take a brief moment to peruse through CodePlex for more than a couple minutes and you’ll find thousands upon thousands of examples creative open source projects all built in .NET.

And in the startup space there actually are a number of .NET-based startups making it big, including this week’s Hacker News / Social Media darling Woot. But why oh why isn’t there a louder .NET voice in the startup community? Why aren’t there developers from Woot working with developers from StackOverFlow (also implemented in .NET) to encourage more startups to use the extensive .NET stack to create new and exciting products and services?

And most importantly, why aren’t there more startups adopting .NET?

It’s All about the Enterprise

I’ve heard all sorts of lame answers to this question before: “platform lock-in,” “no open standards,” “licensing costs,” and none of them pass the test of objective reality – yes, those are issues that might prevent some developers from adopting .NET in the startup space, but not enough to bar virtually all of them from using .NET, arguably the most comprehensive and versatile platform with the best tools and the best support.1

At Code Camp I think I finally figured out why this is: it’s the culture of the .NET community itself, not anything specific to the platform or the architecture which supports it.

.NET culture is centered around the concerns of  the enterprise – the large already-established businesses in the economy, not plucky up-and-coming startups. The Promotion PitAnd when I say “culture,” I’m not talking about the development tools – I’m talking about where the hearts and minds of the developers who use the .NET platform are. I’m talking about the blogs and media sources .NET developers read. I’m talking about the networks where .NET developers contribute and the substance of their conversations.

Most of the developers I met developed portals for giant healthcare providers with thousands of employees, worked on legacy code whose lifespan could be measured in decades, worked in teams with hundreds and even thousands of programmers, and lived in ecosystems ruled by large bureaucracies. These are problems to which few if any developers for startups can relate.

That’s why so many of the talks at Code Camp were staked around RAD methodologies for developing internal projects, coding standards, enterprise architecture, and other things that matter to developers who work in giant ecosystems.

And who can blame Microsoft for catering to the enterprise market – that’s where the money is! No one ever became rich selling high-end development tools to a handful of capital-starved, small companies.

However, the consequences of the .NET community’s enterprise-centric culture is that the startup community and the .NET community don’t overlap as much as they do for other technologies.

As a result, developers working for startups and even the startup founders themselves don’t get much exposure to .NET and don’t think of it as an applicable tool for their purposes.

The flipside is that many .NET developers who want to work for hot startups don’t have as many opportunities to do so unless they abandon the platform for a more “startup-friendly” one or start a company themselves.

So what do the members of the .NET community fuss over? They worry about supporting legacy systems, building enterprise architectures which can service multiple departments, they worry about large systems for supporting in-house business processes, and they worry about satisfying the needs of stakeholders throughout their companies.

.NET developers in general, worry about architecture in order to support systems.

Members of the startup community fuss over a very different set of issues – they’re their own stakeholders, they worry about concurrency, they worry about scalability, they worry about user experience design, they worry about supporting multiple clients and browsers, and they worry about how their designs will impact their bottom line.

Startup developers in general, worry about architecture in order to support products.

See the difference? .NET is perfectly capable of fulfilling the needs of product designers and startups, but comparatively little2 of the .NET culture, literature, and conversation is product-centric – instead the majority of it is structured around using .NET to support the needs of the business, not building the business’ products itself!

But It Doesn’t Have to Be

One thing that should be clear here is that any platform, not just .NET, can be used as a platform for building enterprise technology and for building new products. The platforms don’t often dictate their use – that’s the work of the people who develop on them.

If Microsoft wants to make a splash in the startup scene with .NET, and I have every reason to believe they do, then they need to do a better job evangelizing .NET’s capacity from a holistic new service / new product / new business perspective and not just for the enterprise.

Enterprise and startups aren’t mutually exclusive – they’re just different stages in the evolution of software, and there’s no reason why the startup community shouldn’t look at .NET as an attractive starting point for a new business.

The next article I’m going to write on this subject will cover why it’s a good idea for Microsoft to have .NET adopted more readily by the startup community.


1I realize “best” is a subjective term, but please do your best to just stick with me here. I’m not trying to trash Eclipse, XCode, NetBeans, or EMACS, but just face it: Visual Studio destroys those in any feature set-to-feature set comparison.

2Again, this is an observation based on my experience with the .NET community thus far. I'm always on the lookout for any exposure to people who use .NET in a startup setting.

If you enjoyed this post, remember to subscribe to my RSS feed!

.NET, Startup , ,

Comments

7/3/2010 12:50:50 PM #
Pingback from topsy.com

Twitter Trackbacks for
        
        Aaronontheweb | .NET Culture Shock: Why .NET Adoption Lags Among Startups
        [aaronstannard.com]
        on Topsy.com
7/4/2010 11:55:43 AM #
Interesting points Aaron. But I think you avoid the bigger questions. A startup is a risky venture with no guarantee of success. To succeed you need an edge to get you ahead. If you are performing at the same level of the incumbents then you have already failed.

Tech startups then seek advantage through better technology. Hence startups take what big enterprises consider risky bets on technology. They also seek better, more well rounded individuals. Both objectives can be achieved by using technology that is proven in startup environments and hiring people experienced with lots of it.

Much of the features of .NET are there to prop up the productivity of big enterprise companies, in ways that are not useful to startups. Some of the features are a very bad fit for startup web development. I put some thoughts together on this a while ago: ( richardconroy.blogspot.com/.../...programming.html ).

So .NET contains a lot of features, many good, but many a poor fit for startups. There is too much choice of implementation methods. If anything, web startups are looking to have this choice taken away - their technology choices come from the subset that are built for the web. Ever since the dot com crash, there has been a general shift away from universal development environments (like Java/J2EE) that can be APPLIED to the web, towards specialized tools.

I think this trend applies to .NET also, in addition to many of the concerns you have already mentioned.



7/5/2010 10:21:07 AM #
Well, I am a .NET success story who is doing his next startup in Java, and I'll give you a little background on this decision.

My last company built a Web-based business intelligence suite, for the enterprise, and it was sold to a HUGE enterprise, Cisco.  Throughout the acquisition process the .NET platform decision was a lingering hurdle, something we had to constantly explain and justify.  And the moment we signed the paperwork we began planning a project to convert the whole shebang to J2EE.

While we bucked the odds, I will emphatically state that if you want to be acquired you should definitely develop your product using a completely open stack rather than Microsoft's.  Here's the real reasoning behind it:  you are stacking the deck in your favor when you develop using a completely open stack.  Zero licensing costs, the availability of an order of magnitude more open source projects to plug in to your code base, the enormous development community--they may not be reason enough by themselves, but taken together you really have to have a VERY STRONG customer requirement NOT to use an open stack.

And if *you* don't agree, you have to ask yourself, as a startup, will potential acquirers and/or investors agree?  Probably.  Which is why, despite my love of .NET at the time, all of my future development plans are using J2EE.

It just makes business sense.
Susan Jones
Susan Jones
7/5/2010 10:24:59 AM #
For every success like Woot, I can point to a failure like MySpace (problems with Microsoft's stack is one of their several problems).

I think that startups generally choose open source for the following reasons:

- Support. Open source communities generally provide very good support.

- Licensing.  There's cost and admin burden.

- Flexibility.  If you find a bug or other problem, there's the possibility that you can fix it yourself or discover workarounds by examining the source.
7/5/2010 10:25:47 AM #
Jason, I was just glancing over my email and I saw your comment. This is an AWESOME answer! Thanks!
7/5/2010 10:27:14 AM #
And I'll reply to it in more detail tomorrow Smile, but you've given me some major food for thought and I really appreciate that you shared that experience with me.
7/5/2010 10:33:16 AM #
Susan,

Just to give you a reality check on MySpace - I met the engineer respionsible for rearchitecting MySpace from ColdFusion (a third party technology) to .NET two weeks ago at the San Diego Hacker News meetup (his name is Glenn, and he's a bad ass.)

MySpace's scalability issues were mostly solved by rebuilding the architecture in .NET given that ColdFusion was unreliable, and those scalability issues never stopped people from adopting the service - the service's failure to adapt and keep up was. At peak hours MySpace would get hit as often as 3 million concurrent requests per second, and .NET stood up to the pressure just fine.
Ted
Ted
7/5/2010 10:55:47 AM #
Aaron, as someone who has used several platforms (.NET, Java, RoR), I don't see a big benefit for using .NET over the rest for most types of app unless you have to inter-operate with Microsoft technology such as Windows or Office in a way that deep integration is required. (Even then, sometime C++ could be a possible solution if one can avoid .NET for other reasons).

I'm not an open-source fanatics or zealots in any shape or form. But from a business perspective, the choice of using .NET is hard to justify. Whether BizSpark exist or not, it's hard to beat free in most cases.

What one must understand is that when you choose to go with Open Source, often the design decision will be impacted. Architecture will be required to be less coupled (due to missing features sometime not because engineers trying to be macho). This, eventually, leads to flexibility to change components in the future. However, this doesn't mean that people can change components wily-nilly, just that there is a way to do so in case you want to save cost. This is apparently very important in the long run. I don't want to pay extra $7k/core (SQL-Server) to scale my business.

Another reason not to choose .NET is simply because of the innovation that is required by most companies. If you look at Java ecosystems, they have Hadoop, HBase, Cassandra, ZooKeeper. These libraries/tools are competitive advantages. There may be bridges built to inter-operate between these tools with .NET, but you'll have to wait until someone build it for you (or you have to build themselves).

Sure, there are a few open source projects in .NET. Most that I knew of were pretty much an implementation of concepts that have already been implemented for a while in the Java world. At the end, it's the same catching-up game all the way.

Of course another example is ASP.NET MVC which apparently is late into the game for a few years. This trend keeps repeating, so I'm not sure if using .NET and being behind is really a competitive advantage.

All these things become a cycle of evil. The type of programmers who like to innovate rarely exist in .NET world because the lack of great libraries. Lack of libraries in .NET could probably due to lack of interest from that type of programmers. I'm not suggesting that the current .NET programmers are slacking off their effort. But perhaps they just felt that "why bother re-implementing the wheel?" and just switch platforms.

I watched the presentation by Rob Connery not too long ago in some conference (called NDC 2010 I believe). I think you should watch that presentation too and perhaps take a look at the technology landscape one more time.

Keep in mind that the goal for Microsoft is to get the most money out of their clients. It is one of the many reasons why they ship their flagship products once every 2 years and charge a lot of money. If I have to pay more money to them, that would lower my profits. Does that make any business sense?

PS: In one of my previous jobs, I used to work in a pure MS-shops. One of the most common requests was to ask for software license/key-code/serial-number "or-I-can't-do-my-job". It's just another hurdle.

-Ex Softie
Matt
Matt
7/5/2010 11:54:41 AM #
The answer is in the question.  A startup is often strapped for cash.  So why incur the "unnecessary" expense.  Anyone who has truly used .Net knows it's not about power or productivity, because .Net offers both in spades.  

I think this is why MS launched their BizSpark program.
Dude
Dude
7/5/2010 12:35:50 PM #
I think you're missing a key point: windows sucks. No one wants to write code in windows except corporate cogs. This is evidenced by your assertion about visual studio... It may have the 'features' but... see... they need to be GOOD features for me to want to use them.
7/5/2010 1:54:28 PM #
Microsoft set-up a group to help start-ups called BizSpark, but they are a big FAIL
Last year I was at their Events in Austin and San Francisco and I have the photos showing the audience was very sparse
edwin
edwin
7/5/2010 2:36:01 PM #
Non open source technologies reserve the right to spontaneously screw the people who bet them - hence Microsoft & Apple.
bball
bball
7/5/2010 2:48:38 PM #
Bring back vb6
7/5/2010 3:39:03 PM #
Pingback from winextra.com

Microsoft and Windows Round-up – 5.7.2010 | winextra
7/5/2010 3:40:48 PM #
I think the answer is even simpler, and more universal, than ".NET developers are focused on the Enterprise".

I think cost plays a BIG factor in whether a startup can use .NET or now.
When Rob Conery, ex-Microsoft ASP.NET team member, and James Avery decided to start a new video learning venture, they ran the numbers and came away with the fact that hosting on Linux using MongoDB and developing on Rails would be cheaper than hosting on Windows using MS SQL Server and developing using ASP.NET MVC.

http://www.infoq.com/articles/architecting-tekpub

It's not that either of them aren't knowledgeable about MVC, I'd consider both of them to be experts. They just realized that even using BizSpark, the licensing for MS SQL Server and Windows would get out of financial reach once they started to grow after 3 years.
bob
bob
7/5/2010 5:21:28 PM #
There is not one reason to use .NET.  Not one.
7/5/2010 6:47:40 PM #
Great points of view. I am myself a .NET developer and start all my projects with .NET. However, many home based startups are planned by non professional developers. I feel that when they start dabbling in code to do that initial research / hands on, to get started, PHP is the easiest language to start with. .NET comparatively is much more complex and requires a steeper learning curve.

Another things is hosting costs. PHP MySQL hosting is a lot cheaper than Microsoft hosting. I regularly see requests from startups to create the next facebook / twitter / etc in PHP as it's cheaper to host, easier to learn and also lot of small PHP development companies around which will use excellent products ( Wordpress, Joomla, Magento etc ) to create that initial first website. I myself run my blog using Wordpress as nothing in .NET space compares to it. Joomla & Magento have such a huge user and developer base, that it is difficult to recommend a .NET alternative to a client.
Carl
Carl
7/5/2010 6:52:07 PM #
In all honesty, what enterprise application can say they give an excellent user experience - or even a good one. Most enterprise applications I have come across suffers from bad UI, no support for sound workflows, inflexibility, and a legacy problem that is big as Mount Everest. In enterprise you encounter an IT infrastructure that is at least 10 years old compared to what you could have. It's horrible! And there is no remedy in sight. Why should startups place themselves in the same situation?
7/5/2010 6:53:17 PM #
Pingback from amargalla.com

.NET Adoption in Startups
David Santoro
David Santoro
7/5/2010 7:19:05 PM #
Hello,
in

Interesting post although I think that the answer you should ask yourself is why startup prefer dynamic languages to statically typed one like C# for example.
7/5/2010 7:24:46 PM #
Three years ago we made the decision to go with .NET for one simple reason: it was the platform that we were most familiar with.

So rather than spending time trying to compare technologies, our goal was to get version 1 out the door as soon as possible and worry about the rest when we came to it.

And 3 years later, we're still going strong and very glad that we chose .NET.

We have a post here that gives more reasons behind our decision:
blog.jumptree.com/.../

But ultimately, I think it really depends on your product and who your audience is. Sure, our startup might not be as sexy as some others, but we have a clear way of making money.

And like you mentioned, with BizSpark, it's so much easier to at least give .NET a try.
Bob Haugen
Bob Haugen
7/5/2010 8:53:15 PM #
See kurtgrandis.com/.../

That matches my experience in projects where I work across the table from a two-person .NET developer team:  my productivity is at least twice theirs.

Notably, they are always stumbling over .NET version, environment, configuration and license problems.  I have almost none of those, thanks partly to http://pypi.python.org/pypi/virtualenv - an example of the creativity of open-source developers.

And of course, there's the cost comparison...
Jack Beans
Jack Beans
7/5/2010 9:16:01 PM #
Any startup founder who is so idiotic to choose .NET deserves to fail!
brian
brian
7/6/2010 12:32:14 AM #
Problem with .net its always given the impression of being  a 'toy system', and designed by Microsoft out spite to nobble java.

At the same time it doesn't serve the needs of real time products ( a need for speed), and some poor design decisions on C# at the beginning didn't help, such as no real destructors or easy ways of dumping resources. Creating an immediate  dislike by C++ engineers and making it difficult to port to or from other languages/systems - read not a good environment to invest in - as pointed out by others.


7/6/2010 12:35:40 AM #
My startup used .NET for desktop applications. At the time, it seemed the obvious solution, for the speed of execution and fast prototyping. But, the IDE is not as strong as Eclipse codewise, the deployment is weak, all sorts of installation problems happen for which Microsoft is to blame. The windows widgets provided by the framework are slow and limited, and I didn't want to invest more money and time in buying 3rd party controls. So, my experience with .NET was a little worse than what I experienced with open source, plus it cost me some money. To resume: .NET provides a fast bootstrap of the project, but after that pain follows.
7/6/2010 12:44:07 AM #
Strange the number of people citing "zero" licensing costs as a reason to not use .Net. Anyone who uses tools on any platform knows that the learning & support far outweighs these costs. And how many people will fix a bug in the Linux source?

I know a number of startups using .Net and one recently said "Had we not used .Net we'd never have got this far". Microsoft started slow in the startup world but they caught up quickly. I personally think the tools & environment in the .Net world are far better than anything else (recent experience with Lucene on Linux taught me this).

There are still areas (such as Search) where you're better using Open Source products (not because of cost btw) but for custom code you really need to chose the tools that work for *you*.

There is NO such thing as "zero" cost - you at least need to pay someone to manage & support this stuff.

Even the article on tekpub is misleading. They talked of *huge* expense on Microsoft licensing ... but they use EC2 - which isn't cheap. Microsoft have Azure and the pricing is pretty much the same. So the cost arguments there don't add up.

Fact is use the right tool for the job - ultimately you get what you pay for.
7/6/2010 12:44:59 AM #
It's easier than that - startups are generally time-rich and money-poor. There aren't any customers (yet!) to take up your time, and they aren't paying you (yet!).

So naturally, you'll use something you don't have to pay for out of your savings. That means Linux, Java, MySQL, PHP and Python. Who cares that it'll take longer to write? It'll save you money!

If you've got customers, then you're time-poor and money-rich. So anything that saves you time is worth doing.

Of course if you're time-poor and money-poor, then you're about to go bust...
Anonymous
Anonymous
7/6/2010 1:04:25 AM #
Enjoy your writing and .NET articles, Aaron, but in this vague op-ed it strikes me that you are conveying your own impressions.

To make global statements about use of .NET in start-ups, we need more, imho, than anecdotes. We need some kind of systematic research, some kind of statistics.

best, Bill
Destek
Destek
7/6/2010 1:34:05 AM #
After reading all of this I have seen only a few well stated reasons why .NET could be a hurdle for a startup - but then only down the road.

Economics
Exit Strategy Hurdles due to Business Attitudes toward Microsoft

Startups need to work quickly and are often populated by a small team of people with more entreprenorial spirit and vision than commercial programming skills.   The rush toward open source seems to me to be more about adding macro-level functionality rather than smelting everything from raw materials.  With a startup you have to hit-the-ground running because you are either joining a race-in-progess, or you truly have a unique idea others with more capital will swiftly begin to copy (who are happy to join an interesting race late).

In my opinion .net gives you one of the best environments to smelt all of your own functionality from the closest thing to raw materials available.   The high licensing costs can be avoided by judicious use of expensive back-ends.  

As for developing on Windows - if you are developing a desktop business application it is simply not a matter of choice.  
7/6/2010 1:47:56 AM #
Along with quite a few other commenters, I have to say that the issue is not enterprise mentality vs startup mentality, but cost. The lack of support and patchy support of newer features in the open-source Mono framework doesn't help either.

I tried getting a service up and running that was built on .NET technologies, which failed because I could not afford to keep it hosted. I'm currently redeveloping it in Rails because the cost of keeping it running on that platform instead is practically nil for me.

Even with BizSpark, there are still heavy costs involved in running on the .NET framework, for startups that start off with nothing. The only way that using .NET makes any sense from a financial standpoint is if the startup begins well-funded and can establish profitability within its first three years.
franc23
franc23
7/6/2010 1:48:32 AM #
Hosting costs and perceived cost of software:
Backing up Scott Koon and Amar Galla, hosting costs were the first thing that turned me away from microsoft when I first ventured into web development. It's not even close to being comparative...try searching on google or bing for windows hosting vs linux hosting.
Secondly, the perceived cost of software. Now I know that most of the development software can be downloaded and installed for free. Back then, the thinking process went like this. CentOS, Ubuntu,etc are free...Windows costs money plus upgrades cost more money. Same should be true for any add-on software, while there are tons of open-source software out there that actually beat Microsoft and all it has to offer.
7/6/2010 2:30:30 AM #
A PHP shared server account costs $9 a month. A J2EE virtual dedicated costs $50. A .NET dedicated costs $250. .NET and IIS on a VM over Remote Desktop is a horrible development experience. SSH, SFTP, Dreamweaver, Eclipse and J2EE is much easier. And Apache Perl/Python/PHP is often installed by default on Linux.

Microsoft intentionally cripples their cheap server products with idiotic limitations like two Remote Desktop sessions for VPN access etc. Facebook has 60 000 servers and hundreds of developers. Think about it. .NET is great for consultants who want to bill a 100 hours for Hello World.

Microsoft has a great platform. It is just terrible to use without sitting on the same IP subnet. VPN access to VM hosted IIS is oversold middle-management-promotion price saving crap.

J2EE (Caucho/IBM/Oracle) on a VM (Xen/Vmware/Parallels) is a cheap slice of awesome.
7/6/2010 2:42:50 AM #
@Jan - why are you comparing a PHP shared server account and a .Net dedicated server costs? DiscountASP etc offer shared .net for $10/month. Azure Development Accelerator Core offers a virtual server for $60 a month.

Why would you develop on IIS using Remote Desktop? VS offers everything you love about the others.

Don't mind comparing things but let's compare apples with apples. There are pros & cons on both sides.
rob
rob
7/6/2010 2:57:51 AM #
I always get paid MUCH better by startups when I develop in .NET than in PHP.  Case in point: those who can afford a MS SQL license can certainly afford to pay their developers.  PHP/MySQL while comparatively a great platform, their owners are relatively thrifty.  To me, its not the language per se, its the owners.
Ted
Ted
7/6/2010 2:59:12 AM #
@StevenLivingstone

Yes, we all know that Learning & Support have their costs too. We fully understand that. It's not like FOSS culture thing just popped up yesterday in InformationWeek latest trend.

First of all, Learning .NET is proven to be very costly compare to learning Ruby on Rails if you're developing website.

Second, learning .NET for desktop application could also proven to be very costly compare to just use some people's past experience using C++ or Python(whether you want to use wxWidgets or MFC or even VB6 the choice is yours). I rarely see compelling desktop app written in WPF to be honest. Most startups that I've seen so far either write a very simple thin client using C, C++, MFC, WxWidgets or even WxPython. Besides, some of these people are moving to iPhone/Android anyway.

Third, learning a new technology, albeit is costly, could pay off in the long run in case Microsoft decided that C# is no longer cool or they need a new way to generate more money out of developers.

Keep in mind you still have to keep on learning the humongous .NET platforms in order to be at the top of your game.

Now, let's move onto support. Can Microsoft give me a patch ASAP if I need one? Hell no. Not if you're a startup. Not if you're a mid-size business. Probably yes if you're like Fortune 100 or Fortune 50 that pays hundred of millions of dollars to Microsoft. How do I know this? dude, ask anyone who work at Microsoft (and left already).

You don't mess with the schedule bro. Everything is "for-profit".

How many people are going to fix a bug in Linux? I don't know, how many people contribute to Linux? thousands? more? who knows. I know that you can get something fix really quickly if you want to. You can post a bounty to the Linux community asking for a quick fix (even if the fix didn't make it to the final branch).

Hey, I agree with you, there's no such thing as Zero cost. But at the same time, I damn guarantee you that for startups (that grows eventually), using .NET vs Open Source platforms do have a significant license cost differences.

You need people who knows SQL-Server and Windows administration too no? those kinds of supports. Now compare that with using Linux and MySQL. The former cost 7k per core and I don't know how expensive is Windows Server, while the latter cost free!

You said support from Microsoft in terms of SQL-Server issues? Well.. maybe you should hire a more competent DBA? No, I'm serious. A competent DBA + the internet would be sufficient. You think just because you pay support Microsoft will fix all of your problems instantly and magically? Hell no.  

I'm not sure which Azure pricing point you're talking about sir. A type of Azure that is similar to Google AppEngine cost 10 bucks a month while Google AppEngine is FREE.

Now you mentioned the cost of the other Azure almost similar to Amazon. I'm not sure how you came into this conclusion. EC2 gives you full access, meaning you can install MySQL, Rails, Java, PHP, Memcached or whatever you want to install. You have root access. I don't think Azure gives you that.

Sounds like you haven't tried other platforms outside .NET?
7/6/2010 3:13:28 AM #
Simple answer: It's too expensive compared to the other solutions.
7/6/2010 3:17:55 AM #
Just to add, the days of expensive Windows hosting are sort of gone. Some due to more people using Windows hosting and some due to Microsoft giving better licensing models. Currently the cost of Linux vs Windows host is not an issue. All are almost the same.

I have used both PHP and .NET. PHP reminds me of Microsoft ASP technology which was there way back in 1997. .NET is quite a bit sophisticated system and has evolved quite a bit over being labelled as a Java clone. If we compare current versions, .NET is a fantastic platform with an extremely huge eco system. If it was not stable or was not robust enough, big banks and critical systems would not be using it.

With various programmes Microsoft introduced last year, WebSiteSpark, BizSpark, new Action Pack, DreamSpark etc, things will change. The cost of developing on the MS Platform with these programmes is now almost free ( $100 to be paid after 3 years ). I am sure things will change, as people see the benefits of .NET eco-system, it's not just a programming language, but a huge Eco System of products which go along with it, SQL Server, SharePoint, BizTalk, Exchange, Dynamics, Azure to just name the few.

From my point of view, PHP and C# are just two different languages. It really does not matter. What you end up doing with it matters. You see excellent implementations of both .NET and LAMP stack and you see really bad implementations too. It's not the technology which is at fault as all are mature technologies, it's the implementations which are faulty.
Sirus Lee
Sirus Lee
7/6/2010 3:22:25 AM #
My guess is that when people read your post and read 'startup' they will have in mind Google 2.0 or, at least, some web related application.  Not all apps even by startups are web related.  And if they are not web releated then to make money they have to target the platform with the largest user base: Windows.

I was part of a start up that tried to use the Java stack because of the perceived cost issue.  However that failed because unless you are doing pure server-based work you quickly have to interact intensively with the OS.  And Java is not in the same league as .NET in this respect.

Pretty soon we switched and never looked back.  Licensing has not been an issue:

A Windows license comes heavily discounted with every PC;

MySQL is free on Windows just as it is on any other platform and the MySQL team have provided open sourced .NET drivers for many years;

If you have to work with SQL Server SQL Express is free and functionally identical to the commercial version except the 4GB database limit and single core processing;

I can see that PHP or Python or Ruby might be an advantage if your goal is to produce some web app that will attract huge numbers of registered users.  But while there are many of those, there are even more startups providing niche solutions that corporations, the ones with lots of money, will buy.  

These don't hit tech journalism because they're not kool.  Bit boring even.  They don't get VC cash to fund PR that will fill the journalists inbox because they will never be the next Google/Facebook/Ebay in which VCs want to invest but are often proftable even so.
Brandon
Brandon
7/6/2010 3:27:08 AM #
So what are peoples thoughts on Silverlight and the future of .NET? Seems to me the cost of developing Silverlight is virtually 0. Almost all the tools required are free. http://www.softsyshosting.com/ seems to provide hosting with a sql database for $3.50/m. As a platform for the web, and potentially future phones and tvs Silverlight seems to  be a very powerful choice for startups.
7/6/2010 3:32:46 AM #
Being a startup and working with startups there are a lot of truths to all the points being presented.

With the option of choice, compounded with each unique developer and business scenario (think: client needs) there are pros and cons to each available development choice (ie. platform, experience, cost, scalability, support, early-stage, later-stage), startups/developers must choose options AND be presented with options with the path of least resistance to the majority market share of services/features that can enable success (quickly).

In our experience (enabling payments integrations through an open payments platform) we've cast a wider net to attract various developers who are tasked with work from a client, that have preferential platform and language requirements. Starting with .NET, we quickly moved to enable various developer environments. Like any business, providing the availability of options makes sense to conveniently provide familiar tools that service the needs from the various developers to increase their success (whether for a client -whom developers are making decisions on behalf of- or their own startup efforts).

Again, we're back to choice and the choice is in the hands of developers.
mtcoder
mtcoder
7/6/2010 3:35:29 AM #
The main issue is the learning curve.  .Net is a semi brutal language to get started with. It is always growing and constantly changing states. However it is the most consistant language around. That is why enterprises use it. No matter what .net version you run into a .net programmer will understand it and can reverse code for understanding if needed. Open source doesn't offer that as version changes don't always ensure backwards compatitability, nor do they promise any support outside random forums. Now to MS's attack MS is the same way, you use forums, and go from there.

.Net stack though provides a consistant way to access everything. Web, desktop, mobile, database, etc all tend to maintain a very similar stack. With open source you run into a new great thing every week, and either spend tons of time updating or fall behind the curve.

The bottom line though is .Net is harder to learn plain and simple, it is harder to work in a structured code base vs what you see in open source technologies. Past the learning curve though you find real power in the language. And if you look at those open source companies that are big like facebook, they have to use about 10 different open source technologies to support their infrastructure, which means more overhead costs, and more maintenance.

In the costs aspects it use to be MS was costly, but they now give you everything at its core for free. Free sql server, free visual studio, you can get just about every piece of MS software for development for free or nearly free. And that is without bizspark etc. Just go download from their site. If anything Microsofts biggest problem is it innovates so fast people fear keeping up.

Also you find most open source startups just use free pre-build what you see what you gets style programs and then copy and paste different modules into what they want / need. This is great for a start up, but causes them to typically fall short in overall abilities, unless they expend the same or more money into open source technologies. Cause while yes this and that is free for linux etc. It is only free till you get into the enterprise class and your forced to pick up red hat server licenses etc cause you need server virtulization and server clustering and database fail over clustering, that open source doesn't offer for free. How does Red Hat make millions a year? it sells software for a price, just offers it's low end stuff for free. Same for all open source stuff either it doesn't support big time league, or it charges for the support. Startups don't often need that big time stuff though, but what happens when they do? well they spend much more making a transition, then if they put the up front cost. However it is probably more financially viable to do it at that point. With the local business group in my area, I see it time and time again, they start free with open source, get revenue then turn to MS for longevity, or sell off the product and start with MS / .net on the next one.

7/6/2010 3:39:13 AM #
IMO (and experience) the startups are looking for bang for their buck. Open source is usually as cheap as you can get. scripted languages such as PHP or Perl can be developed using notepad or any one of the really nice and free editors (editplus, etc). Plus, you can have a PHP dev for around $10/hr. That is CHEAP labor (which IMO it hurts the freelance dev market).

What do you get with .NET? Exactly what you make of it. But, to make the most of things you have to use MS stack (MS SQL, Visual Studio, etc) and that is where you will spend a ton of money.

Then again, If anyone knew anything worth a damn they would know about Microsoft BizSpark and how they are giving away MSDN accounts for startups (as well as give them access to angel investors and other resources). What do you get with MSDN account? Access to all MS software. I have MSDN through BizSpark and I love it.

So, now that MS Stack is [basically] free, would you still choose "open source" over .NET?
7/6/2010 3:42:43 AM #
I really enjoyed reading your article and also the insightful comments as well. Quiet a lively debate!

I was writing a comment as well but it got so big I decided to blog it instead:

blog.davehawes.com/.../...-web-start-up-scene.aspx
y
y
7/6/2010 3:44:45 AM #
Just read this old article:
www.tbray.org/.../WebsThePlace
Bruce
Bruce
7/6/2010 3:47:14 AM #
I program in both .NET and LAMP.  If I want to start a small business, I will use LAMP because:

1. While .NET has some cool features, I simply could not afford to start a small business with it.

2. If I want to do something really nifty, using JavaScript/ECMAScript or otherwise get very close to protocols, it is often very difficult to do in .NET (although the latest version makes it easier), but fairly straightforward in LAMP.

3. I like freedom from periodically having the rug pulled out from under me by Microsoft.

4. While Linux has some maintainability problems that Windows doesn't, most of the problems that are solved by high-priced third party products with Windows can also be solved by not so high-priced products with Linux.

5. If I want to keep up my skills off the job, LAMP is often the only choice that I can afford.  Too many times in the past, I have lost opportunities because I had no access to a mainframe or a network of Windows servers to work out the missing bits of knowledge that I needed to do the project.

6. Linux is more costly to maintain only if you have a house full of Microsoft-only IT staff who can't do the job.  Try to estimate the costs when you have a house full of LAMP-experienced staff.

7. Enterprises can do well with LAMP and all of the resources that are available, even if you have to pay a bit.

8. Microsoft support isn't, unless you are a beta site.  I get much better support from the open source community.
Nestiiii
Nestiiii
7/6/2010 3:54:34 AM #
I understand the whinging about .NET + Web-Apps (hosting prices, tools, ...). But for me the strong side of .NET is that I can use it for Web+Desktop+DB+Industry (yes - I develop logic for plants and machines in .NET). We often have requirements like: ... ah, there is a database with some recipes, ... ah, I want to collect the data of all our machines on this server, ... ah, in case of an alert inform me per SMS, ... ah, and of course I want to use my office tools...
Coming from C++/Unix background all these things are so easy today with .NET - so I see no reason why not using the technology for an start-up (except it's a pure "web start-up").
P.S. And of course: VisualStudio is "the best" Smile
(Only challenge me on this if you have used 5+ programming languages+tools on various operating systems and developed apps > 1 mio lines of code)
7/6/2010 3:55:45 AM #
.NET is more expensive (I can't believe people still disagree with this, or point to BizSpark), its less productive, and it doesn't attract the alpha-dogs because it isn't cool.
7/6/2010 4:07:33 AM #
Aaron,

I've built startups on both .NET and LAMP. Despite the elaborateness and readily-apparent sophistication of .NET tools and frameworks, I've found Rails on hosting solutions like Heroku and EC2 to be more elegant and productive. I wouldn't personally use .NET to build a startup. It just doesn't have enough right out of the box to give me the ancillary business and infrastructure services I need that aren't part of my core product.

I appreciate your observation about the focus on systems versus products. I don't see it as being exactly true to form though. Systems and products are peers. Products are composed of systems. In corporate software development, we tend to fail to recognize software development as product development and we tend to manage and organize software projects implicitly (and even unconsciously) around manufacturing methods. This also explains the presence of PMI-certified project managers on software projects trying to apply the manufacturing-centric PMBOK to a discipline that more amenable to product development methodology than manufacturing methodology.

"Enterprise" is largely an irrelevant distinction. It usually just refers to integration, diversity, scale, and robustness. I don't personally know any successful web startup that doesn't deal with the same issues that we typically associate with "Enterprise" software. It's just that in the startup world, most of the technologists also have deep systems experience as well as development and testing experience and are able to deal with these issues directly without having to resort to commercial solutions like WF, WCF, BizTalk, AppFabric, etc.

It its heart, it's not an issue of the LAMP startup people not having an awareness of what .NET can do - that's just not my experience of the LAMP community in startups. As difficult as this is for a .NET adherent to swallow, technologists in successful startups just have little to gain from .NET. Having become proficient with frameworks like Rails that are constantly in the midst of rapid entrepreneurial software development, startup technologists are advantaged by stacks other than .NET that are a more appropriate fit for the whole range of concerns and risks that startups face that corporations aren't really called to deal with.

There remains one salient reason to use .NET in a startup, and its a common thread that binds most .NET startups: the founding technologists come out of a corporate software background where .NET is what they know and use. Learning something like Rails, Django, or CakePHP, might be too high-risk for folks in these circumstances. You can see this reflected in the TekPub case, where Rob and James built the first version of their app on .NET because it's what they knew, and built the second version of the app on Rails because of what that platform offered above and beyond what they could get from .NET.

As with all things, the best way to understand why someone else doesn't do what you do is to spend time doing what they do. This invariably shows that there were considerations that were previously out of our perceptive range and that our perspective was constrained by lack of practical experience in the large.

My current startup is built with a mix of platforms and tools. They're all the right too for the right job according to a breadth of time-tempered concrete experience in composing products from systems. Windows client apps are being built with .NET. Our web server apps are built using Rails. I simply couldn't achieve the productivity on the web server side with .NET that I can with Rails, and I have no particular reason not to build a Windows client app with a framework like .NET that is made for this purpose. At the same time, we're considering using Mono's client platform rather than Microsoft's. It might take a bit of learning, but I've seen amazing productivity advantages in Mono's desktop development tools that I'm not seeing in Microsoft's, just as I've seen advantages in using Rails on the server rather than using ASP .NET.

Marking decisions about technology in startups means having experience in startups building products and systems on a wide variety of platform and technology choices. Don't presume that people who don't chose .NET are simply ignorant of .NET. The situation is often the direct opposite. Your experience might take you down the .NET path for your startup. Sometime later in your career, circumstances might be different enough to lead you to other conclusions.

In the end, it's all about experience. It's only our experience that informs our perspective. The more we have of it, the more that we can put into the pot to stew up a deliberation. We may still end up choosing .NET in the end, or we may choose something else. But the more we know, and the finer that knowledge - honed and tempered by concrete experience - the better our decisions become, and the better we are at seeing the circumstances we face and fitting technologies to them.
7/6/2010 4:10:46 AM #
Some of the comments are about costs and mention the costs of people.

LAMP, ROR, Django, and J2EE are all free for high schoolers and college students to explore (and have class projects based on.)

If you asked startups why they use MySQL, Postgres, etc over Oracle the answer would be the same.

These young people don't have the same costs as somebody who started with Microsoft vBasic 20 years ago and are more likely to understand the trend.

Finally, one strength of .net applications is in creating a windows like interface, but now that more people are using Mac/google/web and want a web 2.0 feel; you might as well use the css / ajax helpers that these frameworks include.
7/6/2010 4:12:02 AM #
@Karl: Really? How is it less productive? What can you not do in .NET that you can in whatever you advocate? If I were to start up a LAMP project it would take me twice as long (or longer) because i haven't done LAMP in 3 years. So how is that more productive than releasing that same project in .NET?

What alpha-dogs? What world do you live in? Have you ever been in the .NET world? Every world has their alpha-dogs. Just because you don't know about them doesn't mean they don't exist.

It doesn't matter what you use. it comes down to what you already know. It makes no sense to do a start-up in LAMP (or equivalent) if you've been in an MS shop primarily. If you were a .NET guy you would know how to do a start-up in .NET without the "cost" that you complain so much about.

This is just going to be a huge flame war. ".NET is better than Java", "PHP is better than C#" blah blah blah.

Opinions are like a$$-holes, everyone has one and they all stink.
7/6/2010 4:54:20 AM #
FYI: I'm using a dedicated server running Windows Server 2008 and .NET, it costs me £80/month, the Linux version of the same server costs £70/month. Fasthosts sells Virtual Windows Server 2008 hosting from £37.59/month, again the Linux version is £31.79 (ironically the RedHat version is significantly more at £55.21) http://www.fasthosts.co.uk/Virtual-servers/ It's the same with Shared hosting, again only marginally more expensive by a few quid. An actual Windows Server 2008 license can be sought for as low as £300.

If SQL Server is too expensive then give SQL Express a try, or there are plenty of FOSS alternatives out there (MySQL, MongoDB etc.) that run on Windows.

I can understand the start-up costs with buying licenses for Visual Studio and what not, but I'm just not buying the massively more expensive argument for using .NET.

As for which technology is technically better (.NET vs. Rails vs. PHP etc.) well that's a religious argument that no-one will really win. Each has it's own merits and it's down to the competency of the developer more than anything. Though I would agree with karl's comment that .NET doesn't attract as many top tier developers (the alpha dogs) as other technologies, but they're out there.
HoyaBaptiste
HoyaBaptiste
7/6/2010 5:01:54 AM #
An end user does not care if you are instancing a filesystem object using COM, .NET 1.1, 2.0, 3.0... Same with accessing data using ADO, ADO.NET, LINQ, Entity Framework, NHibernate. What should a startup do? Eat the cost of the "upgrade" or pass the cost on to the client? How do you justify it to a customer? Yes, you should write code to isolate these changes... but to strike quickly many startups can't afford the planning for this degree of design. Furthermore, only a select few are learning this level of design / architecture (repository pattern, UnitOfWork, ) in the Microsoft ecosystem.

I am not familiar with how often the Java, pHp, other platforms are updated. However, the retooling of the .NET platform (1.1, 2.0, 3.0, 3.5, 4.0) pressures developers into re-writing their applications to take advantage of... plumbing. This is yet another cost associated with learning and keeping up with the .NET framework. I think if you can separate your "core" logic away from your GUI you can mitigate much of this "learning" cost. At this point, the core should not be influenced as much by the platform changes. GUI should be light enough to retool, re-write, or even throw away and take advantage of newer offerings (WPF, Silverlight, etc).

As always, your mileage varies depending on whether you "ease up on the gas" (pick and choose parts of the framework to use) or "floor it" (go "all in").

7/6/2010 5:18:24 AM #
Good Post Aaron.



karl
karl
7/6/2010 5:21:15 AM #
@Dustin: If existing knowledge is the only (or primary) means to be productive, why didn't we all stick with assembly, pascal or c? When I was in school and Java was new, C programmers used to laugh at Java and its automated garbage collection. They were comfortable and, from their point of view, very productive. Same thing in happening with dynamic languages today. You would surely point out to a C programmer that learning C# for web development, while slow at first, would boost his productivity.

As for my knowledge/invovlement of the .NET community, I think its fair to characterize my involvement as having been in the .NET world...

Alexander DiMauro
Alexander DiMauro
7/6/2010 5:30:50 AM #
I program in both .Net and Java, and recently have been picking up Python and Ruby. I certainly have my biases as anyone, but I try to be open minded, and I'm so tired of hearing all the Microsoft trash talk.

The real problem is summed up in Linus Torvalds' (yes THAT Linus Torvalds) article entitled 'Microsoft Hatred is a Disease'. No matter how much Microsoft changes, and reverses many of the things they were criticized for in the past, no one cares because all the 'cool' people were already told to blindly hate Microsoft. Apple is doing many of the same things, but they get away with it because the 'cool' people are on their side. They can get away with almost anything, even storming reporters homes while they are eating dinner. (Note: Did anyone see the new Futurama recently, with all the people walking like mindless zombies to the store for the release of the new 'eyePhone'?)

TekPub is a great example because, if you actually watch their videos, and not just read that one article about how they switched to RoR, Rob Conery talks about how ALL developers (not just MS devs) need to open their eyes to other ideas and frameworks. The open source community can be just as closed-minded as the non-open community.

On a side note, there was another article out there (forgot where, but I'm sure a quick search can find it). This article was about how there are a total of zero open-source companies valued at over $1 billion, and likely never will be. The only one that comes close is Red Hat, valued at about $750 million. And, guess what? Red Hat targets the enterprise.

It seems that people want Microsoft to stop being focused on the enterprise, but what are they supposed to do, drop support for the majority of their business? And, as others have said, the idea that open-source is 'free' is a major fallacy. Nothing is free, there will always be associated costs.

Don't get me wrong, I love open-source. But, I also love the .Net world. Developers should be working together, I'm not sure why we always seem to be at each other's throats. This nonsense has to stop.
7/6/2010 6:40:49 AM #
There was another .Net based business that launched last year that your aricle failed to even mention in passing; http://www.my-msi.net/Admin (cookies required).

And to the person who stated that a server with .Net and SQL Server would cost $250/mo you're number are way off base: The actual cost of a .Net w/ SQL server is under $100/mo with Amazon!
7/6/2010 6:59:30 AM #
To all tha spoke about cost related with .NET hosting: BizSpark offers Azure app hosting for free, to all enlisted startups
7/6/2010 7:14:32 AM #
The funny thing is that during the 90s, Microsoft was not seen as a key enterprise player by IT departments, who were focused on IBM, Oracle, and SAP.  Microsoft pushed their way into the enterprise by catering to developers outside of IT.  Unfortunately, Microsoft lost their focus on the development community.  To their credit, they are paying attention again with free tools like Visual Web Developer and programs like BizSpark.
Puneet Gupta
Puneet Gupta
7/6/2010 7:38:03 AM #
I started my professional career during client/server days and quickly became a Microsoft buff. Would live and breathe Visual Basic/Visual C++ and then .NET as we moved to the Internet.
In 2003 when I started my first company - I naturally chose .NET and surrounding Msft technologies as the platform of choice.
After few months of development work and in preparation for going live, even before we had earned a single dime in revenue, I got slapped by Msft for license fees in hundreds of dollars per month. That was a good wake up call. We bit the bullet hard, and redesigned the application using open source Java.

I am sure things have changed since then, and .NET's price point has come down significantly. But it can never compete against free (open source).  
7/6/2010 8:48:51 AM #
To whomever said that I didn't mention the BizSpark program in the piece: you're half-right. I didn't mention it by name (probably a mistake in hindsight) but I did link to it towards the end of the piece.

I think BizSpark is a giant step in the right direction, but more entrepreneurs need to be exposed to it and the program probably needs to promote itself more visibly.

7/6/2010 8:51:40 AM #
I'm disappointed that there is a little mention/use of Mono framework (open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET) in .NET community. It provides everything what is desired by a "poor" (in terms of money and insufficient funds) startups which would probably want to avoid licensing costs, build their products on open source stack like Linux, MySQL/PostgreSQL/NoSQL, Apache/Nginx and still benefit from .NET platform.

There are areas which could cost you time or money like choosing IDE (Visual Studio vs MonoDevelop) or lack of support for certain technologies (partial support for WCF or only preview release of LINQ to SQL, however it's usable and works for every mainstream RDBMS when compared to MS counterpart), but they are definitely not dead ends. I would say that every open source technology is free only if your time has no value.

A lot of people do not realize that Mono is actively developed by a community of merely 80 or so developers and less than a half of them are working for Novell which pays them for their job. Microsoft can invest exponentially more developers/money into their .NET implementation and make it state of the art. However Mono is still, relatively big, open source project, so anyone can join this effort and make it better, even enhance it with functionality that MS.NET doesn't have (Mono's SIMD support is a perfect example).

Please, MS/Novell/Mono/.NET haters, don't start to troll around MS patents, FSF warnings or similar highly flammable materials and read some background stuff first. I value my time and I want to spend it by developing software with my favorite technology and not to argue with anyone. I think you should do the very same thing because time is the most valuable thing that a man could spend.
http://en.wikipedia.org/wiki/Mono_(software)
http://www.mono-project.com/Licensing
http://tirania.org/blog/archive/2009/Jul-06.html

I'm using this open source implementation of .NET framework more than a year, mainly developing ASP.NET and ASP.NET MVC 1,2 web apps with MySQL/Mongo databases and everything runs on Linux machine with Apache web server. I have never encountered a single issue so far which will cause me to stop using this combination of technologies.

There are great examples of companies which are using Mono and have succeeded on market (http://www.mono-project.com/Companies_Using_Mono). That some achieve great success, is proof to all that others can achieve it as well (this is actually a quote from Abraham Lincoln and it's of course platform/technology independent).
7/6/2010 8:56:42 AM #
Tomi,

I didn't mention Mono because my exposure to it has been pretty minimal. I was not my intention to dismiss your work.
7/6/2010 8:58:29 AM #
Err, that should read *it* was not my intention to dismiss your work.

Furthermore, I just looked over the list you provided of companies using Mono - it's impressive!
terry
terry
7/6/2010 9:06:13 AM #
David groves has said everything possible about why startups are using inadequate and time consuming open source software tools instead of .NET. It's simply a matter of money. Even if I had a bare bones startup I would still use .NET because I could spend more time concentrating on my BUSINESS or PRODUCT instead of the software that I use to build it. This is ABSOLUTELY worth the cost of the license fees.
My experience with OSS is that the tools are generally broken and I don't have time to fix some 15 yr old kid's code or some other non coding simpleton that they thought would be cool to contribute to the Linux kernel.
Another problem is that they make all their money from support so they almost always produce some of the most obfuscated and confusing software on the planet to drive new support contracts. Then there is the problem of smug superiority among the "practitioners" who automatically assume that their software is automatically better than some "closed proprietary system".
The community just stinks and is flat out lazy and they make miserable software with even worse or non existant documentation to boot. I'm 100000% confident that I can deliver a better and more focused product more quickly using .NET than these bozos any day of the week.
7/6/2010 9:13:25 AM #
There is one CMS that is blazing round the Entrepreuner community and that is Wordpress! I don't think MS has anything remotely close on the horizon that can compete with Wordpress and it's plugins. It's a losing battle, as much as I would like to see .NET gain more traction, more and more developers are flocking to PHP because Wordpress now accounts for 10% of all websites on the web today. Unfortunately for MS it's Wordpress is getting even better while MS doesn't even have a product in sight that is close to that. It might as well sink Bizspark, it's just another failed venture.
7/6/2010 10:25:39 AM #
Rohan: Here is a perfect example of why Microsoft doesn't care. Wordpress. They don't care if they have a competitor to WordPress. Why? Because Wordpress runs on Windows server and on Azure.

Microsoft isn't an applications company, a lot of people miss that, it's a platform company. They don't really care WHAT you are running on Windows as long as you are running it on Windows.

The reason they cater to developers is to get them building solutions on the Windows platform.
TB
TB
7/6/2010 11:06:37 AM #
I *returned* to programming almost 20 years ago, and moving from QBasic on DOS 4.01 for a one-shot custom virus detector to .NET 3.5+ on XP & Server 2008 (no 4.0/R2 projects yet, and no Vista/Win7 - yes, I'm an enterprise dev), I've had to learn some 8 or 9 different data access technologies (since VB2 with Data Access add-on), and probably gone through an average of more than one required (data access) upgrade per year with some impact to my code.  Just concerning getting to my data.  I used to run a small Windows network at home (AD based), but it gradually disintegrated for reasons I was never able to determine.  While it was working, it required a good deal of handholding.  I then installed a Linux server which ran as a full service server for several years, rebooting only due to power outages and a couple of upgrades.  It finally ran out of disk space, because I pretty much neglected its existence - I just used its services.  I never really learned much about Linux - I didn't have to.

While the ...Spark programs can get you started, eventually you will be contributing to the MS bottom line - and to a handful of other companies.  If you are entrenched in the VS/MS world, chances are you will eventually be paying between $2,000-$6,000+ per developer per year just for the privilege.  The Express editions are great for learning the language(s), but for serious work you'll need both hardware and software licenses for multiple products and platforms and at least some of the more advanced VS features - hence a high level MSDN subscription.

Also, the entry threshold into .NET development is high from a training/experience point of view.  And it doesn't slow down.  It seems that every time I start a new app, there is a new way of doing the same thing.  I try to keep up, but it is almost impossible to become fully proficient all-round.

I picked up PHP, MySQL and JS much more easily (for a single project), but as a startup at the time, did not have money for a commercial PHP editor and debugger.  The free one that I found didn't quite work (debugger didn't) with my environment, so I sorely missed that at the time.  But you use what you can.  I returned to corporate life and .NET after that.
7/6/2010 11:30:54 AM #
Hmm, the comments have really exploded here, many good, and insightful ones. I responded to it here: richardconroy.blogspot.com/.../...nd-startups.html

In summary:

Web development, from the outset has been dominated by open source software and solutions. Whether that was back in the days of CGI, Apache and Perl ~15 years ago, or integrating Tomcat, Servlets in Java ~10 years ago or building with LAMP stacks in the noughties; open source technologies have always been the incumbent stacks for web development.

There have been very few credible wholly/mostly commercial/proprietary web stacks that have seen any success whatsoever. Microsoft have one, and various flavours of J2EE have made a bit of a splash.

Its no surprise then that most startup founders consider open source software as their primary choice. Commercial vendors need to be competitive with open source solutions in order to draw developers back onto their platforms.

Microsoft will always be able to market the various (improving) flavours of .NET to existing .NET developers. In order to alter the dominance of open source solutions in startup web development, they need to be making a very convincing case of it.

They would need to do a 'Rails' on it.
David JL
David JL
7/6/2010 12:47:47 PM #
Wow!! I really cannot believe how many closed-minded fanatics are out there. My take on this is, if you find it easier for you to develop on a particular platform whether .Net, Java, Python etc; then by all means do it. I really just cannot believe how many posts I've read where open source developers find it repulsive at the thought of using Microsoft technologies. Comparatively .Net developers stray away from such remarks toward open source developers. I’m always curious as to what the open-source buzz is all about (yes I am a .net developer), and most others will agree with me on this. I think open-source developers (especially the ones on this post) feel threaten by .Net thus hide their insecurity by belittling its use.

Every technology will have its pros and cons, you just have to research and find the one best for what you are trying to accomplish. I currently maintain a full time job and also freelance on the side. What I recommend for those startups wary about licensing, which is usually because of Sql Server, is a .Net front-end with a “MySql” backend (Works Great!!). Startups should consider implementing the least costly platform that will allow them to start, and later down the road grow with little or no additional investment.

As a developer, I would like to get paid for my work. For those developers preaching open-source is better because it’s free then sit home developing your open source software while living off of someone else’s income.
Ted
Ted
7/6/2010 4:01:32 PM #
I can't believe most .NET developers are still using the same reasons years after years: Open Source is buggy, Open Source is as expensive as .NET, *sigh*. I guess that's what happened when you haven't tried to use other platforms than just .NET

Listen people who read this blog... first of all, people like David JL is ignorant. I don't see any Open Source zealots that keep preaching "I write software for free". It boils down to: I want to maximize my profit if I were to build a business, which platforms can give me that.

Second, it's all about adapting to changes, something that Microsoft can't do because they have to serve Enterprise users and backward compatibilities. Plain and simple. Your growth depends on innovation that happens in Redmond, not on your own hand.

Third, forget about Mono. Mono is nice and cute and all that, but why should I use Mono that looks like a half-ecosystem compare to Microsoft platforms itself? Why don't I use.. um.. Java with all the great libraries?

Fourth, if you happen to know .NET already and mastered it, you should do your own due diligent and calculate your own cost. I'm sure y'all are smart people, if you think .NET gives you the most benefit, go for it. For the rest out there who happened to not know .NET, there's no point, learning curve is high. Stick with what you know.

Fifth, people who use PHP wouldn't likely to dig in an area that involves heavy desktop app. It's just not in their gene. If they do so, they might fail because they just simply don't have enough experience in the desktop app. Vice-versa might also be true: ASP.NET WebForms developers will not be able to compete with Rails, Django, or heck, even JEE + Spring and other various goodies. It's just not in your gene to do the Web Development the most optimal way. You can't even do TDD fluently using WebForms.

Sixth, Yes, there are costs to use Open Source later on. But it's a big "MAYBE". It is definitely not a vendor lock-in. You may need some help from Redhat, or you MAY NOT need to buy support at all. There are Choices out there: RedHat, Ubuntu, various other vendors. They are all using LINUX. It's not like you build your infrastructure specifically for a single OS.

It depends on what kind of obstacles you're facing with. On the other hand, Microsoft WILL definitely get some money from you one way or the other. Whomever mentioned SQL-Express with its 4GB limit is just... I don't know what to say to them. That's just very-very short-sighted. Unless if you're developing a Shareware... even so, it's just too bloated to install SQL-Express for a desktop client. I'd use SQLite or something else (is MS Jet Access thingie still around? or embedded SQL-Server? or whatever they have in .NET world, just not SQL-Express).

Seventh, Open Source is not just LAMP (or PHP) people. Java, Tomcat, NetBeans, Eclipse, Cassandra, HBase, Hadoop, memcached, Django, Rails, Python, SQLite3, MySQL, PostgreSQL are all open source. Java has more better offerings than .NET. The best part is: some Enterprise Java stuffs happen to follow standards in a way you can switch vendors if you'd like to. You can pick and choose and negotiate if you'd like.

And last but not least, those of you who kept saying that Microsoft has all these free offerings and you won't be trapped and whatnot are the kind of people who would definitely fall into the trap of a crack dealer: give 'em free, get 'em later on.
7/6/2010 4:20:36 PM #
As others said, working on Open Source solution is quite cheaper than arranging a paid solution. Specially LAMP based solutions are cheaper than open source solutions like JAVA because Java based hosting are not cheaper plus required a bit special skills to manage servers. I would all go with LAMP stack and then Python.

p.s: My country,Pakistan is not mentioned in your list Smile

David JL
David JL
7/6/2010 4:50:43 PM #
Well Ted, thank you for calling me ignorant - I welcome constructive crticism. I think though you should look in the mirror first. You took my last paragraph and ran off with it, perhaps it's because you have several post here with the following:
7/5/2010 10:55:47 AM #
"Whether BizSpark exist or not, it's hard to beat free in most cases."

7/6/2010 2:59:12 AM
"You need people who knows SQL-Server and Windows administration too no? those kinds of supports. Now compare that with using Linux and MySQL. The former cost 7k per core and I don't know how expensive is Windows Server, while the latter cost free!"

7/6/2010 2:59:12 AM
"I'm not sure which Azure pricing point you're talking about sir. A type of Azure that is similar to Google AppEngine cost 10 bucks a month while Google AppEngine is FREE."

Though I am not going to point out the platform/tools I've used on my past projects, I'm sure a more interesting rebuttal would follow; I must say you just proved my point.
Don K
Don K
7/6/2010 5:23:23 PM #
There's a Microsoft Tax for .NET developers that open-source people can just avoid. The code you write in .NET seems to become obsolete more quickly because the Path of Least Resistance keeps changing as feature-sets change and everything gets major new versions to be bought, some of which isn't significantly better than what it's replacing.

It's just not possible to say "Here's a version of Visual Studio that works just fine, I don't want to spend any more time than I need to rewriting my app to stay current with the tools."

Sure there's the toolset-of-the-week syndrome in OS, but it's yet another language/tool, not yet another version of php or mysql that obsoletes the last one.

There's usually a configuration of .NET that does everything I need - almost. (Microsoft seems to think the startups don't want/need a full set of features for their apps.)

And there's absolutely no guarantee that my "sweet-spot" toolset deal will be available next year in a special deal - or available at all for that matter. (Anyone ever use Visiomodeler?)
jmalcolm
jmalcolm
7/6/2010 5:29:46 PM #
I am a huge open source fan (Linux user since 1991, first commercial web site in PHP4) but I agree that there are a lot of overstated comments in this thread and perhaps not all of the opinions are as informed as we might like.

I run a little web start-up right now that runs on Linux/Apache/MySQL, uses C# on Mono to generate the HTML and web services server side, and  uses JQuery with CSS on the client to provide the AJAX/Web 2.0 goodness that everybody craves these days.

I use Subversion for source control (although I should really move to Hg or Git), SSH into my Linux servers, edit config files by hand, and write a ton of bash scripts.  I wear a lot of hats.  All in all, I bet I look a lot like other small shops that are big into Open Source except for all the C# code kicking around.

The lines are not as strong as some think.  For example, you can run Ruby-on-Rails on .NET if you want.  Ruby runs on the .NET DLR.  My understanding is that it is the fastest ROR implementation but I have no direct experience with it.

I want to put in a big plug for Mono.  For me, it is everything I love about Open Source and the best of what .NET has to offer.  Hosting is cheap and plentiful.  That said, I would also love to put a plug in for Linode.com as they are my host of choice for Linux web projects.

Two things I love about .NET and Mono are the language independence and the number of places I can target with the same development environment.

C# is a great language but I can use dynamic languages in .NET too (like Python) or even functional languages where it makes sense.  Integration between .NET languages is wonderful.  In my current ASP.NET project I run some pretty big open source Java libraries on Mono (through IKVM) and it is just like any other .NET language.  On the same project I use a couple of binary (well CIL) assemblies that were written for Windows and for which I do not have the code; they work great on Linux with Mono.  That kind of integration cannot be beat.

I do like C# though and, with Mono, I think that it challenges Java for running everywhere I want it to.  I can program my desktop apps in C# (for Windows, Linux, or Mac), I can code my server-side web stuff in C#, I can write my smart phone apps in C# (MonoTouch for iPhone, MonoDroid on Android, Windows Phone 7), and I can write all the little custom console utilities I write to streamline my process in C#.  I can reuse code on all of them.

Finally, using .NET does not mean having to swallow the Microsoft stack whole.  I use NUnit for unit testing, WatiN for functional testing, and NHibernate as an ORM (sometimes).  These are all great open source projects with roots in the Java and Ruby worlds.  Of course, ASP.NET MVC and the DLR from Microsoft are open source too and also run on Mono.

I do not think I am a .NET zealot.  My first love is still C and I learn as many languages and frameworks as I can.  That said, when my time is limited, there is something to be said for being able to use the tool you are most productive in without having to switch between ten different environments.

In the end though, they are all just tools.  How much you can accomplish is a question of how good you are with your tools, not really what tool you are using.  It doesn't matter if you are a skilled craftsman or working on an assembly line.  Open Source is a body of knowledge and a philosophy.  Even that is only a means to an end.

7/6/2010 6:14:44 PM #
While not a start-up, the company I work for has really gone for mono in a big way, we have a lot of cool new stuff using mono on linux. We've not found mono lacking in any area we've needed so far.
7/6/2010 6:41:30 PM #
BlogEngine.NET Extension: Footnotes

BlogEngine.NET Extension: Footnotes
7/6/2010 10:58:26 PM #
.net i find very productive. And i find that wpf is the way of the future. Other languages are at the cusp of being a relic of the arc ages.
Ted
Ted
7/7/2010 3:17:42 AM #
David JL, take a look at this conversation about SQL Server pricing:
serverfault.com/.../sql-server-licensing-is-it-per-cpu-so-a-32-cpu-would-mean-like-150k-in-licensi

To my knowledge, MySQL is free. So does Linux. Windows Server might be cheaper than SQL Server (probably because they want to make sure they hook you first).

BizSpark, to my understanding, will ask you to pay some amount of money at the end of the day unless your business didn't make it by the time limit (was it 3 years?). What I want is BizSpark for free until I decided to pay some money if I have to. Can Microsoft offer me that flexibility?

Azure is not free unless you join BizSpark. The SDK is free though Smile. AppEngine is free for deployment.

I'm sorry, I think you're looking at the wrong mirror.

@jmalcolm: you probably can run Ruby on Rails in .NET environment but you won't be able to use other Ruby libraries that depend on C library. Whether using such libraries a good idea or not is of separate topic of discussion.

At its stage right now, IronRuby is playing catching up game with the actual Ruby implementation: http://www.infoq.com/news/2010/04/ironruby10 while others can enjoy Rails 3, those using IronRuby can't yet. This may or may not be a problem for some companies. Some people who don't/can't wait for Microsoft probably shouldn't rely on them right? It's one of those... business decisions.

This story is quite similar with Mono if I'm not mistaken. They're playing a little bit catch up game with .NET platforms. The difference probably lies in the future roadmap of Mono. Mono could potentially decided that it's not worth to make sure Mono can run all the goodies that Microsoft provided and decided its own fate by building its own ecosystems. Which could probably turn out for the better for most people who prefer not to use Microsoft stack at all. But until that time comes, there are better options for non-.NET people.

By the way, what do you guys use to build your Mono app? NAnt is dying as far as I know. Is MSBuild available for Mono and are there any tools that support it?

Sure, I agree that they're just tools. But at the same time, most conversation is about money and business decisions (with the assumption that the business is going to run for a long time and want to maximize its profit, not just for 3 years or whatever number that BizSpark tells that you can get all for free or small amount of money).
7/7/2010 4:58:46 AM #
@Ted

Just because you're using Windows Server doesn't mandate that you absolutely MUST use SQL Server*, there's nothing to stop you using various free/FOSS alternatives such as SQL Server Express, MySQL, MongoDB etc. As 'jMalcolm' says:

"...using .NET does not mean having to swallow the Microsoft stack whole."

There are decent hooks into those alternatives too, NHibernate and Entity Framework will hook just fine into MySQL, and I believe there is a .NET wrapper for MongoDB about too.

Have a look at the ALT.NET movement, it advocates using alternatives to the Microsoft tools and practices, many of which are FOSS, but within the .NET realm. For instance, NHibernate over L2SQL or EF, NUnit or MSTest, Subversion/Git/Merc etc. over MS Team Foundation Server, Cruise Control/Team City over MS Build Server, Castle Windsor IOC over MS' Unity. All these alternatives are low cost or completely free OSS.

Lets see, to be productive in .NET you need:

- Visual Studio 2010 Professional - £700
- Windows 7 - £100 - £200

...and that's really it, those are your minimum major expenses, everything else is catered for via free open-source libraries and systems (Source control, continuous integration, unit testing, code coverage, databases, code quality tools and so on).

Then to deploy your creation to a server, shared hosting and dedicated hosting is only marginally more expensive, £80 per month vs. £70 per month in my case for a dedicated Windows Server 2008 vs. the same server running Linux. To run your own server you'll be looking at spending £300 - £360 for a copy of Windows Server 2008. Obviously these costs ramp up with more developers and more servers if your website becomes popular.

'Doing Microsoft' can be done on the cheap, it's a fallacy that you have to spend $$$$$ becoming a MS Gold Partner licensee, and only use all the insanely expensive MS advocated tools and systems (such as SharePoint, SQL Server Enterprise, Visual Studio 2010 Ultimate Edition).



* Also with that example you cite with the SQL Server licensing, if you need to run SQL Server on 32 physical CPUs, then you must be generating absolutely enormous amounts of traffic and should be rolling in $$$$ by now, unless you're Twitter Smile
Joe
Joe
7/7/2010 5:05:19 AM #
Quite the varying opinions here. I'll add mine to the growing list.

I am the sole developer for an ASP.NET based site, and additional desktop apps. Months ago, I needed an online store. Several business requirements were in place which influenced the final decision. I had to think of the long term support and the need for expansion. The biggest design factor was that I (eventually) needed a Point Of Sale system in a physical retail store talking to an online store for orders and inventory. We were strapped for cash, which meant we could afford zero licensed products. (Ok, we did get 1 product: Visual Studio, which was only because MonoDevelop didn't have the feature set at the time.) We needed full control (root) access for the deployment machine, which meant that shared ASP.NET hosting didn't cut it. Virtual Private Server with guaranteed resources seemed to be the way to go. Windows on a VPS was obviously out of the question considering the slightly limited resources. So that meant Linux and MySql.

On the software side, I had actually started out on Java back in the day, but found the language itself ... old ... compared to the newly released C#. I then switched to C# immediately, and have been with it ever since. I've used the Mono project since the day I found it, and am very pleased to use it in a production environment. Php was "fine," in the sense that it worked. But again, the language itself wasn't exactly clean enough for me. C++ is fine, but verbose, and not suited for web stuff. I'm definitely a compiled language, static typed, guy. And while I do think that using the best tool for the job is the way to go, as far as I see it, there is very little that C# is not the best for. Web apps, desktop apps, services/daemons, mobile applications, everything just "fits" with C#.

VS+MySql+Subsonic+Mono for web apps, then WPF/Silver/Moonlight+web services for desktop apps. Mercurial for source control. The power that the Mono project brings you, just... wow.

If you take away anything from this post, make sure it's this: use the right tools for the right job. That being said, there is very, very little that C#/Mono does not do.
Nick Aubert
Nick Aubert
7/7/2010 6:21:16 AM #
Why don't all startups use .NET?  The same reason they don't all use Java or LAMP: startups are very diverse, they have different needs and there are great alternatives.  If you think C#/.NET is awesome, that's fine, a lot of people feel the same way.  Same goes for Java and LAMP.

@Scott Koon For the record, Wordpress uses traditional non-cloud hosting.  They're not on Azure.
www.readwriteweb.com/.../...ress-outage-a-fail.php
gb
gb
7/7/2010 6:32:41 AM #
Nice article!
The cost of hosting is certainly an issue.
Ted
Ted
7/7/2010 6:37:48 AM #
@Dominic to reply to your statement => to be productive using open source solution : cost is zero in any currency (no pun intended). I think it's hard to beat that. $x > $0 unless x is either 0 or negative (pretty cool if Microsoft is paying us money instead of us paying them though).

And Dom... that 32 CPUs thing, the number doesn't matter, what matters is that you have to pay extra license money for extra hardware. Ditto with adding more developers translates to more licenses.

I'm aware of the .NET FOSS clone software/library from the Java world. I do. For most developers who already know Java, there's no point to move to .NET really. No added benefit. You'll lose more actually.

Spring 3 MVC has more goodies out of the box than ASP.NET MVC. Wicket, JEE component-oriented framework (similar to ASP.NET I believe) have better TDD/testing support compare to ASP.NET. You guys have to realize that ASP.NET MVC came into the game late.

I just can't find any reason why people should use Microsoft solution in this day and age unless you need to interop with SharePoint or Windows (or you need to ship in Windows Mobile or developing exclusively for Microsoft Windows). Even in this situation, you can write 90% of your product using FOSS and just implement that SharePoint bridge using C# and ASP.NET, the rest doesn't have to be Microsoft or even Mono. One exception is that if the person/company is very well-versed in C#. In that situation, do your own due diligent. If you can live with Mono and FOSS C# software, great.

I agree with most of you that stated "what if you already know C#". But please understand this: there are many people out there that "don't know C# already" and we're doing OK or even better and we're not going to C#. There's just nothing new for us.
HoyaBaptiste
HoyaBaptiste
7/7/2010 6:56:42 AM #
The question here is not whether or not one can implement .NET solutions for free (or low cost). Nor is the question that there are some startups that have made good on the MS / .NET stack. Instead there are "pain points" that cause *some* startups to steer clear and reach for other solutions. Also, there is the level of effort, up-front or via "re-factoring", needed to mitigate these pain points and make the products that succeed in spite of change.

If a startup is staffed with "Morts" that "just get it done", the business can turn solutions around quickly. However, these solutions tend to be brittle in the face of (platform) change. If the startup has an "Einstein" on staff, the solution may not be brittle but that startup is paying in terms of longer time to turn the solution around and Einstein's are not cheap.

Pain points can occur with ANY platform. However, the .NET framework has cranked out MAJOR releases 6 times in 8 years (en.wikipedia.org/wiki/.NET_Framework#Versions) with features like generics, LINQ, Entity Framework, Silverlight, WPF, than .NET programmers could never have anticipated but all wish to take advantage of. Compare that to pHp (http://en.wikipedia.org/wiki/PHP#History) with 5 major releases in 15 years. With that in mind, should a startup go:
(1) "all in" with the .NET stack and find an Einstein or
(2) retool with every platform release or
(3) reach for a solution like ROR or PhP that stand on equal footing?
7/7/2010 8:13:34 AM #
@Ted:

I thought that advanced trolling techniques can be found only on 4chan. However reading some of your master troll comments can not only lead to serious brain damage or cancer, but also to conclusion that your knowledge of .NET platform is entirely based on your arrogance/ignorance/hate/self-interest and you are actually pushing forward what you think and not what you know. Arrogance and self-interest creates enemies in your own mind.
jmalcolm
jmalcolm
7/7/2010 8:28:42 AM #
@Ted
Mono comes bundled with xbuild which is an msbuild work-alike.  It is what I use.  A lot of the time I just build my projects in an IDE (like a good little .NET dev I guess) and it builds the project and solution files for me.

I like that I can open my projects in MonoDevelop on Linux, Mac, or Windows, or use SharpDevelop or Visual Studio on Windows.  They all use the msbuild project format natively.

The msbuild format is just XML so many tools will work with it.  I have built a few little utilities for my own needs.

xbuild itself is a command-line tool.  So, for example, I might have a script on my web server that downloads the latest code out of subversion and then uses xbuild to build the assemblies and deploys them to Apache or whatever.
jmalcolm
jmalcolm
7/7/2010 8:36:55 AM #
@Jason
I think you have given the most compelling reason not to use .NET if your vision is to be aquired.  I would have no problem choosing another tech if my goal was to be aquired (unless it was to Joel Spolsky or Ian's company I guess).  It rings true that there is a bias against .NET and against Mono even in the Open Source world.  I think that stems from misinformation and ignorance though.  I may post again about that.

@Ted
We agree that start-ups should be more concerned about business than tech.  Sometimes tech can be a business advantage though.  I remember reading quite a nice story about a fellow that felt his choice of LISP gave him an edge that his competitors never really managed to overcome.  Not many of us are arguing for LISP here.

As I said, I have no experience running Ruby on .NET.  It was not a recommendation.   If I was going to go all ROR, I am sure I would just use the real thing.  I was just trying to make a point since the thread up until then seemed very ideologically slanted and light on objective facts.  It has gotten better.

I have considered or even wanted to do a project in ROR actually.  That is really just a tech itch though and not a business consideration.  It would make about as much sense to write a desktop app in Vala (although I want to do that too).  Perhaps I can come up with a start-up like Jason that I want to sell so I have an excuse to use Rails.  Or is my only option Java?  Wink

Whether Mono is ahead or behind Microsoft depends a little on your perspective I think.  If you see it as a way to port your Microsoft tech then it is maybe a dangerous bet.  If you see it as a platform in itself, I think it is even better than .NET (even with my business hat on).

I did not chose .NET because it was all I knew.  I myself had never used .NET before Mono brought it to me on Linux.  I had a couple Linux Mono projects under my belt before I tried .NET on Windows.  Even then I used SharpDevelop as an IDE for months before I tried Visual Studio.  Linux is still my primary dev environment although I use both Windows and Mac sometimes.  Being able to move around so easily is one of the things I like.

I am not selling .NET to those that do not want it.  I have not seen much to convince me that Java would have been a better choice and I had both available when I used Mono for the first time.

This thread is on a .NET blog and the question was why .NET is not being used more in start-ups.  You should expect some posts with a pro .NET bias after a bunch of "because .NET sucks, it is the wrong choice, and people only pick it if they are not as awesome as us" responses to this question.

I find Mono on Linux a compelling combo.  That's just me.  Simple as that.

@HoyaBaptist
I agree, you have to fight the urge to redo everything every time your platform revs.  That said, as long as the platform continues to run your old code, you are not loosing anything by having new capabilities for new code.  That is just business discipline vs. tech indulgence.  There are pros and cons.  IMHO the fact that PHP has seen so few refreshes really shows.

Now if you will excuse me, I have to rewrite all my data layers using an ORM, redo all my unit tests in a dynamic language, and re-architect my app so that I can add logging in one line of code like the cool kids do.  In fact, I am going to rewrite everything from scratch because I am just a better coder than I used to be and, in retrospect, my design sucks.  You know, I think that the tech pull verus business discipline may not be so platform specific after all.
7/7/2010 9:06:59 AM #
@HoyaBaptist - You and a bunch of other commenters have insinuated that the .NET learning curve is too steep - are you honestly saying that most developers aren't smart enough to pick it up?
Brandon
Brandon
7/7/2010 12:14:34 PM #
I agree... .NET is expanding at a rapid pace, allowing us to do some very powerful things in much less time. While the learning curve can be fairly steep, the more you learn the more proficient you can keep becoming. Also, new programmers aren't going to be learning the lowest level stuff forever. Eventually there will become a cut off point where bothering to do anything with the low level programming will become pointless and far too burdensome. .NET is becoming an advanced framework that people can come into and make powerful applications without having to worry about the low level nitty gritty.
HoyaBaptiste
HoyaBaptiste
7/7/2010 1:29:07 PM #
@Aaron

I am not insinuating anything about the learning curve for .NET. People learn what they can when they can. However, while an Elvis (maybe a Mort) may figure out NHibernate, for example, and plug it into a new app (assuming no re-write / re-factor here as @jmalcolm suggests) does he have the chops to prevent brittle solutions? Or... was he too busy keeping up with the platform changes to design the proper abstractions? Since this is a startup scenario we are discussing, it is also possible that business pressures to "ship it" may force shortcuts. Does a startup decide to avoid a platform for these reasons?

There are many real-world scenarios that indicate a startup can be a success or failure of any platform. There are obviously exceptions to every attempt at generalizing a position. However, this discussion started with the observation that startups were not reaching for .NET as much as other technology stacks when choosing a platform. I think there is more than just price sensitivity and ".NET / MS Hating" at going on here. I think there are other forces (like product support, deprecated or improved framework APIs, aging skill-sets, primary and third-party vendor support) linked with keeping your product up to date with a chosen platform. Are these the forces behind this article's observation? Is it the enterprise mentality @Aaron mentioned? Most of the comments focus on "Can a startup use .NET and succeed?" When I read this article, I was more interested in what are the forces behind the preference for other platforms.
HoyaBaptiste
HoyaBaptiste
7/7/2010 1:32:40 PM #
...what are the forces behind the preference for other platforms.

Once you understand that... then you can look for a solution. Clearly, cheap, open-source, or free does not begin to explain this article's observations.
7/7/2010 8:45:23 PM #
Here is an illustrative example that main reason for choosing (or switching to) another platform is money:

http://www.infoq.com/articles/architecting-tekpub

RB: If the platform was holding up fine, what prompted the change of architecture?

RC: Money. We were enrolled in Microsoft BizSpark Program and it was great for getting off the ground, but projecting into the future we realized that everything - from our database down to our development environment would have to be paid for after 3 years. We also figured that we'd probably need a separate server to run videos properly (for streaming) to Silverlight (using Streaming Media) which would be another license cost - and, in addition, we'd need to buy Media Encoder in order to encode the video for Smooth Streaming.

This might not be an issue for a large company, but when we sat down to assess what the bills would be - well let's just say that it was about 5 figures. We put our business hats on and tried to justify that cost - and we couldn't.


------------------------------------------------------

Even famous StackOverflow is mentioning similar problems with MS licenses:

highscalability.com/.../...rflow-architecture.html

Cheaper licensing was attained through Microsoft's BizSpark program. My impression is they pay about $11K for OS and SQL licensing.
...
As you add more and more database servers the SQL Server license costs can be outrageous. So by starting scale up and gradually going scale out with non-open source software you can be in a world of financial hurt.

------------------------------------------------------

Miguel de Icaza (lead developer and initiator of Mono framework) in his blog post pointed out some of the mistakes done by Microsoft management to .NET ecosystem.

http://tirania.org/blog/archive/2010/Mar-25.html

The most important part is that Microsoft has shot the .NET ecosystem in the foot because of the constant thread of patent infringement that they have cast on the ecosystem. Unlike the Java world that is blossoming with dozens of vibrant Java virtual machine implementations, the .NET world has suffered by this meme spread by Ballmer that they would come after people that do not license patents from them.
...
Google could have used .NET, Rails could have been built on .NET, the Wikipedia and Facebook could have been built using ASP.NET.

All of those are failed opportunities. Even if the cross-language story was great, the web integration fantastic, the architecture was the right one to fit whatever flavor of a platform you wanted, people flocked elsewhere.


------------------------------------------------------

There is a great article from Jason Sage which address "issues" like refactoring caused by platform change. However term "platform change" in .NET world was never so fatal that it would urge you to change/update your existing code immediately. There were major releases which caused some changes, but most of them rather introduced new or innovative technologies/techniques which have potential to make your development time more productive or easier.

programmer.97things.oreilly.com/.../Reinvent_the_Wheel_Often

Reinventing the wheel is not just an exercise in where to place code constructs: It is how to get an intimate knowledge of the inner workings of various components that already exist.
...
Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Not knowing the deeper things in software development will limit your ability to create stellar work.
...
Reinventing the wheel is as important to a developer's education and skill as weight lifting is to a body builder.
jmalcolm
jmalcolm
7/8/2010 4:03:20 AM #
This has been an really interesting thread.  Thank you to everyone.

Here is a NY Times article that echoes what people are saying here.  It really sounds like the reality is that Microsoft has failed to win the hearts and minds of the new crop of innovative developers who see Microsoft software as inaccessible (too much legal hassle and expense).

www.nytimes.com/.../05soft.html?pagewanted=all

It is very interesting that people see the choice as such a binary one: that you are either in the Microsoft camp or the Open Source one.  For example, Tomi's post above...why on earth would you have to abandon .NET because SQL Server is too expensive?  Why not just switch to an Open Source database?  It's not like switching to Rails makes SQL Server more affordable.

I think people are throwing the baby out with the bath water.  That said, it does not really matter what the reasons are.

I still sounds to me like people are just not educated about what the .NET and Mono communities have to offer.  Just in case it is just my ignorance though, where would I go to immerse myself in the Java culture, for example, so that I can figure out what I am missing as a Mono dev.  Any recommendations?
Tom
Tom
7/8/2010 5:13:25 AM #
There are 2 issues that I have come across when dealing with .Net vs. PHP.

1) Owner's/entrepreneur's think Linux/Apache (PHP) is free and Windows Server/IIS (.Net) is not. Which is true, if your are hosting it yourself. However, since most sites have a 3rd party doing the hosting, this is not really that much of a cost issue.


2) PHP is easier for a owner/entrepreneur to makes small adjustments WITHOUT a developers help, and without a need to re-compile.
However, most saavy owner's/entrepreneur's know just enough to make the changes, but not what to do if something goes wrong. Nor, do they remember to notify the developer that they made a small change (in case the developer is working on a different code base), so the changes can get wiped out with the next developer update.





Joe
Joe
7/8/2010 6:19:43 AM #
Another big thing that is often overlooked is how easy it is to steal IP, using reflection on .Net code.  Obfuscation used on readable platforms really on provide a false sense of security.  At least other solutions make companies work for their reverse engineering, and many of those platforms are much more affordable than .Net while still providing a strong framework.
7/8/2010 9:00:39 AM #
Pingback from rickersilva.wordpress.com

Por qué no hay mas emprendimientos usando .NET? « Ricker Silva's .Net Magazine
7/8/2010 9:01:16 AM #
@Joe

Most companies/startups these days develop Web Applications, so that argument doesn't really apply, unless you count steeling the HTML and JavaScript. As for client/desktop applications, pretty much all managed frameworks have this issue, .NET, Java, Flex etc.
gunteman
gunteman
7/8/2010 9:07:54 AM #
@Joe

But obfuscation is really a non issue when speaking of the tools that do have the mentioned success in web startup businesses.


I think that if Microsoft had not put all their web eggs into the ASP.NET Web Forms basket, thing would look very differently. Web Forms is a productivity killer and mainly looks good on paper. That works OK in enterprise environments, but it's virtually impossible for a Web Forms based startup to compete with the development speed of non-ASP.NET based shops.

MVC (and the new "ASP.NET Web Page" model) is a huge step in the right direction. They are definitely late to the game, but still it is game changing for Microsoft developers.
Joe
Joe
7/8/2010 10:26:27 AM #
@ Dominic Pettifer
I agree on the web side of things, but even if most startups are web based, many are not.  So thank you for bringing that up, I should have clarified.  I am speaking specifically of the non-web side of .Net.

And not all managed frameworks have this issue, and the ones that I am familiar with that do, don't have it to the extent of .Net.

@Gunteman
I also agree that in web bases solutions obfuscation is a non-issue.

However, non-web based .net solutions are totally vulnerable, obfuscated or not.  No other platform that I have seen has these vulnerabilities, even Java doesn't to the extent .net does.

For instance, there is an app that will allow the discovery and _in memory editing_ of controls in a .net platform.  I had to show someone how their app logic could be circumvented with it, in that a button that was disabled until a license key was entered could be turned on quite simply, with very little knowledge.  Right click the control and set it to enabled, simple as that.

Granted, the logic behind the button should have checked for the presence of a key as well, but the point still stands.

I have also seen obfuscated code reflected and unobfuscated.

I have not seen these weaknesses in any other platform, to the extent they are in .Net.  There are a number of languages and platforms that I have not seen them at all.

I use .net every day where I work, all of the devs have enterprise MSDN licenses.  From a RAD standpoint, .Net became quite nice to use once MS poached Anders from Borland.  I love C# as much as I love Pascal and Delphi.  But at the end of the day, outside of work I wont use .net if there is IP involved.
Joe
Joe
7/8/2010 10:27:54 AM #
*blah*  It is the end of the day, I see I repeated myself a lot, sorry.
7/8/2010 10:31:45 AM #
After Reading this post i thought it deserved to be plubished and spread in spanish. As you all know Asterysco (http://twitter.com/asterysco)is another startup, not much related to the startups Aaron refers or the ones referred in CampusParty, but we are a small company eager to grow in the software dev business.
I think, as Aaron states, that part of the problem is the focus Microsoft had through the last years, but most important, the focus of the communities. Not because they are not visible or eager to be visible or because they don’t share. The Main problem is that it seems to feel better working with one or another technology. The problem is not lack of information on .NET, but lack of enthusiasm on developing new products, services, or systems with .Net for the target sectors they work for.
In Asterysco we believe the problem can be addressed from the architecture. We work hard to finally separate 100% the UC layer and the business and data layers. We believe that even corporate and large systems deserve state of the art user experiences and we think it is possible with .NET.  This kind of research projects is something rarely or totally unseen in the startup community. One can see large systems, masterpieces on architecture and security but awfully achieved from the Ux perspective. This could be related, for .NETs case, in the difficulty on dealing with ASP controls. On other cases, I don’t know, but I can guess it’s negligence.
Fortunately there are already MVC and MVVM implementations for .Net and Visual Studio that allow a better and faster development of UXs for large systems. In fact, this week, Scott Guthrie has posted about the introduction of WebMatrix, the beta version of a product intended to improve the web site development process on startups and startuppers, using even some opensource tools and frameworks.
jmalcolm
jmalcolm
7/8/2010 7:15:21 PM #
The obfuscation stuff above kind of confused me.

I assume we are talking about desktop apps since .NET or Java could be reflected and decompiled.  If that is something that concerns you, Mono has this process they call Ahead-of-Time compilation (AOT) that basically compiles down your app to native code (not CIL or bytecode).  You lose the cross-platform nature of your assemblies if you do this but it would make decompilation as hard as C/C++ I would think.

To my knowledge, all of the managed platforms (like Java) share this issue.  On the web side, certainly interpreted languages like PHP are even more exposed.  That is, if you are worried about people who have access to the server.  All web clients get is the resulting HTML though and I cannot imagine anyone is worried about exposing that.

PS.

Way back at the beginning of this thread there was some talk about how Microsoft had nothing like WordPress.  Just as a bit of trivia, you can run PHP on .NET and it runs WordPress without modification:

http://phalanger.codeplex.com/

Again, like ROR in my earlier comment, I am not advocating that someone just running WordPress should use .NET.  The ability to mix and match languages with tight integration is just one of the true joys of .NET IMHO.  I used to develop in PHP and can see writing a component of a future C# app in Phalanger.

JoeShmoe
JoeShmoe
7/9/2010 3:42:13 PM #
You are working with a wrong premise. .NET is actually not that productive compared to Java/Ruby/Groovy/Python.

It's not about cost, but picking the technology which suits the job, and .NET is pretty poor for web development. ASP.NET MVC really is too new and quite primitive compared to RoR or Spring.
7/9/2010 8:31:31 PM #
@JoeShmoe:

You forgot to add PHP to have complete anti .NET alliance. Look! I have found picture of Ted and JoeShmoe:

tomi.developmententity.sk/.../TedAndJoeShmoe.jpg
Ted
Ted
7/10/2010 3:11:07 AM #
Tomi, I don't want to sound sarcastic or ignorant but JoeShmoe has a point in terms of ASP.NET MVC vs RoR/Spring3 in particular. ASP.NET MVC does look a bit primitive compare to RoR/Spring3.
7/10/2010 3:52:09 AM #
If that's the case then you should probably articulate what you mean with specifics instead of what appear to be unfounded generalizations.
7/10/2010 3:59:44 AM #
@Ted:

Well, you sound both with nearly all of your comments here, just retrospect. Why don't you enlighten and persuade us with facts. All what you and other trolls have said here is just how bad .NET is, however the reason is nowhere (except maybe your hatred and classic Java fanboyism).
jmalcolm
jmalcolm
7/19/2010 12:46:54 PM #
I just wanted to drop a quick thank you note to Ted and the other pro-Java folks on this thread.  You made me really look into the Java ecosystem and there are a few things I had not appreciated the beauty of.

In particular, I think I could be a better programmer if I really spent some time diving into Scala.  Scala blends functional programming and OO in much the same way as my beloved C# but generalizes a few things in a way that looks very powerful.  Comprehensions for example; just awesome.

Thank you, thank you very much.

Of course, thanks to IKVM.NET, Scala is just another .NET language*.  No need to give up on Mono just to add a bit of Scala love to a project. This goes for Java and Groovy and all those "great" Java libraries as well.

It still amazes me that people assume that targeting .NET means accepting whatever limitations of MS.  Do Java programmers only use libraries, frameworks, and projects from Oracle/Sun?  Of course not.

Perhaps folks like JoeShmoe do not realize that NET devs have had access to RoR-like options like MonoRail for years.  Just because Redmond only officially copied it recently (ASP.NET MVC) does not make .NET a terrible web platform.

I wish people on this thread had cited more specific projects and paradigms that they thought blew .NET away.  I love uncovering great stuff.

Something like Scala could easily encourage me to chose the JVM as the platform for a future project.  I guess now I can sell my start-up for big money instead of dying poor as a .NET/Mono fan.  Smile

* There is an implementation of Scala that is native to .NET but it looks like it lags behind the JVM version significantly.  I would use IKVM and the latest version of Scala proper instead.  You can still call .NET classes from Scala this way so the downside is just an extra compile step (Scala -> JVM -> CLR).  Well, and more painful debugging to be fair.
8/3/2010 10:21:49 AM #
David groves has said everything possible about why startups are using inadequate and time consuming open source software tools instead of .NET. It's simply a matter of money. Even if I had a bare bones startup I would still use .NET because I could spend more time concentrating on my BUSINESS or PRODUCT instead of the software that I use to build it. This is ABSOLUTELY worth the cost of the license fees.
My experience with OSS is that the tools are generally broken and I don't have time to fix some 15 yr old kid's code or some other non coding simpleton that they thought would be cool to contribute to the Linux kernel.
Another problem is that they make all their money from support so they almost always produce some of the most obfuscated and confusing software on the planet to drive new support contracts. Then there is the problem of smug superiority among the "practitioners" who automatically assume that their software is automatically better than some "closed proprietary system".
The community just stinks and is flat out lazy and they make miserable software with even worse or non existant documentation to boot. I'm 100000% confident that I can deliver a better and more focused product more quickly using .NET than these bozos any day of the week.
8/3/2010 10:22:07 AM #
I got error in callback when posting this???
8/3/2010 10:42:34 AM #
Hey Mike,

I think that was a bug with the ReCaptcha plugin, which I have since disabled. I just needed it for a short while to keep the spammers at bay.

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading