August 2009 Archives

Perl 6 development does not detract from Perl 5

| 5 Comments

A recent thread on use.perl.org brought up one of the worst myths of Perl 6: That Perl 6 is harming Perl 5.

Andrés N. Kievsky commented in a thread on use.perl.org

drop this insane perl 6 thing immediately. Give us good, stablethreading in perl 5 instead of self-hosting grammars in perl 6.

Later he said:

proper OO syntax, multithreading, better speed ... are major issues in perl 5 that should have priority over perl 6 work. You can't expect me to believe that the perl 6 team can't work on that.

There's so much misunderstanding here about how open source works, I'm going to ignore the ways that Perl 5 has benefited from the process of creating Perl 6.

The problem with Kievsky's assessment is that it assumes that:

  • contributors are finite
  • contributors are interchangeable
  • contributors can be directed.

All three are wrong.

First, there is a vast, unbounded talent pool. The set of people available to work on Perl 6 is not limited to those who would otherwise be working on Perl 5. It's not as if there's a box of people that cannot grow or be added to. There are many contributors who have joined the Perl 6 project without having ever worked on Perl 5. In this instance, Perl 6 has actually brought people into Perl under the Perl 6 banner.

Second, not everyone can work on the same parts of different projects. The tasks on Perl 6 may well be very different than the Perl 5 improvements that Kievsky would like to see. I have been contributing to Perl 5 for years, but I'm not at all available to help on the Perl 5 tasks he wants, because they're not in my area of expertise. However, I can help a lot with Perl 6 tasks, and not just programming. Parrot and Perl 6 are a better fit for me.

Finally, and most disturbing, Kievsky seems to think that by wanting something badly enough, people will work on those tasks. Unfortunately for this idea, there is no one directing Perl 5 development tasks, and nor can there be. Open source contributors are volunteers. They work on what they want to work on. Even if I was clamoring for those Perl 5 improvements, I'd rather keep a great programmer working in the Perl community working on Perl 6 rather than leaving Perl entirely because there was no work she felt like doing.

The only way to get a feature added to Perl 5, or any open source project, is to write it yourself, or to encourage others to work with you on it. It's the way of open source.

Perl 6 and Perl 5 development work are not mutually exclusive. Work will continue on Perl 5 long after Perl 6 has hit prime time.

How to poop on your project's contributors

| 2 Comments

GCC 4.3.4 was released recently. Here's the announcement:

GCC 4.3.4 is a bug-fix release containing fixes for regressions and serious bugs in GCC 4.3.3. This release is available from the FTP servers listed at: http://www.gnu.org/order/ftp.html

...

As always, a vast number of people contributed to this GCC release -- far too many to thank individually!

"Too many to thank individually?" How many is "too many"? Would the list of GCC contributors have caused multi-megabyte email messages to swamp the mail servers across the Internet?

What this message really says is "I do not want to take the time to thank people individually. Your contributions are not worth a few minutes of my time." What a fantastic way to poop on your contributors. They would have been better off just not mentioning the contributors at all, rather than saying "You're not worth enumerating."

When someone contributes to your project, the least you can do, quite literally, is to include his or her name in a list of credits. Here are the acknowledgements from WWW::Mechanize.

Thanks to the numerous people who have helped out on WWW::Mechanize in one way or another, including Kirrily Robert for the original WWW::Automate, Gisle Aas, Jeremy Ary, Hilary Holz, Rafael Kitover, Norbert Buchmuller, Dave Page, David Sainty, H.Merijn Brand, Matt Lawrence, Michael Schwern, Adriano Ferreira, Miyagawa, Peteris Krumins, Rafael Kitover, David Steinbrunner, Kevin Falcone, Mike O'Regan, Mark Stosberg, Uri Guttman, Peter Scott, Phillipe Bruhat, Ian Langworth, John Beppu, Gavin Estey, Jim Brandt, Ask Bjoern Hansen, Greg Davies, Ed Silva, Mark-Jason Dominus, Autrijus Tang, Mark Fowler, Stuart Children, Max Maischein, Meng Wong, Prakash Kailasa, Abigail, Jan Pazdziora, Dominique Quatravaux, Scott Lanning, Rob Casey, Leland Johnson, Joshua Gatcomb, Julien Beasley, Abe Timmerman, Peter Stevens, Pete Krawczyk, Tad McClellan, and the late great Iain Truskett.

