Skip to content

Cleanup specs and structure #329

@DanielOaks

Description

@DanielOaks

This is something I've been meaning to do for a while, just making an issue so I remember to submit the changes. Once #327 is done and SASL is merged I'll do this.

  1. Merge CAP 3.1, CAP 3.2 and cap-notify (Merge CAP 3.1, CAP 3.2, and cap-notify specs #327). (done)
  2. Remove version numbers from spec filenames and YAML title names.
  3. Where they exist, remove markdown headers that duplicate the YAML title headers on specs (some specs for instance have an ## IRCv3 <blah> Extension up the top in addition to the YAML header – rip that out.
  4. Reorganise the specs under a few separate folders.
  5. Merge SASL 3.1 and SASL 3.2 (including @RyanSquared's PR extensions/sasl-3.1: Fix when to send 904 #408 ) and other points mentioned in the comments of this issue. (@grawity's changes here and comments here: grawity@317c2fa have been mostly-abandoned, prolly still worth looking through though)
  6. Make sure appropriate examples exist on all specs, so people implementing them have something to look at.
  7. We have a lot of encoding methods (cap values, tag values, isupport), and some of them are very similar (cap values and tag values). Split these out into a separate document if possible, so authors have to implement less code and can share them between uses.

This involves a lot of coordination between this repo and the website repo (renaming / combining specs data files, updating spec pages and etc), so need to be careful when merging PRs and subsequently pulling the updates into the website.

Since this repo's a submodule named /specs on the website, makes sense to have a few subfolders:

  • specs/client-tags: Client tag specifications.
  • specs/batches: Batch type specifications.
  • specs/sasl-mechs: SASL-mechanism-specific specs.
  • specs/metadata-keys: Metadata key specs.
  • specs/deprecated: Deprecated specs we want to keep around (such as the current SASL mech specs under specs/documentation).
  • specs/extensions: Everything not covered by the above.

Yep, under this arrangement everything currently in specs/core gets put into specs/extensions instead. It makes sure people know that things are optional (things like metadata aren't mandatory to implement to be IRCv3-compliant), and the main Specs page on the website is better positioned to make the necessary separation between, for example, cap, message-tags, and specs like extended-join anyway.

This replaces #265 and #299

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions