Get updates and news:
Want to get Lullabot article, videocast, and podcast announcements delivered right to your in-box? Let us know your email address (we won't share it) and we'll let you know when anything exciting happens.

Why not ASP.Net?

A few days ago, developer Sasha Sydoruk asked why there aren't more cool startups building web sites based on ASP.Net.

...If you checkout the new startups on TechCrunch, it seems like every new startup is something Linux based and is not ASP.NET.

And I really want to know why. If you are a new startup, you have only one shot at it, so you really want to use the best tools available. And it seems like everybody picks anything but ASP.NET, unless you are doing corporate development.

It's an interesting question, and it's a lot different than the usual "Why doesn't everyone use LISP/Eiffel/SmallTalk/My Cool Language" head-scratchers. Microsoft has poured huge amounts of energy into building the .NET framework, and it's fair to say that most Windows software written in the past half a decade or so uses it. Lots of .NET code is being written every day: it is the very opposite of a dead language. It's got a very robust and feature-rich web framework called ASP.NET, designed to compete with Java as a platform for building web applications. It's very powerful. As Sasha observes, though, you just don't hear about new sites being launched on it. Outside of the corporate world, and a handful of select projects like DotNetNuke, it's a pink unicorn: no one's ever seen it f'real. Sasha continues:

Is it the cost of tools? Hosting cost? Restrictive licensing? Or maybe ASP.NET became "the van" of web development. Safe, bulky and definitely not sexy.

I think it's a little of each, and more. I spent about four years with two companies, first building .NET web apps for the real estate market then building desktop client/server apps for a vertical market. .NET is Java done better: a framework for large carefully deployed vertical solutions. Today I'm a Drupal/LAMP guy and -- despite the kinds of frustrations that any language or platform will give you -- I'm loving it.

ASP.Net faces a couple of key disadvantages.

  1. Cost. A solid .NET development setup for a team of three or four, plus the licenses for all the server-side software you'll need to run things, can probably buy you half a man-year of developer time. This isn't a HUGE issue if you're launching a startup with funding, but quite a few of the groundbreaking sites out there started out as experimental skunk-works projects. You can cut costs by using free development tools (the C# compiler, after all, is a free download) but you lose a lot of the benefits that come with the platform.
  2. Fewer hackers. This is very close to the first point, but it's a bit different. The barrier for entry for most of the 'hot' languages on the *NIX side is low, closer to old-school ASP than the heavy-duty stuff of ASP.NET. That means a smaller pool of hobbyists-turned-coders to feed the project mill. While you probably don't mind the higher barrier for entry if you're hiring a team to develop some enterprise software, most startups don't happen that way. This isn't even a .Net specific issue -- it's more about the changing view of 'scripting languages' when compared to 'real languages' like C, Java, C#, C++, and... well. Whatever flavor of C you can think of.
  3. Not the best fit for web RAD. .NET is an amazing platform for developing Windows applications. Truly awesome. Unfortunately, ASP.NET tends to err on the side of 'making the web work like WinForms'. When it comes time to web-enable your .NET based client/server application, you'll thank your lucky stars for ASP.NET's familiarity. When you're trying to pound out a prototype of a new social networking site, however, you'll feel like you're dragging a Volvo uphill. It just doesn't make as much sense.
  4. The people are the platform. It's obviously not universal, but the GPL/MIT/Creative Commons influence that permeates the non-corporate *NIX side of the development world affects a lot more than just the software itself. Rapid dissemination of best practices, novel tools, and open-sourced solutions to common problems are standard operating procedure in the *NIX side of the fence. Ultimately, this is far more important than the details of the specific software platform. The Open Source world is a 'gift economy' -- you gain karma and status by giving people things of value. Whether that's a new caching API, patches for bugs in an existing framework, or hard-won knowledge about esoteric optimization issues, sharing is built into that development community's fabric. This makes life hell if you're trying to figure out how to sell boxed software, but if you're trying to implement a cool idea and launch a startup in your spare time, the difference is night and day.

When an OSS project or a large-scale LAMP site goes down in flames, knowledge of how to avoid the problem in the future tend to spread fast, benefiting every other site built with the same tools. This accumulated knowledge exists in the .Net world, certainly, but on a much different scale. Microsoft publishes incredibly high-quality materials, and they've engaged the development community in great ways over the past several years. Their podcasts, blogs, publications, and so on are great for .NET developers They still can't compete on the knowledge-sharing front, though, because of the fundamental difference between Microsoft Publishing Stuff, and Lots Of Developers Talking About Stuff.

These are obviously pretty sweeping generalizations. I don't mean to imply that .Net is bad, or that the languages/platform are inherently flawed. I work primarily with PHP, and man do I miss a lot of the powerful language constructs that I took for granted in C#. In addition, a lot of the above problems become less important if you're part of an organization that already has a major investment in .Net, or an existing talent pool of developers to tap. If I were trying to bootstrap a startup without quite a bit of seed funding, though, I'd be hard-pressed to justify .Net.

Am I talking out of my hat? Do I have blinders on? Have I missed fundamental improvements in the framework made over the last year or two? Quite possibly. But the question was asked, and that's how I see it.

Update: Over on TechToolBlog, a poster named Tim has published some interesting stats on advertised job openings for various platforms. In his area, there are at least twice as many ASP.NET openings as there are PHP/Rails jobs. A quick peek around the Chicago area confirmed the same numbers, though it might just be a midwest thing. Perhaps that means that there are quite a few large-scale corporate gigs, but fewer high-visibility "Cool Startups" using the platform?

Comments

Interoperability

You forgot one BIG reason for .NET's failure to gain adherents - interoperability. All of Microsoft's products are geared for making sure you use more Microsoft products and are either unable (sometimes by design), unwilling (by design) or incapable (usually by design) to inter-operate with other systems. The *nix side of things is all about interoperability.

Not so sure...

That's the thing, though. I don't think we can really honestly say that .NET has 'failed to gain adherents.' Its failure is more situational -- launching a new web based community site, for example, is a bad match for .NET. That's what made Sascha's original question interesting. It was more about the specific kinds of projects where ASP.NET is conspicuously absent...

If I were building a straight-up client-server system to manage, say, grocery store supply chain data, I'd still choose C#. In fact that was my previous job. *grin*

One of the big issues with ASP.NET, as opposed to desktop development, is that web deployment eliminates one of the big advantages the platform has. A 'good' web site has to work on more than just IE, so it's very difficult for MS to leverage their 'cloud of products'. I don't mean that in an ominous way, just thinking back to the earlier comment about ASP.NET's advantages lie in tying things together with an existing .NET enterprise system.

Thank you for your great comment.

Hi Jeff,

Thank you for answering my question. It is really awesome to hear an answer from someone who is actually working in and outside .net. Thank you again and good luck with Drupal.

Take care,
Sasha Sydoruk

What about Mono?

Mono enables ASP.NET to run on a lot of different platforms, and it's getting quite mature now. Although you'd think this would pretty much negate the 'Cost' aspect, it's installed on very few web hosts, so it's limited to the more technical users with VPSes etc. Right now, I suspect that this is the major factor holding it back, as it creates a substantial barrier to entry. Hopefully the new fastcgi Mono server (thanks Google SoC!) can help to increase its market penetration.

I'd agree that web forms aren't the most web-like way to do things, but overall it's a pretty flexible framework and doesn't constrain you to this way of working. I see no reason why you couldn't do LAMP or Drupal-style development on ASP.NET, and there are some other cool .NET web frameworks out there like MonoRail. LINQ, which is well on the way to being supported in Mono, will make C# even more attractive. Compilers like Boo, Nemerle, IronPython etc can also be set up on the server to allow you to use other languages.

[Disclaimer: I'm the developer of the the ASP.NET support in the MonoDevelop IDE, so I'm probably biased. However, I also use Drupal, and I'd love to see it rewritten in C# :P]

The fundament of this I suspect isn't entirely true...

I saw a blog a couple of days ago about a guy who had searched for jobs in Ruby, .Net and PHP and a very funny patter ocured...
First of all .Net was definitely largest in the EAST coast and most parts of US EXCEPT for the "Valley". In the bay area PHP was twice as large as .Net, the opposite was true for all other parts of the country. I think there's several reasons to this, first of all in the "Valley" most startups aims at being bought by Google, end except from Writely G have never bought any ASP.NET based company.

Second of all I'd like to pinpoint one interesting fact regarding Mono and ASP.NET. We're an ASP.NET (with 100% Mono support) startup and realistically said I'd like to state that we're probably one of the worlds most interesting startups at the moment. We've got all the right ethics (Open Source and Open Innovation) we're 100% supported on Linux (thank you Mono;) and we're delivering the promises for others to be able to leap into "Web2.0" and Ajax... So I don't really think that the premises for this article is entirely true...

Thomas

"we're probably one of the worlds most interesting startups"

@Thomas: "I'd like to state that we're probably one of the worlds most interesting startups at the moment."

Even if you do say so yourself, right? '-)

Self determination

I've been at the same self funded startup for 8 years now (hey it's been slow growth but we're getting there). I'm the web and systems guy not one of the actual product development team.

Over those 8 yrs our main enterprise oriented product has moved from MS stuff (ASP, J++, SQL Server, Transaction server - yuck not my decision) to J2EE on Borlands Enterprise Server, to J2EE on JBoss, to now Java on Spring/Hibernate/Tomcat. Our dev platform moved from Visual Studio to Borlands JBuilder to Eclipse. Our reporting tools moved from Crystal Reports to a few short lived commercial Java ones to Jasper Reports. We have moved from a single OS and Database to multi platform with multiple databases supported. We used to be an MS partner (no longer). Online help is moving from Robohelp (yuck) to DITA. etc etc.

On the non product side of the fence I've personally used PHP and Drupal a lot, plus we do a few small (so far) things with Turbogears and Rails. Our systems have been moving away from Windows towards Debian and Ubuntu.

Basically our product platform has been slowly and surely relying more and more on open standards and open source community driven projects and moving away from big commercial providers.

Basically the biggest reasons have been:
a) Wanting freedom of choice and self determination instead of being beholden to vendors and meekly taking what they offer and getting lumped with their changing plans etc. We don't want to be stuck having to use an entire integrated stack - we want to be able to choose and swap individual layers of the stack in and out when necessary. Basically we got sick of vendors directly or indirectly affecting our destiny.

b) Agility and cost. Having to go back to vendors for more licenses every time you get a new developer or need a new server is a major PITA for a growing company. Managing licenses is an unwelcome distraction. Open source lets you install what you want when you want without extra costs and hassles.

