The signac framework is part of the community of NumFOCUS Affiliated Projects.
Code of Conduct
All community members are expected to follow the signac project's code of conduct.
The signac community offers real-time user support through the Slack workspace. The project's primary communication channel for code development is the Slack workspace. Alternatively, you can send an email to email@example.com.
Please use the issue trackers of the individual :ref:`packages <package-overview>` to file bug reports or request new features!
Developer meetings are open to the community. The signac Google Calendar is publicly available at this iCal link. The Google Calendar is also embedded below:
Contributions to signac are very welcome! We highly appreciate contributions in the form of user feedback and bug reports. Such contributions are best communicated through our Slack workspace, which we use for developer discussions, the issue trackers of individual :ref:`packages <package-overview>`, or via email. Developers are invited to contribute to the framework by pull request to the appropriate package repository. The source code for all packages is hosted on GitHub. We recommend discussing new features in form of a proposal on the issue tracker for the appropriate project prior to development.
All code contributed via pull request needs to adhere to the following guidelines:
- Use the OneFlow model of development:
- Both new features and bug fixes should be developed in branches based on
- Hotfixes (critical bugs that need to be released fast) should be developed in a branch based on the latest tagged release.
- Write code that is compatible with all supported versions of Python (listed in the package
- Avoid introducing dependencies -- especially those that might be harder to install in high-performance computing environments.
- All code needs to adhere to the PEP8 style guide, with the exception that a line may have up to 100 characters.
- Create unit tests and integration tests that cover the common cases and the corner cases of the code.
- Preserve backwards-compatibility whenever possible, and make clear if something must change.
- Document any portions of the code that might be less clear to others, especially to new developers.
- Write API documentation as part of the doc-strings of the package, and put usage information, guides, and concept overviews in the framework documentation, the page you are currently on (source).
During continuous integration, the code and the documentation are formatted and checked automatically using black, isort, flake8, pydocstyle, and mypy. These tools ensure high code quality, establish project standards, and reduce the number of iterations needed in the code review process. Run the following commands to set up a pre-commit hook, using the tool pre-commit, that will ensure your code and documentation are compliant before committing:
pip install pre-commit pre-commit install
To install and run Pre-commit for all the files present in the repository, run the following command:
pre-commit run --all-files
Please see the individual package documentation for detailed guidelines on how to contribute to a specific package.