"Usability" of the Perl Online World for Newcomers

It has been my analysis that the online Perl world may not be suitable
for many potential newcomers to the language from various reasons. The
document "Usability" of the Perl Online World is a mission statement
intended to remedy this situation. Each Perl user and "guru" can
easily implement its recommendations to aid beginners and improve the
situation.

This document is an executive summary of it, which should be enough for
most needs.

Problems of the Status Quo

Concentration of Effort - by all means it seems the Perl
community has settled on a very limited number of sites, instead
of the proliferation of sites that can be seen in PHP or Visual
Basic, for example. It is my belief that the more sites the better
our situation will eventually become.

Elitism - some of the expert Perl hackers or communities are
either very hostile to newbies, or simply make wrong usability
assumptions in regards to it. (I make no particular accusations)

Substandard Online Documentation - the perl*.pod "man
pages" are usually very cryptic and often require good
understanding of what they are talking about. They should
be revamped to be more friendly to people who are unfamiliar with
UNIX concepts. Further, we need more Perl tutorials, Wikis and
other sources of information like that.

Suggestions

Act Independently - start your own mailing list for
beginners, form a wiki, a web-site, whatever. Don't ask anybody,
because there isn't a need.

Become your Biggest Perl Guru - the biggest Perl guru is
you, not Larry Wall or Tom Christiansen or anyone else.
No-one can or should dictate to you how you use Perl, what you
think about it and how your Perl development should evolve.

Treat Beginners Nicely and Help Them - don't flame someone
for asking a completely trivial question, and supply him with
an answer. Sometimes, even writing a working (and simple to
understand as possible) code is a good idea.

