Thanks for writing to the list, Adam!

A suggestion for a global namespace: something under (scheme ...), like (scheme contrib _) or (scheme extra _). That marks the namespace as "reserved", but still allows as many entries to be added as necessary without colliding with anything in the official R7RS.

Good idea but R7RS-small says: "Libraries whose first identifier is scheme are reserved for use by this report and future versions of this report."

Maybe R7RS-large could specify that (scheme something ...) is reserved for this purpose. In practice, it wouldn't conflict with anything that's currently in Scheme.

Since this is a new idea, do we have the moral authority to add stuff under (scheme ...) though? Maybe it should first be tried out under some less official prefix.

Also, when it comes to development style: will this library be made up of /specifications/ that each Scheme implements differently (like SRFIs), or of a single /implementation/ that tries to be compatible with as many Schemes as possible (a la Schemepunk)?

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.

In other words, the opposite direction than what SRFI is currently using. (Classically, I guess a SRFI specification is intended to be the end product of implementation work that has first been done elsewhere, so in that respect the library collection would be one central place to do this groundwork for SRFI. Of course, people could still submit SRFIs prepared elsewhere.)

The https://github.com/pre-srfi organization currently serves as an unofficial staging area for SRFI. 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.

If it's the latter, contributing to this repo will quickly become overwhelmingly complex. Keeping 7 Schemes working in Schemepunk is already a lot to juggle, and the test suite takes a long time to run. I was recently bitten by a bug where the whole thing didn't work in Gauche 0.9.10, but I was using an older Gauche so I didn't notice...

Yes, it does sound that good CI would be essential in the long run.

The collection has to be portable if it represents Scheme as a whole. That can only work if libraries in the collection are allowed to start out unportable and gradually be ported to more Schemes as people have time and interest to do the porting work. If full portability was required from the start, no-one could add things that require FFI bindings without writing bindings for everything. That would be quite demoralizing :)

Each sublibrary could have its own compatibility matrix, but we'd have to track this carefully and set up a test method for each Scheme and possibly even multiple versions of each Scheme.

This is a good idea IMHO. Letting CI run the test suite and produce the compatibility matrix based on passed tests sounds like the right thing.

Reply via email to