Date: 2010-03-03
Working group 2 will develop specifications, documents, and proofs of practical implementability for a language that embodies the essential character of Scheme, that is large enough to address the practical needs of mainstream software development, and that can be extended and integrated with other systems.
The purpose of this work is to facilitate sharing of Scheme code. One goal is to be able to reuse code written in one conforming implementation in another conforming implementation with as little change as possible. Another goal is for users of this work to be able to understand each other's code based on a shared and unambiguous interpretation of its meaning.
The language is not necessarily intended for educational, research, or embedded use, though such uses are not prohibited. Therefore, it may be a "heavyweight" language compared to the language designed by working group 1.
To promote extensibility, the language developed by working group 2 must include support for macros and modules in a way that is appropriate for the language's size and goals.
When deciding which features to include in the language, working group 2 should consider all features provided by R6RS Scheme, and all criticisms of those features. Insofar as practical, the language should be backwards compatible with an appropriate subset of the R6RS standard.
Working group 2 may also consider whether it is practical to add new features to support networking, threads, internationalization, foreign-function interfaces, et cetera. Working group 2 is encouraged to propose new working groups for any new features that it considers desirable but cannot pursue without risking the timeliness of its primary mission.
Self consistency is an important objective, which may require adding new features.
Working group 2 must develop written specifications for the language. These specifications must be accompanied by concise statements of all formal comments and objections that have been raised by members of the working group or by the Scheme community at large. The working group should also provide a written design rationale, executable reference implementations, test suites, and other artifacts that would assist with constructive debate or increase acceptance of the language.
Working group 2 is expected to produce public status reports after 6 months and 12 months; a public draft after 18 months; a draft suitable for final endorsement after 24 months, to be updated every 3 months thereafter until endorsement. If the working group anticipates any difficulty meeting these milestones, its chair should inform the Steering Committee in advance of the milestone.
Working groups 1 and 2 must work together to produce specifications that are consistent with one another. In particular, every implementation of the specifications produced by working group 2 must be an implementation of the specifications produced by working group 1. Every program that conforms to the specifications produced by working group 1 (and relies on no features beyond those guaranteed by those specifications) must also be a program that conforms to the specifications produced by working group 2.
Working group 1 must provide a substrate on which working group 2 can build that enables this level of compatibility.
So far as is practical, this relationship between the smaller and larger languages should be achieved by having the documents that describe the larger language refer to the documents that describe the smaller language instead of duplicating those documents or portions of them. That in turn will require coordination between working groups 1 and 2.
The Steering Committee will solicit applications for membership in the working group, and will appoint members from among the applicants, as well as whatever additional members they see fit. If members cease to be members for any reason, the Steering Committee may appoint replacements in the same way.
Members of the working group should endorse the goals of the working group and be willing and able to work toward consensus. Working groups 1 and 2 should have some members in common.
All technical discussions must be made public. This requirement can be satisfied by timely posting of email and the technical minutes of meetings at a public web site, and by maintaining a publicly readable mailing list devoted to working group 2's technical discussions.
The chair of the working group is expected to develop an internal process that allows the working group to achieve its objectives.
The working group is expected to strive for consensus on all decisions. Where consensus cannot be achieved, the working group may proceed on the basis of a vote, but the results of such votes must be preserved within the public record, along with the reasons for dissent. Minority positions may be registered as formal objections (see above).
The work products developed by working group 2 will be submitted to the Steering Committee for endorsement. The Steering Committee will work with working group 2 to seek maximum possible timely consensus on the work products. In considering whether to endorse the work products, the Steering Committee will consider whether the work products meet the charter requirements, as well as the level of support that they enjoy.
If formal objections remain at this time, the Steering Committee may choose to put the question of whether some or all work products satisfy charter requirements to a representative electorate. If the Steering Committee puts the question to an electorate, and concludes that less than 75% of the electorate consider the work products to meet the charter requirements, then the work products will not be endorsed.
If the Steering Committee believes that support could be increased by revising work products in response to specific objections, then it may request another draft/review cycle of the working group.
The Steering Committee selects, and may replace, the working group's chair.
The working group may elect or appoint other officers as it sees fit.
The names of the languages to be developed by working groups 1 and 2 have not yet been determined. The Steering Committee will consider names suggested by the working groups.