If you're like me (and if you're reading this, chances are you're like me), you're of Caucasian ethnicity, college educated, over 25, and male. It's likely you were raised in a solidly middle class household with access to computers in the house or at school before the age of 12. You had encouragement from family, peers, and teachers to study subjects including math and science.
You're probably (though somewhat less likely) also comfortable using a Unix-like operating system, even if your job demands that you use a Windows machine if only to connect to the Exchange server through Outlook to send spreadsheets and .doc files back and forth.
While it's an even bet that you spend a lot of time on a mobile computing device such as a smart phone or a tablet, you probably have access to at least one unfettered computing platform (being able to root your phone doesn't count) where you can install any software you want, including a compiler and development environment. Maybe your system administrator handles it for you, but the principle is nearly the same.
You probably have broadband at home.
When I say "Install XCode" or "Run aptitude to install build-essentials" or "Download mingw or Visual Studio Express", you know what I mean and have no trouble doing it.
I won't call you privileged (even though we are).
I will say this: if we want to attract more users and contributors to the worlds of Perl and free software and ethical computing, we ought to consider how to make the onramps easier for people who don't look so much like me. Yes, they will eventually need to learn how to use some sort of CPAN tool, but does that mean they have to learn how to use the command line before they can do anything productive with Perl? Yes, they ought to understand some of the better pieces of Unix that Perl puts together, but does that mean they have to install their own Linux distribution before they can do anything with Perl?
Jacinta Richardson from Perl Training Australia and John Napiorkowski made this point quite clear at YAPC::NA last week: while we're great at making software for ourselves and people like ourselves, we could do much better making software easier for people not quite like ourselves.
If we're serious about promoting Perl and free software, and if we're serious about making communities which include people by default and take advantage of the different perspectives and talents of different types of people, how can we make it easier for new people to join us? (Or do other people who resemble me even want this sort of thing?)
I have some ideas that I'll share over the next few posts. I'd like to hear yours.
Good point. I was teaching Perl to molecular biologists in the last six months and the biggest obstacles were how to run the script, how to pass the parameters, how to grab the output. But without this basic knowledge (Linux command line, more or less), one cannot proceed to more complicated problems.
You described me. I am lucky enough to use Linux as my work computer. I am glad your bringing this topic up. This topic comes up now and then but we don't have a solution. I think your Modern Perl book was a great start in helping Perl.
Just a thought maybe a cpan w/ cpanminus or one of those cpan wrappers needs a GUI front end that would help people get into cpan and learning how awesome it is. If you can get a GUI for cpan and use either Padre or EPIC Perl for those that want to avoid the command line then that could help.
What would be interesting to look at is how the heck Ruby and Python got so popular the way they did. I haven't done much with them but I know Ruby is command line and using Rails and ruby gems can be a pain.
You somewhat describe me but you have to shift the age by 35 years, and my first computer program was on punch cards in Fortran. My intro to a pc was with a cpm system, then on to a DOS system. I now run Linux, Arch, and am very comfortable with the command line.
My problem is the transition from pure imperative programming and object oriented programming. While I'm attempting to learn Perl, I'm attempting follow your book on Modern Perl an learn how to glue modules together to make a complete application. I also look through other modules and applications written in Perl. What I run up against is the lack of consistent examples. TMTOWTDI may be good but when all the examples included in Tk or Wx are different, it's hard to wrap my head around.
From my life experience I know it's hard for someone fluent in a topic to write and entry level tutorial. It's even harder for someone who's extremely busy, but I would love to see a tutorial that works from front to back on a small but complete application including testing.
I've been reading http://coolnamehere.com/geekery/parrot/learn/01-getting-started.html, and it's helped tremendously. However I would like to see something like this for modern Perl or Moose.
I heartily agree that ruby and ruby gems can be a major pia.
I follow your blog and find it educational and thought provoking. Keep up the good work.
Just an old timers two cents.
The Anti Blocking System (ABS) for breaks was initially invented for airplanes - they needed it really badly - but, as we know, useful in cars as well. I am sure that many of the improvements aimed at the novices would be used by seasonal perlers :)
On the other hand I think we should not set the aim too remote - learning programming is in fashion now - but unless someone masters the full programming environment he'll not use Perl even if he learns the programming basics.
What do you mean by "ethical computing?" I can guess what it means but I was curious if you had any links to what you mean. Google was not real helpful.
The rest of the article is very true. I fit the profile except for being too old to have had the stuff when I was a kid. I was trying to build flip-flops out of 120v DPDT relays. Lucky I didn't get electrocuted.
my 2c is that perlmongers website needs an overhaul. feature wise its great, its just fugly and uninviting.
also, lots of other perl related staples would do well to be brought under the same administrative banner. perlcritic.com, metacpan, and others - if their owners so choose to donate them.
it would be good to have an eco-system of canonical websites which can easily be contributed to by community members and perhaps run on the same infrastructure. a perlfoundation paas 'cloud' perhaps.
there has to be a balance between people making their own useful stuff, and it being canonised. i dont know what that balance is, but i think it would be hugely beneficial.
I'm a Perl user that may be a bit younger than average (21 yo) and as I have lived in the an age of freely flowing information from the age I could read—thus enabling much of my programming knowledge, I believe I can speak on this matter.
I think you will find that this generation of programmers are very much into multimedia presentations. As such, to draw new programmers into Perl, it is not enough to have a text culture (blogs, mailing lists, IRC). We must have a graphical way of showing Perl to others. Mojolicious has done a good job with this on their website, such that I can actually share their site with others in my peer group. These potential Perl users want to know if it can solve their problems. I would like to share Python's success pages as an example of what I mean. Every page has a graphic and a paragraph or two of description which provide a broad set of domains in which Python has been used. Other examples of these type of showcases include those for TeX [1, 2]. These serve as a single repository of things that you can point to and say : "X is used to make these". I remember when I was first learning to program, Python was being promoted as a language that was easy to pick up and I was intrigued by the VPython library. Perl needs things like that. In fact, it already has these, but they are buried deep within CPAN, scattered across the web (e.g. all those excellent advent calendars?), and in un-indexable books (my copy of "Games, Diversions & Perl Culture" has many projects that are still interesting today). There are still neat projects that are being done in Perl: for example, I just came across DarwinTunes via Scientific American [1, 2]. I also see pages like What is Perl Used For? and Why Perl is a Valid Choice and I notice a lack of graphics.
In addition to getting their interest, there need to be high-quality tutorials for solving different problems. I think that Tkdocs does an excellent job with this. It has plenty of pictures and presents each part of the GUI using short snippets that can be used immediately. Experienced programmers can read the POD and test suite to get the information they need, but beginners get lost in the text. By having working snippets, we can capture the same technique that made PHP popular, however if we collect all the tutorials in a single place, we can ensure that the quality of the code is up to the standards of Modern Perl. Perhaps every task can be accompanied by a bundle of modules that can be easily installed no matter what the platform and a screencast to show what is supposed to happen. Want to do web development? Install this and you will get a framework, server, and database. Want to make charts, a game, social network development, etc.?
Also, as a side note, I know that some people complain about CPAN modules being difficult to install and having problems with failed builds/tests. Usually these people do not know how to fix these issues nor how to submit a bug report. Perhaps there should be a mechanism to send diagnostics to the module author if prompted. This would close-the-loop for people that do not know about the mechanisms of the Perl community.
This could probably apply just as well to nearly any language or platform. I know we've seen painful examples of similar behavior in the Ruby world. We - the generic open source geek "we" - are excellent at preaching to the choir, but can be downright alienating to anyone else.