14 points par GN⁺ 2025-03-30 | 1 commentaires | Partager sur WhatsApp
  • Un framework web conçu pour permettre de créer rapidement des produits avec Python (fork de Django)
  • Il est possible de démarrer le développement local avec une seule commande, puis de passer en production via un tableau de bord et des feature flags
    • Clonez le starter kit pour démarrer rapidement
  • Composé du paquet principal plain et de paquets d’extension officiels pouvant être installés de manière optionnelle

Fonctionnalités du paquet plain

  • Associe des motifs d’URL à des fonctions de vue Python
  • Traite les requêtes et réponses HTTP
  • Rendu HTML avec des templates Jinja
  • Formulaires pour traiter les entrées utilisateur
  • Fournit une interface en ligne de commande (CLI)
  • Peut servir des assets statiques (CSS, JS, images, etc.)
  • Étend les fonctionnalités de l’application via des middleware
  • Intégration facile de paquets officiels et tiers
  • Fournit un système de vérification préalable (preflight check system) avant le lancement de l’application

Fonctionnalités étendues via les paquets first-party

  • plain.models : fournit un ORM permettant de stocker des données dans Postgres, MySQL et SQLite
  • plain.cache : une solution de cache fonctionnant avec la base de données existante
  • plain.email : fournit la configuration et l’envoi d’e-mails à l’échelle de l’application
  • plain.sessions : permet la lecture et l’écriture de sessions basées sur la base de données
  • plain.worker : une solution de tâches en arrière-plan compatible avec la base de données existante
  • plain.api : permet de construire des API JSON avec une architecture de vues basée sur des classes

Authentification

  • plain.auth : fournit la base pour ajouter des utilisateurs, authentifier les requêtes et restreindre les vues
  • plain.oauth : une solution OAuth flexible prenant en charge les connexions sociales modernes et l’accès aux API
  • plain.passwords : prend en charge la connexion classique par mot de passe
  • plain.loginlink : fournit des liens de connexion à usage unique pour se connecter sans mot de passe
  • plain.passkeys : prise en charge de la connexion sans mot de passe prévue

Administration

  • plain.admin : fournit un tableau de bord d’administration entièrement personnalisable
  • plain.flags : permet de contrôler le contenu par utilisateur avec des feature flags basés sur la base de données
  • plain.support : fournit un support client sans service tiers
  • plain.redirection : surveillance des 404 et gestion des redirections depuis la base de données
  • plain.pageviews : permet de voir ce que les utilisateurs consultent et d’offrir un meilleur support

Développement

  • plain.dev : permet de démarrer un environnement de développement local avec une seule commande
  • plain.pytest : permet d’écrire et d’exécuter des tests avec la bibliothèque de test Python populaire
  • plain.code : permet le formatage et le linting du code Python avec une configuration par défaut
  • plain.tunnel : permet d’exposer une application locale sur Internet pour les intégrations de webhooks

Frontend

  • plain.tailwind : fournit une intégration de premier plan avec le framework CSS populaire
  • plain.htmx : permet de construire une expérience utilisateur moderne avec les outils existants
  • plain.elements : propose un nouveau paradigme pour les composants réutilisables dans les templates de l’application
  • plain.pages : fournit un routage basé sur les fichiers avec HTML et Markdown
  • plain.esbuild : fournit un processus de build simplifié pour la compilation JavaScript
  • plain.vendor : permet de télécharger et d’auto-héberger des assets JavaScript et CSS sans dépendre d’un CDN

1 commentaires

 
GN⁺ 2025-03-30
Avis sur Hacker News
  • Beaucoup ignorent peut-être que le bug tracker de Django Rest Framework est passé en privé et qu’un nouveau mainteneur est recherché

    • Django est excellent, mais il a besoin d’un changement comparable à la renaissance d’Angular
    • Des gens veulent contribuer, mais la plupart des efforts sont retardés par le comité
    • Un fork n’est peut-être pas la solution, mais il faut agir
    • S’il faut des dons, en accepter est aussi une option
    • La communauté des développeurs Django est petite et très soudée
    • Il faut une communauté ouverte aux contributions et attachée aux relations sur le long terme
  • Sentiments mitigés à propos d’un fork de Django

    • Expérimenter en dehors du projet historique a de la valeur, mais un fork est une déclaration forte
    • On a l’impression que l’effort collectif autour de Django est ignoré
    • Inquiétude face au risque d’une orientation commerciale ou trop étroite
    • L’attachement à Django grandit encore davantage
  • Les points forts de Django sont son ORM et son écosystème / ses idiomes

    • Il est difficile de comprendre pourquoi casser la compatibilité avec un fork
    • On aimerait voir de meilleures fonctionnalités d’administration, mais cela peut être résolu avec un template de projet Django
  • Django a quelques points faibles

    • Les workers et les API REST ne sont pas des citoyens de première classe
    • L’authentification Django est basique mais utile
    • Les difficultés rencontrées avec Django peuvent accroître la complexité
  • Surprise face au ressentiment négatif envers Django

    • Django est en retard par rapport à Laravel et Rails
    • L’écosystème est fragmenté et beaucoup de packages sont anciens
    • Le pipeline de fichiers statiques de Django n’est pas inclus par défaut
    • Il y a des problèmes avec le modèle utilisateur et des limites dans les templates
    • Passage à Rails pour commencer à construire des applications web
  • Passage de Django à Supabase/Firebase

    • Il y a beaucoup de plugins et l’auto-hébergement est facile
    • Les plugins Django semblent pouvoir être meilleurs
  • Agacement face à une configuration faite de chaînes de caractères qui référencent des classes

    • On veut pouvoir naviguer facilement lorsqu’on référence des classes ou des objets
    • Cela se résout plus tard avec des plugins, mais le LSP le prend en charge gratuitement
  • Lecture de la documentation de Plain

    • Toutes les fonctionnalités existent déjà dans Django ou dans des packages bien pris en charge
    • La politique de dépréciation de Django permet de maintenir les projets longtemps
    • Le comité empêche la commercialisation du projet et prend les meilleures décisions pour la majorité des utilisateurs
    • Django a été créé pour des journaux, mais c’est un framework généraliste
  • On ne sait pas si Plain réussira, mais on comprend pourquoi le fork existe

    • La direction de Django ne parvient pas à faire avancer Django