That's everyone who has contributed such that I was able to get their name (e.g. not an anonymous bug in RT).

And whenever I update a change log, which I release as part of release announcements, I put the person's name in there, too, as in this from ack:

Added new switch --column to display the column of the first hit on the row. Thanks to Eric Van Dewoestine.

One of my favorite Miss Manners letters went like this:

Dear Miss Manners, when is a thank you note not required?

Gentle Reader, when no gift is received.

All project coordinators would do well to remember the lesson.

Addendum: Pete Krawczyk took me task this morning, rightly, for not mentioning that GCC does have a huge contributor list, and they do publish it: http://gcc.gnu.org/onlinedocs/gcc/Contributors.html. My frustration is not in the lack of collection of names, but in the face slap of "There are too many of you too mention." If you get 100 wedding presents, you don't say "That's too many thank you notes to write, so I'm just going to handwave them." I optimize my projects for making sure that everyone's contribution is mentioned at the very least in the Changelog so that people can see their contributions acknowledged in a visible time at the time of release.

Perl coming to Android phones

| No Comments

By François Charette

Android is an operating system for mobile phones that runs a modified Linux kernel and the Java environment. The Android Scripting Environment (ASE) allows you to edit and execute scripts directly on the Android device. Until now only Python, Lua and BeanShell were supported, but a request was filed to add Perl as well. Recently, support for Perl was added to the development tree, and today that feature request was closed, and is part of OSE 0.11 alpha.

This means we can expect that Perl will be officially supported on Android with the next stable release of the ASE. It will then be possible to write neat Perl programs on an Android phone, like this "hello world" example.

François Charette is an independent scholar in the humanities with a passion for Perl. He is the initiator and co-developer of Biber, a BibTeX replacement written in Perl.

Perlbuzz news roundup for 2009-08-19

| No Comments

These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com.

  • 2009 WebGUI Users Conference Sep 10-11 (plainblack.com)
  • perl101.org's source is now at http://github.com/petdance/perl101/tree/master I welcome contributions.
  • The PAUSE security updates re: Perlmonks security breach are complete. Thanks Adam+Andreas. (use.perl.org)
  • How to boost your career by contributing to open source projects (theworkinggeek.com)
  • Help perl101.org become a great tool for Perl newcomers (perlbuzz.com)
  • Help Tim Bunce update his Perl Myths talk (blog.timbunce.org)
  • What a tangled web Kwalitee culting has accidentally woven (use.perl.org)
  • On today's episode of Dreadful APIs of Doom, PHP's print_r() function: (us.php.net)
  • Jacinta Richardson: A Perl-only conference, and the most awesome community (use.perl.org)
  • perldoc.perl.org source code on github (use.perl.org)
  • Yuval Kogman: Delimited Continuations for Perl (blog.woobling.org)
  • Alias: We must promote the First Time Experience before we promote Six (use.perl.org)
  • Community contributions for those who don't feel rockstarry enough yet (perlbuzz.com)
  • Typography and perception of Perl (blog.newint.org)
  • This is why you use Perl's \b zero-width assertion when replacing words. (selinker.livejournal.com)
  • Why company-based PAUSE accounts are a bad idea. (use.perl.org)

Community contributions for those who don't feel rockstarry enough yet

| 2 Comments

Mark Stosberg kicks ass. Note only is he a driving force in CGI::Application, he's also working on some scutwork in CGI.pm. He got privileges to the CGI.pm bug queue and has closed 100 of the 150 bugs in the queue. (He's also done this for me with the WWW::Mechanize queue, too)

