In the recent days, several bloggers (including
chromatic)
have talked about Perl’s visibility in the world. Here are some thoughts of mine on Perl’s marketing and connected topics.
Self-referential promotion
I feel that most Perl marketing
strategies currently in use are misguided — they appeal to people already using Perl. First and most important, the Ironman blogging competition. Its
original aim has been “to promote the Perl language, and encourage
more people within the Perl community to promote the language to the
world outside the Perl echo-chamber”. I honestly still don’t
understand why blogging about Perl in a self-contained blogging system
has any influence on the people outside. Yes, we might actually get
higher Google rankings, but does it help Perl itself in any way? Only
people who are actively searching for Perl might find something
interesting, but they won’t until the thought of actually using Perl
arises. Instead, we should be writing articles and sending them to the
(online) magazines about general IT or general programming, not dedicated Perl magazines. Where’s that “Ironman Article of the Month”
prize I keep hearing about? We could use those articles for promoting Perl outside of its own eco-system.
The other proposal is placing “Made with Perl” banners all over your
website. Seriously, do I even need to mention why this is bad? Normal
people don’t give a damn about what technology your site is made
with. Do you see any “.NET FTW!” banners on stackoverflow.com? Any
“Proudly made with TextMate and Rails” buttons on GitHub? They are not
there, because they don’t matter to the visitors.
If we want more people to choose Perl for their projects, we need to
showcase Perl. Projects using Perl, be it DuckDuckGo or BBC or
anything else should be referenced
from one single place and this place should be the frontpage of
perl.org. Ruby on Rails’ front page
prominently presents sites using Rails,
Django has the same thing on the
front page, PostgreSQL has a “Featured User” front page
column. Catalyst on the other hand, just publishes some testimonials
by people without referenced project or company, perl.org has a huge
“20,000 CPAN modules” heading, which makes me feel like “20k of
what?”. Underneath a line “That’s why we love Perl”. Yeah, right, we
do, does the visitor? Such introductory websites should become more embracing and welcoming to the newbies
and not look like some kind of bizarre cult to them. This part of
self-promotion is extremely important, first impression counts.
Talking to others
When you talk to people about stuff you make in Perl, you mostly get
some condolencing faces and a question “Couldn’t you take Python or
Ruby”? Many other languages (just like Python or Ruby), have become
popular with a tagline “Obsoleting Perl”, because they all thought a
replacement was desperately needed. It doesn’t even matter that
current Perl is more flexible or better or faster or cleaner than
Python or Ruby or for that matter Perl itself from 2000. Perl has a
reputation, it has become a brand name, a brand name that has
negative connotations.
Have you ever watched Steve Yegge’s excellent branding
keynote? If not, you should do so
immediately. Even though he mentions Perl several times, another quote
should stay in your mind:
Who remembers GTE? [...] GTE was for some time the most
reviled brand. Why? [...] their infrastructure sucked and
their service sucked and everybody hated them. The word for
GTE in consumer's mind was "suck". [...] They've spent a
billion dollars upgrading their infrastructure and service
until they were actually the best in the United States. And
... the people still thought they sucked, of course. [...] The
problem is: [a brand] is a const identifier. [...] GTE was
like "we are screwed, our brand is in the toilet". So they
went to this marketing agency and they asked [...] "If your
service is bad today and perfect tomorrow, how long does it
take to change people's mind about your brand?" [...] And the
answer came back after much study that it takes *one
generation*. And the GTE was like "Screw that!" and changed
their name to Verizon.
This is exactly the situation Perl is currenty in. Most people
associate Perl with “scripting” or “system administration” if they
mean good or “ugly” or “write-only” otherwise. And since Perl has been
on the market for a long time, it’ll probably take a bit more than a
generation of new programmers to get away from that image. The bad
news are: very few new programmers will ever get a chance to see
Perl’s bright side — Java and PHP are just excellent at recruiting
newbies.
So we got to educate people about Perl as soon as it gets and show
them the good sides and compare it to Java and PHP and Python and Lua
etc. But in my opinion, there is one big problem with that: Perl 6.
Perl 6
Perl 6 actually warrants a separate rant about its whole structure and
design, but one thing is certain: it will have the same branding
problems as Perl 5. They should have called it “Rakudo” or “Parrot” or
anything else, just not “Perl” and it might have been (or maybe it
still will be) a successful language.
When you tell people there is a Perl 6 coming, which will be somewhat
incompatible to current Perl 5 and won’t have any of the libraries or
frameworks, you lose them immediately, since it’s not feasible to build
something new on an obsolete technology. Perl community can’t afford
not getting more people involved and it can’t afford waiting for Perl 6. It should rather use all the power it can to continue improving Modern Perl. A question still
remains whether Perl 6 will be needed at all if Modern Perl implements
all of its tasty features.
In a way, Perl 6 drama reminds me of another language which is “worth
learning [tm]” — JavaScript. Currently
implemented version of the standard is ECMAScript 3. The most recent
standard version is ECMAScript 5, released in December 2009. An
ECMAScript 4 has never been released, there has only been a draft of a
completely incompatible overhaul of the standard, which promised to
clean up the whole mess of browser scripting. Needless to say: it
failed miserably, in part because of a necessary complete
reimplementation and was replaced with backwards-compatible ECMAScript
5, which corrected the most obvious stupidities of the original
standard and made people happy enough. To me, ECMAScript 4 has a lot
of similarities to the aims of Perl 6, while ECMAScript 5 is more like
Modern Perl.
Marketing Modern Perl
In my opinion, Modern Perl is the only one that should be
marketed. Remember that GTE/Verizon example? While I think a new name
for Perl 6 is needed, it’s possible to create a new brand for
modern Perl 5 without completely sacrificing the name. How about
Modern Perl for an official name for Perl 5?
5.12 could be the last official Classic Perl version and 5.14 would be
Modern Perl 1.0. New filename extensions .mpl and .mpm could be
introduced, which would enable warnings and strictness and
Perl::Critic warnings and other new features by default, while
.pl and .pm would still trigger Classic Perl mode. Disturbing
features could be deprecated in the Modern Perl while retained in
Classic. New features could be tested out as CPAN modules and
officially introduced to the core in Modern mode.
I know it’s difficult on the compiler side. However, it’s a lot better than creating a complete new language over a decade and then creating
a whole new set of libraries over another decade. We don’t actually need a perfect language, which has all the bells and whistles and fixes all of the mistakes of the previous iteration, I think the 80%/20% rule should also apply to Perl. Continuous
improvement has done Perl 5 a lot of good in the last years and I think
this process should be continued. With a bit of luck, Perl will then be able to live on and innovate for the upcoming decades.
Related posts