c) Community. We have had far more success getting obscure bugs noticed and fixed on open source platforms than we had with the commercial ones. You can talk with open source developers directly. What little community exists around commercial platforms seems less open and more mercenary.

Culture of Sharing

I'm a bit wary of the term "gift economy", because free software isn't a gift economy, it's just a free market. There are all sorts of industries where the participants aren't granted a monopoly on production and distribution of their products, and nobody calls them gift economies.

However you're right in that a second-order effect of the freedom in the platform is a broader culture of knowledge sharing. I think what's really exciting is that there's now a generation of hackers for whom this is just the natural way to work, and for whom the proprietary way of working is simply nonsensical. Proprietary software vendors just don't fit into this culture, because it's anathema to their business models.

A few years ago, I moved to a small town of 60,000 people where the term "web developer" was defined as "a teenager with a pirated copy of Dreamweaver". (Judging by their curriculum, the local University still accepts this definition.) From a proprietary mindset, this should have been a fantastic opportunity to corner the market with a superior product. I could see that there was a need for something better, but my biggest problem was that I was a lone voice; my prospective customers found what I was saying unfamiliar and frightening, and in a way the worst thing that could happen would be convincing them otherwise, because there would be no chance of meeting the ensuing demand.

So a precondition for the success of my business was raising the state of the art in the local IT industry generally. We have gone out of our way to collaborate with others on projects; I've personally cajoled at least two people into becoming fellow Drupal deployers (if that's a word), and this very evening I'm meeting with a bunch of people about formalising a "Free and Open Technology Network" of local IT businesses.

