Contributing to the MongoDB project =================================== Pull requests are always welcome, and the MongoDB dev team appreciates any help the community can give to help make MongoDB better. For any particular improvement you want to make, you can begin a discussion on the `MongoDB Developers Forum`_. This is the best place discuss your proposed improvement (and its implementation) with the core development team. .. _MongoDB Developers Forum: https://groups.google.com/forum/?fromgroups#!forum/mongodb-dev Getting Started --------------- - Create a `MongoDB JIRA account`_. - Create a `Github account`_. - Fork the repository on Github at https://github.com/mongodb/mongo. .. _MongoDB JIRA account: https://jira.mongodb.org/secure/Signup!default.jspa .. _Github account: https://github.com/signup/free JIRA Tickets ------------ All commits to the MongoDB repository must reference an issue in the `SERVER project`_ of the MongoDB JIRA. Before creating any new tickets, please search the existing backlog for any open tickets that represent your change request. If there is not one, then you should create a new ticket. For bugs, please clearly describe the issue you are resolving, including the platforms on which the issue is present and clear steps to reproduce. For improvements or feature requests, be sure to explain the goal or use case and the approach your solution will take. .. _SERVER project: https://jira.mongodb.org/browse/SERVER The Life Cycle of a Pull Request -------------------------------- When you submit a pull request, here is what happens: - The MongoDB engineering team will review your pull request to make sure you have included a SERVER ticket in your request and signed the contributor agreement. - You should receive a response from one of our engineers with additional questions about your contributions. - If your pull request matches a ticket and is aligned with the Server Roadmap, it will get triaged and reviewed by the Kernel team. - Pull requests that have been reviewed and approved will be signed off and merged into a development branch and the associated JIRA SERVER issue will be resolved with an expected fixVersion. Style Guide ----------- All commits to the MongoDB repository must follow the `kernel development rules`_. In particular, all code must follow the MongoDB `kernel code style guidelines`_. For anything not covered in this document you should default to the `Google CPP Style Guide`_ and the `Google JavaScript Style Guide`_. Your commit message should also be prefaced with the relevant JIRA ticket, e.g. "SERVER-XXX Fixed a bug in aggregation". .. _kernel development rules: http://dochub.mongodb.org/core/kernelcodedevelopmentrules .. _Kernel Code Style guidelines: http://dochub.mongodb.org/core/kernelcodestyle .. _Google CPP Style Guide: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml .. _Google JavaScript Style Guide: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml Testing ------- Every non-trivial change to the code base should be accompanied by a relevant addition to or modification of the test suite. If you don't believe this is necessary, please add an explanation in the JIRA ticket why no such changes are either needed or possible. All changes must also pass the full test suite (including your test additions/changes) on your local machine before you open a pull request. Contributor Agreement --------------------- A patch will only be considered for merging into the upstream codebase after you have signed the `contributor agreement`_. .. _contributor agreement: http://www.mongodb.com/contributor