Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
149 lines (97 sloc) 6.13 KB

Contributing to Geomstats

Welcome to the geomstats repository! We are excited you are here and want to contribute.

Practical Guide to Submitting your Contribution

These guidelines are designed to make it as easy as possible to get involved. If you have any questions that are not discussed below, please let us know by opening an issue!

Before you start you will need to set up a free GitHub account and sign in. Here are some instructions.

Joining the Conversation

geomstats is maintained by a growing group of enthusiastic developers! Most of our discussions take place on issues.

Contributing through GitHub

git is a really useful tool for version control. GitHub sits on top of git and supports collaborative and distributed working.

If you are not yet familiar with git, there are lots of great resources to help you git started! Some of our favorites include the git Handbook and the Software Carpentry introduction to git.

On GitHub, you will use Markdown to chat in issues and pull requests.

GitHub has a really helpful page for getting started with writing and formatting Markdown on GitHub.

Understanding Issues

Every project on GitHub uses issues slightly differently.

The following outlines how geomstats developers think about these tools.

  • Issues are individual pieces of work that need to be completed to move the project forwards. A general guideline: if you find yourself tempted to write a great big issue that is difficult to describe as one unit of work, please consider splitting it into two or more issues.

  • Issues are assigned labels which explain how they relate to the overall project's goals and immediate next steps.

Making a Change

We appreciate all contributions to geomstats, but those accepted fastest will follow a workflow similar to the following:

1. Comment on an existing issue or open a new issue referencing your addition.

This allows other members of the geomstats development team to confirm that you are not overlapping with work that is currently underway and that everyone is on the same page with the goal of the work you are going to carry out.

This blog is a nice explanation of why putting this work in up front is so useful to everyone involved.

2. Fork the geomstats repository to your profile.

This is now your own unique copy of geomstats. Changes here will not effect anyone else's work, so it is a safe space to explore edits to the code!

Make sure to keep your fork up to date with the master repository.

3. Make the changes you have discussed, following the geomstats coding style guide.

  • Create your feature branch (git checkout -b feature/fooBar)
  • Commit your changes (git commit -am 'Add some fooBar')
  • Push to the branch (git push origin feature/fooBar)

Try to keep the changes focused. If you feel tempted to "branch out" then please make a new branch.

4. Add the corresponding unit tests.

If you are adding a new feature, do not forget to add the corresponding unit tests. As geomstats enables numpy and tensorflow, your unit tests should run on these two backends.

5. Ensure Geomstats Coding Style Guide.

Ensure that your code is compliant with PEP8, the coding style guide for python.

Use flake8 or yapf to automatically enforces this style.

6. Submit a pull request.

A member of the development team will review your changes to confirm that they can be merged into the main code base.

Use the Github labels to label your pull request:

  • enhancement: enhancements or new features
  • bug: bug fixes
  • test: new or updated tests
  • documentation: new or updated documentation
  • style: style changes
  • refactoring: refactoring existing code
  • continuous integration: updates to continous integration infrastructure

Recognizing Contributions

We welcome and recognize all contributions from documentation to testing to code development. You can see a list of current contributors in our If you are new to the project, do not forget to add your name and affiliation there!

Thank You!

— Based on contributing guidelines from the fMRIprep project.