Skip to content

Commit

Permalink
Initial version of the name change PR
Browse files Browse the repository at this point in the history
Please note, this is only the initial version of the PR, intended for
internal discussion / augmentation before being turned into a real
("draft") PR, for wider discussion / voting.
  • Loading branch information
lizmat committed Aug 13, 2019
1 parent c7e568b commit 07c423e
Showing 1 changed file with 147 additions and 0 deletions.
147 changes: 147 additions & 0 deletions PATH-TO-RAKU.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# 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.

The "Velvet Divorce" could serve as a model on how to treat this.

## Language changes

The `.perl` method should be deprecated in 6.e, and removed in 6.f/g. It
should be replaced by a `.code` method. This could be implemented by a
global search/replace of `.perl` to `.code` (both in method names and in
calls) in `src/core`, `src/Perl6` and `lib`. A new `Mu.perl` method should
issue a DEPRECATED message, and then call `Mu.code`.

This comment was marked as outdated.

Copy link
@taboege

taboege Aug 13, 2019

Member

The .code method already exists in some classes (e.g. CallFrame) and could conceivably be used in modules. Why not rename .perl (print this so that perl6 instands it) to .raku (print this so that raku understands it)? I see no reason not to, except that we're not yet used to it referring to a language :-)

This comment was marked as outdated.

Copy link
@nxadm

nxadm Aug 14, 2019

For me, the .code method makes more sense to me than .perl or .raku. It's name is more universal and therefor more easily understood. There is no need to be self referential here.

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

👍 on .code. But we need to add changing the already existing .code methods to something else. It's actually only in two classes, so it wouldn't be a big deal.

This comment was marked as outdated.

Copy link
@AlexDaniel

AlexDaniel Aug 14, 2019

Member

I agree with @nxadm. .code just feels better to me, but the fact that .code method exists in other classes is kinda unfortunate :S

This comment was marked as outdated.

Copy link
@taboege

taboege Aug 14, 2019

Member

Yeah, .code is nicely generic, I like that too. But that is why a .code attribute is meanwhile also used by module authors (← contains a sizable amount of false positives) to denote:

  • HTTP status or native library error codes,
  • BSON type byte,
  • XML source code,
  • callbacks.

So .code vs. .raku vs. … also needs to be weighed against the

[...] existing scripts continue to work without change

part in "Technical Changes". .code means some unbitrotting, .raku doesn't.

This comment was marked as outdated.

Copy link
@vendethiel

vendethiel Aug 15, 2019

Member

Clearly should be .EVAL-able ;-).


## Documentation changes

Wherever `Perl 6` is mentioned in the documentation, this should be changed
to `Raku`. A mention of `Perl 6` in the glossary should remain, and maybe
in the documentation of the `.perl` (to be renamed to `.code`) method.

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

We'll need to open an issue for this. It might be more extensive than that, including the fact that we need to change. We can add an issue for this in the doc repo, and work on that.

## 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.

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

In the case of documentation, we might want to keep the two sites at the same time for people that keep using old versions of perl 6. We would do this redirect eventually, in a 1-2 year time frame.

## External references

Many places on the Internet refer to `Perl 6`, e.g. Wikipedia. These
references will need to be changed to `Raku`, with a small explanation of
the name change.

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.

