Entretien de la communauté Python avec Russell Keith-Magee – Real Python

By | mai 20, 2020

trouver un expert Python

Aujourd'hui, je suis rejoint par Russell Keith-Magee. Russell est un développeur principal de Django et le fondateur et mainteneur du projet BeeWare. Dans l'interview, nous parlons de sa mission d'aider Python à devenir une option réalisable pour l'écriture et le packaging d'applications mobiles ainsi que sa passion pour les projets open source. Nous abordons également son discours sur PyCon 2020, qui a depuis été enregistré et téléchargé sur la chaîne YouTube PyCon.

Alors, sans plus tarder, allons-y!

Ricky: Bienvenue à Real Python, Russell. Merci de m'avoir rejoint pour cette interview. Commençons comme nous le faisons toujours. Comment avez-vous commencé la programmation et quand avez-vous commencé à utiliser Python?

Russell Keith Magee

Russell: Mon père a toujours été un des premiers à adopter la technologie et, par conséquent, quand j'avais huit ou neuf ans, il a ramené à la maison l'un des tout premiers Commodore 64 importés en Australie.

Comme avec de nombreux ordinateurs de cette époque, vous ne pouviez pas éviter de programmer avec le Commodore 64 car lorsque vous l’allumiez, vous étiez plongé directement dans un environnement de programmation BASIC.

Il y avait aussi beaucoup de livres pour enfants à l'époque qui comprenaient du code de programme que vous pouviez saisir. Ces livres se vendraient comme des JEUX D'ESPACE SUPER EXCITANTS, mais ils n'étaient vraiment que des jeux de nombres aléatoires avec de très bonnes illustrations de livres . Mais cela a suffi à piquer mon intérêt.

Il est difficile de fixer une date exacte à laquelle j'ai commencé à utiliser Python. Je me souviens l'avoir rencontré à la fin des années 1990, autour de la période Python 1.5, en tant que langage principalement utilisé pour la gestion de la configuration de Red Hat. Mon utilisation sérieuse a commencé vers 2003, lorsque je commençais à me lancer dans la programmation Web. Au moment où j'étais contributeur à Django, mon travail de jour est devenu Python à plein temps – et cela depuis.

Fait intéressant, mon histoire d'origine et mon arrière-plan Python sont entrés en collision récemment. Usborne, l'éditeur de certains de mes livres de programmation préférés de l'ère Commodore, a ouvert le contenu de leurs livres, j'ai donc lancé un projet amusant pour porter les livres sur Python.

Ricky: Même si vous êtes l'un des principaux développeurs de Django, serait-il juste de dire que vous passez la plupart de votre temps open source ces jours-ci sur le projet BeeWare? Pour ceux qui n'ont pas encore entendu parler de BeeWare, qu'est-ce que c'est et qu'est-ce qui vous a inspiré pour démarrer le projet?

Russell: Je travaille avec Django depuis 2005 et j'ai rejoint l'équipe centrale au début de 2006. Mais je n'ai pas été très activement impliqué dans le projet depuis que j'ai quitté ma présidence de la Fondation Django Software à la fin de 2016.

Depuis lors, je me concentre principalement sur le projet BeeWare. BeeWare est une collection d'outils et de bibliothèques pour développer des applications de bureau et mobiles. De la même manière que Django facilite la mise en place et l'exécution d'un site Web basé sur une base de données, BeeWare vise à faciliter l'écriture d'une application native pour macOS, Windows, Linux, iOS ou Android que vous pouvez ensuite distribuer aux utilisateurs finaux. comme une application installable.

L'inspiration originale est venue de deux directions distinctes. Tout d'abord, j'étais toute l'équipe d'ingénierie pour une startup web de deux personnes. Django m'a permis d'itérer rapidement de nouvelles fonctionnalités sur notre pile Web. Mais nous avons développé le besoin d'une application mobile correspondante, et je ne pouvais pas utiliser Python car il n'y avait pas d'option viable pour écrire une application mobile en Python.

J'ai fini par utiliser une boîte à outils JavaScript multiplateforme, mais je n'en étais vraiment pas satisfait, en partie parce que je n'utilisais pas ma langue préférée, mais aussi parce que l'interface utilisateur résultante ne se sentait pas bien. Ce n'était pas une application native, c'était un navigateur Web enveloppé dans un emballage pratique. Je voulais résoudre ce problème et créer une application multiplateforme vraiment native écrite en Python.

