It's Not Dead - It's Stable!
I am developing and maintaining a small collection of open source tools called Butterfly Components, on my website at http://butterfly.jenkov.com.
From time to time I get emails with questions like
"Is this project even being developed / supported / maintained anymore? "
I have a few questions in this regard to the Java and open source community:
Some of these components, for instance my DI Container, Butterfly Container, has pretty much all of the features I want to build into it, and everything any user has asked (almost). In other words, they are stable - not dead.
Question 1: How do you signal to the audience, that this project is still being supported, but is stable and will most likely not have any new features added (or at least in a slower pace) ??
Question 2: Is it really so important to have a constant stream of updates coming out for the components we use? Will they go stale if we don't? I mean, java.lang.String isn't constantly updated, is it? Just a little here and there. Constat updates can also lead to bloat.
Somehow I split myself in this question. Sometimes it is nice with a stable product. Sometimes it is nice with a product that keeps up with the world. As long as it doesn't change faster than you can adapt to the changes...
What is your opinion? Must a component keep expanding to be "alive" ? Or does that just lead to bloat?
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





Comments
Andreas Mecky replied on Thu, 2010/01/07 - 4:27am
Artur Biesiadowski replied on Thu, 2010/01/07 - 5:04am
Depends on the time between the 'releases'. There are certain changes in java/JDK which I would expect any library to take advantage of - it it doesn't it might be a sign that it is indeed dead. For me such changes are
1) 1.2 Collections. If library is still expecting and returning Vectors and Hashtables, maybe it is time to stop being 'stable' and break compatibility with 1.1
2) 1.5 Generics. 1.4 compatibility is still nice, but it is a good sign if new version of API works with generics natively. In case of 'stable' library, it should not be so big pain to maintain two versions - one generified and one not.
3) 1.7 Closures. This is pure speculation at the moment, but I expect it to be same big effect on perceived 'freshness' of API.
So, if you don't update your library API for more than 5? years, for my it is a hint it might be dead, not stable :)
Jakob Jenkov replied on Thu, 2010/01/07 - 5:54am
@Artur,
I think that is a reasonable expectation - that the API is at least made compatible with the latest or second latest Java version, even if no new features are added.
@Andreas
I agree :-) I have had the same thoughts, and arrived at the same decision. I don't want to add no-op's just to make the API look fresh.
Tracy Nelson replied on Thu, 2010/01/07 - 9:51am
Jakob Jenkov replied on Thu, 2010/01/07 - 1:44pm
in response to:
Tracy Nelson
Oliver Weiler replied on Thu, 2010/01/07 - 3:18pm
That is actually one major flaw of today's software... called featurities ^^... there are dozens and more applications out there which reached a point were they were PERFECT, i.e. small, light-weight, fast... and had all the featured you could long for... then new stuff gets added... and added... and added... and then you have a software with huge start-up times, memory consumption and multilevel-menus... awful :-(.
Just think of popular Unix tools: sed, awk, etc... they haven't change muched recentyl but they still get the job done...
Simplicity is beautiful!
Jose Fernandez replied on Thu, 2010/01/07 - 7:21pm
2) People are used to open source projects being in perpetual development. The major ones are due to complexity, compatibility, and bloat. Many many others are never finished due to lack of interest or momentum or too wide a vision. But having a feature-complete project is a good thing as far as I'm concerned. Be loud and proud about it :)
jeroen dijkmeijer replied on Fri, 2010/01/08 - 2:59am
In addition to the comments stated earlier (compatable with jdk versions and platforms, feature complete etc) also a "wall of fame", will do: a list of "customers" who have successfully used your toolkit, you don't need forced statements to make your website look alive. Of course you need some feedback.
Me myself I would be more inclined to choose the mainstream frameworks (spring / jee, hibernate, jsf, wicket) than a small toolkit from an unknown developer. From another perspective I can surely see the benefits of a stable platform, but than a list of successfull projects would be more convincing to pull me over the line.
regards,
Jeroen.
BTW how web2.0 feature complete is your framework does it do Ajax? How well does it integrate with javacscript frameworks like dojo or jquery?
Jakob Jenkov replied on Fri, 2010/01/08 - 5:01am
Graham O'regan replied on Fri, 2010/01/08 - 7:55am
Jake Suntheimer replied on Sun, 2010/01/10 - 2:25am
Leo Jacsion replied on Fri, 2012/12/21 - 5:46am
Preservance specializes in creating any kind of Dynamic website keeping in mind its customer's specific requirements.You will be amazed to look at the real dynamic web Design applications with user friendly interface Website Designing In Indore