w3c / modern-tooling

Work of the modern tooling task force
http://w3c.github.io/modern-tooling/
MIT License
44 stars 39 forks source link

Nightly builds of Editor's Drafts #6

Open tobie opened 9 years ago

darobin commented 9 years ago

What do you mean by that?

tobie commented 9 years ago

Mainly: rendered versions of ReSpec drafts.

darobin commented 9 years ago

You mean with something like https://github.com/w3c/spec-generator?

tobie commented 9 years ago

You mean with something like https://github.com/w3c/spec-generator?

Didn't know this was a thing. It's this deployed somewhere (I'd use it).

I mean something something like this but storing a daily copy of the changes.

darobin commented 9 years ago

Yeah, I think that'd be a good idea. It's what I have in mind under the diffs thing. Echidna is likely to serve that purpose in fact.

The spec-gen is deployed but it is only usable from inside the W3C server farm at this point. It hasn't been security-checked and all that, and some of what it does could be troublesome. That said, nothing prevents you from running it in your project.

We're also planning to make it usable as a library. Once that's done Specberus will be able to check ReSpec documents directly. (Echidna can already process them, which is kind of cool.)

plinss commented 9 years ago

See also: https://drafts.csswg.org/ , https://drafts.fxtf.org/ , and https://drafts.css-houdini.org/ (source at: https://hg.csswg.org/dev/drafts/ ).

This system is currently based around Bikeshed, though can be expanded to other generators. It camps on a local hg repository of the the drafts (and can handle multiple repositories, currently serving csswg, fxtf, and css-houdini), syncs the repositories bi-directionally with multiple mirrors (git and hg, local and remote), and generates modified specs on pushes to any mirror.

If a generated spec is checked into the repository it simply serves that version instead.

All generated specs are maintained in a local cache by changeset ID, and previous versions are served via a dated URL (along with an index of all tracked pushes).

If the generator produces error or warning output, that output is emailed to the committer(s) (and cc'd to system admins). Generator output is also available online and current output status is reflected via a status icon automatically injected into the served specs (updated in realtime via long-running XHR both on the index page and within the generated specs).

If the generator fails to produce output (due to fatal error), the last successfully generated (or committed) version of the spec is served instead until the error is resolved.

It also coordinates with the spec anchor DB (which has long since been factored from Shepherd into a stand-alone module). It triggers spec DB updates when specs are updated, and then, in turn, re-generates all specs when the DB is updated to keep cross-references up to date.

It also gets notified when the Bikeshed source is updated (via GitHub WebHook) and re-generates all specs in response to a Bikeshed update (and sends error/warning output email to the Bikeshed maintainers).