Perl’s visibility and branding
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.
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 else1 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 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.
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
.mpm could be
introduced, which would enable warnings and strictness and
Perl::Critic warnings and other new features by default, while
.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.
- Oh, while we at it: did you know that Perl, Moose and Catalyst is used as a backend for a website with more traffic and CPU load than Google and YouTube? It’s called YouPorn, google it. It’s huge, it’s using the most modern Perl you can get. Also, booking.com and xing.com are huge sites running on Perl. ↩