Common conventions
==================
This style guide covers our conventions when writing:
- OCDS Schema and standard documentation
- GitHub issues
- Data support responses
- Associated presentations and documents
Readability
-----------
We strive to write concise, clear documentation. To improve your writing, please learn how to write `in plain language `__ and `for the web `__ (with many more resources at `Nielsen Norman Group `__), and consider using these tools:
- `Hemingway Editor `__
- `Grammarly `__
- Readability statistics in Microsoft Word or `online tools `__
Spelling
--------
Use American English (e.g. "organization" rather than "organisation") unless we are aligning a field name with an existing standard that uses alternative spellings. Notably, this means being careful about using "z" instead of "s" in many words of Latin origin.
Text formatting
---------------
- Do not use constructions like "supplier(s)" or "the supplier (or suppliers)". The plural is fine, like "suppliers".
- Do not use smart quotation marks like ``“ ” ‘ ’``. Use simple quotation marks like ``" '``.
- When referring to a **field** or **codelist**, use the camelCase version of the field/codelist name, and enclose it in backticks so it is displayed in a montotype font as follows: ``camelCase``
- When referring to a **subschema**, use the capitalized CamelCase version of the subschema name, and enclose it in backticks so it is displayed in a montotype font as follows: ``CamelCase``
- When referring to a **code** from a codelist, enclose the value in single quotes, e.g. "We have added a 'direct' code to the ``method`` codelist". Note that ``true`` and ``false`` are not codes; they are boolean values.
- When pluralizing a **field** or **subschema**, treat the field/subschema name as a proper noun, and add a ``'s`` instead of an ``s`` to the end, or treat it as a mass noun and add nothing to the end
- When referring to a field in JSON Schema, use dot notation, like ``tender.id``. (Slash notation is reserved for `JSON Pointer `__. For example, the JSON Pointer for ``tender.id`` is ``/definitions/Tender/properties/id``.)
- When referring to a field in OCDS data, use a JSON Pointer, like ``/tender/id``. That said, dot notation is allowed for consistency with existing documentation.
.. tip:: Examples and step-by-step mapping guidance typically refer to fields in OCDS data, not fields in JSON Schema. For example, instructions to populate fields refer to OCDS data. (You can't populate JSON Schema; the schema is unchanging, for a given version of OCDS.)
Word choice
-----------
General
~~~~~~~
- "example", **not** "worked example"
- "user", **not** "data user"
- "hyphen", **not** "dash", to describe the "-" character
- "while" or "although", not "whilst"
- "for example", "such as", "like" or "including", **not** "e.g."
- "that is", "in other words" or "meaning", **not** "i.e."
- **Never** use "free-text"
Data concepts
~~~~~~~~~~~~~
- Use ``ocid`` to refer to the field and "OCID" to refer to the concept
- "phase", **not** "stage", for parts of OCDS implementation
- "changelog", **not** "change-log" or "change log"
- "codelist", **not** "code-list" or "code list"
- "data package", **not** "datapackage"
- "dataset", **not** "data set"
- "metadata", **not** "meta-data" or "meta data"
- "subschema", **not** "sub-schema"
When describing data:
- "publication" for the data source that persists across time
- "collection" for the publication's data at a specific point in time
- "JSON data", **not** "JSON document", to avoid confusion with the ``documents`` field
- Prefer "release" and "record" to "OCDS release" and "OCDS record", unless the latter are clearer in context
When describing JSON Schema:
- "property" to refer to JSON Schema metadata properties, like ``enum``
- "field" to refer to a property with a literal type (number, integer, string, boolean, array only if GeoJSON), like ``tender.id``
- "array", **not** "list" to refer to a property with the array type, like ``awards``
- "object", **not** "block" to refer to a property with the object type, like ``tender``
When referring to a **subschema**:
- "object", if the subschema is used in the context of building a JSON text, like "add an `Award` object to the `awards` array".
- "subschema", otherwise. Where appropriate, consider rephasing the sentence to be about building a JSON text (and therefore using "object").
When referring to a field, prefer the notation for the path in the data, like ``/contracts/period``, rather than the notation for the path in the schema, like ``Contract.period``.
Procurement concepts
~~~~~~~~~~~~~~~~~~~~
- "organization", **not** "party" or "entity", except in cases like "procuring entity" or "third party"
- "stage", **not** "phase", for parts of a contracting process or framework agreement procedure
- Use the order "goods", "services" and "works" (alphabetical)
Instead of "tender", which can mean both the bid from the supplier and the opportunity from the buyer:
- "bid", when referring to a submission from a supplier
- "opportunity" (or "procurement opportunity"), when referring to a request, contest, etc. from a buyer
- "contracting process", when referring to the entire process
- "tender stage", when referring to the part of the contracting process
- "tender release", like in the context of release tags
- "tender notice", like in the context of document types
- "tender object", when referring to the field
Processes:
- "contracting (or planning) process", unless the sentence relates to only one or the other
- "(contracting or planning) process", if the sentence relates to a scope of uniqueness
- "planning process", **not** "planning stage"
- **Never** refer to an "OCDS process", "OCDS contracting process" or "OCDS planning process". "contracting process" and "planning process" refer to real-world processes, never to their OCDS representation. In OCDS, there are only releases and records.
Organization roles:
- "buyer or procuring entity", **not** "buyer" or "procuring entity", except if the sentence is specific to one role, and **not** "contracting authority"
- "supplier" for the awardee of a contract
- "tenderer" for the submitter of a bid
- "potential supplier" for a potential participant in a contracting process
- "unsuccessful tenderer", **not** "unsuccessful bidder"
For maintainers
~~~~~~~~~~~~~~~
These regular expressions can be used to find breaches of the style guide, accounting for false positives.
"party" or "entity"
``(?`
extension.json metadata files
-----------------------------
- Do not use backticks.
Images
------
#. Create the image, preferably using easily accessible collaborative tools like `Google Drawings `__.
#. Store the editable version in the *Assets* folder within the appropriate folder within `this Google Drive folder `__.
#. Export the image in PNG format.
#. Use a descriptive, lower-case filename, with underscores between words. Append "_es" to the filename if the content is in Spanish.
#. Store the exported version in the ``docs/_static/png`` directory in the standard's repository. Create a sub-directory to group related images, as needed, rather than using a common prefix to the filename.