.. _revitalization: Revitalization of github2fedmsg application =========================================== This document will investigate the possibility of updating the code base we currently have. What needs to be addressed (from our index) ------------------------------------------- **Python 2 -> Python 3** | *Current situation*: Written in Python 2.7.x which is now `EOLed `_. | *Suggested outcome*: Python 3.10.x (and above). | *Reason(s)*: Benefits from performance improvements, bug fixes, security patches etc. of the language. **Migration to OpenShift** | *Current situation*: The app is running in a Virtual Machine (VM). | *Suggested outcome*: Deploy it as an OpenShift service. | *Reason(s)*: Automated deployments and we already have an OpenShift cluster. **Documentation** | *Current situation*: Only a brief README file and `SOP `_ are available. | *Suggested outcome*: It would be great if the documentation was more extensive. It should include instructions about setting up the development environment, contributing guidelines, code of conduct, etc. This is also covered in the `dev environment enhancement doc `_. | *Reason(s)*: Easier onboarding and setting expectations for contributors. **Porting to Authlib** | *Current outcome*: The authentication library used is `Velruse `_. | *Suggested using*: `Authlib `_. | *Reason(s)*: Velruse hasn't been updated in 9 years and Authlib is in active development. **Development environment** | *Current situation*: This is covered in depth in our other document about enhancing the development environment. Notes ----- - setuptools>=58 `breaks support for 2to3 `_. - 2to3 is `deprecated since Python 3.11 and will be removed in Python 3.13 `_. The Good and the Bad -------------------- **Advantages** 1. The project is written in (now EOLed) Python 2.7.x and as Python 3 is currently in active development, the project can benefit from the performance improvements, bug fixes, and security patches included in the language itself. 2. The project makes use of a certain set of dependencies, the support of which has not been ported from Python 2 to Python 3. Porting into Python 3 would necessitate the use of newer dependencies which would be more updated, secure and maintained. **Disadvantages** 1. The move from Python 2 to Python 3 would require special attention into finding the alternatives for the dependencies which either support only Python 2 or are unmaintained as of 2022. Inability to find those would render the rewrite unsuccessful. 2. We will continue using the `Pyramid web framework `_, however the team lacks the expertise with it. This makes the app difficult to maintain and team members would have to upskill in this area.