Within a few years we hope to have transformed the IT industry in our town from a bunch of surly, self-destructively competitive businesses, each insisting all the others are unscrupulous and incompetent - and all of them being correct on this point, to a network of collaborators with complementary skills that are able to offer services the equal of anything offered by the largest businesses in the largest cities in the world.

We may not succeed in this, but it would not even be conceivable if any of our businesses (not just the web developers) were dependent on proprietary technology. Any of the issues that have been identified here and elsewhere: licensing costs, lack of access to and knowledge of the internal workings of the technology, absence of a global community of users and developers, would be enough to sink us.

To stray back on topic, you can have all kinds of interesting arguments about the merits of one free platform vs another (I was originally a Perl aficionado, now working exclusively in PHP, and the question of why the balance tipped overwhelmingly in favour of what most would agree is a technically inferior language is an interesting one), or one non-free platform versus another, but for me when it's a choice between free ("as in freedom") or non-free, there's just no debate. If the free option does the job, there are really no cool little features, or free-as-in-zero-cost offers that a proprietary vendor can make that would lead me to put the future viability of my business (or my clients' businesses) in their hands.

Anybody who's been developing sites with Drupal for more than a year or so will at some point probably have cursed the decision to use a Drupal module that's been subsequently orphaned, but we still have the option of picking up the code and maintaining it ourselves. Whether or not we do this or solve our problem in some other way is a decision we are free to make. That is not a decision we would be free to make if the dependency was on some proprietary software that the vendor decided to discontinue support for. In the case of ASP.Net, it's possible that the existence of Mono mitigates this risk somewhat, but ultimately Mono is tracking the direction set by Microsoft, and it's still not a risk I would be comfortable taking.

Well I moved from the MS

Well I moved from the MS world to the Java world in about 2003 having been a Windows developer for about 10 years when I set my company up.. The main problems I had with .NET were:
1) Being on Windows only was too restrictive. Even now with the huge and remarkable efforts of Novel and the Mono people Java is the way to go if you want something cross platform (and I do)/
2) Stability of the platform. Sun's stewardship of Java has been excellent – it really has – which means that I know the code I write today will continue to work in JRE7, 8, 9 OR 10.
3) Ability to influence the platform direction – being able to have a direct bearing on what happens in the future with Java via the JCP is a big deal for me.
4) Ability to fix bugs in the platform – since Java is open source if I hit a bug in the platform I can fix it in the source and re-submit it for future inclusion. This was true even before Java was formally released un the GPL.
5) Tools: Visual Studio is good IDE without question, but after using IDEA for a bit coming back to it was painful. What's more the entry point for learning Java is free – download Netbeans or Eclipse and away you go.
6) Choice of web framework. As it goes ASP.NET doesn't work very well for me because it isn't how I build web sites. Generally I hire someone with a goaty beard who builds me a set of page templates using XHTML and CSS which I then use as the basis for my application. This is painful with ASP.NET (and JSF come to that) – but in the Java world I can use something like Struts or Wicket as a well supported alternative.
7) Open Source support – Java (and indeed PHP and the other alternatives) have huge support from the open source community which means there's a library/framework for everything I want to do. A quick look at the Tiobe index http://www.tiobe.com/tpci.ht confirms the point (C# is on the march but there are still something like 7 times as many web sites about Java as there are about C#)
8) Richness of the toolbox – one of the things about Java is the amount of options it gives me for putting my products together. I can go the lightweight Web route with say Struts, Tomcat and Linux, or if I need a bit more than that I can use JPA/EJB and an App Server, I have JMS to talk to legacy stuff (and I can run my code on the mainframe directly when I need to), I can build bits of GUI with applets and now with JFX and so on. Don't like Struts? Well their's GRAILS, Tapestry, Stripes, Wicket and many, many others. Don't want to use JPA – well use Toplink, Hibernate or one of the many others. I know this puts some people off Java (and .NET will always have a following) but for me its wonderful – a real release.

