Are you standing on the edge of the pool?

| 12 Comments

At my family's St. Patrick's Day party, we had the Wii set up and had two guitars going playing Guitar Hero. Quinn, my seven-year-old daughter, was rockin' and showing her uncle Kevin how to play. She was explaining how he had to hold the green fret button AND hit the strum bar right when the green thing crossed the bottom line and once he got it going, and he was able to play "Barracuda," he had a great time.

Meanwhile, other friends and relatives were clustered around, watching with fascination. They weren't gamers by any stretch, most in their 40s and 50s, but I could tell they really wanted to try. When Kevin was done, I took his guitar and held it out for someone on the couch. "Here, you try it," I told her. "Oh, no, that's OK, I don't know how, let someone else play," she said, embarrassed. "It's OK, it's fun, and it's easy once you get the hang of it." This broke her defense and she said "OK, what do I do?" taking the guitar from me. She got the hang of it quickly, loved playing three or four songs, and started trying to get her husband to try it.

It's kind of like someone standing outside of a swimming pool, embarrassed about jumping in. It's clear that people in the pool are having a great time, but for some reason he feels self-conscious. Maybe he's afraid he's not a good enough swimmer, because he can't do fancy dives off the high board. Whatever the reason, with a little encouragement, whether he jumps in the deep end, or just slowly walks down the stairs on the shallow end, he gets in the water and has a great time, and his friends are glad he's in there with them.

Sometimes I talk to people like that standing in Perl. It'll be someone who's been using Perl for years, and loves what Perl does for him, and would somehow like to contribute to Perl, to get into the pool where everyone's having a good time, but he's afraid.

Maybe he's got a module he developed that he doesn't think is "good enough" for CPAN (as if CPAN is 100% stellar). Maybe he fears that he's not a good enough coder to contribute patches. Perhaps he doesn't realize that not all contributions to open source need to be code. Or perhaps he just doesn't know where to start.

Are you that person? Have you wanted to contribute to Perl, or any other open source project, but just haven't? Please let me know your story in the comments.

12 Comments

