We welcome everyone to contribute what and where they can. Whether you are brand new, just want to contribute a little bit, or want to contribute a lot there is probably something you can help out with. Check out our good first issues label for in the issues tab to see a list of issue that good for those new to the project.
The main way to get help is on our discord server. Though, this guide should help you get started. It may be slightly lengthy, but it's designed for those who are new so please don't let length intimidate you.
Please be kind, inclusive, and considerate when interacting when interacting with others and follow our code of conduct.
If the code adds a feature that is not already present in an issue, you can create a new issue for the feature and add the pull request to it. If the code adds a feature that is not already present in an issue, you can create a new issue for the feature and add the pull request to it.
If you have found a bug and would like to report it or if you have a feature that you feel we should add, then we'd love it if you opened an issue! ❤️ Before you do, please search the other issues to avoid creating a duplicate issue.
To submit a new issue just hit the issue button and a choice between two templates should appear. Then, follow along with the template you chose. If you don't know how to fill in all parts of the template go ahead and skip those parts. You can edit the issue later.
If you have a new discussion you want to start but it isn't a bug or feature add, then you can start a GitHub discussion. Some examples of what kinds of things that are good discussion topics can include, but are not limited to the following:
- Community announcements and/or asking the community for feedback
- Discussing a new release
- Asking questions, Q&A that isn't for sure a bug report
In order to contribute through code follow the steps below. Note that you don't need to be the best programmer to contribute. Our discord is open for questions.
-
Pick a feature you would like to add or a bug you would like to fix
- If you wish to contribute but what you want to fix/add is not already covered in an existing issue, please open a new issue.
-
Discuss the issue with the rest of the community
- Before you write any code, it is recommended that you discuss your intention to write the code on the issue you are attempting to edit.
- This helps to stop you from wasting your time duplicating the work of others that maybe working on the same issue; at the same time.
- This step also allows you to get helpful pointers on the community on some problems they may have encountered on similar issues.
-
Fork the repository
- A fork creates a copy of the code on your Github, so you can work on it separately from everyone else.
- You can learn more about forking here.
-
Ensure that you have commit signing enabled
- This ensures that the code you submit was committed by you and not someone else who claims to be you.
- You can learn more about how to setup commit signing here.
- If you have already made some commits that you wish to put in a pull request without signing them, then you can follow this guide on how to fix that.
-
Clone the repository to your local computer
- This puts a copy of your fork on your computer so you can edit it
- You can learn more about cloning repositories here.
-
Build the project
- For a detailed look on how to build car-mirror look at our README file.
-
Start writing your code
- Open up your favorite code editor and make the changes that you wanted to make to the repository.
- Make sure to test your code with the test command(s) found in our README file.
-
Write tests for your code
- If you are adding a new feature, you should write tests that ensure that if someone make changes to the code it cannot break your new feature without breaking the test.
- If your code adds a new feature, you should also write at least one documentation test. The documentation test's purpose is to demonstrate and document how to use the API feature.
- If your code fixes a bug, you should write tests that ensure that if someone makes code changes in the future the bug does not re-emerge without breaking test.
- Please create integration tests, if the addition is large enough to warrant them, and unit tests. * Unit tests are tests that ensure the functionality of a single function or small section of code. * Integration tests test large large sections of code. * Read more about the differences here.
- For more information on test organization, take a look here.
-
Ensure that the code that you made follows our Rust coding guidelines
- You can find a list of some Rust guidelines here. This is a courtesy to the programmers that come after you. The easier your code is to read, the easier it will be for the next person to make modifications.
- If you find it difficult to follow the guidelines or if the guidelines or unclear, please reach out to us through our discord linked above, or you can just continue and leave a comment at the pull request stage.
-
Commit and Push your code
-
The final step is to create pull request to our main branch 🎉
- A pull request is how you merge the code you just worked so hard on with the code everyone else has access to.
- Once you have submitted your pull request, we will review your code and check to make sure the code implements the feature or fixes the bug. We may leave some feedback and suggest edits. You can make the changes we suggest by committing more code to your fork.
- You can learn more about pull requests here.