👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines (not rules) for contributing to Fabric8-Analytics, which is hosted in the Fabric8-Analytics Organization on Github. These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request.
- You can create an issue on any repo under fabric8-analytics Github org, include as many details as possible with your report
- Include the behavior you expected and maybe other places you've seen that behavior
Note: Every PR requires at least one review from at least one of the Core Reviewers member.
Core Reviewers are:
- Fridolin Pokorny [email protected]
- Jiri Popelka [email protected]
- Michal Srb [email protected]
- Pavel Odvody [email protected]
- Slavek Kabrda [email protected]
- Tomas Hrcka [email protected]
- Pavel Kajaba [email protected]
- Pavel Tisnovsky [email protected]
Before you submit your pull request consider the following guidelines:
-
Fork the repository and clone your fork
-
Make your changes in a new git branch:
git checkout -b bug/my-fix-branch master
-
Create your patch, ideally including appropriate test cases
-
Include documentation that either describe a change to a behavior or the changed capability to an end user
-
Commit your changes using a descriptive commit message. If you are fixing an issue please include something like 'this closes issue #xyz'
-
Make sure your tests pass! We use Jenkins CI for our automated testing
-
Push your branch to GitHub:
git push origin bug/my-fix-branch
-
When opening a pull request, select the
master
branch as a base. -
Mark your pull request with [WIP] (Work In Progress) to get feedback but prevent merging (e.g. [WIP] Update CONTRIBUTING.md)
-
If we suggest changes then:
-
Make the required updates
-
Push changes to git (this will update your Pull Request):
- You can add new commit
- Or rebase your branch and force push to your Github repository:
git rebase -i master git push -f origin bug/my-fix-branch
-
That's it! Thank you for your contribution!
- Include unit or integration tests for the capability you have implemented
- Include documentation for the capability you have implemented
- If you are fixing an issue, include the issue number you are fixing
- Python code should follow PEP8 conventions
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Reference issues and pull requests liberally
- Use hyphenation over underscore or camelCase (i.e.
/my-awesome-endpoint
) - Any API change requires RAML documentation to be created or updated (otherwise the change will not be merged)
- Provide extensive examples for input and output
- Payload transferred over API should be in JSON format (exceptions are possible - for example while transferring files) and has to be documented with JSON Schema and JSL, see existing schemas for workers and server
- Use Python 3 where possible with potential exceptions:
- Ecosystem (Node.js, Ruby...) specific features which require parsing of the non-Python code
- Specific use case where Python does not provide needed functionality, library, framework... - needs strong justification and approval from tech leads
- OpenShift is our default and preferred way how to run Fabric8-Analytics
- In case you are adding a new service make sure you provide a Dockerfile and OpenShift configs