Moving Perl up the value chain

The last year or so, there’s been a serious discussion in the Perl community about “the M word” – marketing. About visibility, making good impressions and making more people consider Perl as a good programming language for their tasks at hand.

Lots of good things have happened, including the establishing of the TPF marketing committee, volunteer stands at non-Perl conferences, and more focus on the brilliant parts of what the community and it’s software can offer. It’s been great watching all the goodness unfold, and being part of some of it.

But in the meantime, something else has been bugging me.

All the time, there’s been a focus on tools and people. When it comes to solving actual and real life problems, not much has surfaced. Instead there’s an unspoken focus in the Perl community about making tools that help people make tools.

What we do at the moment is marketing tools-for-making-tools. We tout the obvious superiorities of Moose, Catalyst, POE and all the other goodies in Task::Kensho, but when it comes to solving actual and real problems that “normal” people care about (you know, the people that don’t care about the details in computers), we blissfully ignore it while silently hoping for some big company to choose Perl for their next public project – so we eventually can get a new website to link to.

I propose we do something about this. Let’s pick a few real and significant problems, and see if we can make an impact on those while using and showing off Perl software, the Perl community and all that is good about it at the same time.

To kick this off, let’s ask a few basic questions.

  • What are “real” problems? – Read the news! You’ll find people complaining about education issues, lack of clean water, political turmoil, misuse of power, corruption, closed “power clubs,” democratic deficit in government, etc. etc.
  • Also, consider the prevalence of a problem. Local < Regional < National < Societal < Cultural < Global < Biological. – There’s nothing wrong with a little ambition!
  • And finally, is it a particular or a systemic problem? Is it short-term (critical) or long-term (chronic)? Can you find similar problems in other areas?

Picking a good problem to play with is very much up to you. Pick something you care about that you know is difficult, and pick something that lots of other people care about too but that can’t be solved trivially. Maybe you want to make a quick risk assessment matrix to figure out if your issue is “real” enough? (and even if not, it’s probably useful to remember that $risk = $likelyhood_of_failure * $impact_of_failure; anyway.)

Next, you have to make figure out a way to improve on the situation. Keep in mind that $influence = $visibility * $impact; – meaning whatever you do, you have to both think about execution and telling people about what you’re doing. Make a plan, and tell people about it! The rest is “just” hard work. ;)

With that said, if you’re going to make Perl part of any solution, it might be useful to have an idea what role Perl can have in the process. Here’s one possible (and quite generic) value chain:

  1. Perl
  2. ➜ CPAN
  3. ➜ $USEFUL_FRAMEWORK (A tool for making tools) # This is where we code today
  4. ➜ $TOOL_THAT_INCREASES_AWARENESS  # This is where I think we should code more
  5. ➜ Discussions and awareness building, eventually in media
  6. ➜ Discussions among politicians
  7. ➜ Some kind of funding in order to improve issue
  8. ➜ Someone tries to actually do something
  9. ➜ Success/FAIL/Meh.

Also, keep in mind that Perl is useful in places where data, information or knowledge is the main currency or “item of value.” Perl tools might not help directly with “physical” matters, but I’d say it’s much better suited for improving communication and knowledge-related issues.

So, you ask: How about an example?

I’m so glad you asked! ;)

My attempt at this is called Kaizendo.org, and it’s purpose is to enable people to create textbooks that can be customized to the individual needs of the reader.

To make this happen, we’re creating a Catalyst-based tool for discussing and improving texts that have aspects – texts that have alternative representations of themselves, each telling the same story but in different ways. If a pupil is struggling with dyslexia, then choose an aspect where the story is told with simpler, shorter words. If a pupil is bored because the rest of the class is slower at reading, then choose an aspect where the story has more details and depth, so the pupil can keep the same pace as the class while getting more interesting content out of it.

