http://qs321.pair.com?node_id=359001

stonecolddevin has asked for the wisdom of the Perl Monks concerning the following question:

Oh dear, wise and powerful monks,
I wasn't sure where to put this, but I'm seeking perl wisdom, so I thought I'd put it here.

I've been coding for some time now, not long enough to call myself a wizard or guru, or even journey man, but enough to get me in trouble. I love this language so much, and there are so many contributors out there, I feel like I need to make a contribution.
One problem. I don't know what to contribute. I'd like to write a module, but I don't know what for, anything I can think of has been done already.
So I have turned to you, fellow monks and japhs alike, what in your mind would be a reasonable contribution to the perl community that a humble hacker like me could, well, contribute?

Thank you in advance, wise monks.
meh.

Replies are listed 'Best First'.
Re: Reciprocating to the perl community
by fuzzyping (Chaplain) on Jun 02, 2004 at 02:27 UTC
    If you're really interested in contributing to the Perl community, there are plenty of ways to do it without actually crafting your own CPAN module. Unless you really have an innovative package that the world is clamoring for, what's the point? Instead, here are some ideas:
    • Review others' work, submit patches for bugs/perldoc enhancements, etc.
    • Tutor new monks in the art of proper namespace usage
    • Understand the apocalypse
    If you insist on making your mark in CPAN, focus on existing modules that might interest you. For example, I've always wanted to enhance some of the *::SSH::* modules out there. Granted, I've never had the time to start that project, but it would be a better use of my time and skills than trying to create a new module that nobody would really use.

    -fp

      For example, I've always wanted to enhance some of the *::SSH::* modules out there.

      Please help! I desperately need help with a test suite for Net::SSH::Perl and Net::SFTP!

Re: Reciprocating to the perl community
by FoxtrotUniform (Prior) on Jun 02, 2004 at 02:20 UTC
    On the subject of modules: you could review the modules you use most frequently. If someone else has already reviewed it, don't let that stop you -- TIMTOWTDI, after all.

    --
    F o x t r o t U n i f o r m
    Found a typo in this node? /msg me
    The hell with paco, vote for Erudil!

Re: Reciprocating to the perl community
by samtregar (Abbot) on Jun 02, 2004 at 04:23 UTC
    Answering questions from Perl beginners here or elsewhere is a pretty good way to help. At some point someone will ask a question that you can't find an answer to; then you can invent a solution and share it with everyone.

    Most people just solve their own problems and try to make the solution general enough to help other people too. But there's no reason that has to be the only way. Good luck!

    -sam

    PS: XML::Validator::Schema needs a ton of work if it's ever going to even approach spec-compliance. If you're in the mood for some extreme XML nerdiness you're more than welcome to dig in!

      This is exactly what I need. Thanks everyone.
      meh.
      I agree. I've always had an interest in ways I could give back to the community, but it can be hard to come up with something, especially if it's just for the sake of community involvement.

      I have found in the past that it's often useful to me to assemble modules out of any code that I'm working on that is sufficiently reuseable. It takes a little more work to clean them up and write helpful documentation, but after that effort, it's a great feeling to make those modules available on CPAN.

      In fact, once you share some code, there are people just waiting to help and make suggestions if they find your code and use it. Knowing I've made someone's life a little easier makes coding that much more worthwhile, at least to me. --andy

Re: Reciprocating to the perl community
by chromatic (Archbishop) on Jun 02, 2004 at 04:15 UTC
Re: Reciprocating to the perl community
by Nkuvu (Priest) on Jun 02, 2004 at 05:12 UTC
    Another thing you can do is adopt an abandoned CPAN module that you think might benefit from some work. Find something that hasn't been touched for a while, then get in contact with the author -- I'd think that having some proposed work to do to improve the module would be best (in order to stem off the possible reaction of "but my code is good"). I've seen plenty of projects go through this hand-off, though not specifically with CPAN.
