I too appreciate the continued dialogue.
But as you work out the scenarios, you keep running into the problems
I've been trying to warn about. And to solve them, you keep getting
closer to the solutions I suggested to begin with. You won't adopt those
solutions wholesale, which causes predictable problems, to which you
keep coming up with complicated workarounds. As you resolve the problems
with the workarounds, you get even closer to what I suggest.
> But maybe R7RS Large is large enough so that the committees can work
> rather independently, each producing something consistent in itself.
That will only work if we have a clear split between Medium and Large
(from the start, not at the end).
> For example, say, Committee "B" includes (srfi 1) unchanged as (scheme
> list). Now committee "F" may independently think that some pair/list
> procedures are so fundamental (e.g. to implement other parts of the
> foundations) that they would also want to include a list library. But
> they may want a more axiomatic version of SRFI 1, ending up with a
> specification of a library (foundation list). (Note: I don't recommend
> "foundation" here; it is just a placeholder.) R7RS Large will then
> ship with both (scheme list) and (foundation list) and Commitee "B"
> can use (foundation list) to implement their larger (scheme list). (Of
> course, to make source code understandable, Commitee "F" shouldn't
> define a procedure "fold" that is fundamentally different to "fold" in
> SRFI 1 using the same name.)
This makes total sense, _but_ requires the split between Medium and Large.
The inevitable problems with Large would be solved by going with Medium
+ something like Scheme Live, but I'm happy if you make Medium the main
standard and make Large an optional add-on for Medium.
>> Given that communication difficulties increase quadratically with the number of parties, and there were already concerns raised about how*two* groups working in parallel would communicate and cooperate effectively with each other, I’m unsure of the wisdom of making four groups out of two.
That's why I suggested the informal fork rather than another WG --
bureaucracy doesn't scale, and isn't necessary with this few people.
It's all about Scheme implementers. Whatever they like will be ratified
by the SC. Whatever they don't like is irrelevant either way.
>> In particular, splitting the Large effort into batteries and environment seems fine (and an especially good idea if a particularly tricky feature such as a C FFI really might be back on the cards for the latter group, as you recently suggested).
FFI / threads / networking will delay the standard by 2 more years, and
you'll probably ship a less compatible standard.
SRFI is the right place to work out the difficult environmental stuff.
SRFI 18 is proven, but does it work fine on JVM and CLR? Are there major
implementers who don't like it?
>> One could perhaps describe the two groups’ remits as being ‘embarrassingly parallel’.
To the extent that the Large libraries group does things right, its work
is orthogonal to the Medium group and most likely moves at a different
pace. Which raises the question of why the libraries group's work is
tied to a given RnRS number at all.
>> Splitting consistency from both Large and Medium seems like a bad plan, since one consistency committee will have to check up on the work of both of them. And consistency of the foundation is an important feature of the foundation in itself.
There's no way for something as large as Large to be consistent
aesthetically and ship on time.
Consistency in Medium is a good goal. Consistency within the Large
libraries is doable if you don't mind taking a long time.
Medium has failed at its main job if it takes a long time; it means
you're doing something too hard. 2-3 years is reasonable for it.
>> What I had envisaged was something like the following: the committee on ‘Medium’ (Foundation, or whatever we want to call it) works on its updates to the core of R7RS small, and is responsible for ensuring consistency in its own spec along the way. What it produces we could call ‘R7RS Large Volume I: Foundation Language’. In parallel, work continues on portable libraries, largely by adopting SRFIs as-written. When all or almost all libraries are ready, the Libraries committee cleans up the inconsistencies and idiosyncracies of the individual SRFIs. That turns into ‘R7RS Large Volume II: Standard Libraries’.
The amount of red tape is getting to the point where the names of the
documents themselves (Foundation Libraries, Volume I, etc.) should tell
you the work is not organized right.
The natural name of Foundation Libraries or Volume I is simply RnRS.
That's the main work. Large Libraries is unexplored territory, and
Environment is difficult-to-implement stuff that implementers can be
expected to disagree about.