Create Archives of Perl Code and Documentation - the more
the better. (no, CPAN is not enough, even tough it's great).
Eventually, some order will come out of the chaos.

Think like a Usability Engineer - what will the user
try to do first? What assumptions he'll make? How consistent
is your interface with other sites' or programs' conventions?
Start thinking about human-factors engineering issues. Remember,
even if you did not receive a bad commentary, it may still mean
your users have simply left the site, or they may have an
uneasy feeling using it.

Conclusion

Perl can attract much more beginners by adapting its online resources
and the attitude of many of its experts for the task. This is much
more important than the syntax or semantics of the language itself,
which are usually a small obstacle a newcomer faces. Let's change the
current situation. With it, we can see an explosion in the use of
Perl.

Combining suggestions 2 and 3, newbies should think that they know everything, and that they are their own best gurus, and yet expect to be helped nicely and never flamed.

I do not think this is feasible: with all good will, a newbie who think (s)he is her/his own's best guru and does not want to learn from more experianced people will get flamed in the better case, and will get ignored and never helped in the worse case.

This does not seem to me as a good way to spread anything but ignorance.

Unfortunately, I'm reminded of a recurring event on Perl Monks. A reasonably new member comes up with several ideas for site enhancements. Some are good. Others could use a little more thought. The powers that be say "Patches welcome."

Sometimes the response is, "I don't have the time or skill." (The people with the skill don't have the time.) Sometimes, it's silence. Other times, it's "I don't like the way you guys are doing things. Why don't you re-write the site to my liking and then I'll help?"

I've always wondered at the mindset that can reach that conclusion. "Throw out the existing work and start over from scratch because I don't like how you've done it." In my mind, the proper response (besides silence, which is obviously not my strength) is "Good luck to you."

Rewriting the documentation, renaming the websites, replacing the mailing lists, and relocating established programmers to match your preferences -- that's a lot to swallow. You may be right that the Perl community as a whole is unsuitable for many beginners, but I've seen dozens of people grow into productive leaders through the very community forae you want to replace.

There's certainly room for improvement, but I think your solution is too disruptive. Remember, without gurus, there's no teaching or mentoring.

I never said to throw everything from scratch. (Joel Spolsky would hire hit-men to assassinate me if I did). I said to add stuff, revamp things, and start from an existing base and build from there. The existing resources are inadequate, but are better than nothing at all. If more are added, they'll be even better.

If the maintainers hear a good idea, they should try to take some time and implement it myself. ESR did it for Fetchmail (read the Cathedral and the Bazaar), I did it for my own projects, and Linus Torvalds and co. did it for
Linux. Otherwise, your project pretty much stands still.

ladypine: kudos for the quick response, so late at night. I think even the most clueless newbie should think of himself or herself as his own guru. Granted, Larry Wall knows far more about Perl as a language than I do. But he is not my "guru", in the sense that I'm still the number one authority on how to use it. I still listen to experts, and professionals in Perl and otherwise. But I'm also individualistic. For more information consult the whole article that is hyperlinked.

At my first two workplaces as a programmer I had "gurus" who were very professional people whom I consulted with most mundane problems. In my third workplace and in the Technion, I was guru-less. There were people who knew better than me in some regards, but I was independent to most extents. Even Melissa (the newbie in the full article) should feel this way.

The PHP community is infested with retards, so the Perl community should be
too. Do you see something wrong with this attitude?

Sorry, but I'm an elitist b*st*rd. I don't care about beginners who've no
real interest in getting knowledge, who want to learn a new language just to
look k3wl, who think that knowing how to write "Hello world" gives them the
credentials to criticize Larry Wall, Linus Torvalds, and Donald Knuth.
Neither do I care about pointy-haired managers who're turned off by Perl and
decide to go on the Java bandwagon. I'll gladly sacrifice the language
acceptance rate so that I don't have to deal with this bull. So sue me.

And I don't buy arguments of the form `if the Perl community is more
beginner-friendly, it'll improve the "image" of Perl in the eyes of the
"general public"'. No, the "image" of a language is determined by factors
such as the size of the company backing it, the type of platforms it runs
on, and the number of wild promises it makes but never keeps. Java the
language itself isn't even beginner-friendly, but hey, who cares?

- Usability -

And about your assertion that the Perl community isn't friendly enough: to
prove your points, you invented a fictitious figure Mel. But there's a very
simple counter-argument: yourself. You've
successfully managed to learn both Unix and Perl, despite all the
hurdles put in your place -- haven't you? So in effect, you've committed the
fallacy of using a
thought experiment to contradict the results of a real experiment.

Indeed, I think you've seriously underestimated the learning power of the
`average' newbie. They can ferret out information from the most unthinkable
places, in the most unthinkable ways.

- In summary -

I don't see why it's a good idea to make the Perl community more
"beginner-friendly" than it is. Even if the idea is good, I'd like to see a
way of going about it without all the associated brain damage.

If the maintainers hear a good idea, they should try to take some time and implement it myself.

I'm not sure I understand. Do you mean that if you come up with a good idea, you really ought to be the one to implement it? If so, great! There are lots of people who've put a lot of time and energy into improving Perl and it's always nice to have more people working within the community to improve things.

On the other hand, if you mean themselves instead of myself, as the context implies, I think you're wrong. Larry's given you, me, and everyone his work -- for free -- for fifteen years. If you begrudge him the right to make a living (if people are willing to buy his books), or if you think he really ought to do more because you've got one or two great little ideas that we can all "easily implement", people are going to call you to task for it.

If you've got a contract with Larry, or Tom, or Hugo, or Damian, or Jarkko, or whomever, you've got a legal right to say, "This work you've done isn't good enough and you should change it my way."

Even if you had that sort of contract, I think it's a little insulting for you to suggest, for example, that there's some sort of sinister conspiracy between Larry and O'Reilly to keep the gems of Perl wisdom locked away in a book where beginners can never find it while doling out crumbs and dregs in the thousands of pages of documentation that ship with Perl 5.8.0 and are available online at perldoc.com.

If you're really too poor to buy a good book on Perl and you really want to learn the language, I'll give you one. That doesn't give you the right to demand tech support from me. Even if I do answer some of your questions, it's just ungrateful, for example, to say "You really ought to answer in limerick format. It's easier to understand."

If you really want to fix the community, drop the individualism and be a part of the community. That's how the rest of us are fixing things -- one step at a time.

And let's not forget, the perl community didn't evolve to what it is today over night.

shlomif: The observation that perl (the language) and its community are not newbie-friendly isn't necessarily a weakness. Rather, the "elitism" could be considered strength. The community, as a result, will draw more experienced (than inexperienced) developers (i.e., in terms of exposure to other programming languages) and system administrators (i.e., in terms of shell scripting), with an ability to recognize perl's advantages. Thus, spending less time answering newbie questions, chasing down phantom newbie problems, etc. allows the community to focus its support on these advanced users.

Since most open source development relies on the kindness of unpaid volunteers, it can be counter-productive to criticize the contributions that open source developers have made, and diminish any intrinsic motivation that they may have/feel. As chromatic suggests, joining the community and contributing from within is one way to start changing things.

Does it mean that, for you, a society should be governed by an elite group of individuals? By extent, do you consider yourself as part of the elite, or just a peon?

I don't care about beginners who've no real interest in getting knowledge, who want to learn a new language just to look k3wl

And?
I think you care too much about "real interest" of others. It leads you to, IMHO, useless generalizations.
But this behavior is required by elitism: the only justification for a supposed elite to governs others is the claim that others are too stupid. The discussion is not recent ; read Polybe, Aristotle, Cicero...

This is also related to elitism. It makes of the elite simili-gods that cannot be criticized. Hopefully, the world we live in does not work this way: you are free to criticize ; what matter is whether your critics are correct, not who you are.

And I don't buy arguments of the form `if the Perl community is more beginner-friendly, it'll improve the "image" of Perl in the eyes of the "general public"'. No, the "image" of a language is determined by factors such as the size of the company backing it, the type of platforms it runs on, and the number of wild promises it makes but never keeps. Java the language itself isn't even beginner-friendly, but hey, who cares?

Java is still trendy for you?

And about your assertion that the Perl community isn't friendly enough: to prove your points, you invented a fictitious figure Mel. But there's a very simple counter-argument: yourself. You've successfully managed to learn both Unix and Perl, despite all the hurdles put in your place -- haven't you? So in effect, you've committed the fallacy of using a thought experiment to contradict the results of a real experiment.

So it takes one person to make a law?
This "real experiment" is about one person. Schlomif was talking about popularity of perl, not the possibility for one person on earth to learn perl - yes, it's possible to learn perl :-)

I don't see why it's a good idea to make the Perl community more "beginner-friendly" than it is. Even if the idea is good, I'd like to see a way of going about it without all the associated brain damage.

The perl community does not seems to me unfriendly to users. I just think that perl is harder to understand ("there is more than way to do it" does not help in this regard) than PHP and to run a little website, PHP is oftenly enough. To me, it explains the popularity of PHP by comparison to Perl.
It does not mean that PHP is better than perl, it just means that PHP currently fits to the desire of more people than perl.

Note that I've changed it a bit since I first posted it and made the criticism against authors of core Perl docs less blunt, and more to the point. I will change the document more if I see a need.

Another note: Melissa in the story is not me. I am actually more or less repersented by Rachel there. When I started learning Perl I was 18 or 19 and had been programming since I was 10 years old in BASIC, VBA and C. Mel by all means have a far lesser grasp of programming, and will encounter greater problems that I had faced. I'm not saying she can't learn Perl. She can, but with
more problems that are actually necessary.

I don't think PHP is bad. In fact, I think many people who now use PHP will eventually find Perl more appealing. PHP is a great stepping stone for learning Perl. PHP is more lightweight and simple than Perl, so it has its use. It is much better than ASP but not as good as Perl. I dislike programming in it, because the syntax is a mixture of C, awk and Perl and so is very confusing. Some people can program in both.

Perl people are hardly ever against a competing language. But I still would like to see as many people exposed to perl as possible. I don't think many newbies will come to the channel #perlelite on the IRC. With good human-factors engineering, gurus can make sure newbies do not disturb them much should they decide not to be bothered by them.

I think that infrastructure and community are much more important than syntax and semantics of the language itself. Perl has CPAN, which is something that other languages still don't have. Installing a set of dependant Python modules is
painful and manual labour, while in Perl it is a one line command line operation. This is a great plus. There are many other advantages.

Still, a lot of elitism has crept into the Perl world. I don't accuse anybody in person. (most of the big perl gurus are quite enlightened, from my impression). But the situation as a whole is dangerous in some respects.

I think you missed his point altogether. To criticize respectable people, you must first gain respect yourself. If you have taken the time to learn and understand what is going on, you have a right to criticize. If you don't, why should anyone waste their time listening to you?

I actually think that the existing Perl documentation is excellent. The only time I've had to go to a physical book is for learning regular expressions, for which the Camel book was immensely helpful. The .pod files are EXCELLENT sources of information. The problem is that most people don't _want_ to read the documentation. Is that Perl's fault? In fact, I actuall find in Perl's documentation some great pearls for use in Linux in general. For example, the fork() perl manpage has lots of information on UNIX daemonization in general. I often use it as a reference.

In fact, I'd say Perl has better documentation for it's internals than most languages. Is there an online source for the guts of VBScript implementation? No? But man perlguts gives me everything I might want to know.

The documentation is there.

As to elitism, I think there's two things that people call elitism, only one of which actually is.

Instance 1:

"I have a question about regular expressions."

"Have you read the regular expressions chapter in the camel book."

"No."

"How about the perlre manpage?"

"No."

"Read those, then come and ask your question."

This is not elitism. This is actually a very nice instruction. The guru tells the newbie where to find the information. If the newbie does not want to read, then they are really being lazy. Should gurus promote laziness? I don't think so. Now, let's look at the following:

"I have a question about regular expressions"

"Have you read the chapter about it in the camel book?"

"Yes, but I still find them confusing. I'm trying to match the text within an HTML tag, but my regular expression /<.*>/ seems to match the whole document."

Helpful Response: I see - the problem is that the * character does a greedy match, meaning that it matches all characters to the end of your string, and then backtracks until it finds the >. I think you're trying to do the non-greedy version, which matches characters UNTIL it finds the >. To do that, you use the *? match, like this: /<.*?>/. You can also do it using character classes, like this: /<[^>]*>/.

Also referring them to another document to explain it further can be helpful, if it addresses the specific document you're talking about.

I honestly have never been treated with elitism. Of course, I always try to be humble in my questions and don't demand answers. I think this may be a bigger point of contention. Some within the free software community believe they _deserve_ answers, and approaching people with that kind of attitude will get you turned off every time. If you understand that these people have other things to do with their time, and that they are doing you a huge favor by helping you out, you'll get a lot further.

In this vein, I must compliment Donald Becker. One time I was asking him about a 3com driver he wrote, and about how it didn't work for me. He wrote me back in a very nice way letting me know where I could get the most recent update (it was _very_ obvious) and how to install it.

To criticize respectable people, you must first gain respect yourself. If you have taken the time to learn and understand what is going on, you have a right to criticize. If you don't, why should anyone waste their time listening to you?

I do not want to let feelings being more proeminent that demonstrations. To me, what is important is what people have to say, not who they are.

Everybody have the right to think, and so the right to criticize. And people is free to listen, or not if they do not find something interesting. Thinking the contrary is IMHO a dangerous stand, a threat to basic freedom.

Do you think I read you by special respect? I do not believe in meritocracy: I do not give power to people for who they are and what they've done but for what they plan to do. I do not assume that someone who've done great job in the past is necessarily right ; something is not right because someone "respectable" said it but because after thinking about it it really seems to be right.
For instance, Linus T. done great job on Linux. It does not means that he is always right . His knowledge only help him to demonstrate what he think to be right.

I agree with the rest of your message, whatever the fact you're respectable or not :)

"I do not want to let feelings being more proeminent that demonstrations. To me, what is important is what people have to say, not who they are."

So you're telling me that you listen to EVERYTHING EVERYONE says? Where do you find the time? The fact is, most of us have a _limited_ amount of time. Being of limited time, I filter quite a bit that comes my way. Therefore, if someone hasn't taken the time themselves to understand the issue, I don't feel obligated to listen to their uninformed side (it's uninformed automatically if they haven't taken the time to understand the issues - whether it's right or wrong). There are plenty of intelligent people who have taken the time to understand who have comments that I don't feel the need to look elsewhere for more.

"Everybody have the right to think, and so the right to criticize."

Quite true. However, they are idiots if they think that that obligates others to care.

"And people is free to listen, or not if they do not find something interesting."

Actually, in order to _not_ find something interesting, that means they already listened. I am busy enough that I don't have time to listen to what every Joe or Sally says. Therefore, if I don't think they are qualified for an opinion, I simply ignore them altogether on such topics. Out of curiosity - if they haven't taken the time to listen to what _others_ have said, and understand the reasons for things being how they are, what obligates others to listen to them? Why should we listen to people who don't listen to others themselves?

"Thinking the contrary is IMHO a dangerous stand, a threat to basic freedom."

Bzzzzt. Wrong. The only threat to basic freedom is to forcibly stop people from talking. To ignore uninformed people (or anyone for that matter) is a basic right, just like the right to speak when noone else is listening.

"Customer loyalty" is not a commodity a company owns. Where it exists at all -- and the cases in which it does are rare -- loyalty to a company is based on respect. And that respect is based on how the company has conducted itself in conversations with the market. Not conversing, participating, is not an option. If we don't engage people inside and outside our organization in conversation, someone else will. Start talking. [ 1 ]

Interesting to see shlomif starting up the conversation. I bet in the long run he will be more pronounced than the others, though.

The only threat to basic freedom is to forcibly stop people from talking.

Indeed. It would be denying the "right to think, and so the right to criticize", what I called "a threat to basic freedom".

So you're telling me that you listen to EVERYTHING EVERYONE says?

If it makes sense to me, I do. In reality, not "EVERYTHING EVERYONE says" makes sense to me. That explains why it does not cost too much in time.

But my point is: what matter is what is said, if it makes sense - not who said it. While someone with great knowledge have better chance to say something that makes sense, to me it's not what matter really. That's why elitism/meritocracy is a bad idea to me. Because it's a step forward emotional approach in areas where emotions are not appropriate.

But meritocracy have strong relations withthe lutheranism and the calvinism ; it may be an explanation for the over-representation of elitistic topoi in american computing-related websites/communities.

The only threat to basic freedom is to forcibly stop people from talking.

Indeed. It would be denying the "right to think, and so the right to criticize", what I called "a threat to basic freedom".

So you're telling me that you listen to EVERYTHING EVERYONE says?

If it makes sense to me, I do. In reality, not "EVERYTHING EVERYONE says" makes sense to me. That explains why it does not cost too much in time.

But my point is: what matter is what is said, if it makes sense - not who said it. While someone with great knowledge have better chance to say something that makes sense, to me it's not what matter really. That's why elitism/meritocracy is a bad idea to me. Because it's a step forward emotional approach in areas where emotions are not appropriate.

But meritocracy have strong relations withthe lutheranism and the calvinism ; it may be an explanation for the over-representation of elitistic topoi in american computing-related websites/communities.

If it makes sense to me, I do. In reality, not "EVERYTHING EVERYONE
says" makes sense to me. That explains why it does not cost too much
in
time.

In other words, you listen to someone if his words happen to sound good and
soothing in your ears. But that's just the same as the emotional approach,
albeit expressed in a more glorified manner! Nigerian scams, Scientology,
Islamic fundamentalism -- all these made perfect sense to some people at
some point in time.

Logic and science should be the ultimate judges of truth.
Testing every little assertion using the scientific method isn't a trivial
task, and that's why it does cost a lot of time to evaluate
everything that everyone says. Thus we have heuristics, like looking
at credentials -- but the effect of these heuristics can be overcome, with
this magical thing known as "evidence".

This approach to evaluating assertions
(even with the heuristic thrown in) is actually a lot less emotional
than your proposed "this makes sense" method, because it's based on
information that the whole world can see and agree on.

But meritocracy have strong relations withthe lutheranism and the
calvinism ; it may be an explanation for the over-representation of
elitistic topoi in american computing-related websites/communities.

So it takes one person to make a law? This "real experiment" is
about
one person. Schlomif was talking about popularity of perl, not the
possibility for one person on earth to learn perl - yes, it's
possible
to learn perl :-)