L'autre inspiration est venue de mon passé de programmation. J'ai appris à programmer sur un Commodore 64, mais quand je devenais sérieux, j'ai commencé à utiliser la suite d'outils Borland (Turbo C, Turbo Pascal et autres). La suite Borland avait une vraiment bon éditeur et, surtout, un très bon débogueur visuel.

Je voulais reconstruire ce débogueur, mais pour Python et en utilisant toutes les capacités de l'interface utilisateur de mon ordinateur portable macOS moderne. Cependant, je ne pouvais pas trouver une boîte à outils GUI qui soit multiplateforme, facile à distribuer et dotée d'une API Pythonic.

Combinez cela avec le fait que j'aurais besoin d'une nouvelle boîte à outils GUI pour travailler sur mobile, et je pensais que la construction d'une nouvelle boîte à outils GUI axée sur le natif Python et multiplateforme serait l'approche la plus simple. Après tout, comment cela pourrait-il être difficile? Derniers mots célèbres, je sais.

Ricky: À PyCon US cette année, vous deviez donner une conférence intitulée «Snakes in a case: Packaging Python apps for distribution», qui était axée sur Briefcase, un outil qui convertit une application Python en installateurs natifs sur macOS, Windows, Linux et appareils mobiles. Python a toujours eu du mal à rendre le packaging et le partage d'applications aussi faciles que dans d'autres langues. Est-ce que cela change? Les applications mobiles natives sont-elles dans l'avenir de Python?

Russell: Je pense que cette situation doit changer – et si ce n'est pas le cas, Python peut trouver qu'elle est remplacée.

Python provient d'une longue tradition de code côté serveur, et cela ne disparaîtra jamais. Mais l'écosystème informatique évolue.

Mon fils a commencé l'école secondaire il y a un peu plus de deux ans. L'école présente du matériel pédagogique par voie électronique. Cependant, son appareil informatique obligatoire n'est pas un ordinateur portable. C’est un iPad. Ce n'est pas une expérience inhabituelle non plus. Les iPad, les téléphones intelligents et les tablettes gagnent une pénétration du marché que les ordinateurs portables ont jamais vu.