My code sucks, it's just plan ugly. I think it's people like me they invented code obfuscation for. However, being a linguist I feel strangely addicted to Perl and have tried to use it as much as possible throughout the years. I always wanted to give something back, because there are so many things I really like about Perl, that are not existant or extremely un-elegantly designed in PHP (just an example, other languages may also have some weird behavior from a perl monkey's perspective).

Since I am only very far on the surface I decided I couldn't seriously consider contributing to CPAN (I do have nightmares of that maniac with the chainsaw that will eventually use my code in production and pay some russian mob member to find out my address due to some less-than-perfect code, to put it midly). Documentation might have been nice as well, but I never really got around to it. This just felt a little too organized, and - being a monkey with a very short attention span - out the question as well.

But then it occured. Perl is awesome but presumed dead. There is so little buzz about my coding language of choice that I decided to do some evangelizing about it. Knowing only bits about the actual power of Perl doesn't really allow me to compete in a head-to-head dog-fight between two languages, but that's absolutely not what's neccessary. There's more than one tool to use here and sometimes Perl will just be the ideal one. For me, it's almost always ideal.

For that reason I try to gibe Perl some more spotlight in the web. I write blog entries about Perl eating some WSDL for breakfast or just you basic hash-of-hashes explanation. I hope this will increase awareness of the vividness of Perl and its community and attract some new and maybe even convince some veteran users to stick with Perl - at least on some projects.

I wouldn't however, consider myself in the pool. It's more like I am sitting in my own bathtub and opening the window so others can peek inside and see what a great time I have. Andy, I think you're right and as weird as my comment may sound, there's probably a lot of bystanders near the pool that really enjoy the bathtub but are not in the pool, for whatever reason. I guess you nicely put the situation (did I mention I like this picture?). Thanks for this post.

Like number 1, my coding sucks.. kinda. I only learnt Perl from the O'Reilly book a year ago.

I'm a sysadmin by trade so quick bits of perl scripting tends to be a regular task, or altering existing scripts.
I do better at the latter than writing from scratch, but can happily write scripts from scratch, profile them and tweak them for speed where that's an issue.
I'd like my coding to be neater and smarter and I've long seen participating in an open source project as a good way of achieving that.

I don't really have a particular forte or area I'm most skilled at or interested in so when it comes to contributing to Perl I've never even felt I had an in.
I'd like to, in fact I'm unemployed at the moment and have oodles of time to do it too, but as ever I look at the deep pool and think.. where do I start? What can I do?

It's hard on the edge of the pool. I've got a module that I think I can release on CPAN but frankly, I'm terrified. The Perl community is very engaged and sometimes the feedback is hard to take. I admit I've spent a long time on the sidelines for fear of embarassing myself. I know I'm not the best coder in the world. I also know I'm not the worst.

I guess I've gotta suck it up and just take the plunge.

It took me about 10 years to get off of the edge of the pool, and even then, I only dipped my toe in (the module I wrote patched another module to add a capability - the module I patched ended up using my code in the next version!)

Now, I've got a major project to do and a few modules that support it!

To those who are standing on the edge - do something small first, and talk it up on related mailing lists! Everyone will be glad for your contribution!

whiskeyjack - I'd love to help you release your module on CPAN. If you'd like a little help or encouragement, drop me an email. amoore (at) mooresystems.com. Or, hop on irc.perl.org and hit up #perl-help. Someone there can help you make sure your first release goes smoothly. The first step is a little bit tough, but it's worth it, I promise!

I may be in a slightly different boat. I want to jump into the pool. I just don't think I know enough to jump into the pool. So I am always on the lookout for a "swim instructor". :-)

The perl 5 wiki has several pages that could be helpful for anybody attempting to produce and release their first CPAN module :
* CPAN Packaging provides a pretty detailed guide
* Contributing to CPAN outlines the two short steps required to actually release
* Recommended Modules For Module Development is also worth a look

What keeps me from jumping into the pool is that I don't know how to make a "patch" to submit to a CPAN author.

I think that it is a good thing that people are a bit fearful of publishing a module in CPAN. I've made a project I built in Perl available openly for years (see www.bixchange.com) but I have only passively maintained it and was always fearful of getting a slew of support/update requests. Luckily that has never happened and I continue to use my framework for my own projects.

Good clean code that conforms to the packaging and testing standards of CPAN modules is a must, which is why I have traditionally not posted to CPAN.

Dave,

You don't always need to send a patch.

I'm happy to accept a description of the problem - many times, a good test that shows the problem can be better than a patch.

A bug report with a good problem description and a test that proves whether it's fixed or allows you to replicate can be much better than most patches that purport to fix the code :)

My biggest contribution to Free Software is writing for Wikipedia (Hebrew, English, Russian, Catalan). I think that it is ridiculously easy to join it and start writing new content and correcting mistakes. But there are a whole lot of people who think that it is hard. Some of those people are very clever - they know things that would be useful and are able to write well, but they are somehow afraid of it technically.

I opened a few issues about CPAN modules, Perl 5, Pugs, Rakudo, Mozilla and a few other projects. I also submitted a couple of patches. I would love to contribute more, but setting up a development environment is usually a hurdle i find hard to overcome. I can't hack on a project if i am not able to compile it. It is also quite hard to understand the jargon of mailing lists and chats that developed in a project. For both of those issues good documentation would be of great help.

If you have some module to put up on the CPAN, just do it! Don't wait. Just do it.

I put my modules up on the CPAN all the time. I'm no one special. I have no illusions of grandeur. Hardly anyone's heard of me. But my modules go up on the CPAN if I have even a remote idea that they'd be useful to someone else.

Try to document your stuff. My early modules weren't documented and I paid the price for that: code was the documentation, meaning I had to re-re-reread my code to get the answers I needed. Documentation will help you so much. I refer to my own documentation all the time. I write too much code to keep it all in my head. That's the most important thing, in my opinion.

But even if your documentation sucks, put it up. Try to fix the docs if you can, but if you can't or don't have the time, put it up. You can technically always fix the docs in a later version of your code. At very least describe what the heck your code does so it comes up in the search.

If someone uses your code and their app breaks, that's their problem, not yours. Your code should be the best you can make (stable, etc), but you don't force anyone to do anything with your code. Don't let that keep you from making it available. If people use it, they will report bugs. Those reports will make your modules stronger.

Don't hide your code because you think it is inadequate... or you think /you/ are inadequate.

Today, this very minute, begin learning how to properly structure and package your module for CPAN. Register for an account. Upload your stuff. Do it today.

Leave a comment

Job hunting for programmers


Land the Tech Job You Love, Andy Lester's guide to job hunting for programmers and other technical professionals, is available in PDF, ePub and .mobi formats, all DRM-free, as well as good old-fashioned paper.