Why diversity and choice are good things

Published on 2010-4-9

I noticed a bit of traffic coming from somewhere I didn't recognise, so I went over to check it out...

It was just ranty link bait so I won't bother linking it, but it reminded me of a stance I took a few years ago while I was still just using the MS provided frameworks and software like a good little drone...

Starting with the obvious - "We already have NBuilder and AutoFixture so what on earth do we need another one of these for? "

When I set out to write AutoPoco, the fact that there were existing projects wasn't even a consideration for me, I wanted a weekend project which combined convention with configuration and exposed a tidy fluent interface in a manner in which I'd like to use it.

Open sourcing it just made sense because there is no point in keeping things locked away where other people can't see or learn from them (or even give feedback so I can carry on learning...)

That aside, it turned out that my desire for convention over configuration, and my overwhelming desire to keep configuration to a minimum whilst generating meaningful test data was a radically different approach (imo) to those existing projects, so I've decided to carry on pushing down that route to see where it takes me.

Could you not have just forked an existing project?

Sure, but then I'd have had even more work to do because the existing projects would have been hard to shoe-horn the convention/configuration aspects into without either wrapping the entire system or re-writing entire aspects of it.

Approaching a problem in your own way can often lead to alternative solutions and in building alternative solutions and open sourcing them, I see can see no ill effects, only positive ones whereby we all win because we're putting more ideas into the mix.

But why do what has been done before?

Seriously? This is the kind of mindset that can really irk me at times - without re-takes on existing ideas we wouldn't have any competition, we'd lose a lot of growth in the open source (and closed source) arenas and I dare say we'd all just be working on the frameworks that Microsoft give us because they solve all the problems - right?... right?

Because they solve the problems in different ways, because some people don't like the way the existing frameworks work and want something that suits their workflow better, because learning from other people's mistakes means we don't have to carry around the legacy baggage that backwards compatability on some mature software projects can force on us.

Couldn't you have found another problem to solve?

I find this question to be confusing - I spend my working hours and most of my spare time leading the development of a product that is pretty much guaranteed be used by some fairly large PLCs once it has been released, I solve new problems every day and the joy of sitting down with a codebase like AutoPoco is I get to play around with no commercial pressure or expecations and put into practise the things I have learned whilst making something that I consider to be quite pretty.

The enjoyment of such a thing is in writing it and thinking about it - in crafting something I want to use, not in releasing it and not in getting other people to use it (Why I would I even try?) - but to be able to put a small piece of code out and to foster discussion on the pros and cons of the different approaches I have used or could be used with an active and growing community.

One of the most enjoyable things I ever do in our product is to replace home-grown code with other people's open source efforts so I'm hardly guilty of the crime of doing everything myself - and we may well end up using one of the existing object generation frameworks rather than AutoPoco if they do more of what we want (unlikely).


If you don't like it, then don't use it, and if nobody likes it and nobody uses it then it was still fun to write and nobody lost anything through the actions of a whimsical software developer.

But... If you do like it, and you do use it, or if other people use it or if other people learn from it, or get ideas from it, or use it as the inspiration for their own take on the problem space then collectively we've all gained something because somebody somewhere is going to be learning something.

And that is what OSS is about, it's not about getting free software, it's about having the choice to use what you want, and to find out how other people have gone about solving problems and to learn from where other people have tread before.

Me? I'm enjoying the development of AutoPoco and think there is enough of a difference between it and existing frameworks to justify to myself in the continued development of it. I want my conventions, and I want my automatic set up, and I want to be able to generate a craptastic amount of realistic test data for my systems as well as using it for the day to day unit tests I litter about the place.

And that's good enough for me.

2020 © Rob Ashton. ALL Rights Reserved.