Alors, quand mon fils (ou toute autre personne d'ailleurs) veut apprendre à programmer, pourquoi apprendrait-il un langage de programmation qu'il ne peut pas utiliser sur son appareil informatique? Si Python ne développe pas d'histoire pour développer des applications pour iOS et Android, alors nous allons découvrir que les utilisateurs qui ont traditionnellement appris Python vont apprendre d'autres langages de programmation comme JavaScript, Swift et Kotlin – des langages qui faire avoir une histoire mobile.

L'emballage est un problème étroitement lié. Si vous souhaitez installer une application sur ces nouveaux appareils, vous ne téléchargez pas de programme d'installation à partir d'un site Web. Vous doit passer par l'App Store du fabricant.

Cette philosophie commence également à devenir plus courante sur les systèmes d'exploitation de bureau. macOS et Windows ne vous empêcheront pas d'installer des applications que vous téléchargez à partir d'Internet, mais ils le rendent certainement plus difficile à faire, et les utilisateurs finaux apprécient la simplicité d'un simple Installer depuis l'App Store lien.

En dehors de cette limitation technique, avoir une bonne réponse à la question, comment puis-je donner mon code à quelqu'un d'autre? est critique. Si votre histoire de distribution pour votre nouvelle démo de jeu sympa ou la visualisation de données implique «Téléchargez Python, puis créez un environnement virtuel, puis pépin installer… puis comprendre pourquoi pépin n'a pas fonctionné ", ce n'est pas une expérience convaincante.

Ceci est particulièrement important dans un monde où la concurrence, JavaScript, est installée par défaut sur presque tous les ordinateurs et est attachée à un mécanisme de distribution intégré: le Web. BeeWare est donc ma réponse à ce défi.

BeeWare comprend une boîte à outils de widget multiplateforme (Toga) et des bibliothèques pour vous permettre d'exécuter Python sur iOS et Android. Il comprend également Briefcase, un outil qui peut prendre une collection de code Python et le transformer en une unité distribuable que vous pouvez simplement donner à un utilisateur final.

Pour macOS, Briefcase produit un .app bundle que vous pouvez déposer dans votre dossier Applications. Sous Linux, il produit AppImages. Sous Windows, il produit des programmes d'installation MSI, et pour iOS et Android, il produit des projets qui peuvent être téléchargés sur iOS App Store ou Google Play Store.

Cependant, Briefcase n'est pas lié aux bibliothèques BeeWare. Vous pouvez utiliser Briefcase pour empaqueter un jeu PursuedPyBear, un PySide Qt, une application Tkinter ou tout autre kit d'outils GUI Python. Le porte-documents ne fera pas fonctionner Tkinter sur mobile, mais il résoudra le problème de l'empaquetage des applications sur les plateformes où Tk Est-ce que travail.

Ricky: Quel avenir pour BeeWare? Quelle est votre vision de l’avenir du projet?

Russell: À court terme, je veux obtenir la suite complète au statut 1.0. En pratique, cela signifie avoir des fonctionnalités au moins équivalentes à Tkinter (la boîte à outils GUI intégrée à Python lui-même) sur les cinq plates-formes prises en charge.

Nous nous rapprochons assez de cet objectif. Grâce à une récente subvention de la PSF, le back-end Android, qui a toujours accusé un retard, a connu une progression rapide au cours des derniers mois. Nous avons également eu de très bonnes contributions récentes de la communauté pour améliorer le back-end de Windows.

À plus long terme, j'aimerais que BeeWare commence à manger ses propres aliments pour chiens. Comme je l'ai dit précédemment, BeeWare a commencé (en partie) comme une tentative de construction d'un débogueur. Je voudrais toujours revisiter cela avec d'autres outils de développement comme les outils de couverture, les testeurs et le Saint Graal: un éditeur.

J'aimerais également que nous développions des outils pour développer des applications GUI: des outils de glisser-déposer pour définir des interfaces utilisateur avec des mécanismes en un clic pour créer des applications et les déployer dans des magasins d'applications. Étant donné que les outils BeeWare sont tous multiplates-formes, tout ce qui fonctionne sur le bureau fonctionnera également sur mobile, donc avoir des outils de développement pour iOS et Android qui fonctionnent sur iOS et Android font partie de cette vision.

Le seul grand domaine technique que je voudrais aborder est le Web. Dans le passé, nous avons démontré une application Web Python pure, c'est-à-dire une application Web dans laquelle tout le comportement côté client dans le navigateur s'exécute en tant que Python, pas JavaScript. L'émergence de WASM en tant que technologie a rendu cela encore plus plausible, donc je voudrais pouvoir étendre BeeWare pour que le Web soit une autre plate-forme de déploiement du point de vue du développeur BeeWare.

Du point de vue du projet, j'aimerais que BeeWare devienne financièrement autonome, un projet dans lequel le développement et la maintenance continus ne sont pas dus au temps libre des bénévoles. Je voudrais trouver des moyens de rémunérer les principaux responsables de projet et, idéalement, de payer des stagiaires et des ingénieurs juniors afin que les membres expérimentés de l'équipe puissent partager leurs connaissances et leur expérience avec la prochaine génération de développeurs FLOSS.

Trouver un modèle viable pour générer des revenus continus qui ne sape pas les objectifs open source du projet est l'un de mes plus grands défis à l'heure actuelle. Si quelqu'un de votre public a des idées à ce sujet, je suis vraiment intéressé à les entendre.

Ricky: Maintenant pour mes dernières questions. Que faites-vous d'autre pendant votre temps libre? Quels autres hobbies et intérêts avez-vous en dehors de Python et de la programmation?

Russell: Aussi ennuyeux que cela puisse paraître, BeeWare (et l'open source en général) est vraiment une passion pour moi, donc cela consomme beaucoup de mon temps libre. Certaines personnes font du Sudoku ou des mots croisés pendant leur temps libre. Je pirate des projets open source étranges.

Cependant, lorsque je ne programme pas, j'aime les jeux de société sur table, et je suis aussi un fan de télé et de films de science-fiction.


C'était super de parler avec toi, Russell. Si vous voulez contacter Russell pour lui dire bonjour, vous pouvez le trouver sur Twitter et sur son blog personnel. Si vous voulez essayer ou vous impliquer dans le projet BeeWare, rendez-vous sur leur site Web et consultez les documents.

S'il y a quelqu'un que vous aimeriez que j'interviewe ensuite, n'hésitez pas à me contacter dans les commentaires ci-dessous ou envoyez moi un message sur Twitter. Bon codage!