Re: Spec vs code, user-driven vs designer-driven Amirouche Boubekki 01 May 2021 14:10 UTC

Consolidated response to a couple of points

I think the python 2 / 3 problem was cultural. This was mostly a
problem because companies think software should be written once and
never touched like physical buildings. Software should stand the test
of time over a period of hundred years. Except both the knowledge and
required skills is not there yet. The question of backward
compatibility should not be compared with CPython 2 /3 case only. Did
you read about the async yield from vs. async / await or even just the
async / await thing that I call "split brain syndrome"? no. It was and
is a pain. PR does not explain the whole story. There are many
approaches to bridge the gap between incompatible versions of the same
language (polyfill libraries such as python six, or even re-writing
the code such as 2to3.py or js babel).  If Scheme aims to be the
perfect programming language, it should not be a primary concern
whether it is backward compatible or not.

What would be the advantage of moving to R8RS?

> the idea of R6RS and R7RS-large is to write practical applications as well.

That is confusing. What is a practical application? That is mostly a
problem with R7RS WG1 and WG2 phrasing. What about educational
purpose? Steering software engineering toward a good direction? What
about different hardwares architecture or constraints? I think there
is a big difference (sadly) between being successful in the job market
(army of developers), or succesful commericaly (money making, which
scheme does), or educational material (ok) or even research material
(ok too). To summarize, except there is no visible army of developers
that practice Scheme on a daily basis, Scheme is successful.

As far as portability goes, it is possible across R6RS and R7RS. Tho,
a test suite that is not normative, and easy to re-use will help a
lot.

Chez / Guile / Racket have R6RS support, that does not say whether
R6RS is successful. Guix, the primary, biggest and almost only floss
program built with Guile, does not rely on R6RS. There are other big
programs / sets of programs such as C FFI automagic library or even
MES bootstrap that are used by Guix / Guile. All those are built with
Guile specific stuff e.g. the module system is not compliant, and even
if the rest was portable, it will require much tedious work to make it
run on another Scheme. Regarding Racket it is a big ecosystem but not
impact on the job market. Chez is the same, except there is little or
no reach in the floss community (the mailing list is silent, no big
floss project uses Chez). I think overall Gambit with JazzScheme,
Gerbil, and with secret industry users is more successful than those
you cited.

> And adding new people to the community is hard if no-one can figure out
which of the warring RnRS, if any, is legitimate.

Nobody cares (meme https://i.redd.it/b9ca0ux5wkq41.jpg). My
understanding there is three reasons to take part in SRFI / RnRS:

- Improve / communicate / gather software engineering practices and
have a conversation with knowledgeable people

- Grow your audience to attract users in to your implementation,
possibly aiming for Turing award or such

- Have feedback on your own ideas

None is Scheme specific. And forking the language and target JS or
wasm has a much bigger chance of success (including much more industry
adoption). What remains is "Scheme spirit" which I keep repeating is
according to me: aiming for perfection, and that leaves too much to
interpretation to guide any standardization work.