Skip to content

Commit

Permalink
Full documentation of mojaloop end-to-end product engineering process…
Browse files Browse the repository at this point in the history
…es (#450)

* progress commit - work in progress

* progress commit. work in progress.

* progress checkin. work in progress.

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* progress checking. work in progress

* add team charter template

* attempt to fix CI

* attempt to fix CI

* attempt to fix CI

* fixing color, formatting issues to help with the puml script auto generation of svgs

* accept suggestion from Sam

Co-authored-by: Sam <[email protected]>

---------

Co-authored-by: elnyry-sam-k <[email protected]>
Co-authored-by: Sam <[email protected]>
  • Loading branch information
3 people authored Dec 10, 2024
1 parent adad375 commit 4888976
Show file tree
Hide file tree
Showing 14 changed files with 625 additions and 20 deletions.
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ jobs:
- run:
<<: *defaults_configure_nvm
- run:
no_output_timeout: 30m
name: Update NPM install
command: npm ci
- run:
Expand Down
4 changes: 4 additions & 0 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@ module.exports = {
sidebarDepth: 2,
children: [
['contributing/contributors-guide', 'Contributors\' Guide'],
['contributing/product-engineering-process','Product Engineering Process'],
['contributing/design-review', 'Technical Design & Code Review'],
['contributing/consequential-change-process', 'Consequential Change Process'],
['contributing/critical-change-process', 'Critical Change Process'],
['contributing/new-contributor-checklist', 'New Contributor Checklist'],
['contributing/code-of-conduct', 'Code of Conduct'],
['contributing/signing-the-cla', 'Signing the CLA'],
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
72 changes: 72 additions & 0 deletions docs/community/contributing/consequential-change-process.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Consequential Change Process

For changes which are covered by the [consequential change definition](./design-review.md#consequential-changes) the
following process must be followed:

1. Propose a product change to the Mojaloop Product Council:
1. Create a 'Product Change Proposal' in the GitHub 'product-council' project
repository [here](https://github.com/mojaloop/product-council-project/issues).
1. Complete the template as thoroughly as possible to ensure a quick turnaround.
2. Send a message on the [#product-council](https://mojaloop.slack.com/archives/C01FF8AQUAK) slack channel asking
for a review of your proposal.
3. The Product Council will discuss your proposal with you in order to understand where it fits within the Mojaloop
product roadmap.
2. Propose code changes to the Mojaloop Design Authority:
1. Create a 'Consequential Change Proposal' issue in the GitHub 'design-authority-project'
repository [here](https://github.com/mojaloop/design-authority-project/issues).
1. Complete the template as thoroughly as possible to ensure a quick turnaround.
2. Send a message on the [#design-authority](https://mojaloop.slack.com/archives/CARJFMH3Q) slack channel asking for
a review of your proposal.
3. The design authority will assign one or more members to work with you on your proposal.
3. Take part in a design review:
1. Your assigned design authority member(s) will guide you through an iterative design review process.
2. Once the design review process is complete you may proceed with your change.
4. Implement and review your code changes:
1. Create and work on github/zenhub work items in
your [workstream process](./product-engineering-process.md#mojaloop-workstreams) as necessary. Be sure to
reference the product council ticket and consequential change proposal ticket in your item descriptions to enable
future traceability.
2. When you are ready to make pull requests on one or more code repositories, contact your assigned design authority
member(s) and ask them ro begin the code review phase.
3. Be ready to respond to questions and make adjustments during this stage.
4. Once your assigned design authority member(s) approve your pull request(s) your feature is ready for including in
the official Mojaloop release process.
5. Any changes to the design made during implementation must be recorded on the proposal ticket.

![Consequential Change Process](./assets/consequential-change-process.jpg)

## What to expect during the design review process

_The Mojaloop Design Authority has responsibility for ensuring risks are identified and mitigated appropriately and that
our established standards for tools, patterns and practices are upheld. Your assigned design authority member(s) are
there to help you achieve the best possible outcome for yourself and the entire Mojaloop community._

Your assigned design authority member(s) will help you identify and mitigate any risks your change may introduce as well
as discussing how your design aligns with established tools, patterns and practices.

1. You will be asked to talk through the reason(s) for your proposed change and to explain what you wish to achieve and
how you intend to achieve it.
1. You should be able to refer to an existing Mojaloop Product Council GitHub ticket showing that you have discussed
your work with them and they are happy for the change to be made. Note that the Product Council has a
responsibility to maintain a coherent roadmap for our technology and will guide you on the most appropriate way
to achieve your business objectives within the Mojaloop context. The Product Council may consult the Design
Authority as part of this process.
2. You should be able to explain how your change will be implemented, which existing components will be affected,
how they need to change and your designs for any new components. You should present, as a minimum:
1. UML sequence diagrams showing each significant component involved in your usecase(s) and how they interact to
achieve your desired outcome(s). You should make sure to include error cases as well as "normal" expected
behaviours.
2. Full details of any third-party components you will use as part of your implementation.
3. Full details of any changes to existing components highlighting the differences between current behaviours
and your desired changed and/or new behaviours.
3. Your assigned Design Authority members will likely ask lots of questions in order to fully understand your
proposal and its context.
2. Your assigned design authority member(s) will help you identify any other potentially impacted contributors, teams or
stakeholders to bring them in to the review process. This is done to ensure up and downstream behaviours are not
adversely affected and also, to take into account any upcoming changes in other areas of the system. Mojaloop is a
large system and it is often helpful to bring in experts from other areas to assist.
3. The primary goal of your assigned Design Authority member(s) is to identify and mitigate risks that you may not have
spotted.
1. Your assigned design authority member(s) may make suggestions to mitigate risk from your design and may ask you
to make specific changes to bring your proposal in line with any established Mojaloop constraints.

64 changes: 45 additions & 19 deletions docs/community/contributing/contributors-guide.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,85 @@
# Contributors' Guide

We are glad that you are considering becoming a part of the Mojaloop community.
We are glad that you are considering becoming a part of the Mojaloop community.

Based on the current phase of the Mojaloop project, we are looking for one of the following types of contributors:
Based on the current phase of the Mojaloop project, we are looking for the following types of contributors:

## Types of contributors

- #### Individual Contributors

> These individuals are those that want to start contributing to the Mojaloop community. This could be a software developer or quality assurance person that wants to write new code or fix a bug. This could also be a business, compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements gathering.
These individuals are those that want to start contributing to the Mojaloop community. This could be a software
developer or quality assurance person that wants to write new code or fix a bug. This could also be a business,
compliance or risk specialist that wants to help provide rules, write documentation or participate in requirements
gathering.

- #### Hub Operators

> Typically these or organizations or individuals or government agencies that are interested in setting up their own Mojaloop Switch to become part of the ecosystem.
Typically these or organizations or individuals or government agencies that are interested in setting up their own
Mojaloop Switch to become part of the ecosystem.

- #### Implementation Teams

> Implementation teams can assist banks, government offices, mobile operators or credit unions in deploying Mojaloop.
Implementation teams can assist banks, government offices, mobile operators or credit unions in deploying Mojaloop.

## How do I contribute?

* Review the [Mojaloop Deployment](https://docs.mojaloop.io/documentation/deployment-guide/) Guide and the [Onboarding Guide](https://github.com/mojaloop/mojaloop/blob/master/onboarding.md).
* Browse through the [Repository Overview](https://docs.mojaloop.io/documentation/repositories/) to understand how the Mojaloop code is managed across multiple Github Repositories.
* Read and familiarise yourself with our [product engineering processes](./product-engineering-process.md)
and [Mojaloop design and code review processes](./design-review.md).
* Review the [Mojaloop Deployment Guide](https://docs.mojaloop.io/documentation/deployment-guide/) and
the [Onboarding Guide](https://github.com/mojaloop/mojaloop/blob/master/onboarding.md).
* Browse through the [Repository Overview](https://docs.mojaloop.io/documentation/repositories/) to understand how the
Mojaloop code is managed across multiple Github Repositories.
* Get familiar with our [Standards](../standards/guide.md) for contributing to this project.
* Go through the [New Contributor Checklist](./new-contributor-checklist.md), and browse through the project board and work on your [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
* Go through the [New Contributor Checklist](./new-contributor-checklist.md), and browse through the project board and
work on
your [good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
* Review the [Roadmap](../mojaloop-roadmap.md) and contribute to future opportunities.
* Familiarize yourself with our Community [Code of Conduct](./code-of-conduct.md).

## What work is needed?

Work is tracked as issues in the [mojaloop/project](https://github.com/mojaloop/project) repository GitHub. You'll see issues there that are open and marked as bugs, stories, or epics. An epic is larger work that contains multiple stories. Start with any stories that are marked with "[good first issue](https://github.com/mojaloop/project/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)". In addition, anything that is in the backlog and not assigned to someone are things we could use help with. Stories that have owners are in someone's backlog already, though you can always ask about them in the issue or on Slack.

There's a [roadmap](../mojaloop-roadmap.md) that shows larger work that people could do or are working on. It has some main initiatives and epics and the order, but lacks dates as this work is community driven. Work is broken down from there into issues in GitHub.
Mojaloop follows a structured [product engineering process](./product-engineering-process.md) and we actively maintain
a [roadmap](../mojaloop-roadmap.md) of new feature developments and maintenance work. You can find information about our
currently running official workstreams on
our [community central workstreams page](https://community.mojaloop.io/pi-24-workstreams).

In general, we are looking for example implementations and bug fixes, and project enhancements.
Each Mojaloop workstream maintains a work item backlog in GitHub and a ZenHub workspace, reach out to the workstream
lead or post a message on the workstream slack channel to introduce yourself and find a good ticket to start work on.
You will find contact details for the workstream leads and slack channel information on
our [community central workstreams page](https://community.mojaloop.io/pi-24-workstreams).

## Where do I get help?

Join the [Mojaloop Slack Discussions](https://join.slack.com/t/mojaloop/shared_invite/zt-1qy6f3fs0-xYfqfIHJ6zFfNXb0XRpiHw) to connect with other developers.
Join
the [Mojaloop Slack Discussions](https://join.slack.com/t/mojaloop/shared_invite/zt-1qy6f3fs0-xYfqfIHJ6zFfNXb0XRpiHw) to
connect with other developers.

Also checkout the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)
Also checkout
the [FAQ](https://github.com/mojaloop/documentation/blob/master/contributors-guide/frequently-asked-questions.md)

## What is the current release?

See the [Mojaloop Slack Announcements](https://mojaloop.slack.com/messages/CG3MAJZ5J) to find out information on the latest release.
See the [Mojaloop Slack Announcements channel](https://mojaloop.slack.com/messages/CG3MAJZ5J) to find out information on
the latest release.

## What's here and what's not?

This is free code provided under an [Apache 2.0 license](https://github.com/mojaloop/mojaloop/blob/master/LICENSE.md).

The code is released with an Apache 2.0 license but the Specification documents under the 'mojaloop-specification' documents are published with CC BY-ND 4.0 License
The code is released with an Apache 2.0 license but the Specification documents under the 'mojaloop-specification'
documents are published with CC BY-ND 4.0 License

We don't provide production servers to run it on. That's up to you. You are free \(and encouraged!\) to clone these repositories, participate in the community of developers, and contribute back to the code.
We don't provide production servers to run it on. That's up to you. You are free \(and encouraged!\) to clone these
repositories, participate in the community of developers, and contribute back to the code.

We are not trying to replace any mobile wallet or financial providers. We provide code to link together new and existing financial providers using a common scheme. There are central services for identifying a customer's provider, quoting, fulfillment, deferred net settlement, and shared fraud management. Each provider can take advantage of these services to send and receive money with others on the system and there's no cost to them to onboard new providers. We provide code for a simple example mobile money provider to show how integration can be done, but our example DFSP is not meant to be a production mobile money provider.
We are not trying to replace mobile wallets or financial service providers. We provide a platform to link together new
and existing
financial providers using a common scheme. There are central services for identifying a customer's provider, quoting,
fulfillment, deferred net settlement, and shared fraud management. Each provider can take advantage of these services to
send and receive money with others on the system and there's no cost to them to onboard new providers. We provide code
for a simple example mobile money provider to show how integration can be done, but our example DFSP is not meant to be
a production mobile money provider.

## Where do I send bugs, questions, and feedback?

Expand Down
Loading

0 comments on commit 4888976

Please sign in to comment.