Draft charter for working group 1: the "small" language working group
For review purposes only. Send feedback to steering-committee-feedback (at) scheme-reports.org
Purpose
The purpose of working group 1 is to develop specifications, documents, and proofs of implementability for a "small" language in the Scheme family. This small language will encapsulate the fundamental features of Scheme. Its target uses include education, programming language research, small embedded systems, and embedded scripting languages, where it is appropriate to use a lightweight language at the semantic level and/or in the implementation.
Requirements and Goals
For educational uses, this language should be compatible and comparable in size with R5RS. This will allow reuse of the large base of existing teaching materials (textbooks, tutorials, web documents, etc). In a nutshell this language should remain true to the language design precepts found in the RnRS introduction ("Programming languages should be designed not by piling feature on top of feature, …").
The language developed by working group 1 must include support for macros and modules/libraries in a way that is appropriate for the language's small size. The language's semantics must also be compatible with traditional read/eval/print loops. Features of the language should be marked as optional if their implementation is likely to be burdensome for some target uses (for example, floating point arithmetic, file I/O, "load", "eval", and read/eval/print loops may not make sense for small or embedded systems).
When deciding which features to include in the small language, working group 1 should consider all features provided by R5RS Scheme, and all criticisms of those features. Self consistency is an important objective, which may require adding new features. Existing features of IEEE Scheme may be removed only if a strong case can be made that they are fundamentally flawed. Insofar as practical the small language should be backwards compatible with the IEEE, R5RS, and R6RS standards.
Coordination with Working Group 2
The programming languages developed by working groups 1 and 2 must be consistent, and the programming language developed by working group 1 should be a proper subset of the language developed by working group 2.
So far as is practical, this relationship between the small and large languages should be achieved by having the documents that describe the large language refer to the documents that describe the small language instead of duplicating those documents or portions of them. That in turn will require coordination between working groups 1 and 2.
Membership
Requirements for membership, and the decision process for membership, should be described here.
Working groups 1 and 2 should have some members in common.
Publicity
All technical discussions must be made public. This requirement can be satisfied by timely posting of email and the technical minutes of meetings at the scheme-reports.org site, and by maintaining a public mailing list devoted to discussion of the small language being designed by working group 1.
Responsibilities of the publicity officer should be listed here.
Deliverable Artifacts
Working group 1 must develop written specifications for the small language. These specifications must be accompanied by all formal comments and objections that have been raised by members of the working group or by the Scheme community at large. The specifications should also be accompanied by a written rationale, executable reference implementations, and other artifacts that would assist with constructive debate or increase acceptance of the small language.
Timeline
Working group 1 is expected to produce
- a public status report after 6 months
- a public draft after 12 months, to be updated every 3 months thereafter until final approval
- a draft suitable for final approval after 18 months
If the working group anticipates any difficulty meeting these milestones, its chair should inform the Steering Committee in advance of the milestone.
Internal Decision Making Process
The chair of the working group is required to develop an internal process that allows the working group to achieve its objectives.
The working group is strongly encouraged to seek consensus on all decisions. Where consensus cannot be achieved, the working group may proceed on the basis of a majority or supermajority vote, but the results of such votes should be preserved within the public record, along with the reasons for dissent.
External Approval Process
The specifications of the small language developed by working group 1 will be submitted to the Scheme community for approval. The Scheme Language Steering Committee will work with working group 1 to seek maximum possible timely consensus for its specifications.
If the Steering Committee concludes that specifications of the small language are not supported by at least 90% of a representative electorate, then those specifications will not be approved. If the Steering Committee concludes that the specifications of the small language are supported by at least 90% of a representative electorate, but believes that support could be increased by revising the specifications in response to specific objections, then approval of the specifications may be deferred until the Steering Committee can determine whether revised specifications would achieve a greater degree of support.
Officers
The following officers of working group 1 must be approved by the Steering Committee:
- chair — responsible for the working group's overall process and progress
- publicity officer — responsible for making technical discussions public and for soliciting formal comments
- project editor — responsible for drafting and editing written documents
- delegate(s) — responsible for coordinating with working group 1
The Steering Committee may select the chair, and may replace any of the above officers.
Name of the Small Language
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.