Skip to content

Add new policy for OS/Arch and Python version #111

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions abc/ABC-001.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
====================================================================================
ABC-001: Operating systems, CPU architectures and Python versions support
====================================================================================

This is the AboutCode policy for platform support.

Operating systems and CPU architectures support
------------------------------------------------

- We run automated CI tests on supported configurations. We do not support
configurations that we cannot test.

- Linux on x86/64 for web apps: Web application projects should support only Linux.

- They may support other OSes for development, but in general we should limit the
number of OSse we support to the minimum.

- This also include limiting the number of distro and OS versions to a few of the
mainline Linux distro, typically the latest Debian stable version.
Things may work on other distro versions and architectures but that's not a goal.
Deployment using containers makes this mostly a non-issue.


- Linux, Windows and macOS on x86/64 for libraries and command line apps on multiple OSes.

- Library projects and CLI apps should try to support Linux, Windows and macOS
on x86/64 for current and supported OS versions.

- Libraries project releases should be built for all the supported OS/Arch/Python versions.

- CLI app project releases should be built for only one Python version for each supported
OS/Arch. They should include a bundled Python and an installer when possible.


Python versions support
-------------------------

- We typically support the same Python versions that the Django project supports for its latest stable release.
We do not consider the first few releases of a new major Django stream as stable.
See https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django for details

- We code against the syntax and standard library of the oldest Python version we support.
For instance if we support Python 3.8, 3.9 and 3.10, we use Python 3.8 syntax and standard library.

- We should run tests on all supported Python versions.

- When we drop support for a Python version in a project, we must make a new major release

- Application project releases should be built for only one of the supported Python versions.
This should be neither the latest, nor the oldest.
For instance if we support Python 3.8, 3.9 and 3.10, we build app releases for Python 3.9.

- Libraries project releases should be built for all the supported Python version.