Note that I didn't say he fixed 100 tickets, but that he closed 100 tickets. As he notes:

Many had already been addressed by Lincoln some time ago. Those were simply closed. Still, I found about 20 fairly ready-to-go patches, and those have now been processed and released today as CGI.pm 3.45. Whenever code changes were made, I also strived to make sure new automated tests were added that covered those cases. You may be surprised how many methods in CGI.pm have no automated tests for them at all.

Although Mark Stosberg is a fine programmer in his own right, what he's been doing here requires no special skills, no megabrain rockstar code chops. He's doing project management and cleanup. It's so simple, even you can do it.

Yes, I'm talking to you out there, thinking "I've always wanted to get into open source projects," whether it's to improve your career or just to help out. There are always ways you can pitch in that don't involve writing new code. I hope you'll find some and join us.

Help perl101.org become a great tool for Perl newcomers

| No Comments

A few years ago I started perl101.org. My tag line was "What every Perl programmer should know," and the site would cover a wide range of basic topics.

The goal is not to cover the topics in depth, but give just enough of a taste to give the reader an idea of how to do something, and enough to go off of to investigate further. It's an FAQ of sorts, but of techniques.

The idea came from having the same questions asked over and over again in IRC.

  • How do I remove elements from the middle of an array?
  • How do write something to fetch web pages?
  • How do I write a regex that doesn't match something?

I also want to show examples of the Right Way to do things, like using chomp instead of s/\n$//. I wanted to tell people about tools like perldoc that I know many programmers don't even know exist.

Here's where you come in

I haven't done much with perl101 for a while, but I'd like to get it going again, fully awesome. I've put the code on github and I'm asking for contributions. Please pull a fork, add content to it, and let me know when your fork is ready to merge back to the master and I can republish. I'm specifically not making it a wiki, because I want to maintain editorial control to help keep it focused.

The site is also pretty ugly, and if you have better ideas for getting the content out there in an attractive way, I'd love to hear it.

There's also a perl101-talk mailing list and I welcome your participation there as well.

Let's put our collective heads together to help out newcomers to Perl!

Super-sized Perlbuzz news roundup 2009-08-11

| No Comments

These links are collected from the Perlbuzz Twitter feed. If you have suggestions for news bits, please mail me at andy@perlbuzz.com.

Hide your unnecessary details from the user

| 1 Comment

Too often I see user-facing text that includes far more detail than is necessary. My current example is this web app where I can upload files for my expense reports. The help screen tells me:

You can attach the following types of files:
  • Portable Document Format (.pdf)
  • Joint Photographic Experts Group (.jpg or .jpeg)
  • Graphic Interchange Format (.gif)
  • Tagged Image Format (.tif)
  • Windows OS/2 Bitmap Graphics (.bmp)

Why why why do they bother giving those unnecessary explanations of what the file extensions mean? What they really mean is:

You can attach .pdf, .jpg or .jpeg, .gif, .tif and .bmp files.

Has anyone ever said "Hey, Bob, can you send me that Joint Photographic Experts Group file?" No? Then why do you think that people want to read it?

Perl 6 is my MMORPG

| 4 Comments

Carl Masak looks at Perl 6 development from a unique angle.

On the way to lunch today, I queried two collegues about Eve Online, their favourite way to spend evenings and weekends:

<masak> So, are people confused by all the detail when they first join?
<jonalv> Of course.
<masak> And how do you... handle that? How do you make it easy and fun for people to get up to speed?
<jonalv> Well, people tend to find the fun in it themselves. As to getting up to speed, they simply have to start in one end and unwind the whole thing.
<Gpox> It is complicated. There are occasional jokes about the learning curve involved.
<jonalv> Nowadays people have the wiki to help them get started as well. There wasn't one when I joined.

I think the parallels to the Perl 6 community are so clear that I don't even need to point them out.

