DjangoCon Europe 2019. Votre poney est-il mort?

image

Du 9 au 14 avril , la conférence DjangoCon Europe 2019 s'est tenue à Copenhague. Plein d'espoir et d'aspirations, je suis arrivé à cet événement et je suis reparti dans une profonde tourmente. Dans cet article, j'essaierai de transmettre mes impressions sur la conférence et de commenter un changement aussi radical d'attitude envers Django.
Avertissement: l'article contient de l'intolérance, des jugements catégoriques et des critiques injustifiées.

Bonjour à tous, je suis Maxim, je vis en Autriche, au Tyrol. Je suis professeur à GeekBrains et copropriétaire du projet winePad, collecteur et vendeur de données techniques sur les boissons alcoolisées. Ce sont généralement les données sur les vins.

À propos du projet winePad
Nous avons la base de données la plus précise d'Europe. En effet, tous les vins de la base de données sont vérifiés personnellement par nos experts. En bref sur notre travail: le bruit sourd. Et parfois, ça arrive dur: quand 40 approbations par jour, le lendemain matin, je ne sais pas toujours comment je suis rentré. Eh bien, ou je ne me souviens pas où la voiture est garée.

Le projet a démarré en 2012 avec Django 1.4 / Python 2.7 sur le serveur, et avec Jquery sur le client + serveur JsonRPC. Maintenant, l'ensemble des technologies a augmenté. Quoi qu'il en soit, nous avons littéralement rencontré Django.

J'ai rejoint le projet en 2015, prenant le relais des développeurs tyroliens. De cheveux de mauvaise qualité se déplaçaient partout.

L'histoire des bergers tyroliens, fortement requalifiés en programmeurs, je vais laisser les coulisses. Si vous voyez leurs solutions, je suis sûr que vous voudrez soudainement tuer tous ceux qui se disent «programmeurs tyroliens».

En février 2019, c'est devenu clair: le développement du projet est impossible avec l'ensemble des technologies actuelles. À la recherche de réponses, j'ai décidé de me rendre à DjangoCon 2019, qui s'est tenue à Copenhague très à l'heure. Ce que je voulais de la conférence:

  1. Apprenez des professionnels, voyez ce que je peux améliorer dans mon travail.
  2. Plongez dans le monde des nouvelles solutions pour ma plateforme.
  3. Passez du temps avec les mêmes nerds Django que moi. Entrez, pour ainsi dire, dans une fête.
  4. Comprenez ce qui ne va pas avec Django. Depuis 2016, je pense régulièrement que je manque quelque chose. Je ne peux tout simplement pas comprendre quoi.

Qu'est-ce qui est arrivé de tout cela:



Jour zéro


Mardi après-midi, avant le début de la conférence, une réunion des Django Girls a eu lieu - c'est l'initiative de DjangoFoundation pour promouvoir Django dans les masses féminines. À partir de 17 heures, l'inscription a commencé. Les disquettes de 3 pouces faisaient office de badges, n'importe qui pouvait écrire tout ce qu'il voulait sur une disquette (ha ha), des clés USB étaient présentes.

Tous les jours de la conférence, il y avait une quantité illimitée de bière artisanale étiquetée «Pink Django-pony», provenant d'une petite brasserie locale. D'une part, c'est cool, de l'autre ... la bière pas terrible. Les salles étaient décorées de chevaux volants roses de toutes tailles.



Du symbolisme discret et du sentiment d'implication dans la communauté des éleveurs de chevaux, il y a eu un arrière-goût spécial et joyeux. J'ai rencontré Russell Keith-Magee , le développeur Django de longue date. Tous ceux qui sont venus à cette conférence dépendent de ses solutions logicielles.



Lors de l'achat d'un billet, j'ai dû accepter de respecter les règles de la conférence sur l'ouverture, la tolérance, la critique constructive et le respect des préférences sexuelles des participants. En acceptant cela, je ne soupçonnais pas à quoi cela pourrait conduire ...

Ici, j'ai d'abord appris la règle de Pacman: si une autre personne s'approche du cercle de conversation, les participants à la conversation DOIVENT se retirer et faire de la place pour un nouvel interlocuteur. En général, il était possible de cogner et de manger des frites (en toute quantité), de se familiariser avec les spécialistes qui arrivaient, de se joindre à toute conversation, de tirer les organisateurs.

Subjectivité et manque de tolérance
De nombreux participants portaient des vêtements désordonnés, des chaussures déchirées, une odeur étrange et semblaient nager. Cette vision n'a pas beaucoup changé au cours des jours suivants. C'était étrange pour moi de voir.

Le soir, j'ai fait le tour de Copenhague.



Une jolie ville au bord de la mer froide, se souvient un peu Peter. Ils en font trop avec des vélos, mais vous pouvez tout pardonner pour les restaurants de poisson. C'est très savoureux.

