-
Notifications
You must be signed in to change notification settings - Fork 212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CONTRIBUTING.md and improve readme #928
Changes from 5 commits
e4999cb
7d3cc6e
7821a02
b1b5df0
06c83eb
499d93c
9b28451
a95a491
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# Contributing to Aragon | ||
|
||
:tada: Thank you for being interested in contributing to Aragon! :tada: | ||
|
||
Feel welcome and read the following sections in order to know how to ask questions and how to work on something. | ||
|
||
There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into the project. | ||
|
||
All members of our community are expected to follow our [Code of Conduct](https://wiki.aragon.org/documentation/Code_of_Conduct/). Please make sure you are welcoming and friendly in all of our spaces. | ||
|
||
## Your first contribution | ||
|
||
Unsure where to begin contributing to Aragon? | ||
|
||
You can start with a [Good First Issue](https://github.com/aragon/aragon-apps/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). | ||
|
||
> Good first issues are usually for small features, additional tests, spelling / grammar fixes, formatting changes, or other clean up. | ||
|
||
Start small, pick a subject you care about, are familiar with, or want to learn. | ||
|
||
If you're not already familiar with git or Github, here are a couple of friendly tutorials: [First Contributions](https://github.com/firstcontributions/first-contributions), [Open Source Guide](https://opensource.guide/), and [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github). | ||
|
||
## How to file an issue or report a bug | ||
|
||
If you see a problem, you can report it in our [issue tracker](https://github.com/aragon/aragon-apps/issues) (or the [Aragon client's](https://github.com/aragon/aragon/issues)). | ||
|
||
Please take a quick look to see if the issue doesn't already exist before filing yours. | ||
|
||
Do your best to include as many details as needed in order for someone else to fix the problem and resolve the issue. | ||
|
||
#### If you find a security vulnerability, do NOT open an issue. Email security@aragon.org instead. | ||
|
||
In order to determine whether you are dealing with a security issue, ask yourself these two questions: | ||
|
||
- Can I access or steal something that's not mine, or access something I shouldn't have access to? | ||
- Can I disable something for other people? | ||
|
||
If the answer to either of those two questions are "yes", then you're probably dealing with a security issue. Note that even if you answer "no" to both questions, you may still be dealing with a security issue, so if you're unsure, please send a email. | ||
|
||
#### If you're interested in the smart contracts underlying Aragon, a [bug bounty program](https://wiki.aragon.org/dev/bug_bounty/) with payouts up to $50,000 is available for rewarding contributors who find security vulnerabilities. | ||
|
||
## Fixing issues | ||
|
||
1. [Find an issue](https://github.com/aragon/aragon-apps/issues) that you are interested in. | ||
- You may want to ask on the issue or on Aragon Chat's [#dev channel](https://aragon.chat/channel/dev) if anyone has already started working on the issue. | ||
1. Fork and clone a local copy of the repository. | ||
1. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. | ||
1. Push the changes to the remote repository. | ||
1. Submit a pull request in Github, explaining any changes and further questions you may have. | ||
1. Wait for the pull request to be reviewed. | ||
1. Make changes to the pull request if the maintainer recommends them. | ||
1. Celebrate your success after your pull request is merged! | ||
|
||
It's OK if your pull request is not perfect (no pull request is). | ||
The reviewer will be able to help you fix any problems and improve it! | ||
|
||
You can also edit a page directly through your browser by clicking the "EDIT" link in the top-right corner of any page and then clicking the pencil icon in the github copy of the page. | ||
|
||
## Styleguide and development processes | ||
|
||
For the frontends, we use [prettier](https://prettier.io/) and [eslint](https://eslint.org/) to automatically lint and format the project. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we could add that we generally have a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done in 499d93c. |
||
|
||
For the contracts, we use [eth-lint](https://github.com/duaraghav8/Ethlint) to automatically lint the project. | ||
|
||
We generally avoid adding external dependencies if they can be ported over easily, due to numerous NPM-related security issues in the past (e.g. [`event-stream`](https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident)). | ||
|
||
### Git branch convention | ||
|
||
Due to the unconventional release process of smart contracts, this repo utilizes a slightly different flow of git. | ||
|
||
The main problem is that smart contracts should be heavily scrutinized before a release, making the process cumbersome and unlike the release process for "normal" dependencies or apps. [See here](https://forum.aragon.org/t/git-branch-convention-for-aragon-repos/298/3) for a more detailed explanation. | ||
|
||
Thus, we use the following convention: | ||
|
||
- Any change that can be release immediately, base on [`master`](https://github.com/aragon/aragon-apps/tree/master) | ||
- Any change that should be staged for longer review (e.g. contract functionality changes pending security review), base on [`next`](https://github.com/aragon/aragon-apps/tree/next) | ||
|
||
As `next` becomes ready, merge `next` onto `master` with a rebase. | ||
|
||
## Community | ||
|
||
If you need help, please reach out to Aragon core contributors and community members in the Aragon Chat [#dev](https://aragon.chat/channel/dev) and [#dev-help](https://aragon.chat/channel/dev-help) channels. We'd love to hear from you and know what you're working on! |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,16 +4,19 @@ | |
|
||
This repository contains the following apps: | ||
|
||
- **[Vault](apps/vault)**: Securely owns and manages tokens on behalf of a DAO. | ||
- **[Finance](apps/finance)**: Send payments and manage expenses with budgeting. | ||
- **[Voting](apps/voting)**: Create votes that execute actions on behalf of token holders. | ||
- **[Survey](apps/survey)**: Create polls to gauge community opinions. | ||
- **[Tokens](apps/token-manager)**: Manages organization tokens. | ||
- **[Vault](apps/vault)**: Securely owns and manages tokens on behalf of a DAO. | ||
- **[Voting](apps/voting)**: Create votes that execute actions on behalf of token holders. | ||
|
||
You can read more about how the individual apps work in the [Aragon user guide](https://help.aragon.org/category/15-aragon-apps). | ||
Each of the individual apps come with a frontend that is intended to be installed and used through the [Aragon client](http://github.com/aragon/aragon). | ||
|
||
You can read more about how each of the individual apps work in the [Aragon user guide](https://help.aragon.org/category/15-aragon-apps). | ||
|
||
## Coming soon apps | ||
|
||
The following apps are still under development, not ready for production deployment yet: | ||
The following apps are still under development, and not ready for production deployment yet: | ||
|
||
- **[Payroll](future-apps/payroll)**: Manages employees' payrolls. | ||
|
||
|
@@ -23,15 +26,41 @@ The following apps are still under development, not ready for production deploym | |
npm install | ||
``` | ||
|
||
This installs global package dependencies and also bootstraps lerna packages. | ||
This installs global package dependencies and also bootstraps the entire monorepo through [`lerna`](https://github.com/lerna/lerna). | ||
|
||
> **Note**: the monorepo is set up in such a way that you **must** install it through a `lerna bootstrap` (done automatically after an `npm install`). | ||
> | ||
> If you're only interested in the contract dependencies, and not the frontends, you can use `INSTALL_FRONTEND=false npm install` instead. | ||
> | ||
> If you're only interested in bootstrapping one package, you can use `npx lerna bootstrap --scope @aragon/<package> --include-filtered-dependencies` | ||
|
||
Running tests on all apps can be done by running `npm run test` at the root directory (note that running all of the tests can take a significant amount of time!). | ||
|
||
Running tests of an individual app can be done by running `npm run test` inside an individual app's directory, or through the selective `npm run test:<app>` scripts. | ||
|
||
By default, tests are run in a in-memory instance of testrpc. | ||
|
||
### App frontends | ||
|
||
Developing the frontends locally can be a bit tricky, due to the frontends' reliance on a properly configured Aragon client. | ||
|
||
For now, you can follow [@bpierre's gist](https://gist.github.com/bpierre/22572415b90577aa17e5953fa68980eb#developing-the-apps) to start an app's local frontend server and connect it to a locally running Aragon client. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we start to move this in every frontend-related repository, with a name like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can keep in the CONTRIBUTING and point people to it, perhaps if it's still hard to find we can move it to its own file 😄. I've also added it in aragon/aragon: aragon/client#880. |
||
|
||
In the future, we will improve this flow to make it much easier to get started. | ||
|
||
## Contributing | ||
|
||
For some introductory information on what an Aragon app is, and how to build one, please read through the [architecture introduction](https://hack.aragon.org/docs/stack) and [Your first Aragon app](https://hack.aragon.org/docs/tutorial). The [aragonAPI documentation](https://hack.aragon.org/docs/api-intro) is also available as a reference. | ||
|
||
#### 👋 Get started contributing with a [good first issue](https://github.com/aragon/aragon-apps/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). | ||
|
||
Running tests on all apps can be done running `npm run test` at the root directory. Running tests of an individual app can be done by running `npm run test` inside the app directory. | ||
Don't be shy to contribute even the smallest tweak. 🐲 There are still some dragons to be aware of, but we'll be here to help you get started! | ||
|
||
By default tests are run in a in-memory instance of testrpc. | ||
For more details about contributing to Aragon, please check the [contributing guide](./CONTRIBUTING.md). | ||
|
||
## Issues | ||
#### Issues | ||
|
||
If you come across an issue with Aragon Core, do a search in the [Issues](https://github.com/aragon/aragon-apps/issues?utf8=%E2%9C%93&q=is%3Aissue) tab of this repo and the [Aragon Core Issues](https://github.com/aragon/aragon/issues?utf8=%E2%9C%93&q=is%3Aissue) to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo: | ||
If you come across an issue with Aragon, do a search in the [Issues](https://github.com/aragon/aragon/issues?utf8=%E2%9C%93&q=is%3Aissue) tab of this repo and the [Aragon Apps Issues](https://github.com/aragon/aragon-apps/issues?utf8=%E2%9C%93&q=is%3Aissue) to make sure it hasn't been reported before. Follow these steps to help us prevent duplicate issues and unnecessary notifications going to the many people watching this repo: | ||
|
||
- If the issue you found has been reported and is still open, and the details match your issue, give a "thumbs up" to the relevant posts in the issue thread to signal that you have the same issue. No further action is required on your part. | ||
- If the issue you found has been reported and is still open, but the issue is missing some details, you can add a comment to the issue thread describing the additional details. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice 👌