🐾 First Steps
- Create an account: GitHub
- Create an account: Discord
- Sign the CLA
- Join the Arrow Discord
- Be sure to visit the
#start-contributingchannel and give yourself a role!
- Be sure to visit the
- Set up a GPG Key
- See Sign Your Commits for instructions
📍 Claim a Task
- Visit the Arrow DeWork
- Sign in with your Discord credentials
- View open tasks
- Claim a task, easy as a button click!
- Some important tasks are by application only. Describe why you're a good fit for the task!
🔧 Work on a Task
❗ See our Git Guidelines
- Clone or fork the target repository.
- Create a branch.
- Our branch names are generated by DeWork! See our branch guidelines.
- Be sure to follow our Code Style Guides!
- ❗ Sign ❗ your changes and push to the remote.
- Commits to the all remote branches must be signed
- See Sign Your Commits for instructions on setting up a GPG Key
- Use the
-Soption to sign your commits
git commit -S -m "Add README.md"
🏁 Push Changes
- Make a pull request.
- Confirm the presence of the
- If you haven't signed the CLA, the cla-bot will be disappointed 😠
- Confirm that the GitHub Actions checks pass.
- These checks will vary from repository to repository
- Get approvals!
- The number of approvals may vary from repo to repo.
- Approvals generally need to come from core members of the Arrow teams.
⚡ VS Code Extensions
These extensions are recommended:
# In VS Code Quick Open (Ctrl+P)
ext install \
- GitHub Markdown Preview
mermaid(uml) rendering and emoji rendering in markdown preview pane
- Linting, "go to" support, types and docs on hover, etc.
- Syntax highlighting, linting, intellisense
- Intellisense, validation for YAML files
- Even Better
- TOML files are used for Rust configuration
- Validation, syntax highlighting
- Python docstring generator
- Wrap code comments to fit within n characters
- Need to enable this in Preferences->Settings->type "Rewrap"
- 80 characters is the recommended column
- Hover over lines to see commit history, last author
- Remote Development
- For working over SSH
🚧 Git Guidelines
The branch name should be copied from a Arrow DeWork task.
- This links your work to a ticket
- Closing a pull request with this branch will also mark the DeWork task as "Done"!
🔏 Sign Your Commits
We enforce signed commits to authenticate commits from an author.
- Security, accountability, traceability
- "How (and why) to sign Git commits" - Alessandro Segala
❗ All remote branches are protected from unsigned commits through GitHub repository settings.
Setting up a GPG Key:
- Generate a GPG Key
- Informing Git about your GPG Key
- Informing GitHub about your GPG Key
- All commits signed by default:
git config --global commit.gpgsign true
-S to your commit command to sign it, e.g.
git commit -S -m "Add
💬 Commit Messages
As described here:
- Message should be in present tense (Add new feature instead of Added new feature)
- Should be written as if giving a command or instruction (Remove bug X, Update README.md)
- Message should start with a capital letter (Add new feature)
- Emojis, if used, should be at the start of the message (🎉 Add new feature)
- Do not exceed a line length of 50 characters for commit title
- Do not exceed a line length of 72 characters for commit body
- Do not end the message with a period
Keep these in mind always, especially when squashing commits (one message).
👍 Pull Requests
- Keep PRs small and easy to review!
- Our reviewers may ask you to divide your PR into multiple smaller PRs.
- If the commit history is messy, recommend "Squash and Merge" when pushing in
- The squashed commit should have a thorough description of the changes added.
- The Pull Request comments should be descriptive
- A brief description of what was changed and why
- Your PR should equate to one DeWork issue
- Addressing multiple tickets in one merge makes it harder to debug breaking changes.
git commit --fixup <commit sha>to fix a previous commit.
📚 Repositories (Create, Modify, Delete)
Repositories are managed through Terraform.
Requests for repository management should be made to @owlot.
🔐 Admin Access
Elevated access to our various team platforms is limited.
Ping @thomasg or @owlot and describe what you want to do.