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 user support and communicates about code development through GitHub Discussions on the respective repositories and the Slack workspace.

Please use the issue trackers of the individual packages 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

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, or the issue trackers or GitHub Discussions of individual packages. 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 main.

    • 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 pyproject.toml 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 docstrings 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 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

Note

Please see the individual package documentation for detailed guidelines on how to contribute to a specific package.