Au cours des trois premiers jours de la conférence, des rapports ont été remis dans la salle pour 500 personnes (il y avait 377 participants). En parallèle, il y avait des ateliers dans des salles séparées . La plupart des rapports sont enregistrés sur vidéo, vous pouvez les regarder sur YouTube . Il n'y a pas de diffusion d'ateliers. Liste et description des rapports et ateliers ici . TOUS les ateliers, sans exception, étaient très mal préparés, comme l'ont noté d'autres participants.

Pendant les pauses, beaucoup de nourriture et de café étaient offerts. À cet égard, la conférence était bien préparée. Des stands de sponsors, principalement des RH, se tenaient discrètement dans le hall. Je voulais discuter avec les chasseurs de têtes scandinaves.

Premier jour


Conférence d'ouverture sur la situation avec DjangoProject


En bref: aidez qui peut.



Atelier GraphQL


JSON pour les paresseux. La vie ne s'améliorera pas si tout le monde commence à utiliser une notation de requête différente.

La vie est HEUREUSE


Django REST Wrapper, commencez à écrire 4 lignes de code au lieu de 6.

Atelier sur le passage à une nouvelle version du code sans arrêter le serveur


L'histoire d'une opération cardiaque de dix mois avec un code de 100 modèles. Le projet a été créé trois fois:

  1. Avec d'anciens modèles.
  2. Avec anciens et nouveaux modèles et possibilité de commutation en ligne.
  3. Sans anciens modèles et interrupteurs.

Long et cher.

A cause de cet atelier, j'ai raté trois conférences, deux ont bien parlé, je vais regarder dans les notes:

  • 750 000 pull pull request.
  • En-têtes de sécurité Web Django.

Après une pause avec le prochain réservoir de café, il y a eu une conférence sur DJANGO-ORM . Conférencier - Sigurd Ljodal. Il s'agit du développeur de l'ORM actuel, ses activités peuvent être consultées sur le référentiel Django.



Le rapport est utile, mais il m'a bouleversé. D'une part, le nouvel ORM-Django a beaucoup mûri. Sigurd, d'autre part, a utilisé les fonctionnalités non documentées de queryset.query dans ses exemples. Dans une conversation ultérieure avec Sigurd, il m'a frappé que lui, comme la plupart des développeurs Django, ne connaît pas vraiment les méthodes queryset.query .

"Pourquoi les utilisez-vous dans des exemples!" Ai-je demandé. "Eh bien ... comme ça ..." répondit Sigurd.

Après tous les rapports, il y a eu des discussions éclair. Rapports de cinq minutes pour ceux qui ont spontanément voulu parler. «Lightning» était surtout intéressant, mais cinq minutes ne suffisent pas. Le but de l'orateur est d'intéresser, puis les gens peuvent demander.

Quelques camions de bière et de longues conversations après les discussions éclair ... Le premier jour est terminé.

Deuxième jour


Atelier: Bootstrap Django


Ça n'a pas marché.

Reconnaissance d'image, apprentissage automatique avec Django


Pas de formation, utilisation de ressources externes, jambages en reconnaissance, images drôles dans les exemples. Rien que du plaisir.

Atelier de reconnaissance d'image


Tout a fonctionné et une photo a été trouvée parmi 10 autres. Mais la vitesse du travail a tout biffé. 20 secondes pour préparer, 30-40 secondes pour rechercher. J'ai pensé: une recherche unique de photos dans notre projet prendra des années. Et nous avons des dizaines de milliers de demandes de ce type par jour. La solution proposée ne me convient pas.

Test de changement visuel


Les travailleurs frontaux peuvent être utiles.

SQL-Alchemy contre Django-ORM


Président Gleb de DjangoStars. Je suis d'accord avec l'idée, mais je continuerais à implémenter certaines choses grâce aux méthodes DJANGO-ORM. La principale chose que j'ai vu où il est possible d'appliquer l'alchimie dans mon projet.



Atelier: chemin complet de demande / réponse à travers le pipeline alimentaire de Django


Il a été utile de rafraîchir les connaissances. Développeur Django, souvenez-vous: il vous suffit de configurer une application WSGI.

Puis j'ai eu l'idée de parler de la "foudre". J'ai fait une présentation et sauté quelques rapports.

Rapport de documentation du projet divin


Du chef de l'équipe de documentation RedHat.



J'ai sauté pour remercier l'orateur après. Elle a clairement expliqué pourquoi je devais arrêter et commencer à documenter mon projet. Au moment de la gratitude, j'ai touché son avant-bras. Ce qui a commencé ici !!! Ceci est un renard polaire. Je pensais qu'ils me mettraient en prison. Tout a coûté une sanction verbale pour comportement inapproprié par rapport à un autre participant à la conférence.

