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.