Re: Scheme.org work you've already done Lassi Kortela 23 Nov 2020 19:24 UTC
> Hi, Lassi. You've already done a bunch of infrastructure work to prepare > for the new Scheme.org and subdomains, including a prototype home page. > Would you like to describe that here now that the list has been > established, and advertise the Github repos as well? It's all in public repos here: <https://github.com/schemeorg>. The two main repos are: * schemeorg -- This repo contains a full description of all current Scheme.org projects. The master file that drives everything else is "projects.scm". Each project is associated with exactly one direct subdomain of scheme.org: for example, the "doc" project maps to "doc.scheme.org", the "api" project maps to "api.scheme.org", etc. All nested subdomains of the form "*.doc.scheme.org" also belong to the "doc" project, etc. For example, if Fantastic Scheme was hosted under scheme.org, its website could be at fantastic.scheme.org, and version control under git.fantastic.scheme.org. Each project is responsible for bringing its own servers (usually that means a Linux VPS running suitably configured web server software). A VPS doesn't need to be dedicated to one project; nginx and other web servers allow easy setup of virtual hosts so one VPS can drive any number of low-traffic domains and subdomains. When a project has a server set up, then A/AAAA or CNAME records for that server are added to "projects.scm" and "dns.sh" is run to re-generate the "dns.zone" file. Our domain registrar, Gandi, has a wonderful DNS API whereby we can directly upload a zone file using "dnsput.sh", making DNS administration easy. If you read at "dns.zone", that file is exactly what goes onto the DNS server and shows the current state of Scheme.org at a glance. Each project is associated with one or more individuals who can be contacted in case of questions or problems. * linux-configurations -- This repo holds the configurations for the current Debian Linux VPS that runs the Scheme.org web server. The main config is written as an S-expression which a small Scheme program <https://github.com/lispunion/lander> turns into an Ansible configuration. Ansible is then run to push the config to the server. I didn't write an Ansible config directly because its native config format consists of deeply nested directories full of little YAML files, which is hard to edit. Nginx configuration files are similarly hard to edit, so "nginx.scm" generates that stuff. Things are getting slightly hacky at this point, and there's some repetition in the main config "schemeorg.scm" but it definitely beats manual configuration and the native formats for convenience. We can gradually develop these tools into a more polished form. It might be a good idea to standardize on Debian Linux for all the "community-owned", consensus-driven servers. Debian is well-known among schemers, and it would be the same familiar environment everywhere. For subdomains that are operated by a particular group for their own project (not consensus-driven), that group can of course use whatever software they want.