|
1 | 1 | # Contributing
|
2 | 2 |
|
3 |
| -When contributing to this repository, please first discuss the change you wish to make via issue, |
4 |
| -email, or any other method with the owners of this repository before making a change. |
| 3 | +Thanks for your interest in helping improve Aim! 🎉 |
5 | 4 |
|
6 |
| -Please note we have a code of conduct, please follow it in all your interactions with the project. |
| 5 | +## Before Contributing |
7 | 6 |
|
8 |
| -## Pull Request Process |
| 7 | +As with most projects, prior to starting to code on a bug fix or feature request, please post in the respective GitHub issue saying you want to volunteer, and then wait for a positive response. And if there is no issue for it yet, create it first. |
9 | 8 |
|
10 |
| -1. Ensure any install or build dependencies are removed before the end of the layer when doing a |
11 |
| - build. |
12 |
| -2. Update the README.md with details of changes to the interface, this includes new environment |
13 |
| - variables, exposed ports, useful file locations and container parameters. |
14 |
| -3. Increase the version numbers in any examples files and the README.md to the new version that this |
15 |
| - Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). |
16 |
| -4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you |
17 |
| - do not have permission to do that, you may request the second reviewer to merge it for you. |
| 9 | +This helps make sure: |
| 10 | +1. Two people aren't working on the same thing. |
| 11 | +2. This is something Aim's maintainers believe should be implemented/fixed. |
| 12 | +3. Any API, UI, or deeper architectural changes that need to be implemented have been fully thought through by the community together with Aim's maintainers. |
18 | 13 |
|
19 |
| -## Code of Conduct |
| 14 | +Please follow [Aim Contributor Covenant Code of Conduct](./CODE_OF_CONDUCT.md) in all your interactions with the project. |
20 | 15 |
|
21 |
| -### Our Pledge |
| 16 | +## Governance |
22 | 17 |
|
23 |
| -In the interest of fostering an open and welcoming environment, we as |
24 |
| -contributors and maintainers pledge to making participation in our project and |
25 |
| -our community a harassment-free experience for everyone, regardless of age, body |
26 |
| -size, disability, ethnicity, gender identity and expression, level of experience, |
27 |
| -nationality, personal appearance, race, religion, or sexual identity and |
28 |
| -orientation. |
| 18 | +This section describes governance processes we follow in developing Aim. |
29 | 19 |
|
30 |
| -### Our Standards |
| 20 | +### Persons of Interest |
31 | 21 |
|
32 |
| -Examples of behavior that contributes to creating a positive environment |
33 |
| -include: |
| 22 | +#### Authors |
34 | 23 |
|
35 |
| -* Using welcoming and inclusive language |
36 |
| -* Being respectful of differing viewpoints and experiences |
37 |
| -* Gracefully accepting constructive criticism |
38 |
| -* Focusing on what is best for the community |
39 |
| -* Showing empathy towards other community members |
| 24 | +- Gev Soghomonyan ([SGevorg](https://github.com/SGevorg)) |
| 25 | +- Gor Arakelyan ([gorarakelyan](https://github.com/gorarakelyan)) |
40 | 26 |
|
41 |
| -Examples of unacceptable behavior by participants include: |
| 27 | +#### Primary Maintainers |
42 | 28 |
|
43 |
| -* The use of sexualized language or imagery and unwelcome sexual attention or |
44 |
| -advances |
45 |
| -* Trolling, insulting/derogatory comments, and personal or political attacks |
46 |
| -* Public or private harassment |
47 |
| -* Publishing others' private information, such as a physical or electronic |
48 |
| - address, without explicit permission |
49 |
| -* Other conduct which could reasonably be considered inappropriate in a |
50 |
| - professional setting |
| 29 | +- Albert Torosyan ([alberttorosyan](https://github.com/alberttorosyan)) |
| 30 | +- Karen Hambardzumyan ([mahnerak](https://github.com/mahnerak)) |
| 31 | +- Ruben Karapetyan ([roubkar](https://github.com/roubkar)) |
51 | 32 |
|
52 |
| -### Our Responsibilities |
| 33 | +#### Core Contributors |
53 | 34 |
|
54 |
| -Project maintainers are responsible for clarifying the standards of acceptable |
55 |
| -behavior and are expected to take appropriate and fair corrective action in |
56 |
| -response to any instances of unacceptable behavior. |
| 35 | +- Arsen Alkamyan ([arsengit](https://github.com/arsengit)) |
| 36 | +- Arthur Poghosyan ([devfox-se](https://github.com/devfox-se)) |
| 37 | +- Hamik Hambardzumyan ([Hamik25](https://github.com/Hamik25)) |
| 38 | +- Karo Muradyan ([KaroMourad](https://github.com/KaroMourad)) |
| 39 | +- Mihran Vanyan ([mihran113](https://github.com/mihran113)) |
| 40 | +- Ruben Aprikyan ([rubenaprikyan](https://github.com/rubenaprikyan)) |
| 41 | +- Vardges Hovhannisyan ([VkoHov](https://github.com/VkoHov)) |
57 | 42 |
|
58 |
| -Project maintainers have the right and responsibility to remove, edit, or |
59 |
| -reject comments, commits, code, wiki edits, issues, and other contributions |
60 |
| -that are not aligned to this Code of Conduct, or to ban temporarily or |
61 |
| -permanently any contributor for other behaviors that they deem inappropriate, |
62 |
| -threatening, offensive, or harmful. |
| 43 | +### Releases |
63 | 44 |
|
64 |
| -### Scope |
| 45 | +We release a new minor version (e.g., 3.8.0) every two week and patch releases on demand. The minor versions contain new features, bugfixes and also all previous bugfixes included in previous patch releases. With every release, we publish a CHANGELOG where we list enhancements and fixes. |
65 | 46 |
|
66 |
| -This Code of Conduct applies both within project spaces and in public spaces |
67 |
| -when an individual is representing the project or its community. Examples of |
68 |
| -representing a project or community include using an official project e-mail |
69 |
| -address, posting via an official social media account, or acting as an appointed |
70 |
| -representative at an online or offline event. Representation of a project may be |
71 |
| -further defined and clarified by project maintainers. |
| 47 | +## Contribution Process |
72 | 48 |
|
73 |
| -### Enforcement |
| 49 | +The Aim contribution process starts with filing a GitHub issue. Aim defines six categories of issues: enhancements (feature requests), bug reports, code health improvements, peformance improvements, tests, questions. |
74 | 50 |
|
75 |
| -Instances of abusive, harassing, or otherwise unacceptable behavior may be |
76 |
| -reported by contacting the project team at [INSERT EMAIL ADDRESS]. All |
77 |
| -complaints will be reviewed and investigated and will result in a response that |
78 |
| -is deemed necessary and appropriate to the circumstances. The project team is |
79 |
| -obligated to maintain confidentiality with regard to the reporter of an incident. |
80 |
| -Further details of specific enforcement policies may be posted separately. |
| 51 | +Aim maintainers actively triage and respond to GitHub issues. In general, we recommend waiting for feebdack from an Aim maintainer or community member before proceeding to implement a feature or patch. This is particularly important for significant changes, and will typically be labeled during triage with `phase / exploring`. |
81 | 52 |
|
82 |
| -Project maintainers who do not follow or enforce the Code of Conduct in good |
83 |
| -faith may face temporary or permanent repercussions as determined by other |
84 |
| -members of the project's leadership. |
| 53 | +After you have agreed upon an implementation strategy for your feature or patch with an Aim maintainer, the next step is to introduce your changes as a pull request against the Aim Repository. |
85 | 54 |
|
86 |
| -### Attribution |
| 55 | +Once your pull request against the Aim Repository has been merged, your corresponding changes will be automatically included in the next Aim release. Every change is listed in the Aim release notes and [CHANGELOG](./CHANGELOG.md). |
87 | 56 |
|
88 |
| -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, |
89 |
| -available at [http://contributor-covenant.org/version/1/4][version] |
| 57 | +Congratulations, you have just contributed to Aim. We appreciate your contribution! |
90 | 58 |
|
91 |
| -[homepage]: http://contributor-covenant.org |
92 |
| -[version]: http://contributor-covenant.org/version/1/4/ |
| 59 | +## Developing and Testing |
| 60 | + |
| 61 | +The majority of the Aim product areas is developed in Python/Cython. This includes the Storage, SDK, Tracking Server, CLI, API. Aim UI is a Web app mostly built with TypeScript and React. |
| 62 | + |
| 63 | +### Developing Storage/SDK/CLI |
| 64 | + |
| 65 | +Most of the backend components, including SDK, Storage, Web APIs and CLI are developed using Python/Cython. |
| 66 | +In order to start development you must install dev. requirements and the aim package itself, in editable mode. |
| 67 | +```shell |
| 68 | +pip install -r requirements.dev.txt |
| 69 | +pip install -e . |
| 70 | +``` |
| 71 | + |
| 72 | +Verify that Aim installed properly by running |
| 73 | +```shell |
| 74 | +aim version |
| 75 | +``` |
| 76 | +or by importing aim in python REPL |
| 77 | +```python |
| 78 | +import aim |
| 79 | +``` |
| 80 | + |
| 81 | +#### Style Guide |
| 82 | +Aim follows PEP8 standard for style guide and uses `flake8` as a style checker. Style checks enforced |
| 83 | +as a check on GitHub Actions when new PR opened. |
| 84 | + |
| 85 | +#### Testing Requirements |
| 86 | + |
| 87 | +New unit-tests must be added along with the code changes. In order to setup the testing environment |
| 88 | +```shell |
| 89 | +cd tests |
| 90 | +pip install requirements.txt |
| 91 | +``` |
| 92 | + |
| 93 | +Aim python code unit-tests are located at `tests/` directory. Unit-tests are written in Python's `unittest` package style. |
| 94 | +[Pytest](https://docs.pytest.org) is used as a test runner/discovery tool. To make sure unit-tests are not failing run |
| 95 | +```shell |
| 96 | +pytest tests/ |
| 97 | +``` |
| 98 | + |
| 99 | +### Developing UI |
| 100 | + |
| 101 | +Aim UI is written in TypeScript. `npm` is required to build Aim UI and to run in DEV mode. |
| 102 | +You can verify that `npm` is on the PATH by running `npm -v`, and |
| 103 | +[install npm](https://www.npmjs.com/get-npm) if needed. |
| 104 | + |
| 105 | +#### Style Guide |
| 106 | + |
| 107 | +We use Prettier to autoformat code on presubmit. |
| 108 | + |
| 109 | +#### Launching the Development UI |
| 110 | + |
| 111 | +Before running the Aim UI dev server or building a distributable wheel, install npm |
| 112 | +dependencies via: |
| 113 | + |
| 114 | +```shell |
| 115 | +cd aim/web/ui |
| 116 | +npm install |
| 117 | +``` |
| 118 | + |
| 119 | +Then you can start the dev server: |
| 120 | + |
| 121 | +```shell |
| 122 | +npm start |
| 123 | +``` |
| 124 | + |
| 125 | +Aim UI will show logged data in at [http://localhost:3000](http://localhost:3000). |
| 126 | + |
| 127 | +#### Adding New Components |
| 128 | + |
| 129 | +To start building a new component you can run follwoing command: |
| 130 | + |
| 131 | +```shell |
| 132 | +npm run crc |
| 133 | +``` |
| 134 | + |
| 135 | + |
| 136 | +If you want to add a component inside UI kit you can run following command: |
| 137 | + |
| 138 | +```shell |
| 139 | +npm run crc-kit |
| 140 | +``` |
| 141 | + |
| 142 | +These command will create a folder named `ComponentName` with all the necessary files. |
| 143 | + |
| 144 | +## Writing Docs |
| 145 | + |
| 146 | +Aim documentation is built using [Sphix](https://www.sphinx-doc.org) and is hosted at |
| 147 | +[Read the Docs](https://aimstack.readthedocs.io). |
| 148 | +The documentation sources are located at `docs/` directory. In order to build documentation locally |
| 149 | +run the following commands |
| 150 | +```shell |
| 151 | +pip install -r requirements.dev.txt |
| 152 | +cd docs |
| 153 | +pip install -r requirements.txt |
| 154 | +make html |
| 155 | +``` |
| 156 | + |
| 157 | +Documentation will be available at `docs/build/html/index.html` on your local machine. |
0 commit comments