Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Context:

We are looking to upgrade from Python 3.8 to Python 3.11 as 3.11 is the new default Python version on the Raspberry Pi 5 (and Python 3.8 will be unsupported soon). However, the DroneKit-Python library is not compatible with Python 3.11, and this decision matrix is used for the solutions to this issue.*Note: DroneKit’s PyPI is out of date, but their GitHub repo is updated

Solution

Pros

Maintenance effort

Cons

Effort (time)

Further impact

Do nothing

- stay

: Stay on Python 3.8

0

Import new DroneKit as a fork/clone (copy it into our project)

Import new DroneKit as a submodule

Create our own whl/package for new DroneKit on PyPI

Use Pymavlink to create our own Mavlink message processing and handling

None

Compatibility issues with future versions of 3rd party Python libraries (e.g. Pytorch)

Create our own MAVLink message processing and handling

Full responsibility on Autonomy to maintain

  • All new code: Must be thoroughly tested

Any bugs not caught at testing will occur during flight tests

  • The advantage of a large community is thoroughness in discovering bugs, which WARG will no longer have

*Fork DroneKit-Python and use as submodule

Full responsibility on Autonomy to maintain

  • Additional work required to keep up with open source community

*Use DroneKit-Python as a submodule

Autonomy must maintain correct version of submodule

Submodule update by members must be made carefully

  • Additional work by all members

*Compile DroneKit-Python into a Python package

Autonomy must compile DroneKit-Python for every upgrade to new version

Autonomy must maintain and allow access to correct version of package

  • Members must download package as part of onboarding or when the package is updated

*Note: DroneKit’s PyPI is out of date, but their GitHub repo is updated