Proposal for a simple plan Lassi Kortela 12 Jul 2019 10:30 UTC

To satisfy both the need for a plan and the need for sufficient freedom,
how about the following simple plan.

Under the Schemedoc project:

- Write Scheme scripts to scrape metadata into S-expression files.

- Write Scheme scripts to convert the S-expressions into JSON.

- api.schemers.org -- Simple Node server that reads the JSON files and
serves them as GraphQL.

- Once Scheme's web server capabilities are up to date (see below),
switch api.schemers.org to a Scheme implementation instead of Node.
Maybe first switch to Kawa (with a Scheme GraphQL server wrapping the
Java GraphQL server) then later to something like Chez.

- Once we have designed a S-expression syntax for GraphQL, offer that
from the Scheme API also, so clients can opt to use only S-expressions,
no JSON.

- docs.schemers.org -- A newbie-friendly documentation/metadata browser
written in Scheme. Use a Scheme that runs in browser or transpiles to
JS. This should be a "reference" site instead of a "brochure" site.

- The "brochure" site should be under some other domain. (Maybe
schemers.org, maybe scheme-lang.com; we should ask more people. The
schemers.org front page needs to be "politically neutral" between Scheme
implementations and RnRS. Shriram has managed it for a very long time.)

Under the Schemeweb project:

- Develop GraphQL client libraries for Scheme. (This is a simple task if
a Scheme has HTTP client and JSON encode/decode libraries; I can write
libraries for Racket, Chicken and Guile for example.)

- Develop HTTP server and GraphQL server libraries for Scheme. (This is
pretty hard and takes some time, but will benefit Scheme as a whole; a
modern web server language should have good libraries for these tasks
even if Schemedoc didn't exist. Recruit help from others.)

- Design an alternative S-expression syntax for GraphQL that is also
supported by the above libraries. (We have several people with interest
and/or relevant experience for this task, so we should be able to do a
good job.)

This way, I hope everybody wins:

- People who don't want to use GraphQL can read the S-expression files
straight from the generators.

- We can easily maintain a flexible, extensible, type-checked API thanks
to GraphQL, which can provide JSON and eventually S-expression data to
web apps.

- We'll make Scheme's web stack more attractive to mainstream
programmers (and also more useful to ourselves) by supporting popular
web standards.