Java open source?

Since when? I know they are moving towards some part of this, but Java is not open source.

.NET is closely bound to sub-par products

1) Windows Server -- no one _wants_ to deploy to Windows
2) IIS -- while IIS has improved dramatically, it's not exactly a first choice for web servers
3) SQL Server -- this is easily the worst rdbms available, until you consider Informix or Sybase
4) Windows XP/Vista (development environment) -- While Windows has consistently improved over the years, I wouldn't choose it
5) Active Directory -- Among ldap implementations this is an awful candidate

Now consider that all of the above cost quite a bit of money. So in order to use .NET, which is wonderful technology, you are setting yourself up with a lot of other technology that is expensive and sub-par.

Matter of perspective

Scott, I think it's unfair to characterize .NET in that fashion. I'm as enthusiastic a supporter of OSS and GPL work as anyone, but I also worked with .NET for quite a while and I'll be the first to say that it is a top-rate application development environment. I only wish that MySQL had the rich set of administrative tools that SQL Server comes with.

But a lot of the weaknesses in the platform come to the foreground when you look at it from the perspective of a web-based startup, as the original poster did. The weaknesses that have been listed by various commenters here don't invalidate .NET's inherent strengths, they just make clear that those strengths don't apply in all situations.

In some ways, it's the 'Web As A Platform' thing that people were talking about back in the days of Netscape. it's much harder for MS to leverage platform advantages when it comes to web development...

What's wrong with SQL Server?

@Scott Swank: 3) SQL Server -- this is easily the worst rdbms available, until you consider Informix or Sybase

Though as you can see from my other replies on this thread I'm definitely anti-ASP.NET, SQL Server is a different story. SQL Server is probably my favorite Microsoft product and I personally think it is one of the best databases available.

That said, can you please quantify why you would call SQL Server "easily the worst rdbms available"????

