Note

Last update 07/09/2020

Software organization and contribution

_images/schematic.png

The superflexPy framework is composed by different pieces that are necessary to fully understand and use the framework:

  • Source code: it contains all the code necessary to use the framework at its latest (and potentially unstable) version. It should be accessed only by an advanced user who wants to understand the internal functioning, install manually the latest version, or expand the framework.
  • Packaged release: it allows the user to easily get and install a stable version of the framework.
  • Documentation: it explains the functioning of the framework in its details.
  • Examples: they are the “place-to-start” for a new user, providing working models and showcasing potential applications.
  • Scientific publication: it is a peer-reviewed publication that presents the framework to the public and puts it in prospective with other existing solutions.

Source code, documentation, and examples are part of the official repository of SuperflexPy that is hosted on GitHub. The repository is the only place where code, documentation, and examples should be modified.

New releases of the software are distributed through the official Python Package Index (PyPI) where SuperflexPy has a dedicated page.

Documentation is built automatically from the source folder on GitHub and published online in a dedicated website.

Examples are made available on GitHub as Jupyter notebooks and can be either visualized statically or run in a sandbox environment.

The scientific publication is currently in preparation and it will be linked here once accepted.

Contribution

Contribution to the framework can be made in different ways. Types of contributions include:

  • Submit issues on bugs, desired features, etc.
  • Solve open issues.
  • Extend the documentation with new use cases.
  • Extend or modify the framework.
  • Use and advertize the framework in your publication.

This page illustrates the typical workflow that should be followed when contributing to a GitHub project. Please, try to follow it.

Branching scheme

Updates to SuperflexPy are made directly in the branch master, which represent the most up-to-date branch. The branch release is not actively updated since the only action that should be done is a merge from the master, once a tangible update is available.

When something gets pushed to the branch release, a new version of the package is automatically released on PyPI. Remember to change the version number in the setup.py file.

Developers are free to create new branches but pull requests must be directed to master and not to release.

Documentation and examples are generated from the content of the master branch.