14 Process✎

What each version of the specification promises, how a change is proposed, registering a profile, and the changelog.

InformativeDraft 0.1Pending review

14.1 Versions and what they promise

VersionPromises
Draft 0.xNothing. Anything can change between drafts. Implementations may follow along.
1.0Every 1.x editor reads every 1.x file. A graph saved by 1.0 opens unchanged in 1.9.
1.xAdds and never removes: fields an older reader can keep without knowing, kinds of node an older renderer can draw as a plain card.
2.0May change what exists, and comes with a migration from 1.x files (§9.7).

The specification's version is not Roswaal's. A Roswaal release says which draft it implements; this is Draft 0.1, first carried by Roswaal 0.162. Each draft is published at an address of its own on spec.roswaal.app, kept as it was published once a newer draft replaces it.

The road to 1.0

  1. Write Part I against the editor as it is, and keep it in step as the editor changes. This draft.
  2. Split what is Luau's and Roblox's out of Roswaal's core into the profile, so Part I's generated tables are the language-neutral ones and Part II's the profile's.
  3. Publish a JSON Schema for each file (§9), and the fixtures and checker (§13).
  4. Build a second, small implementation, a viewer, from the specification alone. Whatever it has to read Roswaal's source to get right is a gap in the text.
  5. A candidate, then 1.0: the file format and the visual grammar freeze, and from then on a change is a proposal.

14.2 Proposing a change

Until 1.0, through an issue on Roswaal's repository, linked from the Suggest an edit button at the top of every page. From 1.0, in four stages, the same shape as Luau's own RFCs:

StageWhat
ProposalAn issue in a fixed form: the problem, the change, and what it breaks.
DraftThe changed pages and fixtures, as a pull request. Roswaal may ship it behind a setting.
AcceptedMerged into the next minor version's draft, with its changelog entry.
ReleasedIn a numbered version, its fixtures part of conformance from then on.

14.3 Registering a profile

14.3-R1

A profile's id is what a graph file says it is for (§9.1), so two profiles MUST NOT share one.

Roswaal meets

Until there is a registry, roblox and lune are taken, and a new profile is registered by proposing it (§14.2).

14.4 Changelog

Changes to the specification are listed in Roswaal's release notes until it has a changelog of its own.

Not reviewed yet