For review purposes only.
Please send private comments to steering-committee-feedback (at) scheme-reports.org
or public comments to scheme-reports (at) scheme-reports.org
The purpose of working group 2 is to develop specifications, documents, and proofs of implementability for a language in the Scheme family that is large enough to address the practical needs of mainstream software development.
The purpose of the language is to facilitate sharing of Scheme code.
The language developed by working group 2 must include support for macros and modules/libraries.
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.
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.
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
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 such a question to an electorate, and concludes that less than 75% of the electorate consider a work product to meet the charter requirements, then the work product 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.