In other words, you listen to someone if his words happen to sound good and soothing in your ears. But that's just the same as the emotional approach, albeit expressed in a more glorified manner! Nigerian scams, Scientology, Islamic fundamentalism -- all these made perfect sense to some people at some point in time.

And so does the science. I did not defined here what it takes to make sense to me. This is another issue. If I were about to believe in a religion like islamic, it would be for its content, not because someone "respectable" believe in it. That's the point here.

And yes, people believe in things because it makes sense to them - the respectability of the person who teach them things may even be what make sense to them. But we're not going to play with words here ; you understand what I mean, didn't you?

Logic and science should be the ultimate judges of truth. Testing every little assertion using the scientific method isn't a trivial task, and that's why it does cost a lot of time to evaluate everything that everyone says. Thus we have heuristics, like looking at credentials -- but the effect of these heuristics can be overcome, with this magical thing known as "evidence".

Testing every little assertion using the scientific method is a trivial task, if we are dealing with unclever/uninformed assertions. It's not trivial when we are not able to easily demonstrate how an assertion is erroneous. If so, it means that we'll surely have great benefit to think about it, whether it's actually erroneous or not, because it means that we have not a clear idea on the topic.

This approach to evaluating assertions (even with the heuristic thrown in) is actually a lot less emotional than your proposed "this makes sense" method, because it's based on information that the whole world can see and agree on.