Sites such as PerlMonks appear to be really `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 (with optional DEPRECATED
messages where appropriate).

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

Will we keep using the "use v6;" pragma? After all, there's no way to mistake raku for perl now.

### Executables

As some packagers have already done, the executable should be called `raku`.

This comment was marked as outdated.

Copy link
@vrurg

vrurg Aug 14, 2019

Contributor

I think it would be a good time to take care of executable name in another aspect. Rakudo must not occupy raku name if we really anticipate other compilers for the language. It must install as rakudo and optionally symlink to raku.

This comment was marked as outdated.

Copy link
@nxadm

nxadm Aug 14, 2019

Every implementation can supply a raku executable (it's actually an implementation of raku). Package managers and the 'alternatives' system can the select which one will be the first in PATH. This is pretty much how Java and python implementations work.

This comment was marked as outdated.

Copy link
@vrurg

vrurg Aug 14, 2019

Contributor

My point was to make the life of package managers easier.

With symlinks / hard links added as appropriate to keep the old executable
names working. 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, and `.rkm` for modules, will become the

This comment was marked as outdated.

Copy link
@vrurg

vrurg Aug 14, 2019

Contributor

There was a move to use .t6 for tests. Considering that some IDEs/editors determine file type exclusively by the extension and do so not even project-wide but system-wide (i.e. whatever is project's main language, .t would always be treated as, say, perl5), I think a proposal for this extension would make sense too. .rkt belongs to Racket language. .tr perhaps?

This comment was marked as outdated.

Copy link
@FCO

FCO Aug 14, 2019

Contributor

.rt?

This comment was marked as outdated.

Copy link
@vrurg

vrurg Aug 14, 2019

Contributor

.rt reminds of RealTime Player. Yet, .tr follows the patter of .t6. But that's very minor question, I just wanted it to be mentioned, not resolved yet. :)

This comment was marked as outdated.

Copy link
@Grinnz

Grinnz Aug 14, 2019

.t is a funny extension. It is not perl-specific to begin with - it can technically be any language that is given in the shebang or by the program that is expected to run them. But Perl and Raku do seem to be highest users of it. The only harm of reusing .t in my opinion is that editors and GitHub have a hard time classifying what language they belong to. Personally I have no qualms with multiple languages using .t, provided they are okay with that potential problem.

defacto standards for files containing `Raku` code. The old `.pm` and
`.pm6` extensions will continue to be supported for 6.e. In 6.f, the
`.pm` and `.pm6` extensions should be marked as DEPRECATED, causing a message

This comment was marked as outdated.

Copy link
@AlexDaniel

AlexDaniel Aug 13, 2019

Member

There's also .pod6 extension that we currently use. It has both “pod” in it, which really doesn't mean much to most people, and the 6 which will be mostly obsolete after the rename. Maybe .rakudoc? A bit too long, but it seems to work fine for .asciidoc so why not… I don't know. I think it is also possible to defer it for now.

This comment was marked as outdated.

Copy link
@Grinnz

Grinnz Aug 13, 2019

The documentation format is also called Pod 6, so it should probably be coordinated with whether that name is changed.

This comment was marked as outdated.

Copy link
@Grinnz

Grinnz Aug 13, 2019

My thoughts on that, but not much of an opinion either way: Pod 6 is much more like a revision of Pod and is very similar in use and appearance, there is an active attempt at some compatibility, and it's referred to as just Pod in various places. But it is not 100% compatible. It's just not that important comparatively, you currently don't find much about either Pod or Pod 6 on google without using the language name, and nobody is ever really in a situation to discover what Pod or Pod 6 are without the context of the languages. So the only reason to do such would be for consistency in naming or to better distinguish itself from Pod in the future.

This comment was marked as outdated.

Copy link
@nxadm

nxadm Aug 14, 2019

.rkpod?: it's pod after all, a format unknown and unpopular outside of the Perl world.
.rkdoc? This would make more sense if it was md based as expectations would be to be read on the console with less or cat without a pod parser in your head.

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

Ugh, no. Let's keep Pod6. It's a slang, included but different from Perl 6/Raku. Are we going to call the regex slang rkegex? Or the quote slang rkuote? It's not big deal. It does not have Perl in the name, it's just a six-ish version of plain old documentation.

This comment was marked as outdated.

Copy link
@FCO

FCO Aug 14, 2019

Contributor

.rkp or .rp?

This comment was marked as outdated.

Copy link
@nxadm

nxadm Aug 14, 2019

pod6 sound very out of place to me for a language called raku. Pod is werid, the 6 makes it even weirder. (Now I think about it is even weird for Perl 6.)

to be generated when the module is loaded.

On Windows some more trickery may be involved to mark a script with the
`.rk` extension as executable.

### 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.

This comment was marked as outdated.

Copy link
@vrurg

vrurg Aug 14, 2019

Contributor

I will prepare another PR for this part.


## Mascot

Camelia will remain the mascot. So the only thing that should change there
is that it is the mascot of `Raku` rather than `Perl 6`.

This comment was marked as outdated.

Copy link
@FCO

FCO Aug 14, 2019

Contributor

Will it continue with the “p” and the “6” on the wings?

This comment was marked as outdated.

Copy link
@JJ

JJ Aug 14, 2019

Contributor

We can add a whisker to the p to make it look like an R and delete a part of the 6 to make it look like a k.

This comment was marked as outdated.

Copy link
@karenetheridge

karenetheridge Aug 14, 2019

I ❤️ Camelia; let's keep her as she is, as a reminder of where she came from :)

This comment was marked as outdated.

Copy link
@lizmat

lizmat Aug 15, 2019

Author Collaborator

@karenetheridge That's the plan. No changes to the wing pattern either :-)


## Marketing changes

Renaming `Perl 6` to `Raku` is an event that should be used to get maximum
marketing result. This will need a new marketing repo, with `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.

## 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. 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

Many modules either mention "perl6-" in their repo name, or mention "Perl 6"

This comment was marked as outdated.

Copy link
@nxadm

nxadm Aug 14, 2019

Also popular: a 'p6' prefix (or suffix).

in their documentation. These will have to be scanned and Pull Requests
will need to be made for them.

## Effects on running sub-projects

Projects, such as Comma and Cro do not need any notifications, but other
sub-projects may need to get advance notice.

## Effects on the Perl community

There is a (small) part of the Perl community that welcomes Perl 6 leaving
that community. But in general, it appears that Perl community members would
like to have channels open between members that only do `Perl 5`, and members
that only do `Raku`.

## 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.

This comment was marked as outdated.

Copy link
@taboege

taboege Aug 13, 2019

Member

Not sure if this comment zooms in too much for the scope of this document, but the IRC channels on freenode are my primary community meeting point and they have to be renamed as well. I just want to note that luckily we can forward #perl6 to #raku (for new joins at least, not for messages) using +if #raku channel modes. freenode++

## 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.

This comment was marked as resolved.

Copy link
@dwright

dwright Aug 14, 2019

It's worth noting that the more general entity is already called "Yet Another Society". YAS is currently home to both "The Perl Foundation" and "The Parrot Foundation". It might be worth the legwork of setting up a separate "Raku Foundation" under YAS.

It would probably be a good idea for you to open up a dialog with TPF to help them understand your intent and find out what TPF is able/willing to provide.


Should The Perl Foundation decide to not want to have anything to do with
`Raku`, only then should an alternate organisational support be discussed.

14 comments on commit 07c423e

@hythm7

This comment was marked as outdated.

@coke

This comment was marked as outdated.

@nxadm

This comment was marked as outdated.

@FCO

This comment was marked as outdated.

@FCO

This comment was marked as outdated.

@JJ

This comment was marked as outdated.

@nxadm

This comment was marked as outdated.

@Grinnz

This comment was marked as outdated.

@vrurg
Copy link
Contributor

@vrurg vrurg commented on 07c423e Aug 14, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not clog this commit with extra discussion. Any versioning questions – #88, please! Thanks you!

@hythm7

This comment was marked as outdated.

@hythm7

This comment was marked as outdated.

@Grinnz

This comment was marked as outdated.

@nxadm

This comment was marked as outdated.

@nxadm

This comment was marked as outdated.

Please sign in to comment.