You can do it.
Sure, it's easy for me to say that. I've written a few things about Perl a few people have read. I have a few patches in a few projects and a couple of modules on the CPAN myself. (You're reading this, aren't you? So I have at least one reader. Thank you for your time!)
Even with all that in mind, two questions still come up far too often, and I think they prevent or delay us from providing code and documentation for other people to use freely:
- Does anyone care?
- Is it good enough (yet)?
You can see this attitude in the recurring debate over the responsibilities of authors. While some people say it's irresponsible or childish or unprofessional to upload code without full test coverage or complete documentation or an iron-clad promise to respond to every bug within 24 hours with a fix, an apology, a new release, and a sandwich (and yes, I exaggerate for effect), we're doing each other a disservice setting these demands on ourselves and each other.
Yes, we should do our best.
... but yes, we can start from something small and incomplete and refine it in smaller steps. It doesn't have to pass every test on every platform known to man if you can get feedback on where it fails and release a new version tomorrow. It doesn't have to have every feature you plan to add, if it does something useful that other people might want to use today. It doesn't have to have every option documented if it's usable right now.
I'm not suggesting that we allow ourselves to be irresponsible with what we share, but I am suggesting that we can allow ourselves the freedom to share a little earlier and a little more often. We have the ability to upload new code every day (every hour!) if we want.
So what if it's not perfect? Even if you waited until you thought you'd achieved perfect, you probably would miss, even by a little bit.
Start small. Do your research—work to your best quality—but let yourself hit smaller goals and make things a little bit better a little more often. Share earlier. This is a lot better for everyone.