Well, one can write an entire book on this theme, that’s why we’ll stop today on just one pattern: The Open Project.…
I’m not strictly speaking here about Open Source Software, but rather about the open character of a (sub)project in which customers are informed (more or less) about what’s happening in the development process and are involved in the product shaping.
Even if the main product is close-sourced, this doesn’t matter. An open subproject can be spawned for focused, rapid prototyping. Based on the community’s feedback this can be (partially or totally) re-introduced in the main product, can be grown as a separate project or both. There are notable examples in which this approach succeeded, but I would mention only two of them: Alex Ciobanu’s DeHL and Primoz Gabrijelcic’s OmniThreadLibrary.
Besides of the net income which the lines of code of the two above libraries brought there are also some interesting side effects: In the Alexandru Ciobanu’s case (most probably) the DeHL is one of the main factors (if not THE main factor) which caused his transfer from the Docs team to the position of “RTL Developer for RAD Studio” (the quote is taken from his About Box). Of course, we dare to hope that some things from DeHL will be included in the main product, isn’t it?
A more interesting case is the case of the OmniThreadLibrary which it seems that is the most successful threading library for Delphi. Much more successful (of course) than Delphi Parallel Library – on which one of the latest posts of the main developer (Allen Bauer – which is incidentally Embarcadero’s Chief Scientist) was more than one year ago…
I do think that nobody nowadays can tame the software complexity alone, without the help which come from his community. While this thing might be known, we usually overlook that in this community there are the so called ‘peers’ – guys which are ready to help you, guys which have enough knowledge to figure out what’s inside and much more knowledge about what’s outside – and here by ‘outside’ I mean real world usage cases. If the project maintainers can have the control of the inside while keeping a constant feedback stream from outside then they will succeed to bring the project to maturity and success.
One of the most significant examples here is Firebird while it seems that it reached at a new maturity level. In few months a new version (Firebird 2.5) will be released which is loaded with many interesting features including a new architecture (called SuperClassic) which will mean a significant performance boost in certain situations.
Noteworthy is that the team members, knowing that this release will be a significant milestone in the project development, had set up a campaign to spread the word. There are even some benefits to join! (some interesting prizes to be found there… guys, if you about the campaign for the first time reading this article, please mention it there, perhaps I will grab something 🙂 – …we’re definitely interested about that FastReport license…)
In the end I think that community matters. As an active, cooperative force. Just to know how to handle it.