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
mainbranch. - 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
mainbranch - 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
mainbranch - 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.mdto the new foldersite/content/protocols/<protocol-name>/<new-protocol-version> - make changes in the
readme.md - send a pull request to the
mainbranch - 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-protocolandmyprotocolare 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 existingfinancetag 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,DemonstratedorProposed.
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?