Re: Reciprocating to the perl community
by adrianh (Chancellor) on Jun 02, 2004 at 09:53 UTC

    In addition to the suggestions already given you might want to consider reviewing the modules that you use on cpanratings, becoming a cpan tester and (of course) submitting and bugs you find in the modules that you use to rt.cpan.org.

    These all help people find good modules and get bad modules fixed.

Re: Reciprocating to the perl community
by hardburn (Abbot) on Jun 02, 2004 at 13:42 UTC

    I suggest not looking for a problem that needs solving and then putting it on CPAN. Doing it that way will probably end up with a shoddy peice of software. Rather, you will inevitibly find at some point that no solution exists for what you're trying to solve, or you find the existing solutions are insufficient.

    The most important part of Open Source development is that the author starts with an itch that needs scratching. It is shocking how many Open Source zealots miss this simple point. Looking for a problem will not produce good Open Source software. Rather, the problem must come to you and bug you enough to do something about it.

    ----
    send money to your kernel via the boot loader.. This and more wisdom available from Markov Hardburn.

Re: Reciprocating to the perl community
by flyingmoose (Priest) on Jun 02, 2004 at 13:36 UTC
    I've had this problem for a while and decided, really, that one of the best things we can do to help the community is to literally help the community ... here ... on Perl Monks. If you come up with something cool, share it, upload it, whatever -- but there are few cool things that are created with the thought "I need to create the killer app" or "I need to do something cool" -- they just happen. Meanwhile, I'm still looking for divine inspiration, and someday, well, I'll find it -- until then, I'll just post.
Re: Reciprocating to the perl community
by Ninthwave (Chaplain) on Jun 02, 2004 at 08:36 UTC

    I would also say start getting active with Perl 6 as this project moves forward there is going to need to be more feedback from the people getting themselve in trouble over the journey men, gurus, wizards and demigods.

    I second the rate CPAN modules.

    "No matter where you go, there you are." BB