Pentapesting avec ZAP


L'application essaiera toutes les méthodes connues pour casser le site spécifié.



J'ai immédiatement voulu essayer de pirater mon projet.

La foudre a été plus utile que le premier jour.

Alexander (DjangoStars) a parlé des paramètres des options de stockage




Histoire de wrapper pour les champs de modèle


Vrapper surveille le type de valeur renvoyé.

Rapport sur l'installation de stubs au lieu d'afficher des données client privées


Utile au stade du développement, des tests et de la journalisation. À l'ère de la loi sur la protection universelle des données, cela vaut la peine d'être considéré. Hélas, l'auteur n'a pas répondu pourquoi il avait réinventé le décorateur @sensitive_variables . Il semble qu'il n'a tout simplement pas lu la documentation.

Rapport sur l'utilisation de variables avec une portée dans un seul thread


J'utilise cette solution depuis longtemps. Je peux seulement dire que l'utilisation de variables globales dans Django est due au manque de compétences et de connaissances en architecture.

Après deux jours de conférence, j'étais bouleversé: quelques rapports utiles en trois jours. Très peu sur Django, beaucoup sur les solutions superflues et inutiles. WTF ??? Et même Copenhague ne m'a pas rassuré.



L'eau dans les canaux est propre. On le voit en bas. Voyez-vous quelque chose là aussi?


Brillant troisième jour


Cette journée a payé toutes les souffrances, dissipé les doutes et apporté encore plus de tristesse. Mon conseil est d'étudier tout ce que vous trouverez sur les rapports du troisième jour. Une telle injection cool de connaissances est rarement trouvée.

Rapport de meurtre victorien


La jeune fille a raconté sur les doigts la raison de la loi sur la protection des données des utilisateurs. J'ai compris la raison sous-jacente de l'apparition d'une telle loi. Le problème avec la protection des données, ainsi que le problème avec l'isolation électrique, peut accidentellement tuer quelqu'un.

Utilisation de GeoDjango avec des exemples


De l'auteur de la documentation GeoDjango. La beauté



Je l'ai prévu dans le projet. Maintenant, je sais comment implémenter cela.

Elastic Group Architect sur les produits logiciels de l'entreprise


Cela inclut elasticsearch.



J'ai aimé l'exemple de la façon d'intégrer un graphique de l'activité des utilisateurs dans le panneau d'administration de Django.

Cycle complet de création de votre propre champ de modèle




J'ai bien aimé: j'ai plusieurs de mes domaines, mais j'ai beaucoup manqué dans le processus de création.

Django Plugin System


Le plugin s'allume et s'éteint à la volée, vérifiant son inclusion via ... les signaux. Solution trop exotique à utiliser. Une fois un tour dans la sauce "voyez comment vous pouvez autrement."

Ensuite, je suis entré dans un discours sur elasticsearch et je suis allé à l'atelier. Ensuite, j'ai raté deux rapports et perdu du temps.

Mais ce qui s'est passé ensuite peut être raconté plusieurs fois en couleurs. Chaque fois, une compréhension plus profonde de l'essence de ce qui est entendu vient.

Repenser votre projet Django


Tôt ou tard, les développeurs tombent sur une recommandation: modèles Fat, vues maigres, modèles stupides (modèles stupides, vues minces, modèles épais).



Je ObjectManager par moi-même: sélectionner des objets uniquement dans les méthodes ObjectManager et dans les méthodes QuerySet générées par ObjectManager .

Peu de gens ont quitté cette redistribution de code. Le rapport contenait des exemples de l'élimination maximale des dépendances et de l'abstraction complète de la logique métier.



Il s'agit d'une solide leçon pour les adeptes du style canonique de la séparation de code. Résistance aux changements. Indépendance de la décision ... Tout cela devrait être dans un produit de qualité. À la fin du rapport, une documentation a été fournie qui aidera à réaliser cela.



Super utile.

Puis il y a eu des discours et la fermeture de la partie officielle de DjangoCon.

Et puis il y a eu un rapport qui a répondu à toutes mes questions et confirmé mes sentiments.

Django Redesign Outline


Conférencier - Tom Christie, créateur du framework Django REST . Dans les diapositives, Tom a expliqué et montré dans les exemples de code pourquoi Django (et, par conséquent, DRF) n'a plus d'opportunités de développement. Oui, vous pouvez corriger les bugs, oui vous pouvez ajouter des scintillements ou améliorer l'ORM. La forme générale de Django reste inchangée.



Quand Tom a dit: «Je ne pense pas du tout qu'il soit possible de construire un système rapide très chargé en Python», les gens se sont tus.



