Saturday, 16 January 2010

Have we missed anything

My last post caused a bit of a stir. Most of the comments were against my opinion which is more than fair enough and I respect that. I am now going to try and turn a negative into a.............not so negative.

Maybe part of the reason why we have so many similar frameworks and tools is because developers are too eager to jump in and start writing code. Writing an IoC container for example is challenging and has a well defined problem space that allows the developer get cracking on the code ASAP.

I want to ask the following question to anybody who is reading this:

What tooling or frameworks are we still missing?

I have often seen posts from devs asking for new project ideas. Does anyone have an opinion on this?

The main cause for tooling is to automate or solve a problem. Productivity is another driving force for new tools or frameworks.

Perhaps it is better to think of this question by identifying the problem first. The solution comes next.

If we cannot answer this question then are we saying that we are happy with our current toolset?

Another worrying thought is that perhaps .NET developers leave these innovations up to Microsoft and more recently JetBrains.

I have a funny feeling that this post will not generate as many comments as my last!


  1. Just a few thoughts off the top of my head :

    A lightweight reporting framework that can use a sql or xml backend and produce graphs and simple docs. There's lots of heavyweight commercial reporting solutions but very little in the space. Too much crystal, or rtf embedded in xslt.

    Transitional frameworks : I remember discussing this at the birth of horn meeting, but it would be nice to have a reflection framework that would create an interface over a legacy class that I could call from a new stack, and substitute methods, or extend methods one by one until the legacy code can be removed. Particularly useful for moving between persistence frameworks or away from ado.

  2. I like these suggestions and I especially agree with your point about reporting solutions being bloated and heavy.

  3. git-tfs. TFS is rampant in our development community, and many of us desperately need relief from it.

  4. Off the top of my head:

    An open, extensible framework for handling declaration, display, and conversion of quantities. ie. Money, Mass, Volume. You'd think that something for this exists but it really doesn't. I started one here: but am making rather lack-luster progress with it.

    A good open source refactoring-centric IDE. Though Paul would argue - and I would agree - that you should just contribute to SharpDevelop or MonoDevelop.

    Full-stack OSS projects. Castle is one but needs documentation, SharpArchitecture is great and making progress. Still, that's only two and there are definitely still paradigms left to explore.

    Projects for easing integration of multiple CLR languages in one solution. Nothing specific springs to mind but it would seem like that's a ripe problem-space.

    Code visualization, annotation, metrics plugins.

    An application/IDE plugin to help with code reviews. I'd love to be able to right click on a class, hit 'submit for review' and have it uploaded to a code review server. There are surely some commercial tools for this (I think SmartBear does this) but there's no way this doesn't deserve an OSS project.

    T4 Templates are ok, but frankly writing them still sucks. A project for easing working with them could be nice.

    What about the equivalent of Ruby's Rack?

    And Paul, I know the amount of Web framework's available is what started you off to begin with, but where's our Sinatra?

    Though to be honest, I think that IronRuby, both of the above

    How about someone handle the fact that coding Javascript in Visual Studio is still a suck-fest?

    Oh and of course Horn...

    Sorry man, but there's still a long way to go before we've saturated the market completely.

  5. A couple more:

    A few abstraction layers that might actually be helpful:

    An abstraction layer over social networking services (assuming social networking is actually ever helpful to anyone).

    An abstraction layer over all the crazy cloud data storage services, non-relational solutions like db4o and ORMs. Given where data access seems to be going this is a must.

    Speaking of which, how about a full-stack project for getting you set-up with a NOSQL-type project?

    Or how about client applications to browse db4o, SQLite, Azure, etc. The ones I've seen haven't been too hot.

    As a matter of fact new clients for SQL Server and Oracle wouldn't hurt either. All the ones that I've used are DBA-centric and make life for developers trying to use them far more difficult than need be.

  6. @George Some really excellent ideas in here George. I especially like the client applications for db4o and azure.