Hosting plan for the Scheme API and its default web front-end Lassi Kortela (14 May 2019 22:39 UTC)
Re: Hosting plan for the Scheme API and its default web front-end Arthur A. Gleckler (14 May 2019 23:10 UTC)
Re: Hosting plan for the Scheme API and its default web front-end Amirouche Boubekki (14 May 2019 23:25 UTC)

Hosting plan for the Scheme API and its default web front-end Lassi Kortela 14 May 2019 22:39 UTC

[Written to the xxxxxx@ mailing list and cc'd to xxxxxx@]

Good news. Arthur contacted esteemed Schemer Shriram Krishnamurthi who
owns the domain names <scheme.org> and <schemers.org> to inquire if we
could use subdomains there to host our Scheme documentation
aggregator. Happily, Shriram liked the idea and is willing to update
DNS records to point to our server.

So we'd need to decide where to host. I registered a VPS at Vultr.com
which is cheap (starting at 3.50 USD/month) and has a very good
reputation on Hacker News. We can keep using that VPS, or if you have
other suggestions let's explore them. Some Schemers would like to
avoid the platform-as-a-service offerings of household-name providers
such as Amazon, Google and Heroku. This means it would be politically
and technically simplest to use a Linux VPS from a smaller provider
such as Linode or Vultr. I would avoid providers smaller than these as
the experience is unlikely to be as streamlined and polished; since
this is a volunteer project, it is also important to keep avoidable
technical complications to a minimum. For this reason, using a VPS
provider instead of our own physical server is also simplest.

With regard to the subdomains, my suggestion would be to have one for
the REST API and another for a default web front-end for browsing it.
The plan is to make an easy API based on a comprehensive dataset and
to cover people's diverse and evolving needs by letting anyone write a
client for it (we already talked about exploring web, command line and
Emacs clients; doubtless there could be several other kinds as well).
The default web front-end would be important as an obvious destination
for new Scheme programmers so that they are not overwhelmed by choice
right away. Meanwhile, if that front-end is on a different subdomain
from the API itself, it forces us to be honest in designing the API so
that it is future-proof and equally useful to all clients, not taking
design shortcuts to favor one frontend. The subdomains could be named:

api.scheme(rs).org
doc.scheme(rs).org

I would further suggest having separate staging instances of these
services so that when we make a change we can first push it out to
staging to verify that it works in an environment that closely matches
production yet does not affect production users if something goes
wrong. These could be:

api.staging.scheme.foo.org
doc.staging.scheme.foo.org

(Here "foo.org" is a stand-in for someone's personal domain. For
example, Arthur and myself both have our own domains where we can
freely add as many subdomains as we like. It doesn't really matter
under what domain the staging versions are hosted as they are only
used for testing purposes by people who develop the API. They can also
be moved from one domain to another if need be, whereas it'd be nice
to keep the production versions perpetually in one place.)

(It would also be possible to have production and staging under the
same subdomain, with the staging versions of URLs under a /staging URL
path, but web technology is designed so that it's easiest to have one
subdomain per site. For example, URLs that start with a slash / are
relative to the subdomain's root path. SSL certificates also work on a
domain/subdomain basis instead of paths.)

All of the four subdomains could point to the same IP address (our
VPS). We can install Nginx on the VPS and have it differentiate
between the subdomains by using the HTTP Host: header (which is the
standard way to do such differentiation). doc and doc.staging could be
static sites (driven by HTML, CSS JavaScript, all of which we could
generate from Scheme -- several Scheme-to-JavaScript transpilers
already exist). api and api.staging can each run their own copy of a
Scheme implementation to serve the REST API (Frank wrote tentative
code using Guile and we are planning to start by expanding on it).

I am willing to take primary responsibility for setting up and hosting
the server but will gladly share admin/coding responsibilities with
anyone who is interested in helping. I'll write and share an Ansible
configuration for the server so there is executable documentation on
how it is built. Arthur can take on the financial burden provided we
use a cheap VPS. He can also assist with running the server now and
then. Frank is especially interested in exploring clients for the APIs
and will likely also do some work on the server. If anyone who is
experienced with Scheme-based web dev is interested in advising us or
writing some code, that would be great.

Comments and suggestions on any/all of the above are welcome.