diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..321a47e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,87 @@ +# Guidelines for Contributing to Webi + +**Before you start**: + +- It's a good idea to try [Webi](https://webinstall.dev/) out for installing + developer tools for yourself before creating an installer. +- It's also best if you take on issues for tools that you're familiar with. + +**Before you PR**: + +- You'll be asked to make changes if you don't code formatters and linters: + - Node / JavaScript: + - [prettier](https://webinstall.dev/prettier) + - [jshint](https://webinstall.dev/jshint) + - Bash + - [shfmt](https://webinstall.dev/shfmt) + - [shellcheck](https://webinstall.dev/shellcheck) +- If you use vim, [vim-essentials](https://webinstall.dev/vim-essentials) + includes everything you need to automatically format and lint on save. +- If you use VS Code, the same plugins are also available in the VS Code store. + +**Not strictly mandatory, but we appreciate**: + +- [x] [Signed Commits](/git-config-gpg) +- [x] Semantic Commit Messages +- [x] Update `test` psuedo-package + +## Signed Commits + +Please **enable gpg-signing**. + +You can do this **in about 30 seconds**: + +1. Run [`git-config-gpg`](https://webinstall.dev/git-config-gpg) from Webi: + ```bash + # On Mac & Linux + curl https://webinstall.dev/git-config-gpg | bash + ``` +2. Copy the GPG public key (it will be printed to your screen) +3. Add it to your GitHub profile: + +## Semantic Commit Messages + +We try to follow "semantic commits" to some degree. Especially since this is a +project with many sub-projects. + +The general format is `(): `, using these _types_: + +| _type_ | _usage_ | +| :------- | :----------------------------------------------------------------- | +| feat | new feature for the user, not a new feature for build script | +| fix | bug fix for the user, not a fix to a build script | +| docs | changes to the documentation | +| style | formatting, missing semi colons, etc; no production code change | +| refactor | refactoring production code, eg. renaming a variable | +| test | adding missing tests, refactoring tests; no production code change | +| chore | updating grunt tasks etc; no production code change | + +Try to write your commit messages (in the present tense) like this: + +```txt +fix(node): update install.sh (fix #200) +``` + +```txt +feat(delta): add cheat sheet and install.sh +``` + +```txt +docs(ssh-adduser): document that foo does bar +``` + +See for +some more examples. + +## Also update the `test` installer (a 3-line change) + +Whenever adding a new installer, please also update `test/install.sh` + +- `rm -rf ~/.local/opt/YOUR_PACKAGE` +- `rm -f ~/.local/bin/YOUR_PACKAGE` +- `webi YOUR_PACKAGE` +- (and please keep it in alphabetical order) + +See + +for an example.