A Train of Thought: Innovation and .Net Edition

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.

 

Whither FubuMVC?

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:

  1. 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)
  2. 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.
  3. 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.
  4. 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, HerokuMongoDb (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:

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

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://www.lukemelia.com Luke Melia

    As someone wondering about similar things 2.5 years ago, I can say… come on in, the water’s fine. The vibrancy of the Ruby world is energizing and fun. For a while, I missed Resharper, and I still miss my ALT.NET friends, but all in all, it’s been a great shift.

  • http://geek.ianbattersby.com Ian Battersby

    Don’t underestimate your influence on the direction of development and technology usage in the .NET sphere, your hard work and OSS contributions are greatly acknowledged (certainly among my enthused peers); unfortunately it’s rarely as vocally or vibrantly as observed in other communities.

    If there is “a problem” with the .NET community it is (IMHO) that it is more traditionally commercial focused, and the associated payloads of that all the more pressured and unfriendly. The often immediate (and often unwavering) time constraints imposed by unsympathetic stakeholders means limited R+D time for things like Fubu/OpenRasta vs MS MVC. Also problematic is the time to educate an unenthusiastic bunch of “traditional” MS developers in the room behind me.

    In there lies another problem, “the typical MS developer”. He/she isn’t sad like me spending their free time in Starbucks reading, or up until 4am playing with StructureMap conventions; they are strictly 9-5.30 people who couldn’t give a fig if they use MS MVC or a cat – as long as it works. Sound depressing? Maybe, but the amount of developers who do “give a fig” are many and growing. In fact I’m no longer the only one, and the ‘other guy’ is more on the ball than I!

    I only recently commented in a blog entry the turnaround I’ve observed in the last 2.5-3 years is immense. I’ve gone from trying to persuade architects to allow me to develop simple build providers, to now using 16+ OSS technologies in a flagship product. I have stakeholders who although not technically minded are now aware of practices such as TDD and even attend my technical presentations taking onboard the business benefits *and* an appreciation for “good code”.

    All that said I admit I’m very bad at contributing back to OSS, the .NET community, and even giving constructive feedback (yes – I know I still haven’t sent you those SM examples of something I once couldn’t get working), but for my part I’ll try harder – so PLEASE don’t stop :)

  • http://codebetter.com/members/Ian-Cooper/default.aspx Ian Cooper

    I saw some soul-searching amongst the MonoRail community on similar lines a while back. If ASP.NET MVC is ‘good enough’ then the friction that drives people off MS and on to non-MS frameworks just won’t be there. As a result people will tend to default to the MS framework. That is fairly natural, many folks have to make bets with thier learning investment. A vicious circle develops where development shops choose ASP.NET because as the MS standard they believe it will prove easier to hire developers and developers invest in ASP.NET MVC because that is where the money is. Developers go where the money is, and not just in the MS space.

    If developers do feel friction the question then becomes what MVC framework they opt for. Do they choose MonoRail, OpenRasta, or Fubu?

    So it is a crowded field and has a ‘good enough’ offering from MS. I expect that means that people investing in this area may find that return on their investment is low outside core users.

    Sure, I’m keen to use OpenRasta, but I’m part of the same community as Seb. Sure guys around you may be keen to use Fubu, but they are part of the same community as you. That may be enough to justify doing the work, it may not. The ideas may feed into ASP.NET MVC, and that might be good, or it might be frustrating to you.

    So whilst you could invest time here, I would not expect widespread adoption to be your reward, only the respect of the cogniscenti. Only you know if that is enough.

    However there are areas that have a lot of friction without much joy from MS. You mention one of them – the lack of a viable Gems alternative. I expect there is more valuable for OSS in solving the areas where the friction is noticeable enough that folks will move from what MS offers to look for solutions.

    It’s hard to know if the presence of the Castle stack influenced MS enough to get them moving on thier own equivalents, or whether it was the siren lure of other platforms. But OSS can certainly shape the agenda for what MS should produce.

    How long for example will it be before MS decided it needs to enter the NoSQL space in response to the OSS projects there.

  • David Fauber

    I think a lot of the problem is just the day to day realities of getting anything done in corporate IT. Even if you can get someone with decision making power to understand the benefits of a new framework, they’re still likely to balk because they are worried they won’t be able to pull in a new developer that’s got the appropriate experience. This lowest common denominator approach is what’s keeping a lot of shops on WebForms instead of ASP.NET MVC (much less Fubu), and has EF (from my experience) being more widely adapted than nHibernate (actually a lot of the resistance to nHib that I’ve encountered has been regarding the excessive config, but that’s mitigated by Fluent nHib and never stops the same guys from going with a WebForm app with a totally bloated default web.config)

  • Marf

    I just like dragging the heart into the circle to prove I am a human.

    To myself as much as anyone else.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @Ben Taylor,

    Sorry for the slow reply, I went offline most of the weekend. I really didn’t mean you had to do something right this minute — or ever really. I’m going to look at the video over lunch. Chad’s told me he likes it already. From this little mess, @Nieve is also working on “WarmUp” for Fubu stuff. We’ve definitely neglected the project start up part of Fubu to date.

    Thanks,

    Jeremy

  • Some other Steve

    @NC,

    So, the ex-Microsoft employ doesn’t understand Microsoft? Really? BizSpark is the Sub Prime mortgages of Start Up programs, nothing like getting a steeply discounted product then suddenly after three years get dinged with a huge bill.

    On his site, Rob goes on to show that he spends a lot less money for a full featured set of tools, with “full featured” being the keywords there.

    Building any sort of web application will always be more expensive than building a feature identical application on a different stack. From OS costs, to Databases, to Tools.

  • http://blogger.forgottenskies.com Steve Gentile

    OSS projects in .NET have really inspired me and expanded my growth.

    When I started in on .NET in version 1.0 I was doing datasets and drag and drop. It was fine at first, but that didn’t last long.

    The start for me in OSS came from a great friend 8 or so years ago who was from the java world and came to work on a .net project with me. He asked ‘What is the equilavent of Spring and Hibernate in .net ?’ At that point, I had no idea what he was referring too :)

    That led me in my ‘off hours’ to stay up every night for at least a year reading and writing code with NHibernate, Spring.NET, then Castle Windsor, ActiveRecord, ‘Binsor’, etc.. and the big one was Monorail. I gave a talk on Monorail at a .NET user group in Cincinnati, OH.

    The result of learning Monorail and digging into it pointed the way into investigating Ruby on Rail (yes, I was backwards here – lol), Django, Spring MVC, Grails, etc… and eventually led to a kick start into knowing how to work with asp.net mvc.

    Jeremy, I hope you read this part: When I was doing this ‘OSS thing’ =starting 8 or so many years ago, OSS was non-existent – outside of the java guys I knew, no one talked about it in the MS shops. ie. No one talked about ‘NUnit’ outside of a small handful of java guys coming to .net world. Today, whether accepted or not, OSS .NET has spread.

    Lastly, as mentioned at the start – if but for anything – these projects grow and mature the developers. Watching how OSS developers can take the framework and then bend it to their will, show new ways to solve old problems, etc… it’s of great value to other .net developers. ie. Monorail really showed me how to build a front-controller vs. page-controller approach. AutoMapper showed me how to create a good mapper. NHibernate taught me what an ORM is – and the concepts like ‘lazyload’ and proxies – outside of Patterns books – lol

    So, without our .NET OSS community and it’s active strong members, then our community will fall apart imo. The bright folks who do this are the torch bearers. Being a pioneer isn’t easy and not everyone will follow, but without those pioneers – there won’t be any growth.

    I think .NET is still young and growing. I’ve seen a major shift in the last 8 years. I think we’ll continue to see that occur.

    I do agree that maybe you should shift gears a bit and do a fun project for yourself in a non-MS technology. Recently I was working on a Grails project and it’s been very good for me – I’ve enjoyed expanding out into other languages and tools. It’s good to see how others solve the same problems we deal with – and I’m always impressed how creative they are.

  • Steve

    “Steve Phillips wrote re: A Train of Thought: Innovation and .Net Edition
    on Thu, Jun 10 2010 7:46 PM

    Where are all of these top-shelve.NET people who are jumping ship going to? Ruby…Java….PHP??? I don’t see this. Is Ruby, for example, equivalent to all of the tools and technologies built around the .NET framework? Yes, for CRUD web apps Rails kicks ass, but our team develops much more than just CRUD web apps.”

    Steve – that is just so ignorant of what Rails is. Do you base what you know of what Rails can do on a 5 minute tutorial ? Do you write asp.net webforms based on a 5 minute tutorial ?

    This is problem with MS community.

  • Steve

    My biggest #1 issue is that MS competes against it’s own community and stifles the creativity, then eventually calls it their own. Then the other .net devs who could care less just get excited that they get this free MS product – but have no idea of the origination.

    MSUnit – a poor copy of NUnit (except initially it was ‘write code first then have it generate a test’… ouch)
    TFS – a poor copy of just about every other source control issue tracking tool
    MVC – great to see… but isn’t this mostly just Monorail
    Unity – yet another IOC … that isn’t near as robust as other IOC’s, but hey it’s MS.
    EFv1 – crap. utter crap. Not original, steals just about every idea from every other OSS orm – in particular NHibernate. How come MS can use jQuery but can’t create a decent VS plug-in UI for generating poco NHibernate objects? Instead we get EF and L2Sql ? How about ActiveRecord from Castle ???

    No IDE support for IronRuby yet.

    The sorry thing is, it’s not just in the programming space – MS is falling hard and fast. They have two claims: Windows & Office. Windows hasn’t done anything ‘new’ in 10 years. Office – the greatest thing is it has a ribbon bar. It hasn’t evolved. MS hasn’t evolved. Their only success is the xbox – where they also copied ps/nintendo success and just out marketed everyone.

    Where is their phone?
    Check Google for Silverlight gaming support – MS hasn’t given much and the devs haven’t bitten. Speaking of Silverlight – they are coming out with yet another copy of another technology (flash/flex). Sure it’s better, but it’s not new. And no one outside of MS even cares about it.

    .NET itself is a good thing. C# is a good thing. WCF is a good thing. XAML is a good thing.

    MS isn’t content to just provide that – they want to compete vs. support the community. Instead of embracing things like NHibernate, which is light years ahead of MS, they compete against it.

    The only thing I’ve seen them change on is jQuery. (even here, rather than build on what is there, they created their own ms ajax libraries)

    Webform application I’ve seen built crumbled under complex requirements. They are too heavy. Large project have issues.

    Then you have this:
    “The .NET community will stay small until people get over this “MS is an evil empire” crap, and “omg it’s going to cost $” crap. Those who are leaving the MS community are mostly idiots also.”

    Rather than take these comments to heart, you get a comment like that – which basically just continues to show why the community is in decline – you can’t grow until your willing to see your faults. Ignoring the pink elephant in the room isn’t going to fix things.

    Where is IronRuby support in IDE VS 2010 (which costs a fortune) ? How come I can run Netbeans, Intellj, Eclipse on a mac and windows and I can’t run VS yet on a mac ?

    MS is so one-sided it just turns people off.

  • NC

    Without reading the comments. The biggest issue with innovation in .NET is that most people outside .NET, and some who are in .NET ( http://www.infoq.com/articles/architecting-tekpub ), avoid it because of their own imagination thinking it’s going to cost billions in licensing costs.

    The guys at TekPub moved away from .NET because of licensing, yet they haven’t build anything that could NOT be done in .NET with nothing more than Windows Server. They don’t even know how the BizSpark program works.

    The .NET community will stay small until people get over this “MS is an evil empire” crap, and “omg it’s going to cost $” crap. Those who are leaving the MS community are mostly idiots also.

  • http://bentaylor.org/ Ben Taylor

    I hacked something up and filmed it (too ashamed to unleash the source ;) http://bentaylor.org/fubu/fubuvid.htm

    It uses a template folder (Goodies) and does some crude name replacement (inspired by the crude name replacement in warmup!). Works for me on Vista x64 with ASP.NET dev server.

    Any value in progressing?

  • http://dmartin.net Dan Martin

    @GeorgeR

    I think you missed the point of his post. He’s wasn’t looking for praise, he was talking about lack of excitement and innovation within .NET OSS.

    And personally I have to agree with nieve and sukru in that there are a bunch of really good projects out there.

  • http://realfiction.net Frank Quednau

    Thx Louis for taking up the cudgels for mono. I just used monotorrent for playing in bin4net. Mono Options is a trusty tool when I have to whip up a command line tool. A colleague of mine took up the task the other day to present us what goes on in mono-land. Nice stuff, like writing apps for iPhone etc. (although it ain’t possible anymore, is it? thx for Apple, and a shame I can’t manage to put a $ sign in there)

  • Stacy Murray

    Like others here, I have truly enjoyed and appreciated your work too. Thanks!

    However from reading this post, I do believe now is the time for you to go to the other side. You’ll never be anymore successful here than you are now. I believe a MS OSS project has to be 10x better than rails to get the adoption you desire.

    Once you try to make your mark in the rails community, you’ll learn a lot of tech stuff, and also that you’ll never be as important in that community as DHH and others. But you will have answered all these questions that keep you sitting on the fence now and longing for the .Net community to be like the rails community.

    Then you will come back! You’ll realize your opportunity to do the 10x better work here is FAR greater. And you’ll feel the love too. And you’ll create the OSS projects we really need and MUST HAVE. They will be 10x better-different than rails, not just trying to copy rails. Adoption will soar, and you will be famous for moving over rails developers too *lol*

    Ironically, the sooner you leave for rails, the better off we all will be! So get going now dude :)

  • Louis Salin

    There is a lot of innovation going on on the Mono side of .Net. They’ve had a C# compiler as a service for more than a year already. They have a library for hardware accelerated SIMD instructions (only available on Linux, unfortunately), co-routines. There’s also Cecil. Linden Labs uses Mono for their Second Life scripting engine.

    To me, Mono seems like a hot bed of innovation. They’re not just copying libraries from other frameworks (Ok… Mono is a copy of .Net, but you get my gist), they’re creating new stuff. Suse Studio? Building your mono apps remotely and having a Linux live CD that boots with just enough stuff to run you app? Never seen that before. They brought .Net to the iPhone! Mono runs on Android. Mono === .Net.

    Unfortunately, the Mono innovators are hated by the Linux community because it’s a Microsoft standard. And they are also ignored by the Microsoft community because… well, I’m not sure why. Because it runs on Linux? That just seems stupid to me.

    Last year, at Monospace, Glen Block and the guys from Mono hacked all week and made MEF work on Mono, even though they have they already have something similar (mono.addin) That is collaboration! I suggest you reach out outside of the .Net web development community. There are pockets of people out there that are making .Net progress, although they’re not Microsoft sheep.

  • GeorgeR

    What an interesting way to get everyone to write in and tell you how great you are. I can’t believe that anyone would accuse you of “celebrity seeking”.

    Hope it makes you feel better.

  • sukru

    Still preferring open source alternatives in my .Net projects (mbUnit, NHibernate, IKVM, and MSVMC-sorry). I’d never be able to have so much interest if we did not have NUnit, NAnt at the beginning.

    And I’m checking CodePlex from time to time. There are still very good ideas being implemented out there!

  • http://notesdotnet.wordpress.com/ nieve

    Jeremy,
    I may not be one of those highly experienced and sharp developers you were referring to when asking where are those .net developers who could do so much for the OSS community. However, I can definitely say that each and every day, the couple of hours I spend on the train to Paris doing the little I can to add to unit test coverage in Fubu are at this point the best couple of professional hours I get through the day. And I was truly happy to be able to talk about Fubu in a job interview I had in London. Hopefully I will be able to do some real projects with Fubu over there…

    Personally, I think there are plenty of truly fascinating things happening in .NET, and not necessarily 100% OSS- I must add RavenDB, esp. seeing that you’ve mentioned mongoDB. Fubu might be victim to the MSMVC buzz that we’ve been getting the last year or so, and yeah, this is due to manager wishing to do things the MS way. And literally, not a day goes by without me thinking ‘if only we were doing that with fubu rather than MSMVC, that would have been so much easier’.

    You thought this was the less sexy type of innovation. I beg to differ. StructureMap to me is still as sexy as fuck to me :)

  • http://bentaylor.org/ Ben Taylor

    One more thought. Of the 100% of people not using Fubu, 95% of them probably don’t know what benefits it has over ASP.NET MVC (I myself follow you and don’t really know aside from some DRY SRP DI notions). And many of us like to discover the benefits by using the bits. Therefore, the _first_ benefit of Fubu could be it’s ease of new project setup. #win before you even see the goodies in the box!

  • http://bentaylor.org/ Ben Taylor

    “But here’s the real question, why didn’t you decide to help us with that startup stuff instead of just putting it down?”

    Actually, I am sitting here with France Mexico on in the background, a beer in one hand and the laptop in the other hacking away at just that. Was just looking at seeing if I could grab the source for Warmup http://github.com/chucknorris/warmup, create a solution and project template and a cmd line app to get it built and running. I did look at doing this previously, but the posts in the dev group suggested peeps where already on it (and Chad even built an MS template?).

    Also, right now I don’t have time to devote much time. I am at the end(ish) of a big ecommerce project and I have problems in one of my eyes which means I don’t (at the moment) have the luxury of spending my free time staring at a screen :) Plus, I’m stuck in webforms land so I can’t even use the bits!!!!! However, I do have time (and care enough) to give you my feedback (which of course you can ignore).

    “The quickstart contrast between RoR and Fubu (which I think is mostly bogus) is mostly due to the fact that Ruby has gems and we don’t. ”

    I don’t see why the comparison is bogus. Surely we don’t need Gems to create an almost identical startup experience to Rails (in terms of ease and speed not mechanics). For example, DHH would not write about XML on the Getting Started page. He would give you the cutdown XML and (maybe) put a comment in there for you to _discover_ when you needed to.

    “I’m not entirely buying the argument that that’s the entire cause for the lack of interest.”

    I don’t think it’s the entire cause. However, I can tell you it has stopped me on at least one occasion and I am a person that _loves_ to use innovative OSS. I would wager that it would increase adoption.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @AndyZ,

    Yes, I get that stuff and I’m sorry for giving a crap about the stuff that takes up at least 40 hours of my week, every single week. Can you please go take the Stuart Smiley routine somewhere else?

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @Ben,

    Your comment kind of feeds into my argument about .Net lagging the other communities. The quickstart contrast between RoR and Fubu (which I think is mostly bogus) is mostly due to the fact that Ruby has gems and we don’t.

    Yes, we definitely need something like gems create “my project”, but that’s only for the initial project setup. I’m not entirely buying the argument that that’s the entire cause for the lack of interest. It’s hard getting .Net developers to even care about the potential of creating a better web development ecosystem.

    But here’s the real question, why didn’t you decide to help us with that startup stuff instead of just putting it down? And I’m not singling you out per se.

  • AndyZ

    Step 1: Forget about being the “Shade Tree Developer” for a week or more. Find the other Jeremy Miller. Immerse yourself in something not related to computers (family, hobbies, vacation, charitable work). Make sure you are actively engaged with something else and not just physically away from your computer while thinking about it.

    Step 2: Decide what step 2 is when you’re done with step 1.

    Goal: Follow a path that is good for you while often appreciating where you’ve been, enjoying where you are, and deciding which direction to go in the future.

  • http://bentaylor.org/ Ben Taylor

    To ramp adoption I would suggest implementing a very simple Rails like command line for getting up and running with FubuMVC. Look at the FubuMVC getting started (10 pages) http://guides.fubumvc.com/getting_started.html and then look at the Rails one (1.5 pages) http://rubyonrails.org/download

    I have gone to play with Fubu and OpenRasta and have found startup friction with both (and I am one of the devs you don’t need to try hard to reach). I get the odd half an hour here and there to play with bits. If I have to spend time setting something up I _know_ could be automated or I can’t easily find the bits I need, how can I believe it will give me Rails like productivity? Plus it wastes time I could be building rad sites on Fubu.

    I just went to install Fubu again. When I hit Getting Started it points me back to http://fubumvc.com/ to get the binaries. However, I can’t find them! Presumably I go through the Team City widget at the bottom, but little usability things like that will cause dropout (as you get shown a TC login screen).

    For those blaming Microsoft, I’m not convinced. If you demonstrate value for developers and help them get up and running without any hassle, they will come (eventually). I think Moq is a very good example of this.

    I for one am very glad for the work you do. I don’t actually use any of it (I’m an Autofac guy :). However, I like reading your posts and I have learnt a lot from your code. Personally, I don’t think the adoption problem is more to do with everything _but_ the code. Collar a few newbies off the street and usability test them on the Fubu site. And read the chapter by DHH in Founders at Work :)

    Don’t do a Gunderloy! Anders will be our salvation.

  • http://ackenpacken.blogspot.com/ ackenpacken

    I’m very sorry to hear this. Your work is greatly appreciated! Probably more than you know. As you mention the .NET OSS community is a silent community. Sadly OSS in the .NET world has been more about free software than contribution. I think this trend is turning. I see companies that wouldn’t touch anything else than Microsoft products using NHibernate, StructureMap, NServiceBus and so on. They even get the source code and start fiddeling about within it. I think the .NET community is on the move and your contribution is an extremely valuable one.

    I love the .NET platform. It’s a well crafted platform and with mono it’s no longer locked to a single platform. Of course there are other great languages out there with better communities, but I hope you won’t give up on us. Your are deeply appriciated!

  • http://johnteague.lostechies.com John Teague

    Hmmm.. Let’s look at my current tech stack on my current project:

    ASP.Net MVC (MS)
    Sql Server (MS, I’m afraid I’m going to be stuck here for a while)
    Infragistics(Legacy part of the app)
    NHibernate(OSS)
    FluentNH(OSS)
    MVCContrib(OSS)
    FluentHTML (OSS)
    StructureMap (OSS)
    NServiceBus (OSS) (well almost have them sold)
    mspec (OSS)
    moq (OSS)
    shouldIT (OSS)
    nbuilder (OSS)
    ncommon (OSS)
    JSON.Net (OSS)
    Spark (OSS)
    (I’ll exclude all of the jquery stuff)

    Okay, so only three of the libraries in this list are not fully open source, but all of them help me build apps faster and better.

    And some of these libraries are pretty damn cool IMO. So my suggestion would be to look at your total dev stack and see how much OSS projects there are. Are we behind other communities, sure. But not by much. There’s just as much properietary / Non-OSS on other platforms as well (I”m thinking of the Java Stack how much does TIBCO cost again?

    And speaking of Ruby and Rails, a good friend of mine who works in a primarily Ruby / Rails shop said “you can write crappy cody in Ruby too, just a little faster”

  • vSv

    I have followed your blog and used SM for some years now and have learned so much! Kudus on your contribution to the .net community!

    I too share a similar sentiment having seen NAnt, NUnit, NHibernate and other OSS projects get squashed by “good enough” MS versions which get adopted by default.

    Also, I’m sick of the way MS mollycoddle developers with tools that “make it so easy” but which ultimately promote bad and unmaintainable code.

    The primary factor in my decision to switch was seeing the advances in Open Source specifically in SaaS and Cloud computing. I believe cloud computing, together with the best of Open Source is the future for software.

    Will MS ever really embrace Open Source or will they continue to duplicate it with “good enough”?

    Perhaps when WiX ships with Visual Studio we’ll see a turning point :-P

  • Corey

    @Steve

    Yes it was over the top. It was meant to be. I’m aware of what he stated about just thinking out loud. Of course he can leave the community if he so chooses. Did I say anything otherwise? To get technical, you’re right. I don’t care much for technicalities though, so I guess it’s a moot point.

    Aside from technicalities and being over the top I’m pretty sure I got my point across, and that was to compliment Jeremy on what he has already done for the community.

  • fschwiet

    Awhile ago I went on a quest for a better CMS. I decided I wasn’t happy with what was out there in the .Net world so I’d look outside the .Net world. I found Drupal seemed to have the most weight behind it, a really strong community, so I put several months into learning PHP and Drupal development.

    It was a painful few months with a lot of WTF moments. If you do decide to jump platforms, I wouldn’t go PHP. :)

  • Joe

    Writing code / frameworks for developers is an absolutely thankless job as developers expect EVERYTHING to be free. And, in the .NET space, they are happy to take what you produce with no or minimal contribution from them. That’s the truth of .NET based OSS. It’s a marketing vehicle for MS, and nothing more. I’ve heard that directly from MS-employed developers. So, as long as what you do paints MS in a good light, you may get some meager support from MS, but write something that competes with what they offer, or have an opinion of your own and you will quickly get “shutdown”.

    I agree with Ray Vega – screw the dev’s (unless MS is paying you a good sum of money) and build something for someone that will actually appreciate what you build for them. Hell, they may even pay you for it.

  • CB

    So working hard on OSS in the .Net world will be a bigger challenge.

    We need you man!

  • Steve

    @ Corey

    “So by leaving the community wouldn’t you be part of the problem, rather than part of the solution?”

    Now that’s a bit over the top, isn’t it? He said he’s not going anywhere, but if he did, he’s well within his rights to do so and shouldn’t even have to think twice if about it.

    I guess we could get technical and say that anyone leaving .NET for the reasons Jeremy stated is a symptom of the problem, not the cause or a contributing factor to it.

  • Steve

    @Rob Bowley

    “Where is this place you speak apart from in the wonderful world of Ruby? Is the Java community much better?

    Do you think if Ruby became as popular as Java and .Net it would not suffer the same problems?”

    The answer to that is a resounding no.

    I work in a shop that does heavy Microsoft and Java development, and the two of them are treated completely differently. On the .NET side, we can’t use any OSS, hell we can’t even look at it without getting a reprimand from our lawyers. On the other side, the Java teams are open to use anything they want. .NET is treated differently than anything else.

    Hell, when we “picked” a web stack for Microsoft, we were told by someone very, very high up within MS not to use MSMVC because “it was just a fad and would die out in a few years”. So even with Microsoft’s recent public change of heart towards OSS, their own people are still rallying against it.

    Doing things “right” in .NET often feels like swimming up stream, especially when it involves trying to get companies to adopt it.

    That is the major difference between .NET and pretty much everything else.

    Jeremy, you’ve done a lot of good within the community, but at the same time, it’s your life. If you don’t enjoy what you do, or don’t feel that you are getting satisfaction out of it, move on. You don’t owe anyone here anything.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @All,

    Guys, I’m not going anywhere any time soon, just talking out loud. I’m just a bit low on enthusiasm this month.

    Thank you all for your comments.

  • Derek

    I’m not sure I’d stick Ruby on Rails in the, only great for CRUD web apps, category.

  • Corey

    Jeremy I can personally say that you and a few others are the only reason why I started to look into open source in the first place a little less than 2 years ago. Since then our company has made a huge shift to using almost nothing but open source. Now I look first for an open source solution before considering other options. Before I was a typical .NET developer accepting Microsoft as the only “right” solution blinded by what they were telling me.

    Your work on FubuMVC is AMAZING. Maybe not to you, but looking at the comparisson of what an application built on the defacto ASP.NET MVC vs. Fubu is sooo much cleaner. We would already be using it exclusively had we not already built something with the MVC framework. Instead we have adapted the behavior chain, and are using the html conventions within the mvc framework. Just that alone has cleaned up a lot of noise from our applications. Eventually we plan to make the switch, so please don’t quit.

    The .NET community doesn’t have to be excluded from the other communities either. With IronRuby v1 released now it opens us up to a whole world of community out there. Recently we switched from plain css to using compass / sass on top of ironruby. If you were to take FubuMVC’s rake file and change exists? to File::exists? it would also run on top of IronRuby. There are also new projects to make dsl’s for XAML with IronRuby.

    So by leaving the community wouldn’t you be part of the problem, rather than part of the solution?

  • http://www.markdavidrogers.com Mark Rogers

    The .net world is not going to get any better if you quit contributing Fubu.

    I NEEDS MAH FUBU!!

  • http://blog.coreycoogan.com corey coogan

    The more I read about RoR and how much simpler it makes life, the more I consider it. I live in Green Bay, WI though, and the demand for RoR people is pretty much non-existent. I do plan on tipping my toe when I get the time.

    Even if things in .Net are harder than Ruby, .Net is till a great platform to do all sorts of stuff. I echo the sentiment that many MS developers aren’t interested in the innovation that comes from OSS or are in it simply for the paycheck. I think a big part of it is lack of passion [http://blog.coreycoogan.com/2009/07/22/passion-in-software-development/].

    I tried to start an Alt.net group to foster interest in all the great things that are available, but it quickly fizzled and died. Most people would rather see a presentation on EF at the .NET User Group meeting than learn about NServiceBus, FNH.

    Jeremy’s work in the space though is inspiring and extremely valuable. Many people at my current client don’t even know what IoC is. When I introduced them to StructureMap, they were blown away. When I show them M.Spec, they are floored. SpecFlow and StoryTeller are 2 more examples of tools that would have real value here and I’m working on getting some form of adoption there as well.

    Things are slow to change, but if we stay passionate and infect others with our love for the craft, I believe it can get better. It’s really a matter of education in my experience. Too many .Net developers don’t know what they don’t know.

    Right tool for the job – .Net and RoR perhaps?

  • http://www.velrada.com Chris Nurse

    Perhaps an issue is that we work with commercial tools in commercial environments and the IP is often not ours, but the clients, or our employers…so this limits us. We have to earn money to pay bills and its hard to go home at night or the weekend and conjour up something from scratch. I don’t think it’s about platform so much, but the environments (professional) that we work in. Just a thought.

  • http://www.dbones.co.uk David Rundle

    I love the OSS offering, from my observation, with out projects like CastleProject, StructureMap, Nhibernate etc I think .NET developers would still be doing drag and drop webforms.

    the work that the .NET community has done in the sense of OSS makes my developer life more fun and rewarding, as I would like to say my code is far easier to maintain using these frameworks.

    I am currently doing my masters, and most of the developers wanted to do the projects in .NET using the OSS frameworks.

  • http://www.codinginstinct.com Torkel

    Interesting sentiments.

    Even though ALT.NET is not growing much these days and is to a large extent maybe an “echo” chamber. There is still a lot of value in having a community that do OSS and are engaged in trying to innovate. This makes .NET development bearable, without ALT.NET and some of the OSS projects I would have left .NET development long ago (at least I hope so).

  • DaRage

    I don’t think .NET and OSS should be blamed for what’s happening (or not) to FubuMVC. I think you should go back to the goals and reasoning that originally started the project and I think you’ll find a lot there.

    I always saw FubuMVC as ‘MyMVC,’ the ‘My’ being Jeremy Miller.

  • http://webgambit.com Karthik Hariharan

    Great post and I think its good to get your thoughts out there on this.

    In my mind, those who started looking at OSS .NET solutions really did so because they grew out of the Microsoft solutions, but they didn’t want to get too far out of their comfort zone and switch platforms. In many cases, like yours, they had the skills to write their own solutions.

    In this regard, Microsoft has sort of adopted a 37Signals-esque attitude. They are more interested in bringing new novice developers into .NET than they are in keeping guys like us from growing out of .NET. As a business, there’s far more revenue in the newbies so thats where they’ve focused.

    Sun went in the other direction with Java, and the language became more unapproachable, it lost its luster. Microsoft doesn’t want to make the same mistake and I can’t really blame them.

    As for my advice to you, I totally agree with Ray Vega’s comments above. Go build something on a different platform for end users, not other devs. And rekindle your passion by going outside your comfort zone on another platform while you do it. I’m doing the same thing right now, and its made dev fun again.

  • Jason Meckley

    I echo what Rob Bowley said; “think about who you are doing it [coding/oss] for and why.”

  • Rob Bowley

    Where is this place you speak apart from in the wonderful world of Ruby? Is the Java community much better?

    Do you think if Ruby became as popular as Java and .Net it would not suffer the same problems?

    This really sounds like a case of the grass is greener. I know many people who write ruby for a living, they’re happy enough, but they got their own problems believe me.

    I also know people people who write .net for a living who contribute to the ruby community.

    Jeremy, the .net community has really benefited from your inclusion and it would be less of a place without you but answer me this? Who are you doing it for? Why do you care to measure what you do against others?

    It’s lonely up there I know. Not many are as capable and driven to do what you do but does that mean you should give up? Maybe, but I say again, think about who you’re doing it for and why.

  • http://schotime.net/blog Adam

    I think what you are doing in the OS community is awesome Jeremy! And if
    anybody has done anything more than a simple website they too will
    soon realise that you will have to bend the crap out of it to make it
    do the most common tasks when building a web application.

    I have looked at Fubu once so far but have not gone further. Not
    because I didn’t like it but the concepts are radical compared to what
    the average dot net dev knows. I know alot about c# but everyday I’m
    learning more and more which is atleast 80% more than most devs I
    know. It just seems to be the way with dot net devs. They seem to get
    stuck in what they know and never bother learning new stuff or keep up
    with the progress. This can be seen by how many places are still
    working with .net 2.0. I know you will agree with me that I could not
    enjoy .net dev without linq and other 3.5 and 4 goodies.

    One thing that would get me more involved with fubu is good examples
    and specific documentation like what is coming up on fubu guides now.

    Anyways I hope you stick around. Love stucture map and can’t wait to
    learn more on fubu so I can deploy my projects with it!

  • http://www.vojkovic.net Zdeslav

    I won’t cheer you up: you are not wrong at all :)

    I experienced same thing recently and moved to Linux/Python combo (+ Django for web apps) for all personal work and payed work where I can control technology stack. What to say: I enjoy working again :) so many new and exciting things to learn

    However, the comments show that most people here do web-development (and I would guess that majority of their apps are CRUD forms over data, with nice CSS). Well, it’s a solved problem, so it’s easy to pick your favorite stack from Java/C# to Lisp/Erlang. Honestly, it’s much more recycling than innovation, only platforms change. Nothing wrong with it, though

    I still work with MS stuff at my main contracting gig (which pays 95% of my bills), but this is desktop and embedded software/realtime/automation systems, so Python/Ruby/whatever don’t make it there (we do use .NET for GUI). If you are not in web development, than the choices narrow down rapidly.

  • jelfs

    @StevePy must you write “M$”? It makes you come across like a dick and detracts from your point.

  • http://computeristsolutions.com josh

    I dunno; I’d echo a lot of what you’ve said. I’ve already waded into other platforms too. I’d just be careful of the grass-is-greener scenario. Everything platform has flaws, and they are more evident the better you know the platform.

    I can’t really offer reassurance, or encouragement to move away. It’s kinda like advising your buddy whether to get divorced.. no matter what you say, its probably wrong.

  • http://lexicalclosures.blogspot.com/ Ray Vega

    Go build something that people might want to use. Go build a website. Go build a mobile app for IPhone or Android. Go do all of the above and more. Go build it with the technology of your choice preferably non-MS like RoR.

    What I mean is go build something not for other developers but for *non-technical* people . It seems your target audience and focus has been largely other developers (e.g. FubuMVC). Turn your attention away from this group of people (i.e. majority of .NET developers) that are completely disinterested in .NET OSS projects, design patterns, TDD ,”best practices” and towards not so tech savvy people who might actually need and appreciate what you produce.

    I have followed your blog off and on for the last 5 years and at times it felt as if you obsessed a bit too much about other developers and software development process versus the people that actually use and consume the software you create. Make that your passion and everything else should fall into place.

  • http://www.py-sty.blogspot.com Steve Py

    @Adam : I don’t think it’s so much of waiting for M$ to take care of innovation, it’s that they don’t support innovation, they steal it. The little independent OSS developer/team cannot affort to patent their work, and probably not really interested in doing so anyway… Even so they’re bound to be intimidated or overwhelmed at the thought of trying to defend their investment when the M$ juggernaught takes notice of a good idea and decides to “incorporate” a simmilar feature or product. Sure they may head-hunt you to take part in their project, but that just leads to another casualty within the OSS community.

    As for killing innovation, blame the business, not the technology. Business software likes .Net so I’d wager a huge proportion of the .Net development community is working at building and maintaining business applications. Most companies only care about bottom-line. They don’t pay for innovation, they pay for ROI. When you do that 8+ hours a day, 50 weeks a year there really isn’t a lot of energy left over. There are niche companies out there interested in more than bottom line if you’re lucky enough to find one at the right time, but chances are they’re using PHP or RoR, not ASP.Net.

  • http://lzcd.com Luke

    Reading through it, one thing that popped into my head was that of the old line about revolutions never happening on a full stomach.

    Swapping or contributing to a project generally requires that the project represents a sufficiently large enough difference or “return” from the existing infrastructure to warrant investment (in either a personal or corporate sense).

    Microsoft, for all of its faults, tends to do a pretty good job of supplying a development environment to the world that will get the job done. Possibly not in the most elegant, succinct or technically sexy way… but done none the less.

    So the question comes around yet again, albeit in slightly reworded: What’s the obvious return on investment that your (or any other) project offers?

  • http://frugalcoder.us/ Michael J. Ryan

    I am afraid I share a lot of your sentiments. I know that there are a few people, like yourself, who are really trying to expand and push what .Net offers. I do find that more often than not, it seems that the best ideas are building out upon the short comings within the MS stack. T4 templating (still short of My generation and other code gen in many ways), you have MSBuild, MSTest etc, that seem to start with ideas from the community, or worse MS “Partners” then incubate them and releasing them. Sometimes the MS solution is better, sometimes “Good Enough” for most people.

    I think it’s hard seeing peers that don’t want to expand their knowledge. SQL is “Good Enough” so no need to look at Document databases, despite a much better fit. No need to review the build process, despite using an ORM that causes more pain, than helps once you get to production, and are experiencing performance issues. I find that the “magic” that MS provides seems to handle 80% of use cases very effectively, while being a partial fail on 10%, and even harder than doing it by hand for the remaining 10%. I feel that there’s always a need for people, and tools/ideas for dealing with that last 10%.

    I don’t know that the OSS echosystem in .Net will ever be greater than it is. It seems like maybe 1 in 20 .Net developers are interested in furthering their knowledge and craft (love the term Software Craftsmanship). But is that one in twenty in the .Net camp comparable to those outside of .Net all together. And is the vocal minority worth it, I’d say yes. We got XHTML compliance in ASP.Net’s generation as a default, we got tools for testability built in, instead of bolted on. I think the community shapes the way things go, even if the community’s solutions aren’t the “final” solution. It’s hard talking to a noisy room, but it’s still worth it.

    I will also say this, the amount of technology options seems to triple every two years, and it’s impossible to know what’s going on, and keep up let alone become proficient in everything, so it’s a matter of choosing one’s battles. I’m a bit JavaScript proponent, and nobody doing web development out there seems to rebel against it like the ASP.Net crowd. I feel your pain.

  • http://blog.adamjcooper.com Adam Cooper

    Jeremy, your contribution to the .NET community has been nothing less than stellar. Yet it seems to me that you are part of a small chorus of voices advocating for true professionalism in the midst of an enormous wasteland of technical mediocrity.

    While there is plenty of technical excellence in the foundations of .NET—the CLR, C#, F#, LINQ, Rx, TPL—I’m afraid that the house that’s built on top of that foundation, and the development community living inside, reflects too much the original house of Visual Basic.

    This points to a strange dichotomy about .NET—it is an unusual blend of technical excellence and programming for dummies. On the one hand we’ve got generics and lambdas and a CLR that supports tail recursion, while on the other we have drag-and-drop designers that help people build “data-driven websites.” The old VB promise of Even You Can Be a Programmer continues to live on in Visual Studio and indeed within the .NET community itself.

    I get the impression that most .NET developers are content to abrogate professionalism and just do whatever Microsoft says. Perhaps this started back in the VB days when Microsoft provided the “magic” that “programmers” could drag and drop upon whatever business problem was at hand. Since then the tools and technologies have changed, but the game remains the same. Despite the best efforts of ALT.NET and even Microsoft themselves (via the CodePlex Foundation), I’m afraid the .NET community has never been able to completely shake this historical dependence on Microsoft to take care of core innovation.

    I know I’m not telling you anything new, but I’ve finally concluded that anyone within the .NET community who tries to contribute to the core .NET stack by offering an alternative, OSS choice is swimming upstream. Unlike other camps like Java and Ruby, the average .NET developer does not consider improving the core stack something that he, or any other developer in the community, can or should do.

    The most successful OSS projects in .NET have fulfilled a need that Microsoft had not yet addressed, such as NAnt, NUnit, and NHibernate. Yet, each of those has had to face the arrival of MSBuild, MSTest, and now the ADO.NET Entity Framework. With the community tuned the way it is, I expect that over time the Microsoft options will win out.
    With FubuMVC you would be perceived as challenging an MVC offering already provided by Microsoft, which, I’m sad to say, makes your chances of being widely embraced by the .NET community pretty slim.

    Does that mean you shouldn’t do it? Not necessarily. It just means you shouldn’t do it unless you’ll be happy using it on your own (or, alternatively, you could land a job on Microsoft’s MVC team and bring your best ideas to bear in a future version of ASP.NET MVC).

    (sigh) What a discouraging place to be in!

  • Harry

    Most .NET guys starts with a job of doing nothing but Microsoft Technologies. This is a very comfortable place, with great promise if you stay here long enough. Not many people would like to take such risk to take a pay cut and wandering around. People who are skillful enough, brave enough, and lucky enough to have company/projects to support them learning and using other technologies are not much. Will Microsoft die out? Maybe, but it can take decades. I know it is frustrating for people who want innovation and excitement. But for a lot of people including me who are doing their best to improve things in .NET land and sometimes don’t have too much power to change big environments, I would say good luck and keep your good job.

  • http://shane.jscconsulting.ca Shane Courtrille

    I don’t know what’s more depressing. The thought of losing another of the .Net people I’ve learned a lot from thanks to reading their code..

    Or the fact that when I look at the Ruby on Rails site I’m just shocked at how well laid out and gripping the site is. It’s entire goal is to get you hooked on Rails and then get you going. I can’t honestly imagine a .Net site grabbing me the same way…

    We’re supposed to be pragmatic so for me the answer to your question is fairly simple. If you would be happier in a different ecosystem and you could still make a comfortable living then the actual question you should be asking is “Why shouldn’t I switch to X?”

  • Michael

    I have been inspired by your work all the way from Build your own Cab and I have learn a great deal from you and others in the OSS community. However, I must admit that it is a constant struggle to justify the use of quality tools (Nhibernate, Mbunit, log4net etc.) to other team members and management in the face of MS alternatives especially once the discussion turns to the enterprise view of development. What advice do you have for people trying to do the “right thing” and push the adoption of OSS tools?

  • http://www.kevinlabranche.com Kevin LaBranche

    Please don’t give up on .Net OSS! It’s people like you who help to inspire people like me who are wanting to spread their wings into OSS projects.

  • craiggwilson

    I agree with your sentiments. I would also like to say that there are a disproportionate number of developers in the MS camp (compared to other platforms) that are solely doing it for the paycheck. They don’t want to learn (or can’t) and new stuff just makes their job more difficult. I believe this is why there isn’t enough open source adoption in the .NET arena. While we boast a large number of developers, most of them don’t really care.

  • Steve Phillips

    Where are all of these top-shelve.NET people who are jumping ship going to? Ruby…Java….PHP??? I don’t see this. Is Ruby, for example, equivalent to all of the tools and technologies built around the .NET framework? Yes, for CRUD web apps Rails kicks ass, but our team develops much more than just CRUD web apps.

  • http://www.py-sty.blogspot.com Steve Py

    My $0.02

    Personally I don’t think I will ever consider becoming actively involved in any OSS project on a M$ platform. I believe the lack of overall enthusiasm to .Net OSS is M$ itself, and the #1 reason for this is M$ has a track record of re-inventing a good idea instead of supporting it’s development. (Whether OSS or commercial.)

    Many .Net developers aren’t necessarily going to prefer or wait for M$ flavours of third party & OSS projects out there, but the managers at their day jobs unfortunately will.

    Not that this is entirely a bad thing. Having a more standardized set of tools is a good thing. Why do we need 15 flavours of MVC frameworks? This is one reason I feel M$ the .Net technology tree is more employable than Java etc. When employers look for web developers it’s WebForm or MVC, for windows, Winform or WPF now. The more flavours you add to do the same thing, the more frustrating it is to find people that use your combination of flavours.