|
| 1 | +# Contributing |
| 2 | + |
| 3 | +🦄🚀Welcome to the space unicorn party🚀🦄 |
| 4 | + |
| 5 | +Contributions to Open Enterprise include code, documentation, answering user questions, running the project's infrastructure, and advocating for all types of DAO´s. |
| 6 | + |
| 7 | +This guide explains the process for contributing to the Open Enterprise project's core `open-enterprise/apps` GitHub Repository and describes what to expect at each step. |
| 8 | + |
| 9 | +## Contents |
| 10 | + |
| 11 | +- [Code of Conduct](#code-of-conduct) |
| 12 | +- [Issues](#issues) |
| 13 | +- [Pull Requests](#pull-requests) |
| 14 | + |
| 15 | +## [Code of Conduct](./CODE_OF_CONDUCT.md) |
| 16 | + |
| 17 | +The Open Enterprise project has a |
| 18 | +[Code of Conduct](./CODE_OF_CONDUCT.md) |
| 19 | +that _all_ contributors are expected to follow. This code describes the |
| 20 | +_minimum_ behavior expectations for all contributors. |
| 21 | + |
| 22 | +## Issues |
| 23 | + |
| 24 | +### How to Contribute to Issues |
| 25 | + |
| 26 | +For bug related issues, there are fundamentally three ways an individual can |
| 27 | +contribute: |
| 28 | + |
| 29 | +1. **Symptoms** - If you believe that you have uncovered a bug, open a [new issue](https://github.com/AutarkLabs/planning-suite/issues/new) labeled `bug`. Title the issue after the error message, or your best description of the _symptoms_ you've encountered, and provide detailed steps, with any additional context, for attempting to replicate the issue. |
| 30 | +2. **Diagnosis** Provide a hypothesis as to what could be causing an issue, by commenting on the issue and suggesting procedures for testing that hypothesis. |
| 31 | +3. **Treatment** - Provide suggestions on how to triage an issue. |
| 32 | + |
| 33 | +## Pull Requests |
| 34 | + |
| 35 | +There are two fundamental components of the Pull Request process: one technical, and one process-oriented. The technical component involves the specific details of setting up your local environment so that you can make the actual changes. This is where we will start. |
| 36 | + |
| 37 | +## Environment Setup |
| 38 | + |
| 39 | +We still need to document a comprehensive wiki on setting up the dev environment (want to help?), but this is what we have so far: |
| 40 | + |
| 41 | +### Linux (Ubuntu/Debian) |
| 42 | + |
| 43 | +#### 1. Dependencies |
| 44 | + |
| 45 | +First things first, update and upgrade your system |
| 46 | +`sudo apt-get update && sudo apt-get upgrade` |
| 47 | + |
| 48 | +then Install the dependencies |
| 49 | +`sudo apt install build-essential git python` |
| 50 | + |
| 51 | +#### 2. Install NVM |
| 52 | + |
| 53 | +While you can install node manually, NVM makes managing your node installation much easier. Furthermore, you can have more than one version installed at the same time. |
| 54 | + |
| 55 | +**Note:** if you use another shell, zsh for example, replace `bash` with your shell |
| 56 | +`curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash` |
| 57 | + |
| 58 | +this will install `nvm` and place it in your path. |
| 59 | + |
| 60 | +Open a new terminal window and install node |
| 61 | + |
| 62 | +`nvm install 10.15.3` |
| 63 | + |
| 64 | +**Warning:** `node` version 12 is not compatible with Aragon Cli, `10.15.3` works well but the latest LTS version should work. |
| 65 | + |
| 66 | +#### 3. Install Aragon CLI |
| 67 | + |
| 68 | +`npm i -g @aragon/cli` |
| 69 | + |
| 70 | +Since version 6.0.0 ipfs is not included with the cli so install it with |
| 71 | + |
| 72 | +`aragon ipfs install` |
| 73 | + |
| 74 | +#### 4. Configure the CLI |
| 75 | + |
| 76 | +Finally, if you are not using frame as you signing provider (frame is highly recommended) you need to set up a private key for use with the CLI. |
| 77 | + |
| 78 | +Create a new key and get some testnet ETH from the Rinkeby faucet |
| 79 | + |
| 80 | +Sometimes the ~/.aragon folder is not included in the installation, which is a problem because that's where your private key goes. |
| 81 | + |
| 82 | +`cd ~/.aragon` |
| 83 | + |
| 84 | +If you get file not found run the devchain first, |
| 85 | + |
| 86 | +`aragon devchain` |
| 87 | + |
| 88 | +and try again. |
| 89 | + |
| 90 | +Once you're in the `~/.aragon` folder you need to create a file that holds your private key. |
| 91 | + |
| 92 | +Create a new file for your rinkeby key |
| 93 | + |
| 94 | +`nano ~/.aragon/rinkeby_key.json` |
| 95 | + |
| 96 | +This will open a blank file, copy and paste the following replacing the text with your private key |
| 97 | + |
| 98 | +```json |
| 99 | +{ |
| 100 | + "rpc": "https://rinkeby.aragon.network", |
| 101 | + "keys": [ |
| 102 | + "put-your-priv-key-here" |
| 103 | + ] |
| 104 | +} |
| 105 | +``` |
| 106 | + |
| 107 | +now test out your configuration by launching a DAO on Rinkeby. |
| 108 | + |
| 109 | +`dao new --environment aragon:rinkeby` |
| 110 | + |
| 111 | +### Main Aragon documents/resources |
| 112 | + |
| 113 | +- <https://wiki.aragon.org/> |
| 114 | +- <https://hack.aragon.org/> |
| 115 | +- <https://hack.aragon.org/docs/aragonos-intro.html> |
| 116 | +- <https://hack.aragon.org/docs/tutorial> |
| 117 | +- <https://github.com/aragon/aragon.js/blob/master/docs/APP.md> |
| 118 | +- <https://github.com/aragon/aragon.js/blob/master/docs/WRAPPER.md> |
| 119 | + |
| 120 | +The [Aragon App tutorial](https://hack.aragon.org/docs/tutorial) is probably the most helpful. As far as design, the app.md and wrapper.md are the most helpful for the front end and the hack gives the best overview. The aragonOS.md details the solidity code and how the core of their system works. |
| 121 | + |
| 122 | +### Asking for General Help |
| 123 | + |
| 124 | +Please feel free to direct questions or requests for general help in the [Aragon Planning riot channel](https://riot.im/app/#/room/#aragon-planning:matrix.org). |
| 125 | + |
| 126 | +### Pull Request Process |
| 127 | + |
| 128 | +Install the [ZenHub for Github](https://chrome.google.com/webstore/detail/zenhub-for-github/ogcgkffhplmphkaahpmffcafajaocjbd?hl=en-US) chrome extension. |
| 129 | + |
| 130 | +After installing the extension: |
| 131 | + |
| 132 | +- Navigate to the "Zenhub" tab within Github |
| 133 | +- Self-assign yourself to an issue in the "Backlog" |
| 134 | + |
| 135 | +1. Be in a branch that followings the naming convention [*issue id*]-[*issue description*] i.e. 1-contributing-instructions |
| 136 | +2. Have a clearly documented solution that addresses the issue. |
| 137 | +3. Have full test coverage for all new code (with some exceptions for front-end code) |
| 138 | +4. Get reviewed by at least 1 core contributor (2 for first issues) |
| 139 | +5. Pass all integration tests (code tests, and linting) |
0 commit comments