Community

NumFOCUS

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.

Support

The signac community offers real-time user support through the signac gitter chat room and Slack workspace. The project’s primary communication channel for code development is the Slack workspace. Alternatively, you can send an email to signac-support@umich.edu.

Please use the issue trackers of the individual packages to file bug reports or request new features!

Contributions

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 packages, 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 master.
    • 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 setup.py file).
  • 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).

Tip

During continuous integration, the code and the documentation is checked automatically using Flake8, Pydocstyle, and Mypy. Run the following commands to set up a pre-commit hook, using Pre-commit, that will ensure your code and documentation are compliant before committing:

pip install -r requirements-precommit.txt
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

Note

signac and signac-flow uses specific versions of the dependencies for setting up a pre-commit hook. Please see the file requirements-precommit.txt of both the repositories for more details. Please see the individual package documentation for detailed guidelines on how to contribute to a specific package.