(mind you, there are many things I'd like to see SQL Server add or change, but that's beside the point. I think it's probably still better than the rest.)

it is expensive, it really is!

As a windows developer without an MSDN subscription you feel like an outcast. You don't get all the cool new stuff everyone is talking about, and you keep bumping into roadblocks in countless ways. I've tried to make do with express editions. It's not a viable option for professionals.

A serious MSDN subscription costs thousands of dollars per developer each year. That's a tax I'm not willing to pay. The Microsoft platform is good because it is well integrated and documented, but it's not thousands of dollars better. If I do the integration myself that costs me less if I think in terms of contractor rates.

And then there's the runtime licenses. The Microsoft platform really only works well with SQL Server. If your startup becomes even a little bit popular, you're not going to be able to live within the confines of SQL Server express (4GB data, 1GB RAM). And if you look at the different Windows Server editions, you find that the cheap web edition is extremely bare bones.

And you don't get to use infrastructures like Amazon EC2 and countless others that are growing around the world because everybody is building on Linux.

Also, it doesn't help that Microsoft's own web properties are embarrassing. Just look at Windows Live Mail. It's crap when you compare it to gmail. If they themselves are unable to build something serious on their own platform, how can they expect others to try?

I looked at .NET seriously from a startup point of view. I decided against it because the cost is too high. No matter how small a startup is, the founders want to know they can grow without punitive and frankly excessive license costs.

The community is the other thing. I actually think you're right that this is the real reason why startups are not going with .NET.

Because the other startups

Because the other startups are doing it? I worked at a startup that used .NET and it worked out famously.

Awesome!

Can I ask what the breakdown of the dev team was, or what kind of system you were building? I'm interested in figuring out what that 'sweet spot' for ASP.NET is. (Which is a different beast than the .NET sweet spot, I think...)

Community and Windows

Firstly, virtually every other alternative out there (even Rails, which hasn't been around as long), has a stronger open source community. Microsoft or even generally .NET based open source projects usually are not ready for production use, and are poorly maintained compared to those in other communities.

Most importantly to me though, is that I hate managing Windows servers. I'm massively more comfortable putting a Linux box out on the dangerous tubes than I ever will be a Windows server. Case in point is that I run a very high traffic site that comes under regular attack because of the market it's in. Regretfully, we run on several Windows servers. Regularly, maybe as often as annually, one of these servers gets a virus and we have to burn down the server and rebuild it. Typically I think these are due to 0-day vulnerabilities. The result is that I end up spending sleepless nights fixing a Windows box.

My Linux boxes are attacked almost as regularly, but I've never (knock on wood) had one rooted. Not once. Not ever. In fact, I find that 80% of the attacks on my Linux box are testing for Windows exploits, which I always find vastly amusing. I've not even configured apache to report itself as an IIS box. Maybe I should though, just for fun.

Cost?

Please forgive my ignorance - I don't generally reside in the ASP world - but I think this is a great topic. Regarding the "cost" issue, could someone explain further - say for a 4 developer team?

The thing is, I work with ColdFusion, and I'm constantly being told by people in the ASP world that ASP is "free" and that CF is "too expensive". Now, I don't want to get into a "he said/she said" about the different technologies, and I am fully aware of the costs involved with CF.

What are the costs associated with ASP, and am I being fed a line of BS when I hear about "free" .Net development?

Thanks,

Davo

ASP is an evolutionary dead-end

ASP is an unfortunately an evolutionary dead-end. While I programmed in it for years and really enjoyed it there were a few key features that it lacked that always left me staring at a brick wall such as the ability to load an execute an ASP script from within an ASP script while defining and passing it the variables that you want to have active in the script. It also has pitiful support for collections. And a lot of other holes. I once wrote down about 10 key things ASP was missing and that I cried for Microsoft to add, but to no avail. PHP (as well as Ruby, Python, Perl, et. al.) has those and more.

ASP.NET on the other hand went off in another direction and made type safety paramount and did it's best to emulated an event-driven desktop model which really limits its interoperability on the web with other those things that assume standard approaches to build web apps. Such as Google's search engine spider, and much more. ASP.NET is very stateful, and that is bad on the web. Actually statefulness is a form of coupling, and coupling should be minimized whereever possible, even on the desktop. Learn about "Representational State Transfer" or "REST" for short to understand this better.

Go for PHP, Ruby, Python, or even Perl and one of their frameworks or CMSes (such as Drupal), and don't look back.

Not true

I keep reading stuff like this all the time. It seems to be a perpetuated idea that ASP.NET is locked; you can't do this or can't do that. Most of those are not true, and just show a lack of knowledge. A lot of it may not be obvious, but it can't be done. If you disable the viewstate, well... you don't have any state. As far as spiders: it depends on how you build your application. You have many options to choose from, and if you research it a little bit and don't shy away from "advanced" stuff you can pretty much have it do whatever you want. If you want full control, and don't like the event model (my theory is that most don't fully understand the power behind this model and that's why they don't like it, but that's just me) you can use the MVC framework, and there are a few other frameworks out there -- you just have to look around.

[David] > am I being fed a

[David]
> am I being fed a line of BS when I hear about "free" .Net development?

Yes. But those who say it, believe it.

The notion of "free" stems from
- clever marketing on the part of Microsoft
- inability to think on the part of many .Net developers and/or Microsoft clients.

You can freely download .Net Framework, SharePoint Services, etc., etc. from the Microsoft website. You can freely use these software products. However, in order to use them, at a minimum, you need Win2k3. And Win2k3 is not free.

Open-source software afficionados delude themselves, too. There are plenty insidious costs of using open-source software, and developing on that platform.

Maybe not for startups...

It's true most startups aren't using ASP.NET (some have: PageFlakes, Writely was .NET before Google got them). I prefer ASP.NET because it let's me get a jump on development, I get bigger things done faster then say using PHP (I've never done Java). I do like PHP, the community rocks!, but to me it still a scripting language in the end.

1) Cost. If you are developing .Net solutions you qualify for a Microsoft Partner, things get alot cheaper.
2)Fewer Hackers. No way, PHP is way more exploited then .NET, just see Wordpress or phpBB.
3) ASP.NET does things differently that is for sure then other web languages.
4) Microsoft is getting a lot better at this - see Scott Guthrie, Scott Hanselman, CodePlex,