What would I like to influence with this?

  • Make textbooks more interesting for kids, so they can effectively (and motivationally) compete with professionalized entertainment like games, social networks, television and other kinds of procrastination. (How? By making it possible to write aspects that appeal to different fields of interests, and improve these based on reader feedback.)
  • Give teachers the opportunity to use their textbooks more actively in the way they teach their classes. Textbooks are today for homework, why not make the homework more relevant for what’s going on in the classroom? (How? By making it possible to write aspects that support different styles of teaching)
  • Make the textbooks a conversational item, so pupils, teachers parents and other enthusiasts can not only figure out the best ways of telling a story, but also learn and improve their own level of knowledge by allowing them to discuss and improve the contents of the textbook. (How? By allowing anyone who cares about the textbook content to give contextual comments to the text itself, discussing these, and finally make it easy for the authors to update the text based on those discussions.)
  • And quite a few other things. ;)

The project is up and running now, and we’ve started writing the prototype, we have a mailing list and wiki, and I’ll even be giving a talk about Kaizendo at YAPC::EU in Pisa. But we’re still far away from our goal, and we need plenty of help.

So, if you like what I’ve written here but don’t want to start your own Big Project That Matters, then do consider joining our project. In the meantime, tell me what you think!

5 Responses to “Moving Perl up the value chain”

  1. szabgab says:

    I very much agree that it would be nice to see more higher level Perl application solving problems for real people not just for other programmers. I just don’t think the chain needs to be dealt with sequentially.

    BTW a link to this was posted to SF.pm and there was a nice example for some real world usage of Perl: http://mail.pm.org/pipermail/sanfrancisco-pm/2010-July/003037.html

  2. @szabgab: Of course, all links in the chain need to be dealt with. My point was more that success with the “lower” links require (or at least benefit from) success with the links “further up”.

    Right now, my impression is that the upper bits have reached a level of maturity that they don’t need as much attention (read: bugfixes, features, coding) any more, and that the 5%/10%/whatever% of attention that is freed could be used for solving Real World problems.

    I have no illusions that Perl and it’s communities and ecosystem ever will be “finished” (much in the same way the english language never will be “finished”) but if we start spending some time the Real problems, we’ll both get the opportuntiy of helping people and show off Perl to the same people and others. :)

    Having said that, I’m (almost painfully) aware that the 4th chain ($TOOL_THAT_INCREASES_AWARENESS) is where you find most businesses today. This might mean 1) it’s difficult to recruit volunteers, since they might already be employed, and 2) if one succeeds anyway, there’s probably a business opportunity somewhere there :D

  3. [...] This post was mentioned on Twitter by chromatic, Salve J. Nilsen. Salve J. Nilsen said: Moving #Perl up the value chain. http://is.gd/dAVsU [...]

  4. [...] Moving Perl up the value chain « Code = Conversation [...]

  5. zby says:

    The other day in “Start Up Weekend and the technology they need” (http://szabgab.com/blog/2010/07/1279430256.html) by a fellow commenter here I’ve read:

    When talking about developers the mostly requested experinces were these:

    Facebook developer
    Drupal and/or PHP
    Django and/or Python
    Android meaning Java
    iPhone meaning Objective C

    And I have to admit that my experiences from similar meetings are very close to this. Now we can filter out Android and iPhone – because this is certainly out of reach. What is left is

    1. Facebook. A friend of mine who works in marketing has been nagging me for a long time to start writing simple apps for Facebook, apparently the market for them is exploding. Unfortunately when I tried WWW::Facebook::API – it did not work for me, most probably because of a recent Facebook API upgrade. I’ve contacted the author and he is looking for a replacement, Facebook is changing the API constantly and he cannot keep up (his current work is not Facebook related). I think this is symptomatic – Perl tools, whole CPAN and web hosting with Perl is not aimed at such ’simple apps’. Developers like to talk about huge sites like Amazon that use Perl, but the market share of such sites is tiny when you compare it to the market share for ’simple apps’ – long tail, low-end disruptive innovation ( http://en.wikipedia.org/wiki/Disruptive_technology) et all.

    2. Drupal – same case, easy to start with tool. With minimal upstart costs you can have a ’social site’ to market your product. In Perl word the analogy could be WebGUI – but hosting experiences are dramatically different.

    3. Django – yeah I know – Catalyst. I cannot make the comparison here as I don’t know Django much (but I do have much criticism for Catalyst – otherwise I would not have started WebNano).

Leave a Reply

You must be logged in to post a comment.