|
| 1 | +# Open LASSO Python Contribution Guide |
| 2 | + |
| 3 | +## Roles |
| 4 | + |
| 5 | +There are roughly two roles in which you can contribute: |
| 6 | + |
| 7 | +- Contributors who just want to add changes from time to time |
| 8 | +- Maintainers who oversee the repo, code themselves and review contribution |
| 9 | + before they can be merged |
| 10 | + |
| 11 | +## Community |
| 12 | + |
| 13 | +The community can be found on [discord]. |
| 14 | +Nothing beats a good discussion about existing features, new features or ideas |
| 15 | +so jump right in. |
| 16 | + |
| 17 | +[discord]: https://discord.gg/jYUgTsEWtN |
| 18 | + |
| 19 | +## Spirit |
| 20 | + |
| 21 | +We are all learners, some in the early stage some in the later. |
| 22 | +In a code review, we take the patience to imaginarily sit down together and |
| 23 | +explain other people why something is recommended differently or how things are |
| 24 | +usually done in software or python. |
| 25 | +This often seems tedious at first but growing together is important for any kind |
| 26 | +of project which wants to grow itself. |
| 27 | +So no fear in case of lack of experience but bring your learning spirit. |
| 28 | +Samewise to any experienced developer, have patience and explain things. |
| 29 | +Take the opportunity to sit down together on discord. |
| 30 | + |
| 31 | +## How to make a Contribution |
| 32 | + |
| 33 | +Tl;dr; |
| 34 | + |
| 35 | +1. Fork the open lasso python repository |
| 36 | +2. Clone the repo to your filesystem |
| 37 | +3. Install [task][task_install] |
| 38 | +4. Check out the `develop` branch |
| 39 | +5. Set up the repo for development through `task setup` |
| 40 | +6. Create a new branch from `develop` with the naming pattern `feature/...` |
| 41 | +7. Make changes, commit and push them |
| 42 | +8. Create a Pull Request in your for repo with target on the original repo |
| 43 | +9. Add as reviewer `open-lasso-python/developers` |
| 44 | +10. Wait for review patiently but you may nudge us a bit 🫶 |
| 45 | +11. Perform a Squash Merge and give a reasonable commit message as |
| 46 | + `<branch type>: <description>` where `branch_type` is one of the categories |
| 47 | + below. |
| 48 | + |
| 49 | +[task_install]:https://taskfile.dev/installation/ |
| 50 | + |
| 51 | +You can fork the repo (1) by clicking on for in the top-right of the original |
| 52 | +repo. |
| 53 | +Cloning the repo (2) is traditionally done with git then of course. |
| 54 | +Task is required (3) since it is used to store complex commands such as testing, |
| 55 | +linting, build docs, etc. |
| 56 | +(4) All development activities originate from the `develop` branch in which all |
| 57 | +Pull Requests are finally merged again. |
| 58 | +To create a branch choose a respective naming pattern following the angular |
| 59 | +scheme: `<branch type>/<issue nr if exists>-<rough description/name>`. |
| 60 | +Typical branch types are: |
| 61 | + |
| 62 | +- `feature` for new features or if you got no clue what it is |
| 63 | +- `bugfix` for 🐛-fixes |
| 64 | +- `ci` for changes on the Continuous Integration pipeline |
| 65 | +- `docs` for documentation related works |
| 66 | +- `refactor` if the PR just does cleanup 🧹 and improves the code |
| 67 | +- `test` for solely test-related work |
| 68 | + |
| 69 | +Don't take these too seriously but they ought to provide rough categories. |
| 70 | +**They are also used in the commit message when you squash merge a PR where it |
| 71 | +is important!** |
| 72 | +Install all dependencies otherwise obviously you can't code (5). |
| 73 | +After making changes and pushing your branch to your forked repo (7 & 8), open a |
| 74 | +Pull Request but make the target not `develop` in your fork but `develop` in the |
| 75 | +original repo (7). |
| 76 | +If not done automatically, add the maintainer group as reviewers (9). |
| 77 | +Enjoy a healthy code review but be a bit patient with time as people contribute |
| 78 | +voluntarily and may privately be occupied (10). |
| 79 | +After approval, perform a Squash Merge (11). |
| 80 | +A Squash Merge tosses away all the little, dirty commits we all do during |
| 81 | +development. |
| 82 | +What stays is the **final merge commit message and please pay attention here** |
| 83 | +to format it right. |
| 84 | +Why is this important? |
| 85 | +This is needed to automatically generate a reasonable changelog during releases. |
| 86 | +Thanks for contributing at this point. |
| 87 | +Go wild and have fun 🥳 |
0 commit comments