BTW, I have a PHP, RoR, ASP.NET job comparison that might be worth reading here:

Confusion

Thanks for replying!

I want to clarify what I meant with the second point. When I said 'fewer hackers' I didn't mean exploits of existing packages, or people trying to compromise servers. I meant fewer amateur developers who've picked up skills on the side and are growing via involvement in the community and tinkering on their own projects. That's also what I was getting at when I said that the 'somewhat higher barrier for entry' with .NET was not necessarily a bad thing for some folks, who would rather recruit from a more predictable pool of full-time traditional developers.

Borken link

The link to that PHP, Ror, ASP.NET job comparison seems to be broken.

Shai

ASP.NET vs. PHP is an unfair comparison

@Tim: "I prefer ASP.NET because it let's me get a jump on development, I get bigger things done faster then say using PHP"

That's an unfair comparison. ASP.NET is a low level framework (typically) paired with an IDE and PHP is just a scripting language. PHP is far more comparable to ASP; I've programmed in both and though I prefer writing VBScript I'm far more productive using PHP and ASP.

For a more fair comparison, compare ASP.NET to CakePHP or Ruby on Rails, or better yet Drupal. I'm ***far*** more productve implementing systems on Drupal than on ASP.NET, and Drupal is not the easiest to learn. Of course Drupal vs. ASP.NET is also not a fair comparision but the point is that it is very difficult to find two 'apples' to compare in the web development space.

Of course to be productive with Drupal you need a debugger. For Windows use I've been really happy with PhpED.

Comparing Drupal to Umbraco

Comparing Drupal to Umbraco would be a fair comparison. Since they are both 'out of the box' cms solutions which you can modify. Questionable stays what you are comparing then, the underlaying language or the strength of the cms system.

It's not a very weird fact that you are able to be far more productive implementing a system on an out of the box solution like drupal than on any given language. Simply because there is a lot more already build there for that specific target.

Proprietary vs Open Source

It seems like a proprietary platform fosters a proprietary mindset when it comes to things like code sharing. The amount of freely available ASP/ASP.NET and ActionScript code available on the web seems very small considering the number of active developers.

I agree that .NET 3rd party is much more proprietary than O/S

@henrrrik: "It seems like a proprietary platform fosters a proprietary mindset when it comes to things like code sharing."

I agree that .NET 3rd party is much more proprietary than open source. I ran a reseller of originally VB custom controls and later .NET components and there are far more vendors selling things in the .NET space whereas there are far more people contributing to the community in the LAMP space.

One reason I jumped ship was I came to believe the .NET 3rd party proprietary approach was harmful to development in general, and that the open-source community approach will bear far more fruit long term than the commerce model. Sure that will mean much less commerce done in the developer space but there are so many reasons why it's better to meet the end user's needs than to generate revenue based on developer tools. Doing so adds to global productivity and hence higher standards of living.

When possible it's best to charge for the end result that has value and reduce the friction for producing that end result. Charging for development tools simply increases friction and it's why I got out of that business. Besides, in the grand scheme most developer tool vendors are starving artists selling their wares to mostly other starving artists; it is really not where commerce should be focused.

[Mike Schinkel] > developer

[Mike Schinkel]
> developer tool vendors are starving artists

I'm not a developer-tool developer, but looking at the long employee roster of JetBrains (visit its website) and megabucks any of its product will cost you, the Russkies seem to be laughing all they way to the bank.

A matter of perspective

"Unfortunately, ASP.NET tends to err on the side of 'making the web work like WinForms'."

I ran across a blog post just the other day that said the opposite, that .NET desktop application development was too beholden to web considerations.

I think it depends a lot on the direction you're coming from. A programmer who's done a lot of desktop development will look at the XML and the way some screen widgets work and say they're trying to make it like web development. OTOH, a programmer who's done client and server side web scripting will look at the way code behind and some components work and say they're trying to make it just like WinForms.

My perspective is that .NET works well in both areas, web and desktop and in combinations of the two. I think that this ability to blend and mix-and-match components is one of the major strengths of .NET. This isn't a great feature for the latest and greatest me-too social networking site but it works very well for corporate apps and vertical market apps.