Re: Reciprocating to the perl community
by Ambidangerous (Scribe) on Jun 02, 2004 at 14:42 UTC

    I have been working steadily toward a distant software goal for some time now. I find having a goal focuses your attention on the smaller steps you need to take in order to get there. On the way, you WILL contribute to the community--as you see the opportunity arise.

    I am a jazz musician, and I'd like a really simple, non-proprietary way for folks to share leadsheets (the chord changes for a given jazz tune; the lyrics and notes can be copyrighted, but not the chord progression).

    In addition, I'd like the program to be able to autogenerate some elementary accompaniment (bass, drums, and chords) so that folks who are learning jazz can play along and 'get' the tune.

    Since I'm lazy (which is a virtue for programmers, remember), I want to first look around and see what existing systems are in place to interchange music. So far, I've found MusicXML, MIDI, and ABC file format, to name a few. I also want to see what similar or related programs are out there, so I could possibly interface my project with theirs (make it so I could out documents to lilypond, for instance, or the numerous abc systems).

    Additional layers of complication: I want it to be as cross platform as possible (which is why I have three systems on my computer now, WinXP, Cygwin, and dual-boot with Debian).

    Right now it looks like I'm about 2-3 years away from having a good product. I've built some elementary alpha versions of the program--Perl scripts that take a chord progression and make a walking bass line, for instance. But the more I learn, the more ideas I come up with for the final project.

    And no, none of this is for profit. Truth is, I love jazz, and, as they say, the best way to make a small fortune in jazz is ... start out with a large one ;-)

    Once I get some good modules up and running, I'll make em available on CPAN. Until I think they're really worthwhile and innovative, though, I'm keeping em to myself. In the meantime, if I learn something, I can share it, or provide a review of modules I've really found worthwhile (there's already a MIDI to MusicXML module, for instance, though I haven't had time to wrestle with it properly, yet).

    I'm still not certain the final form will be in Perl, but there's no doubt--knocking out the code in Perl is about 10x more efficient time wise than doing it in Java or C. Perl gives wings to your algorithms, sometimes, by freeing you from the gravity of interface.

    $jPxu=q?@jPxu?;$jPxu^=q?Whats?^q?UpDoc?;print$jPxu;
      Computer music stuff is cool... I've had a long running idea in my mind for about 5 years now, on making "computer music that actually sounds good". The idea is that you could turn this thing on, and it would ad-lib and play forever -- in one constantly changing, never ending song. My problem is, I'm actually less musically talented from you, and I can't codify what sounds good until I hear it -- that is, generic rules such as "chord progression X to Y sounds good after a Z, but not after a W", etc. (This isn't the whole idea of course, since that implies a theoretically boring Markov-chain solution, but that's part of it)

      I really don't like the CSound syntax, but it's about as powerful as any Debian package I can find for making instruments, so I may play with that... I don't know. (I'll take suggestions on any other Deb's for batch-mode non-real-time synthesis I might try).

      Anyhow, I'm just rambling, but it does serve one point to the discussion... trying to 'contribute' is never fun unless you are having fun, taking on a project to do something cool without believing in it always ends in failure. Or Microsoft Windows :). Whichever.

      So anyway, I'll need to get working if I want my software to be cranking out something Mountain Jam like anytime soon.

        Actually, getting it to sound 'right' is 90% of the problem. Take the bass lines for instance: you can have a 100% technically correct line, but . . .

        • It's hard to make a synthetic bass sound that sounds like the real thing, especially a doghouse (the big, upright bass you see a lot in jazz).
        • If you are dead on the beat, you sound flat. To swing, you have to play around with the time a bit. (I can't seem to get my current model to swing.) I think it has something to do with anticipating beats 2 and 4 by a smidgeon, but probably more to do with articulation (also hard to do electronically)
        • Ad libbing forever is possible--there's a book by Jerry Coker called 'Elements of the Jazz Language for the Developing Improvisor', where he analyzes thousands of jazz tunes and comes up with 14 to 20 'elements' that make up the vocabulary of jazz. BUT, you program a tune like this, you get . . . the sound of a computer pretending to play jazz. Again, rhythm, articulation, and just plain horse sense are hard to program . . . even in Perl ;-)
        $jPxu=q?@jPxu?;$jPxu^=q?Whats?^q?UpDoc?;print$jPxu;
Re: Reciprocating to the perl community
by spikey_wan (Scribe) on Jun 02, 2004 at 13:51 UTC
    How about looking into the Tk Form geometry manager? I read about it in the emu, and it looks great, but when I tried to use it, it didn't seem to perform properly, and looks unfinished. Making this work properly would make someone a great project - a bit out of my league, though :-(

    Spike.

Re: Reciprocating to the perl community
by qq (Hermit) on Jun 02, 2004 at 23:10 UTC

    Tests! (coverage report linked from phalanx).

    Wouldn't it be nice to see test coverage on CPAN?

    qq

Re: Reciprocating to the perl community
by adamk (Chaplain) on Jun 03, 2004 at 01:22 UTC
    More suggestions of things to do

    XML::Validator::Schema gets my vote too, expecially WRT namespace support.
    PPI needs a lot of work in the lexer.
    You could port File::Remove ( abandoned since 1998 ) up to File::Spec, so it might actually work on non-Unix platforms.

    That's just a few to get you started. The first too might be a little advanced, but File::Remove could be a good place to look. Write a shitload more tests for it, then start to move it to File::Spec usage.
Re: Reciprocating to the perl community
by Anonymous Monk on Jun 02, 2004 at 22:31 UTC
    Argg, Why is it that I always see those questions when 25 millions other people have already answered?

    Spreadsheet::Perl has been looking for a new maintainer since it's first release :-(. I have two other modules that are crying for people to help with (one editor and one rather advanced build system with perl syntax). If none of those are to your liking, you could take over a module. Ask on the module mailing list and you'll certainly get a long list.

    Had you listed your skills, it would have been easier to find something for you (other than my own stuff ;-).

    Cheers, Nadim.