👍🎉 First off, thanks for taking the time to contribute! 🎉👍
Contributing to Parsec is welcome! We love open source and community collaboration. All of Parsec development is fully open here on GitHub and there are no private, closed areas that exclude you and the Parsec community.
The guidelines here give some tips on how to best contribute. Please try to follow these. It's short, quick and easy. This will ensure a smooth process. Thanks again for contributing!
Quick Links
- Filing Issues
- Filing Bugs
- Filing Features
- Contributing Code
- Contributing Documentation
- Acknowledgement
We track issues in the GitHub issue tracker here.
An issue is either a bug (an unexpected / unwanted behavior of the software or incorrect documentation) or a feature (a desire for new functionality / behavior in the software or new documentation).
If you file a bug issue, please provide at least the following information:
- version of Parsec (either by doing
parsec --versions
, by getting it from the GUI, or by providing the git tag if you work from the sources) - error/log output (eg a traceback)
- steps to reproduce the issue
A bug issue should also be only about one thing - if you have found multiple related things, please file multiple issues and link the issues (cross referencing by mentioning the related issues in the descriptions - that will make GitHub automatically add respective links).
When proposing a new feature, please provide the following:
- your actual use case and your goals
- why this important for you
- optionally, a proposed solution
Describing your use case and goals, rather than only / directly jumping into a specific, concrete proposal for a solution is very important. As this allows us to take into account the bigger picture. If you "only" propose concrete solution, and that doesn't fit in, we might need to reverse engineer your actualy use case / goals first to then come up with a solution that fits.
We use the Fork & Pull Model. This means that you fork the repo, make changes to your fork, and then make a pull request here on the main repo.
This article on GitHub gives more detailed information on how the process works.
- All development happens on GitHub and we use the usual fork the repository, branch-per-issue, pull request and merge workflow, also known as GitHub Flow.
- A necessary requirement is that an issue needs to exist first. That is, a PR is always for a specific issue. The branch should be name like this:
<descriptive_name>_issue<NNN>
. - Another prerequisite (for merging code) is that you have signed and sent us a contributor agreement. This only needs to be done once, but we cannot merge code until we have received a CAA.
- Further, we have a CI system in place running the whole set of unit tests for Parsec on various platforms. The CI system will be triggered automatically when you do a PR. A necessary condition for a PR to be merged that all of our tests run green.
- An issue branch from a PR must be rebased to the master branch before merging. We don't have a policy (currently) regarding squashing - that is, you can leave your commits or squash them, but rebasing is necessary.
- If your branch doesn't run green on our CI, or your branch becomes stale, because other things were merged in between, you are responsible for fixing thing on your branch first.
Before you can contribute any changes to the Parsec project, we need a CAA (Contributor Assignment Agreement) from you.
The CAA gives us the rights to your code, which we need e.g. to react to license violations by others, for possible future license changes and for dual-licensing of the code. The CAA closely follows a template established by the Harmony project, and CAAs are required by almost all open source projects which are non-trivial in scope.
- Download the Contributor agreement CAA (PDF).
- Fill in the required information that identifies you and sign the CAA.
- Scan the CAA to PNG, JPG or TIFF, or take a photo of the box on page 2 (the entire box, including the information identifying the document).
- Email the scan or photo to
[email protected]
with the subject line "Parsec project contributor assignment agreement"
You only need to do this once - all future contributions are covered!
Contributions to the documentation are highly welcome! Parsec is a complex software, users have varying degrees of background and experience and we have limited resources. Also, developers of Parsec usually don't have a user perspective (anymore) - but docs should be for users.
All Parsec documention is contained in this repository here.
The documentation is the built (by us) and deployed here.
This document is based on the contributing one of the Crossbar.io project. This a cool open source project made by nice people, though not related to Parsec in any way, you should go check a look ;-)