Tom a ensuite montré des exemples de code sur la façon de résoudre les problèmes d'asynchronie dans les projets Django et les problèmes qui suivraient.



Pour l'ORM asynchrone, Ariane et le pilote de base de données asynchrone inachevé ont été mentionnés. Pour les modèles Jinja et refaire le code du modèle.



Le rapport a clairement indiqué que pour créer un cadre prêt pour les technologies modernes de Django, vous devez réécrire tout ce qui se trouve dans Django. Et de préférence dans une autre langue. Il était clair que Django était dans une impasse de développement, beau, confortable et dépassé de 10 ans.

Je suis très reconnaissant à Tom de ne pas m'avoir quitté et a montré des options pour se développer
L'option est de savoir comment couper davantage Django, si vous n'êtes pas encore prêt à lancer ce cheval mort. Bibliothèques, comment intégrer, comment tester. Starlet, SQLAlchemy, Jinja-templates, etc., voir les diapositives pour plus de détails.

Option quoi faire ensuite pour ceux qui veulent descendre. Il n'y a pas de solution «comme à Django». Il y a eu un examen des analogues existants, de la vitesse, de la complexité et des perspectives. J'ai déjà essayé le GO mentionné, je l'ai presque aimé.

Aux éclairs, je me suis aventuré à appeler pour couper Django plus loin. Ce n'est qu'après le discours de Tom Christie - l'appel a semblé complètement peu convaincant.



Les deux jours suivants ont consisté en sprints . Ceux qui sont restés ont travaillé avec Django: ils ont ouvert des messages d'erreur et les ont corrigés.



Après un montage réussi, vous pouvez vous précipiter et frapper un gong dans toute la salle. La fréquence des booms était toutes les 5-7 minutes.

Pour le fun, ce qui se passe sur les sprints
J'ai regardé l'une des modifications approuvées: correction de l'erreur lors de la conversion d'un nombre en chaîne. ( # 30363 - N'utilisez pas de notation exponentielle pour les petites décimales ) fichier django / utils / numberformat.py
Et je me sentais très triste:
  • L'édition contient une erreur de type de retour.
  • Deux récursions inutiles ont été ajoutées au code.
  • L'auteur ne semble pas comprendre comment fonctionne Decimal .
  • Les tests ne vérifient pas tous les cas limites et le type de données renvoyé.

J'ai réécrit le code et suis allé approuver la modification précédente, et j'ai dit: vous avez une erreur ici! Et il a choisi la mauvaise stratégie: les programmeurs n'aiment pas vraiment quand quelqu'un parle de leurs erreurs, en particulier des erreurs vérifiées et approuvées.

Il serait préférable d'afficher un rapport de bogue. Bien sûr, ils m'ont répondu que tel devait être le cas. Personne n'est impliqué dans la vérification de type en python et, en général, python est un langage sans typage strict. Et donc, mon garçon, tu vas dans la forêt, il y a beaucoup de choses sans toi. Je ne m'attendais pas à une attitude aussi illettrée envers l'édition de code et une immunité à signaler une erreur.

De là, un autre problème se pose, pourquoi Django est ce qu'il est: souvent, les gens corrigent des erreurs qui ne comprennent pas l'algorithme ou l'idée. C'est pourquoi de nouvelles erreurs apparaissent, des méthodes de courbe comme QuerySet.as_manager , QuerySet.as_manager non GROUP_BY dans la demande avec base_sort=True (n'a pas vérifié, peut le réparer), ou des solutions illogiques, comme avec les formets et les inlines dans AdminModelForm .

En plus des sprints, il y avait quelques ateliers, j'ai aimé la rediffusion sur ZAP. Nous avons réussi à grogner le site et des failles de sécurité ont été trouvées.

Et à Copenhague, pendant ce temps, il faisait froid et ensoleillé.


J'ai visité Christiania, j'ai traversé les canaux et j'ai regardé la petite sirène.







J'ai quitté la maison en pensant. Je voulais voir de nouvelles fonctionnalités dans Django ... mais je les ai trouvées ailleurs. Je voulais faire savoir qu'il y avait une solution rapide et correcte ... et a échoué (je vais vous informer sur le bogue). Je voulais entrer dans le monde professionnel ... mais quelque chose n'allait pas, je l'ai imaginé. La connaissance apporte la douleur. L'essentiel est que je sache où aller ensuite.



PS La décision concernant mon projet est prise pendant que winePad reste sur Django.
PPS Je suis ouvert à discuter de la conférence et de Django. Demandez si ce n'est pas clair.
PPPS A partir du 20 juin 2019 chez GeekBrains, mon cours Django commence au Python Development Department , je vais certainement mentionner les points importants que j'ai appris lors de la conférence.

Source: https://habr.com/ru/post/fr448700/


All Articles