I did not detailed how something make sense to me, because it seemed irrelevant in this context. But indeed, I do not recommand an emotional approach. And "make sense" sound pretty neutral here ; but I'm not a native english speaker, and I would be glad if you propose me a more neutral way to say the same thing. I guess that saying "what seems logic to me" would have been more clear to you than saying "what make sense to me". It's a good idea to explicitely make a link between sense and logic.

Is this some conspiracy theory? For the record, I'm a Buddhist

Not at all. I'm not trying to say that a religion is good or bad here. I study regularly religions and I'm aware of some fundamental differencies between, for instance, catholics and protestants. The meritocracy seems to me very coherent is the spirit of the protestantism, while it's not in the spirit of catholicism (well, it's not a recent idea ; cf Max Weber). It's just a possible explanation for the presence of elistism oftenly claimed in free software american community. But it's just a basic hypothesis. Studies would be required. And it's seems to simplist to be fully realistic. Maybe a little part of a reality, but surely not the reality.

You said that you are buddhist. Was your education buddhist?

Yes, one person doesn't make a law. But zero people, even less so.

I was not defending schlomif on this point but contradicting your point. I may sound futile but I was just saying that even if schlomif is wrong here, you cannot take him as the ultimate proof of your opinion.

To clear up any misunderstanding, in case it wasn't evident, I was quoting from a Think-Geek t-shirt which I thought illustrated the elitism. It was not intended as an attack on anyone (esp. shlomif).

I do think we should help newbies (since we were all newbies at one point). The effect of perl one-liners is that many of us can be quite terse. Writing and/or teaching requires a great deal of patience, skills, resources, and inclination. Power to you.

That said, it's not a question of whether or not there should be more perl sites. It isn't a question of whether or not a site appears under the perl community umbrella. (In fact, sites such as learn.perl.org, are managed separately, despite the implications of using the subdomain.)

At the heart, the issue is "content". In this respect the perl community has done pretty well. In particular, I noticed a lot of perl beginner books online -- that's real content as opposed to simply links to buy a copy.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser
code is live. It needs further work but already handles most
markup better than the original parser.