Thank you for considering contributing to Semblage. The following guide is designed to help you know what to expect, and to use your time as efficiently as possible.
Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
Code contributions, documentation, graphic design, bug triage, writing tutorials and translation are a few examples of the contributions that can be helpful to this project. When in doubt about how to contribute, please ask in the community communication channels.
While you can use the issue tracker for general questions, it is better if you use one of the community communication channels.
This includes not just how to communicate with others (being respectful, considerate, etc) but also technical responsibilities (importance of testing, project dependencies, etc). Mention and link to your code of conduct, if you have one.
- Ensure that your code passes any test suite that is provided.
- Ensure cross-platform compatibility for every change that you make. Windows, Mac, and Linux. Support for *BSD variants is a work in progress.
- Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
- Be welcoming to newcomers and be respectful of contributors from all backgrounds. See the Python Community Code of Conduct.
There is no reason to be intimidated when making your first contribution to Semblage. If changes to your contribution are requested, it's not a negative reflection on you. Open source is about collaboration and cooperation, which can sometimes take the form of teaching and correction. Sometimes you are the teacher, and sometimes you are the student.
If you are looking for a way to get involved, you can have a look through the issues, especially any that are marked with the label Good First Issue. If you have never contributed to an open source project before, here are some guides that will help you learn some basics.
If you get stuck, be sure to ask for help on the community channels.
The steps below should get you ready to submit a PR (pull request).
- Create your own fork of the code
- Do the changes in your fork
- If you like the change and think the project could use it:
- Be sure you have followed the code style for the project.
- Note the Code of Conduct.
- Send a pull request asking the core development team to review your PR and provide feedback.
Pull requests will be reviewed by the core development team and feedback will be given to the submitter. Sometimes PRs can be merged easily, sometimes a lot of work needs to be done to get a PR ready to merge, and sometimes PRs reach an impasse and cannot or will not be merged. Please be prepared for any of those eventualities.
Please Note If you find a security vulnerability, do not open an issue. Contact the core developer(s) on the community channels through a direct message. In order to determine whether you are dealing with a security issue, ask yourself these two questions:
- Can I access something that's not mine, or something I should not have access to?
- Can I disable something for other people?
If the answer to either of those two questions are "yes", then you're probably dealing with a security issue. Note that even if you answer "no" to both questions, you may still be dealing with a security issue, so if you are unsure, just email a core developer directly.
When filing an issue, make sure to answer these five questions:
- What version of Semblage are you running?
- What operating system and processor architecture are you using?
- What did you do?
- What did you expect to see?
- What did you see instead?
General questions should be posted in the community channels instead of the issue tracker. The members there will answer or ask you to file an issue if you have found a bug.
Please have a look at the project tracker and roadmap first to see if the issue
Semblage is designed to be a mouse-driven CAD application that is backed by the power of programmatic CAD. There are a few principles to keep in mind when filing a feature request.
- Semblage requires a different mindset because it is built on top of programmatic CAD.
- Simplicity will always be a central goal in the development of Semblage.
- Semblage is focused more on desktop manufacturing, makerspaces and hobbyists.
When requesting a feature, the core development team will consider your request, but you must be prepared to respectfully accept a rejection if that happens. There are also times where a feature request morphs into something else after it has been discussed and a consensus is reached.