I'm sure there are many differences between multiplayer online games, but the social dynamics seem very similar to what we have over at #perl6. Which brings me to today's thesis:

The Perl 6 community has the structure of a MMORPG.

We have just as much fun, and — what's perhaps more important — the bits we're putting together won't end up being owned by Blizzard Entertainment or CCP Games. Instead, we're building something that we ourselves and others will find directly useful during a large part of our lifetimes. I'm not out to devalue online multiplayer roleplaying games, just pointing out that there's perhaps an extra dimension to the acheivement we get to feel in the Perl 6 community.

Just for the heck of it, let's take the analogy one step further.

Ahem.

So, you want to join the Perl 6 community? If so, congratulations! You're about to embark on a quest that will seriously impact your day life, your habits and your sleep patterns. You will be building things, fighting unknown dangers, and communicating with your peers in order to make sure people are maximizing the benefit to the team and to the quest.

Here are the different classes you might want to occupy:

Warrior

One who actually fights the creatures out there, who braves new, possibly lethal dangers every day. In short: a Perl 6 application writer.

Being a warrior requires strength (you will have to hit the keyboard a lot when writing all the code, and the code will mercilessly hit you back... often), some dexterity (because working around known bugs requires adaptability) and perhaps a bit of charisma (should you want to collaborate with people, it's good to be pleasant).

We're currently on the lookout for warriors, so if you think you have it in you, be sure to stop by #perl6 and help us equip you for the perilous quest you have before you.

Priest

The priest is important for the group, but doesn't put himself in the way of direct danger like the warrior. Instead, they perform vital tasks with their hands at a safe distance. In the Perl 6 world, priests submit bug tickets, write tests and answer newbie questions on the #perl6 channel.

Being a priest requires intelligence (because their job is mainly to increase the collective knowledge of the group), constitution (because it's a lot of work) and perhaps a bit of charisma (so we don't bite the newbies).

I must say that I admire the priests. The impressing thing isn't in the incantations themselves, which are individually quite basic. The impressing thing is that their favour from the gods doesn't seem to run out. moritz++ and KyleHa++ especially come to mind. I'm sure there are slots for a few more priests too.

Mage

In the flurry of activity during a quest, the mages are the ones who wield forceful spells in the form of new features in our implementations. The mages know some pretty hefty incantations, but they speak in codes (like "Haskell", "Parrot" or "Lisp") so that us mere non-initiates can only stand by in admiration when they get going.

Being a mage requires wisdom (because, hey, you're implementing a compiler), intelligence (in figuring out how to fix the bugs and still pass the test suite), and constitution (because it's a lot of work).

Learning to be a mage looks nigh-impossible, but our mages assure us that there's actually not that much to it. And the rewards are of course enormous: you get to have an incantation of yours immortalized in millions of installations around the world.

Healer

Some people are in the group to make sure the group is doing well, and that no-one is critically low on hit-points. Discussions can sometimes get heated or sharp, by which point we're very glad to have the people around who are specially trained to see beyond the ego and help us focus on the important parts of the picture. We simply need to be reminded at times, that we're (as S01 expresses it) "a bunch of ants all cooperating (sort of) to haul food toward the nest (on average)". We don't need to agree always on everything, but keeping the group coherent is important, and healers do their magic in the background to help us with that.

Being a healer requires wisdom (to know where and when to intervene), intelligence (to know to pick the right soothing words), and plenty of charisma (to get it across that -Ofun is what we're optimizing for).

I think many people jump in as healers now and then during our quest, but we also have one permanently employed high-level healer among us. TimToady++.

Archer

As for long-distance influence, and reaching outside of our own circles, the archer fills the important role of blogging, tweeting, iron-manning and generally making a positive noise about Perl 6, which can reach people far away.

Being an archer requires strength (again, typing is hard, and commenters/other bloggers might shoot back at you), and dexterity (you need to be fluid in expressing yourself). Having intelligence, wisdom and charisma — something I as a simple warrior often find myself wanting more of in my blogging — is not a necessity, but sure helps in getting your point across.

In conclusion: LFA, n00bs?

The Perl 6 community is on a pretty awesome quest. If you'd like to enter as one of the above classes, you're sure to find your place as a productively contributing members. Filling several roles is perfectly fine too, but people tend to find their specialties and favourites.

As to when we'll be "done", who knows? When is an MMORPG "done"? All we know is the quest we're on until April is our most ambitious yet, and that it's guaranteed to be an interesting set of months on #perl6 until then.

(Careful postscript: I know that Eve Online might not be a role-playing game in any strict sense, so if you plan to write a comment that amounts to that, consider writing "Your post made me go download Rakudo" instead. The Eve Online bit was mostly how I got to thinking along these lines in the first place.)

Carl Masak has been programming Perl since 2001. He found Perl 6 somewhere around 2004, and fell in love. Now developing November (a Perl 6 wiki), Druid (a Perl 6 board game), and proto (a Perl 6 package installer), Carl is a heavy user of and irregular committer to Rakudo.

Perl 6 has not missed the boat

| No Comments

A thread on Ubuntu Forums included the absurd assertion that Perl 6 has missed the boat.

This cannot be true, simply because there is no boat.

Perl 6 is not, and never has been, about capturing market share, or fitting a given niche, or becoming the pre-eminent tool of choice for a given problem area.

Larry says "Perl 6 isn't about missing boats, but about inventing airplanes."

I'm finally working on my "handy responses for Perl 6 sniping" cheat sheet. I'll post it soon!

My latest project to-do list

| 1 Comment

After I posted this this first time, I thought of a bunch of other things I have to do post-OSCON, and I've had to modify items from the first list.

Every year at OSCON I come home with a head full of ideas, and better yet, a huge list of new things to work on. Since the book is now done, and OSCON is now over, there's a chance I could work on them.

  • Ack plug-ins
    • I've been wanting to have plug-ins for ack for at least a year now, and I've connected with a number of people like Randy J. Ray who are on board to help me out. First task: Move it on over to github.
  • Coverity scans for Parrot
    • Met with David Maxwell of Coverity and he fired up the Coverity bot for Parrot, and now I have new niggling bugs to pick at. Plus, Parrot needs dependency building on the C files.
  • PR work for first big release of Rakudo
    • There will be the first major release of Rakudo in spring 2010, and I got some plans going with Patrick Michaud to figure how we were going to build up buzz for that. I also have the notes from Damian's Perl 6 talk which are a fantastic summary of Perl 6's cool new features.
  • Human Creativity
    • Julian Cash has been having Jos Boumans do all his Perl work for the Human Creativity project, but I offered up my services to do whatever he wants. Turns out the Julian is also working with Devin Crain, who I've known for years in an entirely non-geeek context.
  • Hiring horror stories
    • Got some great response to my talk on job interviewing, and as always the stories resound the most. I talked to a few people afterwards who said they'd give me some horror stories I can run on The Working Geek as instructive examples of how not to do things, and why they're so awful.
  • Play with R
    • I got a book on R from REvolution Computing that seems like a good introduction. Then I ran into Paul Huff at SJC and he gave me a crash course in graphing my book sales and Amazon ranking. Maybe I'll do some statistical coolness at work.
  • Play with NY Times' open APIs
    • Speaking of coolness at work, I've got some ideas on how to use the open API data for the NYT's best seller lists at my day job.
  • Text::Textile needs a CLI tool
    • My slides for Just Enough C are in Textile, and Brad Choate reminded me that we wanted to do a textile command-line tool in the package as a front-end to the module.
  • Anti-spam and Drupal updates for rakudo.org
    • rakudo.org is running straight Drupal, and we get a bunch of spam every so often. I meant to talk some Drupal folks out in SJC, but never did.

For those of you leaving OSCON, what tasks did you just assign yourself in the past week?

« July 2009 | Main Index | Archives | September 2009 »