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.