0018: Indy Git Repos

  • Author: Devin Fisher, Nathan George

  • Start Date: 2018-07-24

Status

  • Status: ADOPTED

  • Status Date: (date of first submission or last status change)

  • Status Note: (explanation of current status; if adopted, links to impls or derivative ideas; if superseded, link to replacement)

Summary

Main purpose of this HIPE is to define repository structure of the Indy Project by answering the following questions:

  • what repositories compose the Indy Project

  • what is the purpose of each of the repositories

  • how are changes to the repository structure made

  • how are these repositories maintained

This documented list can be modified in the future via the HIPE process:

  • by submitting a PR that augments this document or

  • by submitting a future HIPE that will supplant this one

Motivation

The Hyperledger Indy Project is composed of several repositories that serve a variety of purposes. Some of these repositories have code that is critical for running or using an Indy identity system, while others serve a more auxiliary role. These repositories have been created largely ad-hoc as the need arose, and the concerns about how new repositories fit into the Indy project were generally not discussed in a way accessible to all participants to the project.

With that in mind, this HIPE will serve two purposes:

  1. Document the repositories that compose the Hyperledger Indy Project in the context of the project as a whole. (will not replace README contained in the repository itself)

  2. Allow for a process (via HIPEs) to propose new, rename existing, or make other changes to the specified repositories. This process will allow for all concerns to be addressed in a public forum.

Repositories

indy-node

Contains all artifacts that are used to run a node in an Indy network including:

  • indy node implementation

  • administration scripts

  • tools for working with Indy Node and

  • documentation

History

This repository has existed throughout most of the existence of what is now called Indy. This repository was created when the node elements that concerned the Sovrin was split from the RBFT ledger. This happened before the project was part of Hyperledger. When the project joined Hyperledger, this repository was joined with a client and common repository.

GitHub Link (see the README)

Maintainers Doc

indy-plenum

Contains the code for the RBFT protocol ledger that is purpose-built for the Indy Project.

History

This repository is the oldest surviving repository in the Indy Project. It existed before Indy joined Hyperledger. It has gone through several iterations but has always contained the codebase currently called Plenum. When the project joined Hyperledger, this repository was joined with several small upstream dependent repositories. They combine to create the current form.

GitHub Link (see the README)

Maintainers Doc

indy-sdk

Contains core libraries, language wrappers, tools, documentation, and other artifacts that enable developers to build Self-sovereign applications on top of the Indy platform. Exposed functionality includes managing connections to Indy Node pools, digital wallets, crypto functions, credentials, etc.

It is the official software development kit (SDK) for the Indy Project, and as such presents a main source of technology for non-community members.

GitHub Link (see the README)

Maintainers Doc

indy-hipe

This repository holds HIPEs (Hyperledger Indy Project Enhancements) which is the Indy Project process for project collaboration and forming project standards.

GitHub Link (see the README)

Maintainers Doc

indy-crypto

Contains shared cryptographic codebase for the Indy Project. Ideally, all cryptographic code will be maintained in this single repository.

GitHub Link (see the README)

Maintainers Doc

indy-agent

Contains official Indy Project reference agent implementations and agent protocols test suite.

GitHub Link (see the README)

Maintainers Doc

indy-test-automation

Contains a gathering place for scripts and other pieces of automation used for integration, acceptance, and stability testing of Indy Project components.

Test resources that span multiple repositories in function and scope can find a home here.

GitHub Link (see the README)

Maintainers Doc

indy-jenkins-pipeline-lib

Contains a library of reusable Jenkins Pipeline steps and functions for that are used in Hyperledger Indy Projects’ CI/CD pipelines.

GitHub Link (see the README)

Maintainers Doc

indy-docs

Contains general documentation conceptual information that introduces the Hyperledger Indy project. This repository is built into an html viewable documentation website that is the main portal to view documentation for each of the individual indy repositories. The website can be viewed at http://hyperledger-indy.readthedocs.io

GitHub Link (see the README)

Maintainers Doc

Maintenance

Unless otherwise specified repositories will be maintained by Indy Project maintainers. Every repository will define specific contribution procedures, and submitted PRs will follow the standard review process. It will party to the CI system that runs for the Indy Project.