Note: The Maintainer Guide discusses general PR best practices, including issues that are unrelated to protocols.
- Fork the repo.
- Choose protocol name and version. Example:
my-cool-protocol
,0.1
. - Create a folder
site/content/protocols/<protocol-name>/<protocol-version>
. - Create a protocol definition document in that folder as a markdown file named
readme.md
. Use the following example as a reference. - Send a pull request to the
main
branch. - Wait until all CI checks are complete, and fix the errors if there are any.
- Check for warnings in validation details, and consider fixing them.
- Example of warnings:
tag: star-war is similar to existing tags: star-wars. Make sure you can't use existing one.
- Where to find the warning details: go to Details - Test meta - Validate tags similarity (see example)
- Example of warnings:
-
Fork the repo.
-
Decide if the update is
- a fix
- compatible change
- non-compatible or breaking change
-
If update is a
fix
- the version must be the same
- make changes in existing
site/content/protocols/<protocol-name>/<protocol-version>/readme.md
- send a pull request to the
main
branch - add
[fix]
postfix to the PR title
-
If update is a
compatible change
- define a new version where minor part must be incremented (for example, from 0.1 to 0.2)
- copy the previous readme.md to the new folder
site/content/protocols/<protocol-name>/<new-protocol-version>
- make changes in the
readme.md
- send a pull request to the
main
branch - add
[compatible]
postfix to the PR title
-
If update is a
non-compatible change
- define a new version where major part must be incremented (for example, from 0.1 to 1.0)
- copy the previous
readme.md
to the new foldersite/content/protocols/<protocol-name>/<new-protocol-version>
- make changes in the
readme.md
- send a pull request to the
main
branch - add
[non-compatible]
postfix to the PR title
-
Wait until all CI checks are complete, and fix the errors if there are any.
-
Check for warnings in validation details, and consider fixing them.
- Example of warnings:
tag: star-war is similar to existing tags: star-wars. Make sure you can't use existing one.
- Where to find the warning details: go to Details - Test meta - Validate tags similarity (see example)
- Example of warnings:
<protocol-name>
folder — the name of your protocol.
- It follows SLUG pattern and may consist of only lower cased latin letters, digits and
-
as separator, e.gmy-cool-protocol
. - It must be unique. For example,
my-protocol
andmyprotocol
are the same.
<protocol-version>
folder — follows semver without patch version. It must consist of two digits (major and minor versions) separated by .
, e.g 1.0
.
Placed at the top of the protocol definition between ---
.
Uses yaml syntax.
The following fields must be specified:
title
— the official name of the protocol. Should be the same as<protocol-name>
folder but user friendy. Will be displayed in search results and at protocol details page.piuri
— DIDComm protocols are uniquely identified by a special URI called a PIURIhttps://didcomm.org/<protocol-name>/<version>
, e.ghttps://didcomm.org/my-cool-protocol/1.0
.publisher
— the GitHub username of the person who publishes the protocol.authors
— list of authors. Author object has next fields:- name
- email (optional)
license
— protocol license.tags
— some hashtags that might be used to associate the protocol with topics. It's recommended to re-use existing tags before creating new similar ones (for example, consider re-using existingfinance
tag instead of creating a new one calledfinancial
).summary
— in one or two sentences, explain what problem this protocol solve, how it works, and other key characteristics.status
— one of theProduction
,Demonstrated
orProposed
.
Body of the protocol should tell a programmer why a protocol is interesting, and how to use it at a high level. It should answer questions like these:
- What are the formal codes for the goal(s) that the protocol achieves?
- What are the formal names of the roles in the protocol?
- What is the MTURI, format, and sequence of messages exchanged in the protocol?
- What is the state machine that embodies progression through the protocol for each role?
- How does the protocol function as a co-protocol?
- Who are the protocol's authors?
- What implementations exist, and where can they be found?
- Where can a developer learn more?