Contributing#
This page describes the internal process for making changes to the standard repository.
Getting started#
Before contributing to Markdown pages, read the markdown style guide.
Before contributing to JSON Schema and CSV codelists, read the schema style guide and the schema patterns section of Standards Lab.
To get up to speed on OFDS standard development, you should be familiar with:
The standard itself
The policies it follows
To improve your technical writing skills, consider taking Google’s Technical Writing Courses, which can be completed in a day.
Proposing changes#
Agree on a proposal in a GitHub issue.
Assign the issue to yourself, and move the issue’s card to the In progress column.
Create a branch of the
open-fibre-data-standard
repo (not a branch of your fork) in which to make your changes.Never use normative words on guidance pages. Use non-normative synonyms instead.
Consider composing Markdown content in Hemingway Editor or Grammarly, as suggested in the common conventions.
After adding a definition to
schema.json
, add a sub-heading for the new sub-schema inreference.md
.
Update the changelog, maintaining schema order in the list of changes.
Run
./manage.py pre-commit
to update the reference documentationIf you used a validation keyword, type or format that is not already used in the schema:
Update the list of validation keywords, types or formats in JSON Schema usage.
Add a field that fails validation against the new keyword, type or format to
network-package-invalid.json
.Check that OFDS CoVE reports an appropriate validation error.
If you added a normative rule that is not encoded in JSON Schema:
Update the list of other normative rules.
Add a field that does not conform to the rule to
network-package-additional-checks.json
/Open a new issue to add an additional check to Lib Cove OFDS.
Commit your changes.
Atomic changes
Make atomic changes in one commit, rather than over many commits: for example, when adding a definition to the schema, add it to the schema reference documentation in the same commit. That way, reverting a commit doesn’t leave the standard in an incoherent state.
Create a pull request.
Write the pull requests’ description, filling in the relevant bits of the provided template.
Set the base branch, e.g.
main
.Set the milestone, e.g.
1.0
.
Assign to another team member to review.
See the next section for reviewer’s instructions.
If changes are requested, make the changes, then repeat this step.
Once approved, you can merge it yourself.
Logging changes#
Follow the changelog style guide.
Reviewing changes#
You can use GitHub’s suggestions feature to suggest changes directly.
You should check for:
Correctness: Do the changes conform to the standard and its principles?
Style: Do the changes respect the style guides? Are normative words used on guidance pages?
Spelling and grammar: If there are few errors, suggest changes directly. If there are many errors, ask the author to use Grammarly or similar.
Repository management#
Issues#
All issues should be assigned one or more labels.
Milestones#
Each development version should have a milestone, like
alpha
orbeta
. There should at most one milestone for each of the patch, minor and major levels.All issues should be assigned to a milestone.
Projects#
Each version under active development should have a organisation-wide project.
Modelling approaches#
Before proposing new structures:
Draft a JSON example with reasonable values
Check other standards for potential models