Le projet ZdS tourne aujourd'hui avec python 2, alors que ça fait 6 ans que python 3 est sorti. ça serait une bonne chose de passer un jour sous python 3 quand même, surtout que la version 2 nous pose souvent des petits soucis d'encodage.
Il y a énormément d’intérêt à passer sous Python 3 (j'avoue avoir la flemme de tout détailler, et je ne trouve pas d'article qui en parle bien), mais il y a encore quelques dépendances qui nous tirent vers le bas.
Les dépendances Infra
- supervisor : utilisé uniquement en production, il permet de superviser certains process sur le serveur de prod (zds, solr, etc.). Il existe des alternatives bien-sur, comme systemd par exemple.
- Mysql-python : Le choix de MySQL en production avait été fait en toute connaissance de cause. Aujourd'hui on ne peut toujours pas passer à Python 3 si on reste sous Mysql, car son pilote ne fonctionne pas sous Python 3.
- Python Memcached : C'est le pilote qui permet d'interagir avec memcached. Il n'est pas compatible python 3, mais un fork existe uniquement pour python 3.
Dépendances back-end applicatif
- GitPython : La lib qui nous permet d'interagir proprement avec git, qui avait été forkée au début du projet, n'était pas compatible python3. Mais bonne nouvelle, elle est maintenant compatible, et une PR est en cours pour migrer sur l'upstream et donc devenir compatible python 3.
- Python-ZMarkdown : un fork du projet Python-Markdown qui rajoute les extensions dédiées au markdown du site. Ce sont les extensions qui ne sont pas compatibles python 3 dans ce cas.
Conclusion ?
Au vu des dépendances actuelles, on dirait qu'une migration vers python 3 n'arrivera pas de si tôt.
Une façon de procéder serait que le projet soit a la fois compatible python2 et python3. Les dépendances bloquantes actuelles étant purement Infra, il suffirait de laisser tourner le serveur sous python2.
Ce topic est là pour faire un petit état de l'art, et nous aider à orienter progressivement nos choix futurs, vers une migration python 3.