The State of Open Sourceby Daniel H. Steinberg
The night that divides the two days of tutorials from the three-day conference at the fifth annual O'Reilly Open Source Convention is reserved for the States of the Union addresses. Luminaries from the open source communities of Perl, Python, PHP, MySQL, Apache, and Linux each spoke for just under a half hour to present their take on the current state of their technology and where it is headed.
The Perl State of the Onion
Larry Wall kicked off the evening with an entertaining look at what he called the Universal architectural diagram. Looking much like the court markings on one side of a tennis court, the diagram was filled in a variety of ways during a lightning session of political, cultural, religious, and geek references. In one version, the base of the rectangle was Parrot and the three vertical rectangles that sat on top of it were filled with languages that would run on this single engine. The left rectangle held Perl 5, the middle Perl 6, and the right contained a large list of languages that included PHP, Ruby, Python, BASIC, Scheme, COBOL, and Java. Wall explained that currently only BASIC is supported and wondered if this larger goal is really impossible.
To illustrate his point, he refactored the image into a widget--the canonical impossible object. He addressed the criticism of how slow Perl 6 development is by adorning the prongs of the widgets with the labels "fast", "good", and "cheap". He argued that the traditional wisdom is that you can pick two but he has advocated that you can pick only one, and that he has chosen "good". Although the basic design of Perl 6 is mostly done, Wall cautioned that he will eventually have to get a real job with health insurance.
Originally the goal had been to have one implementation of Perl. This has changed to a plan to have three: the current Perl 5, which is based on C, and an implementation of Perl 5 and Perl 6, each based on Parrot. The Perl 5/Parrot stack is designed to help people make the transition from Perl 5 to Perl 6 more easily. This will enable you to translate modules one at a time and run some under Perl 5 and some under Perl 6, all running on top of Parrot. Wall also noted that Perl 5 runs faster on Parrot.
Perl 5 over Parrot has been named Ponie to avoid confusion with the traditional Perl 5 implementation. Ponie will be compatible with Perl 5.10. Wall's final piece of news was that Fotango will sponsor Arthur Bergman to work on company time on the implementation of Ponie.
The Python State of the Snake
Guido van Rossum began his address with slides that showed Python's growth over the past few years and outlined plans for the upcoming 2.3 release. The timetable for the Python 2.3 release has been accelerated because of its inclusion in the next version of Mac OS X. The Panther release of the Apple operating system is scheduled to ship by the end of this year. When it was noted that the Python 2.3 beta was included in the Panther beta given to developers last month, the Python release schedule was compressed so that the release candidate is scheduled for July 27 and the final release is planned for August 3.
One feature that didn't make it into Python 2.3 is conditional expressions.
van Rossum proposed a syntax for a new conditional. After much debate the
syntax that was voted on was
(if C:x else:y). It passed a vote
but not by much. According to van Rossum, "The voting instructions were kind of
an IQ test in themselves." The margin was small and the debate continued about
feature bloat on the one hand and the benefits of the feature on the other. The
conclusion was to follow the conservative path: "when in doubt, don't
Next, van Rossum looked ahead to Python 3.0, the point at which backwards
compatibility may be broken. He explained "We're throwing away a lot of the
cruft that Python has accumulated." He offered many examples. Strings were
objects with no methods. Python 3.0 will replace the string module with string
methods. As an aside, van Rossum noted that Python may run on Parrot. There
are two methods that generate collections of integers;
generates a sequence of integers while
range() generates a list of
integers. One is more efficient and one is easier to understand. The goal is to
get rid of
xrange() and let
range() perform both
functions. The issue of 8 bit versus Unicode strings will be addressed. The
ability to use
filter to process lists will
disappear, being replaced by list comprehensions. Exceptions will be expressed
by classes and not by strings.
As for the Python 3 schedule, van Rossum said "it will not be any time soon. Until the Python Foundation has money to fund me, Python 3 will remain vaporware." He hopes that the community as a whole takes over with tiny nudges from him, which he can fit into his current work schedule.
Pages: 1, 2