Spec vs code, user-driven vs designer-driven
Lassi Kortela 26 Apr 2021 06:15 UTC
> The starting point should be that it's implementation first (or
> implementation and discussion), and once the implementation
> stabilizes, a stable specification is the end product.
>
> It's still the case that SRFIs work like that to a fair extent. The
> main exception is the work that I'm doing: I have time to write specs
> (and I enjoy writing them), whereas writing the corresponding code
> requires not only more time than I have now, but quite possibly more
> time than I will ever have.
I don't believe that the designer-driven approach is the right one. I
know you have invested a lot in to that approach, but there's no getting
around the issue that it's opposed to a lot of the received wisdom
around hacking and agile. Specs are wonderful, but they should be
produced iteratively with users in the loop. With no field testing
before finalization, the process is uncomfortably waterfall-like. This
is an argument that several experienced schemers have made about current
SRFI practice.
Whether one likes to write specs or not (I also enjoy writing them, so I
have stake in both sides of the argument) it would be good to have users
for libraries first, and then graduate those libraries to stable status
after users have deemed them stable, and this should be a slow process.
I do use the SRFIs I wrote, and while I think they turned out okay I'm
not satisfied with the process of how they were made and the fact that
changes can't be made to them anymore. I had too much power relative to
other people, and not enough time to arrive at the best design.
Scheme Live would fix these problems. Any given individual doesn't need
to have time for everything if it's a group effort. The beauty of the
approach is that the spec and code writers are also the main users.
I still don't understand why you are so drawn to finalizing specs first
and then having other people implement and use them. What would you lose
in being part of a more open-ended process with the users on board?
> I think what is going to happen fairly soon (after the Orange Edition is
> ballotted) is that I migrate my remaining specs out of
> johnwcowan/r7rs-work and into pre-srfi repos, and then get out of the
> SRFI business altogether. I will focus on WG2 duties, and will arrange
> SRFIs into ballots based on availability rather than subject matter.
What does that mean for those pre-SRFIs -- will they be up for grabs for
other people to continue the work and submit as SRFIs?
> A library collection would basically be the same thing, but putting
> all libraries in a monorepo with collective ownership instead of
> separate repo per library, each owned by one person.
>
> The trouble with a monorepo is "once mono, always mono"
That would be exactly desirable for Scheme Live. We have to be able to
change not only modules, but module boundaries. Otherwise we're blinded
to important possibilities in the design space.
Current SRFI and pre-SRFI do not have a primary aim to produce one
cohesive language, and corresponsingly one repo per SRFI is a good idea.
Scheme Live should have as a main goal that the libraries make one
whole. [Insert obligatory joke about Buddhist at the hot dog stand.]
> it is a pain in
> the ass to extract a particular subtree into a SRFI repo,
Not sure I know this pain. Haven't found any fundamental problem with
it. There are better tools than `git filter-branch` now.
> whereas if
> each pre-SRFI is in its own repo it is easy to transfer it to SRFI space
> and archive the pre-SRFI space. Ownership isn't really an issue:
> everyone who is an owner of the pre-srfi org is also an owner of all the
> individual repos, and there's no reason why everyone who wants to
> participate can't be added as well. (Of course there will be some
> participants who want nothing to do with GitHub.)
This is fine for SRFI, and if pre-SRFI is to be an exact mirror of SRFI,
then for that as well. The separate repos have thus far led to de facto
separate ownership by way of Conway's Law.