Until now it has been a long rant with some sprinkled advice in between. Now let’s get to the real action. Here is what I think should be done, in no particular order.
Establish your own Perl beginners site/portal/mailing list/web forum/etc. learn.perl.org is not enough and neither is what I’m going to do. We need more and as many as possible.
Note that if you feel that there isn’t enough traffic or that you should merge with some other site - it’s OK and you can do so. As always reason and experience are your best guidelines as there isn’t a precise rulebook for surviving in real life.
Remember that the biggest Perl guru is you. Not Larry Wall or Tom Christiansen or Damian Conway or whoever. That’s because none of them can dictate to you how to work with Perl, solve problems with it or with something else, etc. As much as I appreciate their efforts at making Perl better and more usable, I don’t think they have or should have a monopoly on where Perl is going to. The world is your oyster.
Be kind to newbies, answer them accurately, don’t confuse them and try to use Perl that is as simple and non-idiomatic as possible (e.g: for the file’s lowercasing example, don’t use Tie::File, and prefer lc() over tr///).
If you don’t have the time to write the entire code for the beginner - politely tell him you can’t help him at this point or whenever. Else, try to actually write some code which would be as clear and commented as possible. Don’t expect beginners to like Perl Golf snippets. They may mistake them for line noise. ;-)
Think about the User-Interface Design of the System. What will the user assume? What would be the first thing he’ll do? What is he going to notice? What is he going to ignore? What is he going to do mechanically? These are all questions that are as pertinent to IRC networks, programming languages or web-sites as they are to Microsoft Word.
I gave the IRC channels examples of bad UI design. OK, gurus, once upon a time there weren’t too many newbies around. But if you don’t want to completely reject them, it is a better idea to move to a different channel.
I believe the Perl Monks site also suffers from such a lacking design. First of all - its name. Do you honestly expect someone to be a Perl “monk” and live in a Perl “monastery”? (I’m Jewish, an Atheist, and very sexually liberated for God’s sake!) Secondly, the site’s design is unattractive, overcrowded and confusing. I remember I was reluctant from participating there, and had troubles understanding what it was all about.
Web forums should involve no registration whatsoever (just fill in the name and E-mail), and not use too fancy a markup syntax, at least not by default. I actually saw a forum (not particularly Perl-related) where markups were placed in brackets, and I wanted to paste some Haskell code... I could not understand how to do it, no matter what I tried .
Publish some of your Perl code online. Establish a Wiki. Don’t ask anybody for permission - just do it. There will be chaos first, but order will emerge out of it eventually. And if not, Google and friends will like us better. ;-)
Rik van Riel of the Linux Kernel fame, told me and some IRC folks about a system which was written for internal use by Connectiva (his former workplace), that uses a DMoz-like category tree, where Slashdot-like comments are added. This sound like a nice integration of a few ideas. The Connectiva code is written in PHP and is not ready for release. Nevertheless, I think tweaking Slash to do just that should not be too hard, and may prove as a useful alternative or a complement to Wikis.
Let’s suppose that despite all the positive changes and having a book nearby, Mel feels she needs a face to face guidance. She asks around her workplace, and discovers a fellow worker, by the name of Rachel Southern ( actually a character in a story I’m writing who fits perfectly here) is a first-class perl guru. Rachel has been programming since she was 14, knows UNIX, Perl and many other languages well, and is a very nice, sociable person. So Mel asks Rachel if she can tutor her in Perl.
Rachel, however, being the expert that she is, is busy with work, and prefers to spend her weekends relaxing, socializing (online and in real life), and hacking on open-source projects. Moreover, she lives very far from Mel’s apartment. So she tells Mel that if she wishes to go to Mel’s apartment on a Saturday or a Sunday, and tutor her with Perl (or UNIX in general), Mel would have to pay her a substantial amount of money per hour. Mel accepts, as she realizes the help she’ll get out of Rachel, will help her in her work, which in turn will be very well worth the money.
Was Rachel “greedy” or “unfriendly” in asking for money? No. I was told a technician in Israel charges $50 an hour. Many lawyers and other professionals will charge much more. The time of competent persons is the most precious resource on our planet (except perhaps for human rationality), and Rachel has no selfish interest to spend so much time helping Melissa.
I was criticizing the fact that books costed money and were not available online only because the reproduction of books in Electronic form is zero. But a time a person spends helping another one is priceless. Now, if Mel lived in the same block as Rachel, or otherwise they were very good friends, then Rachel could have chosen to reject the payment. (My friend and I lost track of how even we are regarding the pizzas we ate and we could not care less about this fact).
It is true that Richard Stallman (RMS) travels around the world visiting various free software user groups, at the cost of the travelling expenses alone. He have also consistently answered the E-mails of me and everyone else I know, and is available by phone most of the time. However, Stallman’s purpose in life is propagating free software and he is the spiritual father of the free software and open source movement. As such, he accepts the fact that he has become a saint and does not charge money for that. As he once told me and some other IGLU’ers: “Advocacy is everything I do”.
Most of us, however, are trying to make the best use of our time, including getting the bills paid or contributing to free software. As such, our time is precious enough so a substantial amount of it that is used to help a less capable peer will cost money. It does not mean that spending some time for writing a straightforward ten-liner for someone should, though. (in that case, there’s usually no way to acquire the money in the first place)
There’s a limit to anything. I remember that once I hanged on the IRC, and someone there showed me a bot he or his clique wrote in mIRC-script and wanted to convert to Perl. The bot was a bit complex, so I told him I did not want to convert it, as I had no selfish interest in getting it ported. I suggested him to learn Perl and do the porting himself. He understood. I’m not sure the bot was ever ported, but the Gods help only those that help themselves.
Like I noted earlier, I believe many of the existing resources, while being perfectly fine for veterans may scare away newbies. www.perl.com is crowded with too many links, too much content, and too much oreillynetism. Since it is the first hit on Google, it should be a decent page where newbies can easily find their way in. Something like the Python Homepage or PHP’s. Plain, simple and effective. (note that I don’t have a problem with the O’Reilly Net format as a general rule, it’s just not suitable for newbies who may have never heard of O’Reilly or do not have the time to put up with it.) The Python.org site, for instance, contains just the right links for a newbies and nothing more. It has a rather cheesy site, but it is much more usable than www.perl.com. The latter has links to a host of other O’Reilly sites (what for), some articles that are way over Melissa’s head, no explanation of what Perl is all about, links to many O’Reilly books (again: why?), and is generally overcrowded with information. This is not a community site. It is practically a blunt promotion of everything O’Reilly!
www.perl.com as it is can be renamed as perl.oreilly.com or whatever. But otherwise, O’Reilly should not make a claim for the homesite of the Perl language and Perl community as they are not the only player in the game.
Also, I kindly ask the authors and publishers of the core Perl books to place them online. If a book teaches you advanced things that you can learn on your own, that do not absolutely require a book (like Damian Conway’s “Object Oriented Perl”), then putting it online would not be necessary, but still a nice gesture. However, it cannot be said on Programming Perl (the Camel Book), Learning Perl (the Llama Book), the Perl Cookbook, or Advanced Perl. I could not care less however, for Perl for Oracle DBAs, because it’s highly specialized and of no interest to Melissa or Robert. Rachel can easily learn it on her own should the need arise, and Joanna’s knowledge of Perl should not extend to this speciality.
There are other popular sites or resources, that may seem quite hostile to newbies. Perl Monks is one. use.perl.org should actually be quite good. Its standard Slashdot-like seemingly-underground look can actually appeal to newbies who wish to keep up to date with Perl news. What the editors should do is answer newbie submissions themselves should there be such, and only then tell them that it’s the wrong place to ask. Remember, people don’t read Submission Guidelines or whatever, and even I act mechanically on many web-sites. (don’t you?)
Generally, if one of the new resources would be better than the existing ones, then it would eventually supersede it. Yahoo and AltaVista were superseded to most extents by the much superior and more user and community friendly Google and Mozilla Directory, and we should not fear a healthy competition either. We should not concentrate our efforts, because we will also reduce the number of people doing them in the first place. And as Eric Raymond noted in The Cathedral and the Bazaar, in a distributed Bazaar model, the output grows linearly to the number of people involved.
While the Perl’s source code was maintained in a very much Bazaar-like way, the Perl Community has been relatively Cathedral like looking for a selected small number of shrines. Let’s change that.