This question has bothered me for quite a while. Writing a program or library you use is one thing. But at some point, you want to release it to the world for others to use. But then again, you think about your messy code and interfaces, all the features which are still missing, your lacking documentation, etc. The release should be perfect and people should easily be able to go and use whatever software you want to release.
What is your checklist of things to be done before you consider releasing your OSS in some community?
"Art is never finished, only abandoned" - Leonardo da Vinci
"The best time to plant a tree was 20 years ago. The second best time is now." – Chinese Proverb
There are no right moments in real life. Just do it. Making your work public will help you developing 1.0 and stable API. You still can break and change anything you want in your own products. If you are sure your code is used elsewhere, make sure to, at least, keep an older versions.
Reid Hoffman - > If you are not embarrassed by the first version of your product, you’ve launched too late.
Perhaps the real question is: what is it that is holding you back?
My short list:
Brahian E. Soto Mercedes
Front End Web Developer
My opinion is that if you are already using the software to solve some problem you have, then you may aswell release it.
Yes, maybe it is not very pretty yet. Yes, maybe you still can improve its performance. Yes, the code may be messy. Yes, there are still some bugs. Yes, ....
Just think about it, the sooner you release it, the sooner you will get feedback from the users and then, you can get to work and fix the issues that are most important for them.