Those are not mutually exclusive

@FrankC: "Unfortunately, ASP.NET tends to err on the side of 'making the web work like WinFor ms'." I ran across a blog post just the other day that said the opposite, that .NET desktop application development was too beholden to web considerations.

Those are not mutally exclusive. It is quite possible, and I believe it to be fact that ASP.NET/WebForms was too heavily influenced by desktop development, and it's also quite possible that WinForms was too heavily influenced by the web. Both could have been poorly designed, and at least for ASP.NET/WebForms I think the former is definitely true.

Showcase and community

Hi,

in the past I created websites with classic ASP, PHP, some JSP but most of my job's done with ASP.NET and lately also ASP.NET AJAX and I'm looking for some free time to learn RoR in the future as it interests me.

Most of the time I create intranet/extranet applications and for that ASP.NET is a wonderfull platform. To the specific question wy there are so few startups. It's true that I also don't see a lot of them but there certainly are: ASP.NET AJAX showcase.

Besides being a coder I'm also a moderator on the ASP.NET forums which has a very nice community built up around ASP.NET. Microsoft, since about a half year ago, started to provide MSFT community helpers which are also scouring these forums and try to help out as much as possible.

Besides that there are several people at Microsoft that are really evangalizing the ASP.NET word. Scott Guthrie and Scott Hanselman are the best known but there are certainly others as well.

About the cost: if you're using Visual Studio Team System or so you're going to pay $$, that's true but for people/hobbyists/... there are certainly alternatives like a free edition of SQL Server Express and Visual Web Developer Express which also provide a lot of functionality for free.

Grz, Kris.

Cost is overrated

I think that people overrate the cost of a serious development stack for .Net because they are not looking at it from a startup perspective. There are a ton of methods for mitigating costs on the .Net side when you don't think like a corporate developer. I have been working in .Net since 1.0 came out at a series of small companies and startups. In every case we have had access to Microsoft tools by taking advantage of the many programs Microsoft has offered to get their tools into the hands of developers.

From my perspective the only essential tool for building ASP.Net apps is Visual Studio. The design time experience is head and shoulders above what you find in other tools. I do not require, nor do I use, the Team Foundation System. SVN works quite well as does NUnit/MbUnit and CruiseControl. Even on the server side, you have quite a bit of running room in the hosting environments until you hit a serious cost/scalability issue. It really depends on the type of startup and your monetization strategy as to whether this will work for you.

Development cost not an issue

I do not believe development cost is really an issue.

Problem is in scalability. You have a windows box running a service with 1000 subscribers. Your idea is good, you are slashdotted, in a week you go from 1000 users to 100000 users.

Windows (or Ibm WebSphere, it's the same) is simply not viable in this scenario, you'll run to survive just to pay the bill of your bandwidth and to purchase new servers, you cannot afford to spend money on Windows and SQL licenses (or WebSphere or Oracle, same idea here).

Let say commercial software is a very good solution for a startup designed to fail, because if you succeed and have to scale your service to thousand and thousand of users it simply cost too much.

Said that now my choice for a platform to start would be easy: Mono on Linux.

Ciao
Massimo

What?!!

Where in the world did you get the idea that ASP.NET doesn't scale? It scales a LOT better than Ruby of Rails for example. Just take a look in highscalability.com and read the specs for some of the projects. For a similar number of simultaneous users ASP.NET scales several times better (more like 10) than Ruby for example. Short of maybe pure, hard-optimized, C++ or assembly there's nothing out there that's faster. If so, let me know. MySpace runs under IIS with ASP.NET for Pete's sake; they went down from about 250 computers to about 150 just by switching to .NET, and it doesn't scale, c'mon...

"Not the best fit for web", period

Jeff: Good comments, but I'd amplify #3 and simply drop the word "RAD" from your point. As a long time ASP+VBScript+SQL Server developer and someone who really liked VB.NET and wanted to love ASP.NET, the reality is that ASP.NET and specifically WebForms are a set of layers on top of the web and not the web itself.

What's worse, ASP.NET and WebForms are a poorly architected set of layers at that. Microsoft tried to build all the layers they needed all at once and didn't give the different layers time to evolve and allow developers to flesh them out.

Compare ASP.NET's viewstate and __doPostBack() to the elegance of AJAX when used in a non-intrusive manner and its easy to see how ASP.NET and WebForms where not a good idea then and are not a good idea now. ASP.NET persists in corporations because corporations are 1.) slow to change, 2.) generally not visionary, 3.) want a vendor throat to choke when things go wrong, and 4.) ASP.NET has better support for applications with enterprise requirements (vs. applications that can scale with the web.)

Over time more companies will evolve to support open-sources apps and give corporations that throat to choke, and more corporations will finally start to embrace open-source technologies like LAMP and Drupal.

So ASP.NET is simply like a bottle of wine that was shipped the moment it was bottled; it was not given the time neccessary to age.

My thinking is that your

My thinking is that your argument has less to do with technical merits, though you do throw out a few "buzz keywords", than with your gut feelings about MS. It basically boils down to: they're evil, join the good forces; so much for an argument.

MSDN Licenses

There are some great ISV licenses for MSDN that will help lower the development costs. The startup I work for is using ASP.NET and we're loving the speed and ease of development. That is not to say that other options weren't viable to us but .NET gave us the best return on our investment.

.NET scales well, despite the Old Wives' tales to the contrary.

An interesting debate

Jeff,

I agree with you in believing that the .NET framework is geared more towards solving "corporatey" problems. I've created and maintained a number .NET desktop/web apps for my previous employers, and I think ASP.NET, in particular, is great at enabling developers to easily and quickly throw together web apps... so long as they're simple.

Once you leave the realm simplicity, you start running into problems with ASP.NET's page lifecycle, its canned control libraries, its ajax framework, etc. You end up spending oodles of time creating hacks to get around the default behavior of the framework. Sure, it works, but the code ends up being hellishly hard to understand.. let alone maintain.

As for start-ups, having just started my own company, http://Brightmix.com, I can confirm that our biggest barrier to using ASP.NET was the licensing costs (we're bootstrapping). We also feel that RoR is, hands down, a better framework for building sweet AJAX/web 2.0 applications. Scott Banwart posted a comment on Sasha's original post that pretty much sums up my experience with ASP.NET exactly.

I’ve been working with Web Forms off and on since Beta 1, and I’ve grown to loathe them. In trying to abstract away the details of working on the web, Microsoft has only succeeded in making things hopelessly complex. Give me something that embraces the web instead like Rails or PHP.

I think it's worth stating that if you want to build a business around a website/service, it makes a whole lot of sense to use a framework that is entirely devoted to the web. Not a framework that mimics the desktop.

One Word: Microsoft

1) Why choose a development platform that requires you to also use their development tools (visual studio) and their operating system (windows).

