Some of you might have attended Symfony Day 2011 in Cologne two weeks ago where together with Stefan Koopmanschap I gave a talk about Catching Opportunities with Open Source. which we got an amazing feedback for.
As our talk was basically a series of small stories and anecdotes there is not much point to publish our notes. But the discussions we had afterwards on the conference and on twitter inspired me to write a small series of Open Source articles.
Imagine you built this awesome back office tool for a client. A kind of control center where the client can now control every single detail about his ecommerce website.
Would you Open Source it?
It is likely that this piece of software would expose all sorts of custom workflows of the client that he might considers to be unique to him. It is also likely that it attaches to some of his internal tools or data sources that are indeed unique to him so what use would they be to the Open Source community?
But in this back office there might be that one cool widget that automatically promotes products to the customer based upon the current moon phase and the customers day of birth, right?
Can you abstract that, make it smaller?
Could you build a moon phase clock that can be fed with a birthdate which will then based on configurable statistical data trigger an event?
Well you probably already got it in there but it is important to separate it from the rest. Not only to make it Open Source but to increase the quality of your own code base. This principle is called Separation of Concerns and it is a key to a success full Open Source case.
People are not interested in something that is custom made for specific requirements. They are interested in their own requirements. Open Source Software should be a building block in their own project that solves a single requirement in a generic way.