-
Notifications
You must be signed in to change notification settings - Fork 13
Path to raku #89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Path to raku #89
Changes from 67 commits
07c423e
6b444bd
0b5402e
d71dc5c
bf7ab78
e5c5d42
7d0aab8
a79dde0
1ee0908
66daa4f
8d86f07
3c0fee6
7188f39
1c2ece9
e4461ed
985934b
e35a5ac
48793de
084ca0a
31a0038
92fd411
cfd072d
c5cb2c9
04108b1
9301d09
b9c597b
87d4343
535d778
dd6054c
d14804e
ce377bd
2f5794b
1b89762
2b237b5
f3d057a
6b00410
3118a7e
531b628
15a8451
a1e9c80
25916df
59d8608
2e477d6
2c7aeaf
a264ae4
62c083d
bcf6c87
235ae7d
6af3f53
115a260
dcd66a7
0dc6534
6b2ddf8
50f7697
998232a
50c14e2
24fddab
5789db0
01efd7e
813165e
3021673
52b02f8
b96dff1
749a9a2
7faff8b
9310222
9285582
90b8d0c
43a1c6d
6e7e625
e0185a4
9bcb834
69786a2
0de1d74
dd8dcd5
dc7f451
2d57afe
51890eb
4cad6d4
71e9405
7257d5e
e09f6c2
2d7b3f5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,348 @@ | ||
# The Path to Raku | ||
|
||
This document describes the steps to be taken to effectuate a rename of | ||
`Perl 6` to `Raku`, as described in issue #81. It does not pretend to be | ||
complete in scope or in time. To change a name of a project that has been | ||
running for 19+ years will take time, a lot of effort and a lot of | ||
cooperation. It will affect people in foreseen and unforeseen ways. | ||
|
||
## Language changes | ||
|
||
### .perl | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
The `.perl` method should be deprecated in 6.f, and removed in 6.g. It | ||
should be replaced by a `.raku` method, which will be specified in 6.e | ||
(Rakudo can provide for it as soon as implemented). This could be | ||
implemented by a global search/replace of `.perl` to `.raku` (both in | ||
method names and in calls) in `src/core`, `src/Perl6` and `lib`. A new | ||
`Mu.perl` method should be added that will later come to issue a | ||
DEPRECATED message, and then delegate to `.raku`. | ||
|
||
To retain compatibility with modules that declare a method `perl`, the | ||
default `raku` method should check if the type in question has a | ||
non-default `perl` method (that is, not the one from `Mu`) and, if so, | ||
call it. Once `.perl` is deprecated, it should issue the deprecation | ||
warning also. | ||
|
||
Renaming to `.code` currently clashes with `CallFrame.code`, visually clashes | ||
with the `.codes` method, and it being a generic name, probably also clashes | ||
with CPAN and DarkPan Perl 6 modules. | ||
|
||
### Perl and $*PERL | ||
|
||
`$*RAKU` and the `Raku` class will be the replacement of `$*PERL` and the | ||
`Perl` class, which initially will just be aliases. At a language boundary | ||
switch, they will become actual type declarations. | ||
|
||
### `PERL6LIB` | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
A `RAKULIB` environment variable will be introduced into a Rakudo release, | ||
and specified as part of 6.e. If found in the environment, it will be used in | ||
favor of `PERL6LIB`. From 6.f, use of `PERL6LIB` will issue a deprecation | ||
warning. | ||
|
||
### `PERL6_HOME` | ||
|
||
This was only very recently introduced, and is likely not in wide use yet. | ||
We could consider immediately replacing it with `RAKU_HOME` in an upcoming | ||
Rakudo release, perhaps with a short-term fallback/warning - or error - if | ||
it's missing, but `PERL6_HOME` is found. | ||
|
||
### Pragmas | ||
|
||
The `use isms <Perl5>` should **NOT** be changed to `use isms <Perl>`. | ||
Similarly `use Foo:from<Perl5>` and the `:lang` parameter to `EVAL` should | ||
not be changed as to allow more flexibility should the Perl 5 community | ||
decide on a name change as well. | ||
|
||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
### Versioning | ||
|
||
Because the next language release (6.e) may not coincide with | ||
the rename, no changes to versioning of the language need to be done. The | ||
next release *will* however be a Raku release, but should be otherwise | ||
completely compatible with previous releases. | ||
|
||
A new *language* version would be the opportunity to make the name change | ||
more widely known with associated marketing efforts. But this will *not* | ||
be with the next (monthlyish) release. | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Given we are no longer forced to have "6" in the version, there are now | ||
more options to do language versioning properly, and this aspect will | ||
need to be discussed separately at a later time. | ||
|
||
### NQP | ||
|
||
The acronym for NQP is Not Quite Perl. It stays that way, so no changes | ||
to documentation are needed. Generally, the MoarVM / NQP construct should | ||
not matter a lot for the average user. | ||
|
||
## Documentation changes | ||
|
||
Wherever `Perl 6` is mentioned in the documentation, this should be changed | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
to `Raku`. A mention of `Perl 6` in the glossary should remain, and maybe | ||
in the documentation of the `.perl` (to be renamed to `.raku`) method. | ||
|
||
A mention to `Perl 6` should only occur when a redirect from `docs.perl6.org` | ||
has been detected / or a special URL to redirect to has been followed (e.g. | ||
https://documentation.raku-lang.org/?from=perl6). | ||
|
||
JJ marked this conversation as resolved.
Show resolved
Hide resolved
|
||
## Website changes | ||
|
||
Websites that have `perl6` in their name, should redirect to their | ||
equivalent with a 301 (Moved Permanently). Some way should be devised that | ||
if someone is redirected, that a small explanation of the name change is | ||
offered and that the visitor is indeed at the place they were planning to | ||
be. | ||
|
||
## IRC Channels | ||
|
||
The IRC channels used by Perl 6 users on freenode (#perl6\*) will need to | ||
be renamed or closed / opened with the new name (#raku\*). New joins should | ||
be forwarded to the new channels. | ||
|
||
Colabti.org will need to be asked to log these channels, so that we can have | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
backlog again. Unfortunately, it appears to be too difficult to migrate #perl6 | ||
logs, so the same approach that was done when the #perl6-dev channel was | ||
created, will need to be followed. So searching the logs will need to be | ||
done on the old names. | ||
|
||
Further down the road, it would probably be a wise idea to make IRC channel | ||
logging one of the infrastructure tasks. | ||
|
||
## External references | ||
|
||
Many places on the Internet refer to `Perl 6`. These references will need | ||
to be changed to `Raku`, with a small explanation of the name change. This | ||
should be a coordinated effort to avoid duplicity of work, and to make sure | ||
that the explanation of the name change is consistent. | ||
|
||
Many sites, such as Reddit and StackOverflow, use implicit / explicit `perl6` | ||
tags. These will need to be changed or have a `raku` tag added, possibly | ||
with cooperation of the administrators. It should be prevented that "Perl 6" | ||
all of a sudden becomes hard to find on these sites. | ||
|
||
Sites such as PerlMonks appear to be really `Perl` (aka `Perl 5`) focused, | ||
and could possible make that clear in their description, or change their | ||
description to specifically include `Raku`. It would look like the | ||
`/r/perl` Reddit description can be changed to indicate that only `Perl 5` | ||
questions are on topic there. | ||
|
||
## Technical changes | ||
|
||
All technical changes should make sure that all existing scripts continue | ||
to work without change in the foreseeable future. Additional DEPRECATED | ||
messages will be introduced at point of a 6.e language change. | ||
|
||
### Executables | ||
|
||
As some packagers have already done, the executable should be called `rakudo`, | ||
since `rakudo` is the name of the implementation. `raku` and `perl6` should | ||
be symlinks. If at all technically possible, running a script using the | ||
`perl6` as the executor should provide a DEPRECATED warning at some point. | ||
|
||
### Extensions | ||
|
||
The extension `.rk` for scripts, `.rkm` for modules, and `.rd` for | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the light of extension discussion, can we add one last thing here: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. See #101 (comment). My understanding is that we should keep using .t, and encourage people to put the right shebang (one that has There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shebang won't help those poor things which solely rely on file extensions. For example, I'm currently bound to Atom. Kind of. Because when I need to edit Perl5 code I use Vim because Atom can only work with either perl5 or perl6 module but no both at the same time. The reason? Both claim for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @vrurg seems like something specific to atom that is fixable, see https://discuss.atom.io/t/can-atom-interpret-my-bin-bash-shebang/47234. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @AlexDaniel the point is that only one of perl5 or perl6 package can be active at any given moment, not both of them. So, there is no use for detecting shebang if there is no language to bind to. Besides, intelliJ doesn't allow file type switching whatsoever. So, you either see There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree with some others that the filenames should not be part of this pull request, and are better left to another place, where we can have a nice listing of possibilities and decide which out of those we think work best. Or this could be changed to just be suggestions for filenames.
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
documentation (POD6) will become the defacto standards for files containing | ||
`Raku` code or documentation. The old `.pm`, `.pm6` and `.pod6` extensions | ||
will continue to be supported for 6.e. In 6.f, the `.pm`, `.pm6` and `.pod6` | ||
extensions should be marked as DEPRECATED, causing a message to be generated | ||
JJ marked this conversation as resolved.
Show resolved
Hide resolved
|
||
when the module is loaded. | ||
|
||
On Windows, installers should add a `.rk` association alongside the `.p6` | ||
association for the time being. Around the time of 6.f, a `.p6` association | ||
could be deselected by default, and perhaps dropped entirely by 6.g. | ||
|
||
### Testing | ||
|
||
Roast continues to be the specification of the language. Only the name | ||
of the language it specifies, changes. Internal references to `Perl 6` | ||
will need to be changed. | ||
|
||
## Mascot | ||
|
||
Camelia will remain the mascot. The only thing that should change there | ||
is that it is the mascot of `Raku` rather than `Perl 6`. The fact that the | ||
wings contain a "P" and a "6" is obscure enough to not be an issue, and could | ||
be seen as a lasting tribute (easter egg) to the origin of "Raku". | ||
|
||
## Marketing changes | ||
|
||
Renaming `Perl 6` to `Raku` is an event that should be used to get maximum | ||
marketing result. This will need `Raku` marketing materials. Announcement | ||
should be coordinated, e.g. by a blog post on `opensource.com` or similar | ||
outlets, followed up by links on the various social media outlets, such as | ||
Twitter, Facebook, Hacker News, Reddit, etc. | ||
|
||
Specific attention should be given for the announcement of Raku in non-latin | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
script countries (such as India, Japan, China, Taiwan) by making sure any | ||
announcements are also translated into appropriate languages for these regions. | ||
Raku, with its more than excellent Unicode support, should be able to make a | ||
big splash for developers in those regions. | ||
|
||
## Social Media | ||
|
||
Users who want to blog about `Raku` are suggested to always at least mention | ||
`Raku Programming Language` in their blog post, or in the boilerplate of their | ||
blog posts. Mentioning of `Perl 6` in such blog posts is **discouraged**, | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
unless the blog post is actually about the renaming process or historical | ||
matters. | ||
|
||
When using social media that use hash-tags, users are suggested to use the | ||
`#raku-lang` hash-tag, and **not** use the `#perl6` hash-tag, unless the | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
post is actually about the renaming process or historical matters. | ||
|
||
Of course, the same applies to more official social media usage by the core | ||
development team. | ||
|
||
## Ecosystem changes | ||
|
||
From the standpoint of users, there should not be any change: `zef` should | ||
continue to do what it does. The information about what is in the ecosystem, | ||
is not related to the "perl 6" name at the moment, so does not need any | ||
change either. | ||
|
||
On PAUSE, Perl 6 distributions are automatically uploaded to a "Perl6" | ||
subdirectory, but this is completely transparent to both the author as well | ||
as anything else that needs to look at that as long as a file `META6.json` | ||
exists in the distribution. So for the foreseeable future, no changes will | ||
be needed there. | ||
|
||
Should PAUSE decide to no longer support `Raku` modules in its system, then | ||
alternatives will need to be found and/or implemented. | ||
|
||
## Effects on modules in ecosystem | ||
|
||
A guide for existing module developers will be provided, which will offer | ||
suggestions of what to do about the rename. If we can generate PRs that's | ||
perhaps also helpful, though we might want that to be opt-in: authors with | ||
a load of modules might be unpleasantly surprised to wake up one morning | ||
to an inbox full of PRs. | ||
|
||
Such a guide should help authors with modules that either mention "perl6" | ||
or "p6" in their repo name, or mention "Perl 6" in their documentation. | ||
|
||
A proposed draft of such a guide is included at the end of this document. | ||
|
||
## Effects on running sub-projects | ||
|
||
Projects, such as Comma and Cro do not need any notifications, but other | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
sub-projects may need to get advance notice. An inventory of these | ||
sub-projects will need to be made, and their maintainers be notified | ||
individually, rather than through social media. This is both to stress | ||
the urgency for a change, and to be able to present a "clean slate" to the | ||
general public when announcements about the name change *are* made through | ||
social media. | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Effects on books | ||
|
||
Currently printed copies of books will probably need a sticker like "Covers | ||
the new exciting Raku programming language). | ||
|
||
Perl 6 books that have been open sourced, can be adapted by the community or | ||
the original author: a "Migration Guide for Book Authors" should help authors | ||
with this. Since ebook sales currently outperform printed books by an order | ||
of magnitude, preparing another version of an ebook should be a relatively | ||
small effort, which can actually be distributed among many individuals using | ||
modern source control techniques. | ||
|
||
## Effects on the Perl community | ||
|
||
There is a (small) part of the Perl community that welcome the rename, as they | ||
don't want anything to do with the language and are glad to disassociate it | ||
from the Perl name. There are community members with an active interest in | ||
both Perl 5 and Raku, and some of those who only do one or the other still | ||
feel there is much to be learned from, and shared with, each other, especially | ||
given the many shared design values of the languages. | ||
|
||
The name change of `Perl 6` to `Raku` is also intended to have a healing | ||
effect on a community that has been effectively split for many years. | ||
It is the hope of the Raku core development team that future events will | ||
continue to cater for both `Perl` as well as `Raku` presentations. | ||
|
||
## Effects on user groups | ||
|
||
Each Perl user group (Perl Monger group) will have to decide for themselves | ||
what they want to do with this new situation. More active groups in the | ||
past years, have started using the services of online meeting organizers | ||
such as MeetUp. To indicate the changed situation, it may be a good idea | ||
to change the names of such groups, e.g. from "Foo Perl Mongers Meeting" to | ||
"Foo Perl Family Meetup" or "Foo Perl Community Meetup". Should a user | ||
group decide to only focus on `Perl 5` or `Raku` only, then they are of | ||
course open to not change their name, or to change it to something like | ||
"Foo Raku Meetup". This could coincide with the official announcement, | ||
and maybe special events to celebrate the name change. | ||
|
||
## Effects on events | ||
|
||
Event organizers are, as always, completely free in the naming of their events. | ||
If an event would like to cater for both `Perl` and `Raku` attendees, then | ||
this should be reflected in the name of the event. An event with just `Raku` | ||
in its name, would appear to cater only for attendees interested in `Raku`. | ||
An event with just `Perl` in its name, would appear to cater for attendees | ||
interested in `Perl 5` only. Suggestions for naming events are (where "Foo" | ||
is a place / country name): | ||
|
||
The Foo Perl Community Workshop | ||
The Foo Perl Family Workshop | ||
The Foo Perl and Friends Workshop | ||
The Foo Perl and Raku Conference | ||
The Foo Raku and Friends Workshop | ||
|
||
etc. etc. | ||
|
||
## Relationship with The Perl Foundation | ||
|
||
No changes should be necessary with regards to the relationship with The | ||
Perl Foundation. But this is mostly up to The Perl Foundation. A suggestion | ||
would be to make the website of The Perl Foundation more general: a Perl | ||
Family. With equal attention for Perl, Raku, RPerl and CPerl, and emphasis | ||
on continued development on all projects. | ||
|
||
Should The Perl Foundation decide to not want to have anything to do with | ||
`Raku`, only then should an alternate organisational support be discussed. | ||
|
||
However, since "Yet Another Society" is doing business as "The Perl | ||
Foundation", maybe it is an idea to create another "doing business as" | ||
called "The Raku Foundation". Which would make it clear that "The Perl | ||
Foundation" is for Perl 5 only, whereas "The Raku Foundation" would be for | ||
Raku only. While both are part of the Perl Mindset in the "Yet Another | ||
Society". | ||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Draft guide for module developers | ||
|
||
The Raku team are grateful to all those who have developed modules for the | ||
language. We recognize that most contributors are doing so on a volunteer | ||
basis, and that this work is often done in one's (lack of) free time. | ||
|
||
This guide provides some suggestions on how module authors can handle the | ||
Perl 6 to Raku renaming. While there is a suggested timeline here, it is | ||
to be interpreted as "at your convenience", rather than an expectation to | ||
do these things quickly. | ||
|
||
### In the period immediately after the rename is agreed... | ||
|
||
You might consider: | ||
|
||
* Mentioning Raku in your module's README or other documentation. It's up to | ||
you if you wish to have something like "Raku (formerly Perl 6)", to stay | ||
findable for such searches for some time, or to simply adopt the Raku name | ||
right away. | ||
* Renaming the GitHub repository if it contains `p6` or `perl6` (remember to | ||
update the `sources` entry in `META6.json` if doing this). | ||
|
||
In this interest of your module continuing to work with existing Rakudo | ||
installations, please *do not*, at this point: | ||
|
||
* Change module file extensions away from `.pm6` | ||
* Rely on `.raku`, `Raku`, `$*RAKU`, and similar | ||
|
||
### Around the release of 6.e... | ||
|
||
This is expected to happen in 2020. At this point, you might consider: | ||
|
||
* Changing module file extensions (remembering to update `META6.json`) | ||
* Switching to use `.raku`, `Raku`, `$*RAKU`, and similar in the module's | ||
code (most modules will not be doing this anyway) | ||
* Dropping remaining mentions of Perl 6 in the documentation, unless it is | ||
there for historical interest |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# SWOT analysis of renaming Perl 6 to Raku | ||
|
||
## Strengths | ||
|
||
- removes the confusion that Perl 6 is Perl version 6 (a new version of Perl). | ||
- frees up higher versioning of "Perl" | ||
- no longer linked to bad reputation of "Perl" | ||
- removes source of Perl community stress | ||
- is a cool name that should appeal to younger people | ||
- name should better appeal to non-english native speakers | ||
- should be easier to get distinctive TIOBE rating | ||
|
||
## Weaknesses | ||
|
||
lizmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- will *still* be linked to "Perl" because of historical connection | ||
- Perl 6 books will not know of name change, and thus continue to "squat" | ||
- Perl 6 blog posts will not know of name change, and thus continue to "squat" | ||
- may be hard to find using search engines, at least initially | ||
- must start with TIOBE rating from scratch | ||
- in social media, #raku as a tag is overloaded with Japanese pottery meaning | ||
|
||
## Opportunities | ||
|
||
- could be considered a brand new language, and thus more interesting to some | ||
- should re-invigorate development | ||
- should re-invigorate marketing | ||
- with better branding, should be able to get easier sponsorships / grants | ||
- may get core developers who have left, back into the core team | ||
- could be marketed as a programming language without corporate backing, and thus free from corporate influencing / agenda | ||
- could be marketed on its own, with its own strengths, such as multi-paradigmity and concurrency, as well as coverage of the Unicode standard | ||
- could be marketed as the 100-year language properly | ||
- current Perl 6 books could be updated while changing the name | ||
- current Perl 6 blog posts could be better marked with TIOBE tag (as they presently are not tagged correctly in general) | ||
- reworked documentation could have *all* pages properly TIOBE tagged | ||
- in social media, use new, distinctive #rakulang tag | ||
|
||
## Threats | ||
|
||
- may lose current users | ||
- may lose current core developers | ||
- may lose current book writers | ||
- may lose support from local Perl user groups (PerlMongers) | ||
- may lose support of organizations such as The Perl Foundation, EPO, YEF | ||
- may be made fun of as the language that cannot make up its mind | ||
- may cause incompatibities / breakage that will reflect badly on overall image | ||
- could drain critical mass from Perl 5 events | ||
- could drain critical mass from Raku events | ||
- may not get enough traction to grow anyway |
Uh oh!
There was an error while loading. Please reload this page.