0302: Aries Interop Profile
- Authors: Stephen Curran, John Jordan Province of British Columbia
- Status: ACCEPTED
- Since: 2020-01-30
- Status Note: This RFC defines an Aries Interop Profile process and Aries Interop Profile v1.0
- Start Date: 2019-11-06
- Tags: concept
This RFC defines the process for the community of Aries agent builders to:
- enumerate a versioned set of Aries concept and feature RFCs which are collectively referred to as 'Aries Interop Profile Vx.y'
- track Aries Interop Profile versions.
"Agent builders" are organizations or teams that are developing open source code upon which agents can be built (e.g. aries-framework-dotnet), or deployable agents (e.g. OSMA Mobile App), or commercially available agents.
An Aries Interop Profile (AIP) version provides a clearly defined set of RFCs for Aries agent builders to target their agent implementation when they wish it to be interoperable with other agents supporting the same Aries Interop Profile version. The Aries Interop Profile versioning process is intended to provide clarity and predictability for Aries agent builders and others in the broader Aries community. The process is not concerned with proposing new, or evolving existing, RFCs, nor with the development of Aries code bases.
At all times, the Reference section of this RFC defines one or more current Aries Interop Profile versions -- a number and set of links to specific commits of concept and features RFCs, along with a list of all previous Aries Interop Profile versions. Several current Aries Interop Profile versions can coexist during periods when multiple major Aries Interop Profile versions are in active use (e.g. 1.x and 2.x). Each entry in the previous versions list includes a link to the commit of this RFC associated with that Aries Interop Profile version. The Reference section MAY include one ".next" version for each existing current major Aries Interop Profile versions. Such "next" versions are proposals for what is to be included in the next minor AIP version.
Once a suitably populated Aries test suite is available, each Aries Interop Profile version will include a link to the relevant subset of test cases. The test cases will include only those targeting the specific versions of the concepts and features RFCs in that version of Aries Interop Profile. A process for maintaining the link between the Aries Interop Profile version and the test cases will be defined in this RFC once the Aries test suite is further evolved.
This RFC includes a section maintained by Aries agent builders listing their Aries agents or agent deployments (whether open or closed source). This list SHOULD include the following information for each listed agent:
- The name, version and link to the agent (code or deployment)
- The type of the agent (see below)
- The name and link to the builder(s)
- The version of Aries Interop Profile supported
- A link to the test suite results or a summary of caveats/details about the agent's AIP support
- Notes about the agent
An Aries agent builder SHOULD include an entry in the table per major version supported. Until there is a sufficiently rich test suite that produces linkable results, builders SHOULD link to and maintain a page that summarizes any exceptions and extensions to the agent's AIP support.
The type of the agent MUST be selected from an enumerated list above the table of builder agents.
The establishment of Aries Interop Profile versions defined by the Aries agent builder community allows the independent creation of interoperable Aries agents by different Aries agent builders. Whether building open or closed source implementations, an agent that aligns with the set of RFC versions listed as part of an Aries Interop Profile version should be interoperable with any other agent built to align with that same version.
This RFC MUST contain the current Aries Interop Profile versions as defined by a version number and a set of links to concept and feature RFCs which have been agreed to by a community of Aries agent builders. "Agreement" is defined as when the community agrees to merge a Pull Request (PR) to this RFC that affects an Aries Interop Profile version number and/or any of the links to concept and feature RFCs. PRs that do not impact the Aries Interop Profile version number or links can (in general) be merged with less community scrutiny.
Each link to a concept or feature RFCs MUST be to a specific commit of that RFC. RFCs in the list MAY be flagged as deprecated.
Aries Interop Profile versions SHOULD have a link (or links) to a version (specific commit) of a test suite (or test cases) which SHOULD be used to verify compliance with the corresponding version of Aries Interop Profile. Aries agent builders MAY self-report their test results as part of their entries in the list of agents.
Aries Interop Profile versions MUST evolve at a pace determined by the Aries agent builder community. This pace SHOULD be at a regular time interval so as to facilitate the independent but interoperable release of Aries Agents. Aries agent builders are encouraged to propose either updates to the list of RFCs supported by Aries Interop Profile through GitHub Issues or via a Pull Request. Such updates MAY trigger a change in the Aries Interop Profile version number.
All previous versions of Aries Interop Profile MUST be listed in the Previous Versions section of the RFP and must include a link to the latest commit of this RFC at the time that version was active.
A script in the
/code folder of this repo can be run to list RFCs within an AIP
version that have changed since the AIP version was set. For script usage information
run the following from the root of the repo:
python code/aipUpdates.py --help
The Aries Interop Profile version number and links to other RFCs in this section SHOULD only be updated with the agreement of the Aries agent builder community. There MAY be multiple active major Aries Interop Profile versions. A list of previous versions of Aries Interop Profile are listed after the current version(s).
Aries Interop Profile Version: 1.0
The initial version of Aries Interop Profile, based on the existing implementations such as aries-cloudagent-python, aries-framework-dotnet, Open Source Mobile Agent and Streetcred.id's IOS agent. Agents adhering to AIP 1.0 should be able to establish connections, exchange credentials and complete a connection-less proof-request/proof transaction.
|RFC Type||RFC/Link to RFC Version|
To Do: Link(s) to version(s) of the test suite/test cases applicable to this Aries Interop Profile version.
Will be the version number as a link to the latest commit of this RFC while the version was current.
Aries Agent Builders and Agents
A list of agents that claim compatibility with versions of Aries Interop Profile. A entry can be included per agent and per major Aries Interop Profile version.
The agent type MUST be one of the following:
- Mobile - A mobile agent; does not require mediator routing capabilities, credential issuing capabilities.
- I/V - A cloud-based Issuer/Verifier agent; does not require credential holding support.
- Mediator - A mediator/relay agent; does not require verifiable credential exchange protocol capabilities.
- Holder - A cloud-based holder/prover agent; does not require credential issuing capabilities.
- Framework - A general purpose agent code base for an agent that is the basis for deployments of agents; typically supports all AIP protocols.
|Name / Version / Link||Agent Type||Builder / Link||Aries Interop Profile Version||Test Results||Notes|
It may be difficult to agree on the exact list of RFCs to support in a given version.
Rationale and alternatives
Continuing with the current informal discussions of what agents/frameworks should support and when is an ineffective way of enabling independent building of interoperable agents.
This is a typical approach to creating an early protocol certification program.
- The community agreement process for setting Aries Interop Profile versions needs to be tried and adjusted as appropriate.
- The tracking of who is part of the Aries agent builders community needs to be defined so we know who should have the strongest say in the setting of Aries Interop Profile versions.
- Should the Implementations table in all RFCs (below) be used for the agent builders table (above)? Or, should we eliminate the per RFC “implementations table (below and in all RFCs) and just use this RFC to track implementations?
The following lists the implementations (if any) of this RFC. Please do a pull request to add your implementation. If the implementation is open source, include a link to the repo or to the implementation within the repo. Please be consistent in the "Name" field so that a mechanical processing of the RFCs can generate a list of all RFCs supported by an Aries implementation.
Implementation Notes may need to include a link to test results.
|Name / Link||Implementation Notes|