2) Why develop in a platform that if you become too successful, Microsoft will just move into your territory. (antivirus, flash, etc.)

3) Why tie yourself to Microsoft when they really haven't done anything significant other than roll out the dot net platform in the last 10 years.

4) Vista

Two Words: No Clue

On in other words, I have no clue what I'm talking about, but let me jump in with my opinion... nice.

Hi hello, In virtue all the

Hi hello,
In virtue all the discussions above, let me point two or three thing,
for the past few years, i've been working mainly on desktop applications, saying some otherway Oracle-Oracle D2K, vb6, a few months back i joined a new firm, thinks were different here, I had to create an intranet application using asp.net and sql server. I had a little experience with both. But within a few weeks i could learn .net and C# and could create a decent intranet within two months time(which includes mail, pay roll,chat(indeed i used some AJAX for it ) etc. from my experience i can point out one thing . It is one of the simplest language to learn(C#) and one of the simplest web scripting technology (asp.net) to implement. I think why peoples prefer .NET is its simplicity of usage and also it is very easy to drive SQL server for a nascent guy like me. I know its bit hard to learn Oracle . But whenever i look back into what i have created, i feel ASP.NET put a lots of thing in the background of a web page (__VIEWSTATE, __EVENTVALIDATION, __EVENTTARGET), so every page is tired up with the web server itself. But i know one thing, if i had choose PHP or any other scripting language, i couldn't have completed the task in this short span.

What about MySpace?

MySpace, argusable one of the hottest web sites in the world in the last few years, runs on ASP.NET and SQL Server...

Plentyoffish.com

Don't forget plentyoffish.com, which runs off of a handful of web servers (one for the site and one to serve the images) and is so efficient that the owner employs a staff of 1 person (himself, occasionally his girlfriend) and at one point was making $300,000 per month in ad revenue.

ASP.NET can scale VERY well if you know what you're doing.

Agree!

I agree with your statement that an ASP.NET developer has to know what s/he's doing. Pageflakes.com is run off of ASP.NET and the developers there are very sharp. Even still they ran into scalability issues.

I think the problem with ASP.NET is that a lot of developers aren't familiar with building a project with scalability in mind. As mentioned above many developers run in the corporate environment where resources are plenty. In the public "startup" world of ASP.NET resources are scarce and expensive (if using only MSoft apps, ie. SQL Server)

Cheap and flexibilty

A lot of developers or new developers look for a coding language they can grasp and has a lot of support. Joomla 1.5 is built with php and has MVC included. The fact that it is open source is an advantage to cut back on a lot of time

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <h2> <h3>
  • Lines and paragraphs break automatically.
  • Use <!--pagebreak--> to create page breaks.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options