Source

shlomi-fish-homepage / lib / docbook / 5 / xml / usability-of-perl-world-for-newcomers.xml

Full commit
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
<?xml version='1.0' encoding='utf-8'?>
<article xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="index"
    xmlns:xlink="http://www.w3.org/1999/xlink">

    <info>
        <title>“Usability” of the Perl Online World for Newcomers</title>

        <authorgroup>
            <author>
                <personname>
                    <firstname>Shlomi</firstname>
                    <surname>Fish</surname>
                </personname>
                <affiliation>
                    <address>
                        <email>shlomif@shlomifish.org</email>
                        <uri type="homepage" xlink:href="http://www.shlomifish.org/">Shlomi Fish’s Homepage</uri>
                    </address>
                </affiliation>
            </author>
        </authorgroup>
        <copyright>
            <year>2003</year>
            <holder>Shlomi Fish</holder>
        </copyright>
        <legalnotice xml:id="main_legal_notice">
            <para>
                This document is copyrighted by Shlomi Fish under the terms
                of the Open Publication License version 2.0 or greater, or
                alternatively under the
                <link xlink:href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution Unported License version 3.0</link> (or at your option any greater version of it).
            </para>
        </legalnotice>
        <revhistory>
            <revision>
                <revnumber>540</revnumber>
                <date>2003-04-18</date>
                <authorinitials>shlomif</authorinitials>
                <revremark>
                    Removed a paragraph that is less than accurate, added
                    a link to ESR’s CatB, and refactored a few things.
                </revremark>
            </revision>
            <revision>
                <revnumber>536</revnumber>
                <date>2003-04-16</date>
                <authorinitials>shlomif</authorinitials>
                <revremark>
                    Made the criticism against the inavailability of the
                    O’Reilly core Perl documentation less blunt, and added
                    a suggestion for the www.perl.com site. Fixed some
                    typos.
                </revremark>
            </revision>
            <revision>
                <revnumber>535</revnumber>
                <date>2003-04-16</date>
                <authorinitials>shlomif</authorinitials>
                <revremark>
                    First Advogato Version.
                </revremark>
            </revision>
        </revhistory>

    </info>
    <section xml:id="me_as_a_perl_newbie">
        <info><title>Me as a Perl Newbie</title></info>

        <para>
            “Shlomi, it takes 10 years to learn UNIX. I want you to learn it
            in a month”. My future supervisor in a web publishing house I
            switched jobs to, told me that and It’ll be a cold day in hell
            before I forget this quote. He also showed me Perl, telling me I
            can write a TCP/IP client in 5 lines and a TCP server in 10, which
            sounded very impressive and intriguing. So I set out to learn
            UNIX and Perl.
        </para>

        <para>
            When I got to work I did not know UNIX as much as he could hope for,
            but with some help from the people around there I managed to get by.
            The year was 1996, it was the start of the Internet Boom and
            everybody and his mother wanted a web-site. Perl 5 was there, and
            it was practically the only thing you could use on UNIX to write
            CGI scripts, without completely losing your mind.
        </para>

        <para>
            I only had a Windows 3.11 at home, and so started learning Perl
            from all the POD documents cramped into one Acrobat Reader file.
            “On dry”, as they say in Israel, without actually running it. I
            understood some of it as it reminded me of C and BASIC which I knew
            quite well. But still there were all these references to sed, awk,
            UNIX shells, and other things I did not know. Generally, they
            assumed you knew what they were talking about.
        </para>
        <para>
            I started working there, and was able to get by with my little
            knowledge of Perl and UNIX which accumulated quite quickly. I
            remember asking my supervisor what regular expressions where all
            about and he told me: “they are a mechanism to find patterns in
            text”. That was the enlightenment that made me able to use them
            on a regular basis.
        </para>
        <para>
            I fell in love with both UNIX and Perl. I was not much of a UNIX
            guru and wrote what I now write in shell in Perl, and simply kept
            asking my supervisor (who was then a true UNIX guru even in today’s
            standards), questions about how to do things. But I got by.
        </para>
        <para>
            Since then, with some breaks, I extended my knowledge of both Perl
            and UNIX. (I was thrilled to find ActivePerl and use Perl
            effectively on Win32 as well). Gradually, I learned about Modules
            and Objects in Perl and then a lot of tips and shortcuts, and now
            use it very often. Even in the Technion, where I now study
            Electrical Engineering, Perl proved to be a life saver. It is my
            favourite language by far, and would not replace it with anything
            else.
        </para>
        <para>
            That’s my story. Now let’s move to the story of Mel Jones (short
            for Melissa but might as well be Melvin), a Perl newbie who wishes
            to get hold of Perl. When thinking about the usability of computer
            systems, it is helpful to think about a few imaginary figures,
            which one is almost certain there are many similar that exist in
            real-life. Mel is one of them, but as you’ll see later she won’t be
            the only one.
        </para>
        <para>
            Before I start let me say that I am indebted to Larry Wall, Tom
            Christiansen and all the other people who contributed to Perl
            and brought Perl so far. I did not come to bury Perl or the Perl
            world in this article. I simply came to pass some constructive
            criticism and suggestions to further aid its public acceptance.
            Perl is the nicest language I’ve seen so far, and I would highly
            recommend anyone to learn it.
        </para>
        <para>
            (I am also grateful to the Python, Ruby, Tcl, PHP, etc. crew for
            working on languages which can provide a viable alternative to
            Perl in some cases and by some people. By all means, Perl is not
            suitable for anyone and for any purpose and I always appreciate a
            healthy competition.)
        </para>
    </section>
    <section xml:id="story_of_mel">
        <info><title>The Story of Mel</title></info>

        <para>
            Who is Mel? She may be an experienced C programmer, or has some
            working knowledge with Visual Basic, JavaScript or ASP. In any
            case, she does not know Python, Ruby, Lisp, Tcl or PHP. (such
            people will usually have little problem learning Perl). Mel got a
            new job: be it as a system administrator, CGI programmer,
            Bio-informatics engineer, hardware designer, QA engineer or
            whatever. She wishes to do something that seems awfully hard with
            what she already knows, asks around and receive a simple answer
            “Perl would be perfect for it. And it is spelled P.E.R.L”
        </para>
        <para>
            So Mel goes on looking for this strange and perfect language
            called “perl” (without the ‘a’). Where does she go first?
            <link xlink:href="http://www.google.com/">Google</link>? Most probably.
            What does she discover? www.perl.com is the first hit. An
            overcrowded site with a lot of O’Reillyisms with several articles
            that are way over her head. Perl Mongers is the second hit. She
            reads on - groups of Perl users - goodie. Now if she knows how to
            use E-mail (she may or may not have such a good net-wisdom), she
            may have hit the jackpot, because most Perl monger groups are very
            friendly to newbies. Then she discovers CPAN (Mel
            says: “What is it and why do I need it?”). ActiveState (a
            commercial site which may or may not scare her) and Use Perl, which
            is a nice site for Perl News, but she is naturally interested in
            the Perl’s status quo.
        </para>
        <para>
            She refines her query: “learn perl”, “begin perl”, “perl newbie”
            or “perl beginners”. The concentrated site for perl beginners is
            <link xlink:href="http://learn.perl.org/">learn.perl.org</link>. It
            contains some reviews of books (which Mel may not have time to
            read), a free online book (again, same issue) and no links to
            tutorials whatsoever. IMHO, the site’s visual side is also very
            lacking and she may come to believe it is a sub-standard site as
            a result.
        </para>
        <para>
            OK. Maybe Mel was given the Llama book on the first day of her job
            as a gesture from her employer. Maybe this employer has these books
            online on his intranet for everybody to see. (there are also
            illegal or unfirewalled mirrors of these books, but let’s suppose
            Mel is a lawful citizen who respects copyrights.) The question
            still stands: why do you need a book to learn Perl? Why can’t you
            learn it from the Internet alone? Why kill trees, when you can
            simply transfer electrons from place to place to study it?
        </para>
    </section>
    <section xml:id="the_situation_today">
        <info><title>The Situation Today</title></info>

        <para>
            When Larry Wall and others started hacking on Perl 5 (which was a
            complete rewrite and complete re-design of the defunct perl4), they
            expected it to be used for system administration tasks, for text
            processing and maybe to automate a few network tasks. The Internet
            Boom wanted otherwise, and several other technological explosions
            saw in Perl a suitable language for its tasks. Nowadays, Perl (and
            similar languages such as Python, PHP, Ruby or Tcl) are used for
            tasks as diverse as the computer world itself. Server-side-
            scripting, Bio-informatics, System Administration, Text Processing,
            System Tools, Graphical User-Interface, Computational Programming,
            Quality Assurance, automating Internet services (for good or worse)
            and even real-world applications and Games, are all written in
            Perl, Python and everything else. Some Killer apps of this kind
            include: Slash (the back-end of Slashdot), SourceForge/GForge,
            Bugzilla, Zope, PySol, The Mandrake Linux System Tools and
            Installer, <link xlink:href="http://www.frozen-bubble.org/">Frozen Bubble</link> (;-)), SpamAssassin, and many other things
            I don’t recall or forgot about momentarily. Furthermore, a lot of
            code of such languages is used internally and not exposed to the
            world, and plays a large role behind the scenes.
        </para>
        <!-- To do: hyperlink -->
        <para>
            They are still often referred to as “scripting languages”, but this
            term can no longer accurately describe them. While a Java-obsessed
            friend of mine asked me to give him an example for a proprietary
            application of a large codebase that is written in Perl, and I
            could only think of open-source ones, it is definitely enterprise
            ready, and not a toy language for hackers anymore.
        </para>
        <para>
            Now, let’s go back to Mel. She needs to learn Perl. But she might
            as well have been told to learn PHP, Python, Visual Basic or
            whatever. My problem is I think she would have a much harder time
            with Perl than with the others. No, it’s not because Perl is a
            harder <emphasis>language</emphasis> than the others. I don’t think
            it is. It’s because the resources available online are inadequate
            or may scare her. And as <link xlink:href="http://www.perl.com/pub/a/2001/05/29/tides.html">Casey
                West noted in a previous attempt at correcting the
                situation</link>, the Perl community is relatively hostile to
            newbies and does not put up with them as much as those that are
            friendly would hope.
        </para>
        <para>
            Here is what I think are the problems with it:
        </para>
        <section xml:id="concentration_of_effort">
            <info><title>Concentration of Effort and Elitism</title></info>

            <para>
                I did my best to help newbies welcome in Perl. I actually like
                beginners, and have a lot of patience to them, because I know
                no one is born with an innate knowledge of Perl, UNIX or
                whatever. I often work in the Technion farms and whenever
                I overhear that someone has a problem my ears become pointed,
                and I cry “do you need help?” And then show him how to do
                something that for me may be perfectly obvious. Seriously. I
                simply enjoy doing that.
            </para>
            <para>
                I also took some proactive effort in the direction. I wrote the
                <link xlink:href="http://vipe.technion.ac.il/~shlomif/lecture/Perl/Newbies/">Perl
                    for Perl Newbies</link> lecture series for the Haifa Linux
                Club. I wrote them
                with absolute beginners in mind, and decided to teach a very
                small subset of Perl step by step, with assumption that people
                will read the man pages afterwards. (and be able to understand
                them better then).
            </para>
            <para>
                Lately, out of frustration with the learn.perl.org site, I started
                working on <link xlink:href="http://perl-begin.org/">my
                    own version of a Perl beginners site</link>. Now here is where
                things went a bit wrong in my opinion. However, I don’t want
                to defame anyone so I’ll summarize. Both the
                <link xlink:href="http://use.perl.org/">use.perl.org</link>’s editor
                and a very prominent Perl figure that stumbled upon the site,
                believed that I should merge my work with learn.perl.org. At
                first, I thought it was a good idea, but then discover I
                am unable to contact the learn.perl.org workers and that
                their mailing lists was closed for subcription.
            </para>
            <para>
                Regardless, what’s wrong with two Perl beginners site on the
                Internet? If I feel that learn.perl.org is inadequate, why
                should my effort be frowned upon? If we take PHP or Visual
                Basic for example, than everyone and his mother have a PHP
                portal where users can post questions (sometimes without
                subscribring), receive answers, read tutorials and see code
                snippets. Same for Visual Basic, despite the fact that it is
                proprietary. I want the same for Perl! I don’t want a couple of
                concentrated perl.org and perl.com and oreillynet.com sites. I
                want a real network of independant sites!
            </para>
            <para>
                It also demonstrates the Perl community’s elitism. I don’t know
                how it came into being. For example, when I log into EF-Net,
                the channel #perl displays a long title that reads something
                like: “Not a Helpdesk! No CGI/WWW/Net::IRC/FAQ.”. OK, there’s
                also #perlhelp where such questions are accepted. But here are
                two facts from a user interface designer point of view:
            </para>
            <para>
                <orderedlist inheritnum="ignore" continuation="restarts">
                    <listitem>
                        <para>
                        People are not going to read the title. In a user
                        interface, you are lucky if people read anything at
                        all. (including: “Delete and Expunge ‘My most
                        important work’?”)
                    </para>
                    </listitem>
                    <listitem>
                        <para>
                        Newbies by nature will try #perl if they log into a
                        random IRC server. And they don’t want to get flamed
                        for being off-topic there.
                    </para>
                    </listitem>
                </orderedlist>
            </para>
            <para>
                In short, this is a bad UI design. If the Perl gurus so desire
                not to be disturbed by newbie questions, they should move to
                #perlgurus or #perlelite or #perlcafe or whatever. But they
                should not make claim for #perl.
            </para>
            <para>
                In another IRC network, I (not a newbie by far) was kicked
                because I pasted a URL and said the word CGI. (there’s a nasty
                pattern bot there). Some other time, I was kicked out of
                #perlhelp, because I said the built-in function hex() converts
                numbers from hexadecimal to decimal, while a moderator believed
                it converts them <emphasis>to</emphasis> hexadecimal.
                Naturally I was right (Run
                perldoc -f hex), but still instead of arguing with me, he
                kicked me out. Why should a bit of disinformation hurt if there
                are enough good people to correct it on the IRC as well? And
                Newbies can learn a lot from such discussions.
            </para>
        </section>
        <section xml:id="lack_of_adequate_resources">
            <info><title>Lack of Adequate Online Resources</title></info>

            <para>
                Let’s face it: at the moment, there aren’t too many good Perl
                tutorials online. Many people who ask trivial questions are
                being conveyed something like “Read the Llama Book, the Camel
                Book, the Black Panther book, the Perl Cookbook, and then
                you’ll know how to convert a file to lowercase.” Maybe I’m
                exagerrating a little, but it seems people are so content with
                the books that they don’t seem to think people who don’t want
                them, cannot afford to buy them, or don’t have time for them,
                are worthy of learning Perl.
            </para>
            <para>
                I don’t have anything against people trying to make money off
                Perl by selling books. But these people are the same people
                who are the Perl project leaders, and so are responsible to
                make sure Perl is well-documented. If people get frustrated
                learning Perl, and become unhappy with it, they will criticize
                “Perl”. Not the Perl documentation. Not the Perl community.
                Not even the Perl leaders. <emphasis>“Perl”</emphasis>.
                If Larry Wall et al. care enough about Perl, they should make
                sure it has good online documentation. They don’t have to do
                it themselves, as a simple call for action by a very prominent
                Perl figure will do. (in accordance to Eric Raymond’s
                <link xlink:href="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/">“The Cathedral and the Bazaar”</link>)
            </para>
            <para>
                If we take a look at Python or PHP for instance, then they
                have excellent online documentation, which is very useful for
                most if not all newbies. No need to read a book or take a
                course. Just surf the Internet on your ADSL connection, install
                a few things on your Windows machine, and presto! You know PHP
                or Python or Ruby. I seriously doubt if it can be done with
                Perl with the same ease.
            </para>
            <para>
                I am grateful for Simon Cozens for making his
                <emphasis>Beginning Perl</emphasis>
                book online for free. I did not take a thorough look at the
                book, but it is more encompassing than anything I’ve seen. But
                even one book is not enough. People still want step by step
                tutorials and things they can cut and paste code out of and
                tinker it to do something.
            </para>
            <para>
                When are books that cover a Technology something that I find
                legitimate? When they are not absolutely needed. I learned
                the Perl DBI by reading the man page and the online site and
                asking a few questions. Some people do not like man pages too
                much and would rather buy a book that covers Perl DBI. That’s
                OK, and there may be a few fine points of working with DBI that
                I missed with what I call my “bottom-up learning”.
            </para>
            <para>
                Such books need not be available online if their authors so
                much don’t desire. However, Perl is very hard to learn from
                public electronic resources alone. I believe there may even
                be a clash of interests because the core Perl people also
                write them and so may not have enough motivation to improve
                the online documentation. Making them public will resolve that.
            </para>
            <para>
                That aside, I also believe that making it available online will
                not dent their sales much. I still would like to buy the Camel
                Book (which I borrowed from the local Perl Mongers library),
                and loved regardless if it’s online so I can read it at bed
                time and stuff. And I generally have no problems using a
                computer book or tutorial.
            </para>
            <section xml:id="lack_of_adequate_mailing_lists">
                <info><title>Lack of Adequate Mailing Lists</title></info>

            <para>
                Then there are the mailing lists. I think (but am not sure)
                that most Perl Mongers mailing lists will gladly accept
                questions from newbies and answer them kindly. I know this is
                the case for <link xlink:href="http://www.perl.org.il/">Israel.PM</link>.
                As a general rule
                Perl Mongers should make sure that the newbies mailing list
                would be the first list they see on the site, or try to
                subscribe to. Again, good user-interface design.
            </para>
            <para>
                The Perl Beginners list In my opinion is a bit useless. It is
                very high volume, and usually whenever one considers
                replying to a question, it receives three replies by the time
                he finished composing it. I was also subscribed and it was
                too high volume to be effective for me as a “guru”. I believe
                newbies will not be able to handle such volumes either. Unless
                they can configure their mail readers to filter only their own
                threads, which I’m not sure they can. Perl can do that, but
                they need to know it first.
            </para>
            <para>
                Like I said earlier, I think distributism is the key to our
                success here. Just like there are many scientific journals with
                very similar names and themes, (sometimes, “Physics A”,
                “Physics B”, “Physics C” etc), so there should be several
                international Perl beginners sites, each with his own mailing
                list for beginners. Gurus will subscribe to one or more sites
                and answer questions there, and newbies won’t have to
                excessively use their delete button. Gradually, each such
                community will have a different atmosphere, and we will get a
                more diversified Perl world. (we all agree that diversity is
                good, right? If you don’t you should program in Python)
            </para>
        </section>
        </section>
        <section xml:id="substandard_standard_doc">
            <info><title>Substandard Standard Documentation</title></info>

            <para>
                Let’s face it, the man pages (or perl*.pod), which are the
                definitive resource on the exact behaviour of Perl are very
                bad. Maybe they were OK for expert Perl 4 or Tcl hackers, or
                those that knew UNIX shells, sed and awk well. But nowadays
                we can expect people to come even without knowledge of the
                DOS or Windows command line, much less UNIX wizardry.
            </para>
            <para>
                Perl is not and cannot be a “point-and-click-no-think”
                language. I’m not going to fall into the trap of trying to make
                it so. Even the lamest GUI kiddie eventually learns to
                invoke a text editor and write some glue code for whatever he
                needs to get a web-site or whatever working. Perl is much too
                powerful, to be something like ASP, where you can write wizards
                to perform most common tasks. In Perl, you can in one script,
                write a full application. This is something that while perhaps
                possible in ASP, it was not intended to do.
            </para>
            <para>
                Still, the fear of writing code and thinking in terms of
                variables, functions, objects, modules and other abstractions
                is not something that for people above a certain age is easy
                to overcome. Visual Basic for Applications is one of the things
                I like most in Excel, but most people don’t know it, and most
                books don’t teach it. Why? Because it involves actual coding
                and people don’t like that. Ironically, it’s very useful, too.
            </para>
            <para>
                Now, a documentation should guide a newbie step by step
                and explains: what is a variable? what is a scalar? what is a
                number? what is a string? how they convert into each other?
                What is an array and what it is good for? Same for hash,
                object, etc. All these things may have different semantics
                in Perl than in most other languages. And all these things
                need to be explained clearly and reasonably, without depending
                on an analogy to tools that are way over Mel’s head at her
                current position.
            </para>
            <para>
                I don’t want this knowledge to be hidden from the world in some
                proprietary O’Reilly books. I did my best to remedy it, and
                Simon Cozens did even more. I think the reason people think
                Perl is such a poor language to learn or even for complete
                beginners, is not because of the syntax and semantics
                themselves, but because of its poor documentation. That put
                aside, I think publishers making their books available online,
                will only help them sell more books (assuming these books are
                good, of course).  Otherwise it’s similar to buying an
                apartment without seeing it first.
            </para>
        </section>
        <section xml:id="too_much_hubris">
            <info><title>Too Much Hubris</title></info>

            <para>
                Hubris is one of the three great virtues of the programmer
                according to Larry Wall. But he <link xlink:href="http://www.oreilly.com/catalog/opensources/book/larry.html">also noted in
                    “Open Sources”</link>
                that humility was a good quality as well. Don’t get me wrong
                some projects have much more hubris than Perl: Python and Linux
                come to mind. I’m not saying all Pythoneers or Linuxers are
                hubris-ful. But a small minority is too loud, and there’s
                a similar case in Perl to a lesser extent.
            </para>
            <para>
                What do I mean by hubris? “Perl is the greatest language since
                sliced bread. It has unparalleled text processing and data
                strucutres support. It is object-oriented, supports functional
                programming and any other programming paradigm very well. It’s
                perfect for almost any task, from powering web-sites to writing
                GUI to writing games. It’s practically LISP with in-fix
                notation, and runs on almost any platform imaginable...”
            </para>
            <para>
                You get the drift? Why I think it’s bad? Because most
                people don’t like communities with this sales pitch. When
                recommending Perl to someone, you should discuss one advantage
                at a time, not overload him with a lot of information. When
                people see a lot of information they think there’s something
                fishy about this.
            </para>
            <para>
                Let’s take a look at a language with just the right amount of
                hubris: Visual Basic. Right, a language that Microsoft has
                released several versions of, each adding major things, but
                is still inferior to perl 5.000. A language whose code can
                only be deployed on Windows. A language that is many times
                useless without a whole slew of OCX or OLE components that
                are freely available at best. Still, Microsoft and the other
                VB community do not claim it’s the greatest language on earth.
                “I take your word that Perl/Python/Ruby/LISP/whatever is much
                superior. VB is stupid, but cute and it gets the job done.”
                That’s the attitude we should have: Perl gets the job done.
                Granted, many different jobs. But as far as Mel is concerned
                it only gets her job done and not the entire world’s ones.
            </para>
        </section>
    </section>
    <section xml:id="the_threat">
        <info><title>What’s the threat?</title></info>

        <para>
            You can often hear opinions or wonderings in the vein of: will PHP
            kill Perl? Will Python kill Perl? Will Java kill Perl? Will FooLang
            kill Perl? I don’t think anyone of them can hope to. I don’t think
            Perl will completely eliminate any of them either, but I think
            Perl’s status is secured.
        </para>
        <para>
            Perl is too syntactically and semantically rich a language to be
            abandoned by all its loving users in such a haste. CPAN is also
            a big plus for Perl, which while being a purely technical mechanism
            makes Perl more suitable for some tasks than most of its other
            competitors. I hope to see equivalents in other languages, but it
            will take some time and a lot of work from some very determined
            individuals to get it up.
        </para>
        <para>
            The Perl Culture has extended way beyond its use. From perl poetry
            to Perl golf, to the talks by Larry Wall and other of the very
            interesting Perl personalities. The Perl community is alive and
            kicking and proud of being such. While some people abandon it for
            Python, Ruby or whatever, most of them still think Perl is a nice
            language, and don’t abandon it or completely or completely
            antagonize it. The beauty of the Perl culture is that it’s about
            using the right tool for the job whether in Perl or not.
        </para>
        <para>
            We all know 80% of the users use 20% of the features of a given
            program. However, as <link xlink:href="http://www.joelonsoftware.com/articles/fog0000000020.html">Joel
                Spolsky identified</link> they often use a differnet set of
            features. Perl’s feature-set is huge, but you can survive with
            knowing maybe 10% or even less of it. Moreover, you can gradually
            learn more and more features and keep learning new ones. Perhaps
            only the three authors of Programming Perl know the entire feature
            set, and I believe even they are actively unaware of some obscure
            details of it. However, one always feels he’s getting closer to
            100%.
        </para>
        <para>
            The problem is that Mel is not concerned with any of it. She just
            wants to write a program. This program may just as effectively be
            written with Python or Ruby or PHP. And we should be concerned with
            her writing it in Perl, because otherwise, it will take her more
            time to get to learn Perl. As much as I care about the quality of
            Perl programmers (which is actually quite good) I also think we
            should evangelize it to many people who’ll find it useful.
        </para>
        <para>
            Moreover, I don’t like Mel becoming one of those characters who say:
            “Perl? This horrible language? I’m using PHP/Python/Ruby/Java. It’s
            much better than Perl.” I don’t think there’s a way to exactly
            measure which language is “better”. Some languages are better in
            some regards and for some purposes than others. But Perl is much
            more than a language. It’s a culture and a philosophy.
        </para>
        <para>
            Perl has a lot of potential for Mel. Alternatively, it has such for
            Joanna Simpson, a CEO of a Fortune 500 firm who is trying to
            ship her automobile-company’s new car model. I think we should
            even try to teach Joanna Perl, because not only will she learn how
            great a language it is, but it may actually be useful for her in
            her day for day work. Otherwise, she would tell Robert, her
            secretary, to sort all the files into several directories a week
            from now, which can otherwise be done with a 10-liner Perl script.
            This will leave Robert enough time to answer phone calls and play
            <link xlink:href="http://www.frozen-bubble.org/">Frozen Bubble</link>
            (which is written in Perl) in between: things that Perl or any
            other software cannot do for him.
        </para>
        <para>
            Perl should be everywhere. Let’s not ruin the day for Mel, Joanna
            or Robert by a bad attitude. Remember that at a time, we were not
            much more educated than them. Not even old time UNIX gurus like
            Ken Thompson or Larry Wall can claim that, because UNIX and Perl
            developed based on input by many people and everyone was always
            surprised by new developments. While the effort was concentrated,
            the ideas flowed from everywhere.
        </para>
        <para>
            Furthermore helping newbies is <emphasis>fun</emphasis> and makes
            you feel good. You don’t have a moral obligation to do so, but I
            believe you’ll find helping someone even with a trivial question
            even more enjoyable then getting help for something that bothered
            you. That’s how the open-source world works.
        </para>
        <para>
            You may eventually find yourself in a similar situation in
            something else entirely, and may need help by people who are more
            expert than you are.  During my Electrical Engineering studies I
            studied things that were much less straightforward to me than
            either Perl or UNIX (which I don’t consider easy either), and
            sometimes the help of the lecturers, the T.A.’s or fellow students
            proved crucial to understanding them. Moreover, explaining
            something to someone who grasps it much less than you, is the
            best way of learning (even better than actually experiencing with
            something yourself).  That’s because when teaching someone, you
            have to think how to convey it using more basic knowledge in a
            strucutured way, and so understand it much better.
        </para>
    </section>
    <section xml:id="what_should_be_done">
        <info><title>What we should do about it?</title></info>

        <para>
            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.
        </para>
        <section xml:id="what_should_establish_something">
            <info><title>Independant Activitity</title></info>

            <para>
                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.
            </para>
            <para>
                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.
            </para>
        </section>
        <section xml:id="what_should_perl_guru">
            <info><title>Become your biggest Perl Guru</title></info>

            <para>
                Remember that the biggest Perl guru is
                <emphasis>you</emphasis>. 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.
            </para>
        </section>
        <section xml:id="what_should_help_newbies">
            <info><title>Treat Beginners Nicely and Help Them</title></info>

            <para>
                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///).
            </para>
            <para>
                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. ;-)
            </para>
            </section>
            <section xml:id="what_should_ui_design">
                <info><title>Think about Usability Issues</title></info>

                    <para>
                        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.
                    </para>
                    <para>
                        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.
                    </para>
                    <para>
                        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 “monastry”? (I’m Jewish, an Atheist, and
                        very sexually liberated for God’s sake!) Secondly,
                        the site’s design is unattrative, overcrowded and
                        confusing. I remember I was reluctant from
                        participating there, and had troubles understaning
                        what it was all about.
                    </para>
                    <para>
                        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 particularily 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 .
                    </para>
                </section>

                <section xml:id="what_should_create_resources">
                    <info><title>Create Archives of Perl Code and Documentation</title></info>


                    <para>
                        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. ;-)
                    </para>
                    <para>
                        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
                        <link xlink:href="http://dmoz.org/">DMoz</link>-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 <link xlink:href="http://www.slashcode.com/">Slash</link> to do
                        just that should not be too hard, and may prove as a
                        useful alternative or a complement to Wikis.
                    </para>
                </section>
                <section xml:id="what_should_charge_money_say_no">
                    <info><title>Don’t be afraid to charge money or say no</title></info>

                    <para>
                        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.
                    </para>
                    <para>
                        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.
                    </para>
                    <para>
                        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 compotent 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.
                    </para>
                    <para>
                        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).
                    </para>
                    <para>
                        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
                        <link xlink:href="http://www.iglu.org.il/">IGLU</link>’ers:
                        “Advocacy is everything I do”.
                    </para>
                    <para>
                        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)
                    </para>
                    <para>
                        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.
                    </para>

                </section>
                <section xml:id="what_should_revamp_of_existing">
                    <info><title>Revamp of the existing resources</title></info>

                    <para>
                        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
                        <link xlink:href="http://www.python.org/">the Python
                            Homepage</link> or
                        <link xlink:href="http://www.php.net/">PHP’s</link>. 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!
                    </para>
                    <para>
                        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.
                    </para>
                    <para>
                        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 <emphasis>Programming
                            Perl </emphasis>(the Camel Book),
                        <emphasis>Learning Perl</emphasis> (the
                        Llama Book), the <emphasis>Perl Cookbook</emphasis>,
                        or <emphasis>Advanced Perl.</emphasis>
                        I could not care less however, for <emphasis>Perl for
                            Oracle DBAs</emphasis>, 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.
                    </para>
                    <para>
                        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 <emphasis>only then</emphasis> 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?)
                    </para>
                    <para>
                        Generally, if one of the new resources would be better
                        than the existing ones, then it would eventually
                        supersede it. Yahoo and AltaVista were superceded 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 <emphasis>The Cathedral and the Bazaar</emphasis>, in a
                        distributed Bazaar model, the output grows linearly
                        to the number of people involved.
                    </para>
                    <para>
                        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.
                    </para>
                </section>
            </section>
            <section xml:id="conclusion">
                <info><title>Conclusion</title></info>

                <para>
                    Perl is going strong and will continue to grow in the
                    nearby future. However, many beginners are deterred from
                    becoming part of the Perl world, or understanding it,
                    out of several defects in the online Perl community and
                    resources.
                </para>
                <para>
                    Perl proves to be a gateway to UNIX for many people. Many
                    people who start to use a UNIX-compatible system (like
                    Linux or Solaris) write their shell-scripts in Perl, and
                    later on actually learn shell programming. Many Windows
                    people who used Perl for Win32, find the UNIX concept much
                    more desirable afterwards. Perl is a reflection of UNIX in
                    all so many ways, and I’d hate for someone to get scared
                    of UNIX as a result of getting scared of Perl too.
                </para>
                <para>
                    You often hear people complaining at Perl’s briefness,
                    TIMTOWDIness, difficulty to learn, “inconsistency”,
                    “ugly syntax”, complexity, in-fix notation, size, dollar
                    signs,
                    insuitability for large codebases, etc. All these “issues”
                    are very much marginal if not completely false in getting
                    it into public acceptance.  In fact it is a sign that it
                    has a culture that not all people can accept, which is
                    good, because not all people are the same in such ammoral
                    issues as choice of programming language.
                </para>
                <para>
                    However, what can deter someone from learning Perl is
                    a lack of good support and aid from an online community,
                    which may be the only connection he has to this virtual
                    world called “Perl”. Let’s change it. Let’s make sure
                    Melissa will be practically sucked into the Perl world,
                    as any community happy to receive a shining, new,
                    interesting member.
                </para>
            </section>
</article>