root/docs/tutorial/ch01_overview.pod

Revision 22654, 12.8 kB (checked in by moritz, 3 months ago)

[docs/tutorial] (aka book) many clean ups and enhancements to ch07_grammars.pod.
Also other small fixes.

  • Property svn:mime-type set to text/plain; charset=UTF-8
  • Property svn:eol-style set to native
Line 
1# Copyright (C) 2003-2007, The Perl Foundation.
2
3=pod
4
5=head0 Project Overview
6
7Z<CHP-1>
8
9Perl 6 is the next major version of Perl. It is a significant update of the
10language, and the first version of Perl that is defined by a specification,
11not by a reference implementation.  The
12goal of Perl 6 is to add support for much-needed new features, and
13still be cleaner, faster, and easier to use.
14
15The X<Perl 6;overview> Perl 6 project is vast and complex, but it
16isn't complicated. The project runs on a simple structure with very
17little management overhead. That's really the only way it could run.
18The project doesn't have huge cash or time resources. Its only
19resource is the people who believe in the project enough to spend
20their off-hours--their "relaxation" time--working to see it completed.
21This chapter is as much about people as it is about Perl.
22
23=head1 The Birth of Perl 6
24
25Z<CHP-1-SECT-1>
26
27X<Perl 6;history>
28Back on July 18, 2000, the second day of the fourth Perl Conference
29(TPC 4), a small band of Perl geeks gathered to prepare for a meeting
30of the Perl 5 Porters later that day. The topic at hand was the
31current state of the Perl community. Four months had passed since the
325.6.0 release of Perl, and although it introduced some important
33features, none were revolutionary.
34
35There had been very little forward movement in the previous year. It
36was generally acknowledged that the Perl 5 codebase had grown
37difficult to maintain. At the same time, infighting on the
38I<perl5-porters> list had grown so intense that some of the best
39developers decided to leave. It was time for a change, but no one was
40quite sure what to do. They started conservatively with plans to
41change the organization of Perl development.
42
43An hour into the discussion, around the time most people nod off in
44any meeting, Jon Orwant (the reserved, universally respected editor of
45the Perl Journal) stepped quietly into the room and snapped everyone
46to attention with an entirely uncharacteristic and well-planned
47gesture. I<Smash!> A coffee mug hit the wall. "We are *@$!-ed
48(I<Crash!>) unless we can come up with something that will excite the
49community (I<Pow!>), because everyone's getting bored and going off
50and doing other things! (I<Bam!>)" (At least, that's basically how
51Larry tells it. As is usually the case with events like this, no one
52remembers exactly what Jon said.)
53
54Awakened by this display, the group started to search for a real
55solution. The language needed room to grow. It needed the freedom to
56evaluate new features without the obscuring weight of legacy code.
57The community needed something to believe in, something to get excited
58about.
59
60Within a few hours the group settled on Perl 6, a complete rewrite of
61Perl. The plan wasn't just a language change, just an implementation
62change, or just a social change. It was a paradigm shift. Perl 6 would
63be the community's rewrite of Perl, and the community's rewrite of
64itself.
65
66Would Perl 6, particularly Perl 6 as a complete rewrite, have happened
67without this meeting? Almost certainly. The signs appeared on the
68lists, in conferences, and in journals months in advance. If it hadn't
69started that day, it would have happened a week later, or perhaps a
70few months later, but it would have happened. It was a step the
71community needed to take.
72
73=head1 In the Beginning . . .
74
75Z<CHP-1-SECT-2>
76
77Let's pause and consider Perl development up to that fateful meeting.
78Perl 6 is just another link in the chain. The motivations behind it
79and the directions it will take are partially guided by history.
80
81Perl was first developed in 1987 by Larry Wall while he was working as
82a programmer for Unisys. After creating a configuration and monitoring
83system for a network that spanned the two American coasts, he was
84faced with the task of assembling usable reports from log files
85scattered across the network. The available tools simply weren't up to
86the job. A linguist at heart, Larry set out to create his own
87programming language, which he called I<perl>. He released the first
88version of Perl on December 18, 1987 and made it freely available on
89Usenet (this was before the Internet took over the world, remember).
90Before long, a small community of Perl programmers grew up around it.
91
92The early adopters of Perl were system administrators who had hit the
93wall with shell scripting, I<awk>, and I<sed>. However, in the
94mid-1990s Perl's audience exploded with the advent of the Web, as Perl
95was tailor-made for CGI scripting and other web-related programming.
96
97Meantime, the Perl language itself kept growing, as Larry and others
98kept adding new features. Probably the most revolutionary change in
99Perl (until Perl 6, of course) was the addition of modules and
100object-oriented programming with Perl 5. While this made the
101transition period from Perl 4 to Perl 5 unusually long, it breathed
102new life into the language by providing a modern, modular interface.
103Before Perl 5, Perl was considered simply a scripting language; after
104Perl 5, it was considered a full-fledged programming language.
105
106Larry, meanwhile, started taking a back seat to Perl development and
107allowed others to take responsibility for adding new features and
108fixing bugs in Perl. The Perl 5 Porters (p5p) mailing list became the
109central clearinghouse for bug reports and proposed changes to the Perl
110language, with the "pumpkin holder" (also known as the "pumpking")
111being the programmer responsible for integrating the patches and
112distributing them to the rest of the list for review. Larry continued
113to follow Perl development, but like a parent determined not to
114smother his children, he stayed out of the day-to-day development,
115limiting his involvement to situations in which he was truly needed.
116
117Although you might think that the birth of the Perl 6 project would be
118the first nail in the coffin for Perl 5, that's far from the case. If
119anything, Perl 5 has had a huge resurgence of development, with Perl
1205.7.0 released only two weeks after the initial decision to go ahead
121with Perl 6. Perl 5.8.0, a July 2002 release by pumpking Jarkko
122Hietaniemi, includes usable Unicode support, a working threads
123interface, safe signals, and a significant improvement of the internals
124with code cleanup, bug fixes, better documentation, and more than
125quadrupled test coverage. 5.8 has quarterly maintenance releases thanks
126to pumpking Nicholas ClarkX<Clark, Nicholas>. The 5.9-5.10 releases have
127Hugo van der Sanden X<van der Sanden, Hugo> as architect and
128RafaE<euml>l Garcia-Suarez X<Garcia-Suarez, RafaE<euml>l> as pumpking.
129Plans for those releases include enhancements to the regular expression
130engine, further internals cleanup and a "use perl6ish" pragma that will
131integrate many of the features of Perl 6. Perl 5 is active and thriving,
132and will continue to be so even after the release of Perl 6.0.
133
134=head1 The Continuing Mission
135
136Z<CHP-1-SECT-3>
137
138Much has changed since the early days of the project. New people join
139and others leave in a regular "changing of the guard" pattern. Plans
140change as the work progresses, and the demands of the work and the
141needs of the community become clearer. Today the Perl 6 project has
142two major parts: language design and internals. Each branch is
143relatively autonomous, though there is a healthy amount of
144coordination between them.
145
146=head2 Language Design
147
148Z<CHP-1-SECT-3.1>
149
150As with all things Perl, the central command of the language design
151process is X<Wall, Larry> Larry Wall, the creator of the Perl
152language. Larry is supported by the rest of the design team: X<Conway,
153Damian> Damian Conway, X<Randal, Allison> Allison Randal, X<Sugalski,
154Dan> Dan Sugalski, X<van der Sanden, Hugo> Hugo van der Sanden, and
155X<chromatic> chromatic. We speak in weekly teleconferences and also
156meet face-to-face a few times a year to hash out ideas for the design
157documents, or to work through roadblocks standing in the way of design
158or implementation. The design team is a diverse group, including
159programmers-for-hire, Perl trainers, and linguists with a broad
160spectrum of interests and experiences. This diversity has proved quite
161valuable in the design process, as each member is able to see problems
162in the design or potential solutions that the other members missed.
163
164=head3 Requests for comments (RFCs)
165
166Z<CHP-1-SECT-3.1.1>
167
168The first step in designing the new language was the RFC (Request For
169Comments) process. This spurred an initial burst of community
170involvement. Anyone was free to submit an X<RFCs> RFC on any subject,
171whether it was as small as adding an operator, or as big as reworking
172OO syntax. Most of the proposals were really quite conservative. The
173RFCs followed a standard format so they would be easier to read and
174easier to compare.
175
176Each RFC was subject to peer review, carried out in an intense few
177weeks around October 2000. One thing the RFC process demonstrated was
178that the Perl community still wasn't quite ready to move beyond the
179infighting that had characterized Perl 5 Porters earlier that
180year.N<Mark-Jason Dominus wrote an excellent critique of the RFC
181process (U<http://www.perl.com/pub/a/2000/11/perl6rfc.html>). It may
182seem harsh to people accustomed to the more open and tolerant
183community of today, but it's an accurate representation of the time
184when it was written.> Even though few RFCs have been accepted without
185modification, the process identified a large number of irritants in
186the language. These have served as signposts for later design efforts.
187
188=head3 Apocalypses, Synopses, Exegeses
189
190Z<CHP-1-SECT-3.1.2>
191
192X<Apocalypses>
193The ApocalypsesN<An "apocalypse" in the sense of "revelation," not
194"end of the world.">, Synopses, and ExegesesN<An "exegesis" is an
195explanation or interpretation of a text.> are an important part of the
196design process. Larry started the Apocalypse series as a systematic
197way of answering the RFCs. Each Apocalypse corresponds to a chapter in
198his book I<Programming Perl>, and addresses the features in the
199chapter that are likely to change.
200
201However, the Apocalypses have become much more than a simple response
202to RFCs. Larry has a startling knack for looking at 12 solutions to a
203problem, pulling out the good bits from each one, and combining them
204into a solution that is 10 times better than any of the proposals
205alone. The Apocalypses are an excellent example of this "Larry
206Effect." He addresses each relevant RFC, and gives reasons why he
207accepted or rejected various pieces of it. But each Apocalypse also
208goes beyond a simple "yes" and "no" response to attack the roots of
209the problems identified in the RFCs.
210
211X<Synopses>
212The Synopses are summaries of each Apocalypse. These act as a quick
213reference for the current state of design, and are more approachable
214than the often lengthy Apocalypses. The Synopsis series didn't start
215until Apocalypse 5, but Luke PalmerX<Palmer, Luke> is now working on
216the retroactive Synopses 2-4.
217
218X<Exegeses>
219Damian Conway's Exegeses are extensions of each Apocalypse. The
220Exegeses are built around practical code examples that apply and
221explain the new ideas.
222
223=head3 The p6l mailing list
224
225Z<CHP-1-SECT-3.1.3>
226
227X<mailing lists, Perl 6>
228X<Perl 6;mailing lists>
229X<p6l (Perl 6 language mailing list)>
230X<Perl 6 language mailing list (p6l)>
231X<Palmer, Luke>
232X<Cawley, Piers>
233The next body of design work is the Perl 6 Language mailing list
234(U<perl6-language@perl.org>), often fondly referred to as "p6l." Piers
235Cawley writes a weekly summary of all the Perl 6 mailing lists. Luke
236Palmer has been deputized as unofficial referee of the list. He
237answers questions that don't require the direct involvement of the
238design team or that have been answered before. The list has
239approximately 40 regular contributors in any given month, as well as a
240large number of occasional posters and lurkers. Some people have
241participated since the very beginning; others appear for a few months
242and move on.
243
244Even though the individuals change, the general tone of p6l is the
245same. It's an open forum for any ideas on the user-visible parts of
246Perl 6. In the typical pattern, one person posts an idea and 5 to 10
247people respond with criticisms or suggestions. The list periodically
248travels down a speculative thread like a runaway train, but these
249eventually run out of steam. Then Larry picks out the golden bits and
250gently tells the rest that no, he never intended Perl 6 to have
251neo-vulcan mechanoid scooby-dooby-doos. Even when Larry doesn't
252post, he follows the list and the traffic serves as a valuable
253catalyst for his thoughts.
254
255=head3 The test suite
256
257Z<CHP-1-SECT-3.1.4>
258
259X<Tang, Audrey>
260X<Pugs>
261X<Test suite>
262
263The design documents describe the Perl 6 language in prose, and the test
264suite is intended to translate that specification into code.
265
266In 2005 Audrey Tang started a Perl 6 compiler named I<Pugs>. It is
267written in Haskell, and moved very fast. The test suite began both as
268regression tests and as a feature wish list, and is now slowly being
269translated into an implementation agnostic, offical test suite that can
270be used by all implementations.
271
272Once it is done, every compiler that passes the test suite may name
273itself I<Perl 6>.
274
275=cut
276
277# vim: sw=3 ts=3 expandtab tw=72
Note: See TracBrowser for help on using the browser.