Django / Rails

Produits similaires, communautés divergentes

Rémy Maucourt

Développeur web fullstack senior

inventif.fr

  • 10 ans de Rails / JS / DevOps
  • 1 an de formation sur Django

Ruby / Python

  • Languages interprétés, de haut niveau, typage dynamique
  • Permet la programmation objet et fonctionnelle
  • Usage général, communautés spécialisées

Source : Jetbrains, "The State of Developer Ecosystem 2023"

Deux frameworks très proches

  • Développement rapide d'applications web
  • Utilisation de bases de données, ORM inclus
  • Systèmes de templating, HTML rendu côté serveur ou API
  • Deux variations du pattern MVC
  • Open source

Deux succès

Django Rails
Création 2005 2004
Licence MIT BSD
Contributeurs 2566 5035
Github stars 79k 55k
Github repos 1.7m 2.3m

Implicit vs Explicit

Django : "Explicit is better than implicit"

Rails : "Convention over configuration"

Ruby is full of optical illusions where that which seems simple, clear, and beautiful to our mind's eye actually is an acrobatic mess of wires under the hood. These choices were not free, which is precisely why they're so commendable.

DHH, "The Rails Doctrine"

One person framework

A toolkit so powerful that it allows a single individual to create modern applications upon which they might build a competitive business.

DHH, "The One Person Framework", 16/12/2021

Asset Pipeline

Gestion des assets JS et CSS

  1. Concaténation / minification / compression
  2. Fingerprinting (stratégie de caching)
  3. Gestion des modules JS via import-maps

Equivalent Python : Whitenoise

Action Mailer

Gestion des mails transactionnels


							class UserMailer < ApplicationMailer
								default from: 'notifications@example.com'

								def welcome_email
									@user = params[:user]
									@url  = 'http://example.com/login'
									mail(to: @user.email, subject: 'Welcome to My Awesome Site')
								end
							end
						

							

Welcome to example.com, <%= @user.name %>

You have successfully signed up to example.com, your username is: <%= @user.login %>.

To login to the site, just follow this link: <%= @url %>.

Thanks for joining and have a great day!

Brève histoire de Ruby on Rails

  • 2004 : Création de Rails, extraction de Basecamp
  • 2008 : Twitter se désengage de Rails
  • 2008 : Rails fusionne avec Merb
  • 2022 : Formation de la Rails foundation

David Heinemeier Hansson

aka "The Drama"

2021: crise chez Basecamp

  • Création d'un conseil DEI
    (Diversity, equity, and inclusion)
  • Une liste de noms crée en 2009
  • La direction supprime le conseil DEI
  • 1/3 des salariés partent

Brève histoire de Django

  • 2003 : Création de Django, dans la rédaction du Lawrence Journal-World
  • 2008 : Formation de la Django Software Foundation (DSF)
  • 2014 : Adrian Holovaty et Jacob Kaplan-Moss renoncent à leur titre de BDFL
  • 2020 : Mise en place du système de gouvernance actuel

Gouvernance Django

3 groupes : Mergers, Releasers, Steering Council


Mergers : merge les pull requests

Releasers : gère les releases

Steering Council : supervision et tie-breaker

Gouvernance Rails

3 groupes : Core, Commiters, Issues


Issues team : répond aux issues et améliore la documentation

Commiters : peut gérer des pull requests sur des sujets mineurs

Core : décisions stratégiques, features principales et releases

Loi de Conway

Toute organisation qui conçoit un système, au sens large, concevra une structure qui sera la copie de la structure de communication de l’organisation.

Melvin Conway, 1967

Django a une gouvernance,
Rails a une doctrine
Elitism is good, when it comes to open source. You absolutely want projects to be driven by the people who show up to do the work, demonstrate their superior dedication and competence, and are thus responsible for keeping the gift factory churning out new updates, features, and releases. Productive effort is the correct moral basis of power in these projects.

DHH, "Open source is neither a community nor a democracy", 16/05/2024

Kings, presidents, and BDFLs have their place, and there are models of community that are aided by having them. But the longer I observe the Django community, the more I realize that our community doesn’t need them.

Jacob Kaplan-Moss, "Retiring as BDFLs", 13/01/2014

Part of the Rails mission is to swing its machete at the thick, and ever growing, jungle of recurring decisions that face developers creating information systems for the web. There are thousands of such decisions that just need to be made once, and if someone else can do it for you, all the better.

DHH, "The Rails doctrine"

inventif.fr/django-rails