The current process of Racket2 development is something I've been through
before; it is *exactly* what happened when Perl6 was announced.  It might
be instructive for people to dig into that process a bit and see what the
methods and discussions were all about, since it ended up working pretty
well.  Reaching out to Larry Wall and/or Damian Conway is strongly
recommended.

The way it ended up being handled was this:

1) The community was invited to submit RFPs on whatever topics they
wanted.  What came over the transom ranged from the trivial ("Allow $1 and
/1 to mean the same thing in regexen") to the mildly important ("Perl
should stay Perl, by which I mean the following things should remain
constant: x,y,z..."), to the very heavyweight indeed ("continuations should
become first-class values and here's how we do that").

2) Volunteers read the RFPs and collected them into groups.

3) Larry Wall, creator of Perl and its guiding-light-but-not-dictator,
digested each group in turn and then created a document called an
Apocalypse (in the original biblical sense of 'revelation', not the modern
sense of 'disaster' -- Larry is a quirky guy) which laid out a plan for how
those RFPs would or would not make their way into the language.  This
document was designed for language designers and implementers and filled
essentially the same role as the Racket Reference.

4) Damian Conway, one of the most brilliant Perl module creators, read the
Apocalypse and worked with Larry to file off any rough spots.  He then
produced a document called an Exegesis that was designed to explain the
Apocalypse to the general programmer.  If this sounds like the Racket
Guide, it was.

5) The Apocalypse and the Exegesis were released at the same time.

6) There was a lot of discussion and revision, and the final result made it
into the Perl6 Design document, where it was locked and not open for
further discussion.  Larry had enough moral authority and brains that
people would typically anchor on his design, so the discussion was about
refinements and edge cases instead of fundamental details.  His main
contribution after the release was clarification, prevention of
bikeshedding, and responding to critique.  Because there was an anchor
point for the discussion, things typically stayed pretty calm and didn't
wind on for too long.


Note that the Apocalypses were based off of the RFPs; Larry was not
creating something out of whole cloth, he was using his expertise as a
language designer to integrate what the community wanted and put it into a
usable form.  Yes, he sometimes made the decision that a particular RFP
would not be accepted; those decisions were explained and there was usually
very little objection -- again, because Larry had a lot of respect from the
community and also because he always had damn good reasons that he was able
to clearly articulate.


The reasons for the creation of Perl6 were to:

1) Resolve warts in the language
2) Add significant new features
3) Make the language more appealing to the general programmer, since Perl5
was losing market share, based largely on its syntax -- people didn't like
the punctuation characters in variable names.[1]

If this sounds familiar...it should.

The most important part of #3 was the creation of Parrot, a new runtime
that would separate the interpreter from the underlying VM that executed
the compiled bytecode.  The goal was to allow Perl to run on top of the
JVM, the default Perl VM, or any other major VM that the community decided
was worth targeting.


Like I said above, it might be worth it to investigate the Perl6 design
process and see if there are any useful ideas and/or lessons to draw from.


--------------------
[1] 98% of complaints that I've ever heard about Perl fall into one of two
buckets:

a. "It's so ugly and weird!  It uses all those
parentheses^H^H^H^H^H^H^H^H^H^H^H punctuation symbols!"

b. "I can't understand macros^H^H^H^H^H^H the idea of 'context' so I don't
get why '@foo = my_func()' does something different from '$foo =
my_func()'"

I have very little sympathy for either of these.  Again, they should sound
familiar.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAE8gKofzGtBVVHUryL21KkzbnrpE9umCU30E11_6oqzo3kHNUA%40mail.gmail.com.

Reply via email to