Reposting because of permission problem caused by a weird Google
Mail restriction. -- v
Subject: | Re: [scheme-reports-wg2] Suggestions for improvement of the R7RS Large/WG2 process |
---|---|
Date: | Mon, 21 Feb 2022 21:00:44 -0800 |
From: | Vincent Manis <vma...@telus.net> |
To: | scheme-re...@googlegroups.com, Daphne Preston-Kendal <d...@nonceword.org> |
Reposting again because I inadvertently deleted something in my
first try. -- v
Subject: | Re: [scheme-reports-wg2] Suggestions for improvement of the R7RS Large/WG2 process |
---|---|
Date: | Mon, 21 Feb 2022 21:00:44 -0800 |
From: | Vincent Manis <vma...@telus.net> |
To: | scheme-re...@googlegroups.com, Daphne Preston-Kendal <d...@nonceword.org> |
Unfortunately, the R7RS small language unmodified is *un*suitable for
the task of building R7RS Large in a number of ways
This is the nub of the problem with R7RS small: it quite simply leaves
too much up to the whims of the implementor
One of the first requirements of
R7RS Large should therefore have been to tighten up R7RS and take some
of that flexibility away from implementors in exchange for real
guarantees for programmers.
At the very least, ‘it is an error’ conditions in R7RS small which can
make it impossible to write applications processing untrusted input
with a guarantee of security ought to be tightened up to make a
practical Large language.
There are nearly 70 explicitly-named errors
causing undefined behaviour in R7RS small. Perhaps a dozen of these
can easily be seen to have security implications; there may be others
lurking in error conditions which are *not* explicitly named.
<https://github.com/johnwcowan/r7rs-work/blob/master/ItIsAnError.md>
When WG2 awoke from its dormancy after the completion of R7RS small,
the chair immediately revised its charter in two significant ways:
firstly, the former restricted membership of WG2 was dissolved and
replaced by open participation of the whole Scheme community;
secondly, the R7RS process was re-oriented around the existing SRFI
process, so that all proposals either had to come from SRFIs or,
unmodified, from the R6RS.
The SRFI-based process does not take account of the need to create a
self-consistent language (‘Self consistency is an important objective’
according to the WG2 charter),
which has already led to a debate over
the name of cut/cute and <>/<...> from SRFI 26
after SRFI 26 was
already accepted not only in principle, but (theoretically) in exact
specification form. One reason for this is that it fails to allow
broader principles to be decided before fine details are worked out:
SRFIs must be complete specification documents with working
implementations.
Another major reason the self-consistency of R7RS Large cannot be
guaranteed by the current process is because, as Marc Nieper-Wißkirchen
has said, while the choices of any one voter may add up to a consistent
language design, the weighted average of a large group’s choices will
probably not. The small process was able to resolve this issue by (a)
having a smaller, fixed-size committee and (b) use of a Condorcet voting
system so all proposals had the maximum possible approval of the group.
WG2 has thus far used majoritarian voting (in some cases, with de facto
run-offs, such as on the question of the string library).
John Cowan has
explicitly stated that he does not intend to remove anything from an
‘Edition’ of R7RS Large which was voted into a previous ‘Edition’.
<https://srfi-email.schemers.org/srfi-discuss/msg/18004344/>
This requirement is unnecessary: there is no charter obligation for
non-final editions of R7RS Large to remain stable;
A real example of such a consistency problem has been noted with the
order of arguments to the ‘kons’ procedure given to fold procedures.
Inequality of information is a sad reality of democracy, but for such a
small groups of voters to have such widely differing amounts of
information when casting their votes is a situation that can hardly even
be called democracy. It decreases the quality of decisions and makes
situations like poor and inconsistent libraries being adopted more
likely.
The situation also makes it hard to understand and compile a rationale
for the inclusion of features or libraries, a very valued feature of
Scheme specifications so far — even of R6RS which was, like R7RS,
designed by voting rather than unanimous consensus.
1. Open a new, single, centralized place for discussion of R7RS
development — both of new features and problems with the existing
language.
This should be set up inside proper project-management
software. Even GitHub or GitLab Issues would probably do
2. Establish eligibility criteria for proposals for R7RS Large. To
some extent, the requirement for the majority of proposals to be made
in the form of SRFIs does this; but general principles such as how
platform-specific operating system integration libraries should be,
and to what extent R6RS vs SRFI proposals should be preferred, remain
undefined.
There is also no clear process for *proposing* smaller
corrections to adopted libraries which are not worth making into
independent SRFIs, and what backwards-compatibility requirements apply
to such corrections, hampering the process of cleaning up the small
language *and* the inconsistencies which have been found in the Large
language so far — this should be made clear.
(I personally have a list
of over fifty issues, mainly related to consistency, which I would
like to see addressed. I will enter them into the issue tracker if it
is opened.)
3. Work on the final specification document for R7RS Large should
begin already, in order to catch consistency issues as soon as
possible.[†] The editor should enter consistency issues etc. into the
issue tracker mentioned in proposal 1 as they arise.
4. Consideration (!) should be given to re-establishing a WG2 core
committee of a small number of particularly active and knowledgeable
members with the power to adopt proposals by informal unanimous
consensus without waiting for a vote of the whole WG2 electorate.
As one final note, I should say that I have continued confidence in
John Cowan personally as chair.'
[†] Recent complaints in the #scheme IRC channel about the difficulty of
producing a hypertext version of the R7RS small report suggest that the
master source of this document should *not* be in TeX. Of course, the
PDFs of the Scheme reports look as slick as they do because of TeX;
but a printed version could be produced by converting another markup
language into TeX source.
When the Red docket was voted on, I tried to produce a consolidated specification document. I distributed it here, and got zero feedback (apart from a valuable correction to my mistaken ideas about SRFI copyrights). I didn't think it was very good, in particular, there was no coherent outline, and little notational consistency. However, I hoped it would stimulate discussion about what a final R7RS-Large might look like. I haven't seen that discussion.
4. Consideration (!) should be given to re-establishing a WG2 core
committee of a small number of particularly active and knowledgeable
members with the power to adopt proposals by informal unanimous
consensus without waiting for a vote of the whole WG2 electorate.Okay, time for me to draw a line: if such a "Committee of Public Safety" were to be appointed, which of course the WG and the SC are well entitled to do, I would find it necessary to resign as chair. I am absolutely opposed to such oligarchy. What I *might* accept would be the "pre-1795 Polish Sejm" system, in which a small de-facto group makes decisions, but any member of the larger group can override that by shouting "Veto!", in which case the question goes to a full vote. Hopefully we will not be destroyed by Russia, Prussia, and Austria because we are always deadlocked by this.
I agree completely with John on this point. While Daphne, Marc, et al. have raised some good points about the R7RS Large process, I strongly oppose the kind of centralization of power recommended here. While I participated in R6RS, I know prominent, long-term members of the Scheme community who didn't, and it was largely because it operated in a similarly closed manner. All previous RnRS versions had been produced by consensus, and the change in how R6RS was developed left them feeling cast aside. I don't want to see that happen again.
I don't want my earlier comments to be interpreted as favoring
oligarchy. Consensus is essential to the acceptance of R7RS-Large,
and a key element of that is transparency. That said, we can
impose somewhat more structure on the process, by having one of
our focuses (foci?) be the final Report.
The genius of the existing Reports is their fulfillment of the
famous St-Exupéry quote about perfection involving nothing left to
take away. I would be happy if the final R7RS-Large Report
exhibits the same unity and consistency, while still defining a
powerful language.
-- vincent
[...] and then we'll have a collection of SRFIs with no conceptual unity.
For example, I have serious reservations about including JSON support in the language, not because I disapprove of the SRFI, but because JSON is currently a flavor du jour, and might well become less important in the future (and in any case, I don't understand the rationale for supporting JSON but not YAML or TOML, at least on input). JSON support is important, at a practical level; but I'm not convinced it needs to be an integral part of the language.
For example, I have serious reservations about including JSON support in the language, not because I disapprove of the SRFI, but because JSON is currently a flavor du jour, and might well become less important in the future
(and in any case, I don't understand the rationale for supporting JSON but not YAML or TOML, at least on input).
So what I guess I'm saying is that there are facilities that are important, but are not key to the language.
I would strongly recommend that we pause voting on dockets, and proposing SRFIs, to plan out the shell of a final Report into which we could fit the currently-approved proposals, as well as those we expect to consider.
And finally,
4. Consideration (!) should be given to re-establishing a WG2 core
committee of a small number of particularly active and knowledgeable
members with the power to adopt proposals by informal unanimous
consensus without waiting for a vote of the whole WG2 electorate.
There is a third possibility, oddly overlooked: s-expressions.
Is there some way to finance that? I remember reports about people
getting funding to work on commonlisp specifications. Something like
that for Scheme could enable doing this in a much stronger way.
We can still find some points of relevance.
The conclusion of Arthur post is:
> To be honest, many prominent
> long-term members of the Scheme community haven't been participating
To be factual, each has their own reasons.