Contributing to MCT
Clone this wiki locally
Awesome, you want to contribute to MCT!
We especially welcome feature enhancements and bug fixes described on our issue tracker. However, before you dive in, please ensure the issue is not already assigned so you avoid doing redundant work. You won't be able to assign the issue to yourself if you're not on the MCT team, but you can leave a comment mentioning you'll be looking into it.
We also welcome any other feature enhancements and bug fixes. Before you get started, please browse our issues to see if it has already been listed. If the issue has not been listed, please create it using the following guidelines:
For a Bug: describe the bug in detail and thoroughly document steps for replication
For a Feature: describe the feature enhancement in detail and explain how it's necessary, interesting or useful
A great way designers and testers can contribute is by updating and documenting new bug fixes or feature enhancements on our issue tracker.
Adding to the MCT Repository
If you're new to Git / GitHub, try.github.io is an excellent interactive learning tool that will quickly teach what you need to know. A deeper explanation is available in the paper Git from the bottom up and the comprehensive, official reference is the Pro Git book, available for free online.
Contributing developers should have their own fork of MCT. You may submit a pull request when you think it's appropriate to merge your fork with the NASA MCT repository.
Code check-ins must satisfy the following:
- Check-ins should be accompanied by unit tests which meet code coverage requirements (see below).
- The entire platform unit test suite must complete successfully.
- A developer from the MCT team (other than the change's author) must complete a code review before any new code is checked in. This may occur in person, or using code review tools. If code review will be done by the person completing the pull request, indicate "Code review by pull request" in the check list below.
Pull requests are accepted based on developer review and scheduling interests. See Development Process for an explanation of MCT's development cycle.
For various reasons, we may not be able to complete pull requests which have a dependency to external software. If you have a dependency to open source software, please consider submitting your request to nasa/MCT-Plugins instead.
Submitting your pull request
Within the body of the pull-request, please add the following:
Include a high level description of the changes and / or additions.
List all new and modified files.
Fill-out the following template and paste it into your pull-request message; for any "No" or N/A answers, provide justification.
Wrote or re-wrote unit tests (Y/N): Ran entire suite of unit tests successfully (Y/N): Verified bug fix with the described replication steps or verified the implementation meets the requirement cited (Y/N): Code coverage requirements satisfied (new code=80%, changed code=at least as high as existing) (Y/N): Code review date and attendees: Describe potential impact on other areas of the code: Describe any test prerequisites for this fix (e.g., restart the database): For bugs marked "Regression - Yes", describe the cause of the regression: Did you modify any pom.xml file? If yes, did you thoroughly document your changes and reasons?
Wrote or re-wrote unit tests: For each project, these are the files under src/test. For example within the mctcore project, a unit test for testing an AbstractComponent object is located at
mctcore/src/test/java/gov/nasa/arc/mct/components/AbstractComponentTest.java. Please see Requirements of MCT Unit Tests
Ran entire suite of unit tests successfully: To run the entire suite of unit tests, enter the directory platform-assembly and run
mvn clean install -Ddistribution
Verified bug fix with the described... Submitted issues have steps to reproduce a bug; perform the steps given from the issue in your code and make sure the bug does not appear
Code coverage requirements satisfied: That is, you must sufficiently test your code using an appropriate testing-suite. Please see Unit Testing and Code Coverage
Code review date and attendees: Your code will be reviewed by pull-request; please write 'Code review by pull request'
Describe potential impact on other areas of the code
Describe any test prerequisites for this fix
For bugs marked "Regression - Yes", describe the cause of the regression:
Did you modify any pom.xml file?
If you have any questions about this process, please ask. Thanks for contributing!