October 2018 Archives

Perl 6 Advent Calendar 2018 Call for Authors

Read this article on Rakudo.Party

Every year since 2009, the Perl 6 community publishes a Perl 6 advent calendar, in the form of blog posts on perl6advent.wordpress.com.

To keep up this great tradition, we need 24 blog posts, and volunteers who write them. If you want to contribute a blog post about anything related to Perl 6, please add your name (and potentially also a topic already) to the schedule, and if you don't yet have a login on the advent blog, please tell Zoffix or someone on #perl6 IRC chat your email address so that they can send you an invitation to Wordpress for the site.

Perl 6 advent blog posts should be finished the day before they are due, and published on midnight (UTC) of the due date as publishing date.

If you have any questions, or want to discuss blog post ideas, please join on the #perl6 IRC channel on irc.freenode.org.

A Request to Larry Wall to Create a Language Name Alias for Perl 6

Read this article on Rakudo.Party

I (Zoffix Znet) am writing this document to Larry Wall to request the creation of a second name for the "Perl 6" language. This name is not a rename of the language, but is simply an alternative name, an alias. Similar to how TimToady is an alias for Larry Wall.

It's been a year and a half since the time when I first re-opened this issue with a blog post, and in this document, I compiled the argumentation for creation of the alias, the community suggestions for what that alias might look like, along with the observations of discussions on the topic that occured during that time period.

I ask that Larry Wall renders his decision on the alias by November 1, 2018, so we would have the time to create proper informational materials for the 6.d language release, during which time, the name alias would be officially announced, if one is chosen.

Community Alias

The original idea for the alias came in the form of creating a "marketing alias", for markets where Perl "is a swear word." However, I believe such an alias has a more immediate application closer to home, by improving the wellbeing of the existing community and the interactions of its members with other programming communities, including the Perl 5 community.

The idea of Perl 6 was birthed in the form of the community rewrite of the Perl language. This name alias, then, is the Community Alias for that language.

Reasoning for Alias

The current language name "Perl 6" comes with a set of built-in assumptions that do not apply either to the language or to currently-available compilers for it. The assumptions encoded in the name are:

  • It is similar to earlier Perl language (and thus comes with all the negative connotations attributed to it)
  • It is the next version of Perl language
  • It is faster, more stable, and "better" than earlier Perl language

In reality, what we have is an entirely brand new language. Different, and with all the caveats typical of brand new software.

Similarity

Other than the "spirit" some claim the Perl 5 and Perl 6 languages share, they're dissimilar in many ways.

$ perl  -e 'print "I am a Perl ", "0" && 6||5, " program\n"'
I am a Perl 5 program
$ perl6 -e 'print "I am a Perl ", "0" && 6||5, " program\n"'
I am a Perl 6 program

In Perl 5 you choose your own OO system, concurrency/parallelism system, your list processing utilities, etc; in Perl 6, many of these features are a large part of the standard language itself. In Perl 5, you're told to never use threads; in Perl 6, even an empty program is multi-threaded (JIT runs on a separate thread). In Perl 5, lists autoflatten; In Perl 6, they don't and you have a choice of multiple core list types.

Thus, we lose on two fronts: those who love Perl 5 and come to Perl 6 get disappointed because they get a different language; and those who hate Perl 5 never bother trying out Perl 6, assuming it's the same language they hate.

Next Version

The naming of "Perl 6" has a strong suggestion that "6" is the version number rather than a part of the name. Some suggested it's easy to explain this caveat of naming, but my personal experience was quite the opposite of that. First, it's hard to wedge this information during a real-time meatspace conversation:

— What are you working on?
— Writing an AI for a game in Python.
— You?
— Hacking on Rasperry Pi with C.
— You?
— Making a media center for my car in Perl 6. YES. YOU MAY HAVE HEARD OF PERL, BUT PERL 6 IS NOT PERL BUT A RELATED LANGUAGE.
— ...

Second, even after you make that clarification, people still continue to shorten the name to just Perl ("You're the Perl guy, right?"). Moreover, some media, such as banners and posters, often do not allow for adding a suitable clarification.

Lastly, similar shortening of the name occurs with some software, such as DuckDuckGo search engine producing results for Perl 5 instead of Perl 6 when searching for "perl6 argv".

The biggest issue here, however, is the relationship with the Perl 5 community. The mere existence of a "Perl 6" language paints Perl 5 as obsolete. While the Perl 6 community has to make clarifications to distance itself from Perl 5's negatives that don't apply to Perl 6, the Perl 5 community must make the same clarifications just to convince people they're not dead. This brews understandable animosity towards Perl 6.

The Perl 5 language is effectively blocked from releasing the next "major version", because Perl 6 is squatting on it. And were Perl 5 to release a "Perl 7", that would immediatelly paint Perl 6 as obsolete. The lack of any established alternate names leaves Perl 6 vulnerable to such a scenario.

Thus, we have three community issues: difficulty for community to explain what language they're using; difficulty for community to find information about the language; and difficulty of amicable existence beside the Perl 5 community.

Speed and Stability

The Christmas release of Perl 6 came with a caveat that it's the language spec that's stable now, and the compiler itself needed more work. That is exactly the sort of a caveat you'd expect to come with a brand new language.

However, our brand new language is not named that way. The current name suggests it's the next version of Perl and thus it should be slightly different, and faster and more stable. None of which is currently true. By using the name to associate ourselves so closely with Perl 5, we effectively set a performance target to surpass. Yet, due to how new our language is, there is still a lot of work needed to reach that target, and due to significant differences between the languages, some of these targets might not be met when comparing exactly the same constructs (e.g. Perl 6 regexes produce a much more complex data structure—a tree of Match objects).

Thus, by mislabeling our brand new language with a next-version language, we suffer disproportionally when our compiler does not perform as well or is not as stable as a well-established language.

Summary

In summation, the name "Perl 6" is a misrepresentation. It's a wrong label on a can. It causes friction within the broad Perl community and confusion or difficulty when communicating with those outside the Perl community.

It sets incorrect expectations of performance, stability, and features of the language.

It is detrimental to our future.

No Full Rename

While numerous members of the community would have liked to see a full language rename, there are also those who believe a full rename would be detrimental. The full rename at this point in time is also a lot more challenging due to the existence of books, websites, documentation, environmental variables, and dynamic variables in the language—all with the name "Perl" in them.

As such, we are creating an alias only. One that does not have any reference to Perl in it (i.e. no "Perl++"). If another name is truly as superior as the full-rename proponents claim it would be, I believe the alias can become a defacto name through its sheer amount of use. Thus, the creation of the alias can be seen as a means for the full-rename proponents to prove their claims.

References

What follows are references to real-world examples of confusion and problems due to the current name, additional community discussions on the naming along with suggestions for what that name can be, and other resources relevant to the topic.

Naming Confusion

The (parentheticals) indicate what issue was encountered in an item. The issues refer to issues examined in Reasoning for Alias section above.

Naming Suggestions

Other

Conclusion

With the 6.d release around the corner, we have approached the point where a direct request to Larry Wall is made with the matter of assuaging the problem of the naming of the language.

Through a year and a half worth of discussions, we came to a conclusion that a second name to the language should be created, as opposed to a full rename. This will let the proponents of a rename to prove their claims, without severely upsetting those who believe the current name is beneficial.

This document presented argumentation for why a second name is beneficial, as well as compiled the discussions and suggestions that occured during that year and a half.

It is now up to TimToady to reach the final decision on whether the official alias is to be created during the 6.d language release and what that alias is to be.

See you at the 6.d release party! Bring your own virtual beer.

About Zoffix Znet

user-pic I blog about Perl.