Getting involved is easy! Simply send an email to the dev@ mailing list introducing yourself, and the people in the community can help you get familiar with Apache Mynewt OS.
Apache Mynewt can accept patches as proposed in Apache's workflow here. Basically, you submit your initial edits for your peers to review and merge. After a few successful patches under your belt, you will get access to commit code directly to the module you are working on in the repository. And over time, you will get full access to all the repositories, where you can commit code to any module on the apache git repository (and not the github mirror).
Apache Mynewt will also accept Pull Requests (PR) against its github repositories. We recommend the route of the Pull Request. The steps are given below, followed by an explanatory diagram of how the remote and local repositories interact. The "develop" branch on Mynewt's repository contains the most recent changes made by the community of developers. Contributions from you need to go into this branch. The essential steps are the following:
- Fork the Mynewt repository to create your very own repo on github.
Clone the Mynewt repository on your machine using the Newt tool. Set up the remotes correctly as shown in the diagram. This is key to making sure you correctly pull the latest code from Mynewt's "develop" and push to your working branch on github.
Make your code changes and commit them locally. Do all this in your local branch ("mybranch" in this example).
Always sync up with the latest code in the "develop" branch and resolve any merge conflicts before pushing any changes to remotes.
Push your commits to your working branch on github.
- Submit a pull request to the `develop` branch of the appropriate Apache Mynewt repository by clicking the green "New pull request" button on your github fork page.
Remember there are three repositories to work with in the Apache Mynewt project. All of them have a "develop" branch which contains the latest code. The code from "develop" is merged periodically into "master" on all these repositories and releases are then tagged off the "master" branch.
- Apache Mynewt core repo mirrored on github
- Apache Mynewt newt tool repo mirrored on github
- Apache Mynewt documentation repo mirrored on github
The bottomline is to work with the "develop" branch. It has the latest code and you want your changes tested, working, and merged with that codebase. In the comment for the pull request, include a description of the changes you have made and why. Github will automatically notify everyone on the email@example.com mailing list about the newly opened pull requests. You can open a pull request even if you don't think the code is ready for merging but want some discussion on the matter.
There is no need to open a new pull request if you have already submitted a pull request against the "develop" branch on the mirror but have modified your code futher (e.g. after some feedback from the community or another clever idea popping into your head). The old pull request will get updated with your changes.
Upon receiving notification, one or more committers will review your work, ask for edits or clarifications, and merge when your proposed changes are ready.