This post might just be a bunch of navel gazing, so maybe you just want to move on. Lately I’ve been growing concerned that .Net just isn’t the place for me to be anymore and I’m just talking about that out loud here. Feel free to cheer me up in the comments by telling me I’m all wrong.
I’m active in OSS development on the .Net platform, and for the most part it’s something I do because I enjoy it and I’m convinced that it’s paid very big dividends to me in terms of career development and skill development (like almost everybody in software development who’s the slightest bit visible, I’ve also been accused of “celebrity seeking” plenty of times). All the same, I’d like to think that my work on FubuMVC or StructureMap or StoryTeller matters and does or could add something to the greater ecosystem. A couple weeks ago I took part in a heated Twitter conversation about the perceived (ok, probably very real) lack of innovation and OSS activity in the .Net world. I was actually arguing that there is some real OSS efforts going on in the .Net community, but others felt that all the interesting things were happening somewhere else. I definitely feel like we’ve done some good stuff in the FubuMVC architecture and I’m enthusiastic about some of the OSS efforts out there like MassTransit, Caliburn, and Fluent NHibernate, but it is hard to look at .Net OSS efforts compared to other communities where OSS participation, usage, and enthusiasm is so much higher. Since that time I’ve broached the subject with several other people I respect with consistent results: community driven innovation is something that happens elsewhere, but not so much in .Net land. Frankly, there have been times lately where I’ve lost quite a bit of enthusiasm for FubuMVC development because:
- We’re so far behind other platforms. See the recent hand wringing over how pathetic we (.Net community) are collectively because we haven’t gotten our stuff together enough to have a decent package management system like gems (I’m aware of HornGet, but I don’t think it’s a workable approach. Maybe OpenWrap will be the answer and I’m planning to support it with the next StructureMap release)
- I’m dubious that we could ever attract enough community in the .Net world to make it a real success. We have a nice core of 4-5 other shops besides Dovetail, but we really need more. More people writing extensions, more people kicking the tires, more people generating enthusiasm.
- So much of the .Net community just isn’t open to ideas and tools that don’t originate from you know who. It also seems like a disproportionate number of .Net shops are adverse to OSS usage in general.
- Open minded / progressive / ALT.NET / whatever you want to call them developers seem to be abandoning .Net in droves. I.e., the folks most likely to try out or contribute to Fubu are exactly the same folks who are wandering out of the .Net camp
So my question is really this, is it even worth trying to do FubuMVC in the .Net space? FubuMVC is just another MVC web framework – and even though it’s almost unknown in the .Net space, OSS MVC frameworks for web development are a dime a dozen in the greater software world. Arguably we aren’t doing anything radically new like the Node.js guys and the jQuery team are, but FubuMVC could be a success if it makes the teams that use it, and specifically *my* team, deliver business value faster on more typical line of business applications than they could with other .Net solutions like WebForms or MSMVC — and at least be competitive with other platform tools like Rails itself, Lift, and Django. I originally thought that I’d be happy with FubuMVC as long as a handful of people were very happy with it, but now I’m wondering if we should even try if have no hope of ever creating a larger, more viable ecosystem around FubuMVC. What does the blogosphere say?
What is Innovative?
To back up for a minute, I guess we need to ask ourselves just what in the land of software development today is cool and exciting? Some things I remember being mentioned are Node.js, Heroku, MongoDb (I know there’s a pretty good backlash going against NoSQL but my gawd does it look like NoSQL databases are going to rock for easier object persistence than any ORM ever could. See this post where Joshua Graham talks about this issue), and Sinatra. Definitely all innovative things I’m interested in too (I’m going to build out a Sinatra analogue for FubuMVC someday because I think it’s going to be useful for us at Dovetail) that may open up entirely new possibilities for building solutions.
However, I still remember how much I was blown away by the first big Ruby on Rails demos I saw way back in 2006. It’s not that Ruby on Rails added any new, radical abilities to the average software project. After all, it was and is mostly a framework for rapidly building data entry intensive applications on the web. What made my eyes pop in that No Fluff, Just Stuff talk was how Ruby on Rails made a task so much easier and quicker than the way I did the same task on a nearly daily basis with WebForms and the Supervising Controller pattern. Ruby on Rails was awesome because it made run of the mill development tasks quicker to perform without sacrificing maintainability in the same way that the traditional Microsoft RAD approaches often do.
I think I’d argue that there are at least two different types of innovation:
- Technologies and approaches that open up entirely new possibilities. Just offhand, I suddenly know a *lot* of people who are actively engaged in building mobile apps for the iPhone and/or Android.
- Approaches that make the everyday development tasks we already do more quicker and more efficient
The first category *is* cooler, but we should remember to pay attention to successes in the second category.