Clone this wiki locally
Before You Start:
- You should have some idea about the project and its purpose. If you don't, start here: http://madlib.net
- You should be familiar with the project contents. If you are not, look at below links:
- You should have some knowledge on relational databases, SQL, Python, C/C++, and analytical methods that you want to implement.
Step 1: Make friends with GitHub
- Create an account on GitHub.com.
- Get a git client from git-scm.com.
- If you are not familiar with this version control software follow bootcamp guides on help.github.com to gain some confidence.
Step 2: Find your task
- Create an account on MADlib JIRA and review the open issues (new module, feature request or bug fix).
- Check again the Module Development Status page.
- Get in touch with us on MADlib Dev Forum
- Tell us what you'd like to work on OR,
- We can discuss the most pressing needs and suggest a task.
- Once we have a consensus we'll open a JIRA ticket (bug, task, or new feature) to track the progress and update the Dev Status on Wiki.
Step 3: Fork MADlib® project
- Go to GitHub MADlib repo and fork the project using the FORK button (top right).
- This step will create a "tracked" copy of madlib/madlib repo under yourGitHubAccount/madlib.
- Need some help with forking? Check here
Step 4: Develop away...
by using your own copy/fork of the MADlib repository.
Make sure you have all the module components in place: MADlib Module Anatomy
And remember about:
- Proper SQL API: SQL API Guide
- C++ coding practices: The C++ Abstraction Layer
- Comprehensive documentation: Documentation Guide (Doxygen)
- Complete unit tests: Unit Test Guide
Step 5: Send pull-request
Done with coding? Follow this to get your code checked-in:
- Test build/install/execution on your side.
- Create a pull-request from your forked repository.
- Use different topic branches to separate your commits into few pull-requests.
- If this sounds like Greek: read more about pull-requests here: http://help.github.com/send-pull-requests/.
- Use an informative commit message, example:
[Line 1] Module Name: Main purpose in short
[Line 2] (blank)
[Line 3] Jira: MADLIB-12345
[Line 4+] Description
- Update the corresponding MADlib JIRA ticket
- Mark the issue "For Review"
- Add a comment pointing to your pull request.
- If you know who would be the best reviewer assigne the JIRA to that person. Otherwise don't worry.
- Code comments are easy to add on Github. JIRA better serves as a high level log tracker.
- Once the code is merged:
- Github pull request closes automagically
- JIRA must be resolved manually, this will be done by the Committer who merges the pull request.
Step 6: Testing
Once the code is developed all work is not yet done. A functional test suite must be developed and added to the testsuite repository to ensure that automated test cases are run regularly.
- A Tester will review Resolved issues and work with the Developer to put together a test plan.
- The test plan will be implemented and integrated into the testsuite github fork.
- Once all tests are passing and the issue has been verified the Tester will transition the Jira from Resolved to Closed.