DroneKit-Python with Python 3.11 upgrade decision matrix

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.

Solution

Maintenance effort

Further impact

Solution

Maintenance effort

Further impact

Do nothing: Stay on Python 3.8

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

  • @Maxwell Lou Verify compatibility with Python 3.11

    • It is compatible, tested using the unit test and mission planner

    • Some of the imports from the drone-kit library had to be changed since it assumed that it was already imported as a package (there are some weird things with imports when writing packages)

Decision

We have decided to implement the solution of forking dronekit-python source code due to low development effort and pretty low maintenance effort.