|laziness, impatience, and hubris|
Re: Module advice: when is it too insignificant to release?by adamk (Chaplain)
|on Nov 25, 2004 at 12:13 UTC||Need Help??|
If you had a need and fulfilled it in a way that can be encapsulated, then go ahead and put it up on CPAN. But a couple of things to note.
If you take the dominant and most obvious name for a particular idea, people are going to find you the most often when they are looking to solve the same problem.
This means your module is gradually going to become the authorative module on the topic, and any time you want to modify it, you are going to have support issues with the current users. Since we don't yet have a workable CPAN Statistics capability, this means that after a while (I normally set it at around 3 months) you have to take the attitude that you now have "users" and if you change stuff, it could break their applications.
So while you should by all means put it up, you should go over the design a couple of times and be 100% sure of yourself that
1. The basic design is correct.
Should it be OO or procedural, what sort of parameter and return value conventions should be used, are any major perl modules you use the best one for the job.
2. The API is both correct and extensible.
If you have bugs or sub-optimal stuff happening behind the scenes, you can always fix it, but you may well be stuck with the API FOREVER (or at least for a very long time, note that it can take 5 years to fully deprecate a function and remove support for it)
Are the class and method names the right ones? If you are only providing a very limited set of functions, can you see where you or someone else would be able to add other things later?
Take your time to get the design and API and any other interfaces right because it's painful to change. The code, well you can stuff with that all you like.
When the time comes to upload and take a piece of the namespace (the only limited resource CPAN has) you want to be 99% certain it's going in the right place.
If you want to upload experimentally, make sure to use a 0.00_01 type version so everyone/everything/everycode is aware it is not a "real" release.
I am by no means trying to dissuade you from uploading, I think what you have is perfect for turning into a module, I'm just suggesting not to rush to upload in an off-hand way just because you can.