Que signifie la loi de Jamie Zawinski?

24

J'ai besoin d'une explication appropriée de la loi de Jamie Zawinski sur l'enveloppement logiciel :

Chaque programme tente de se développer jusqu'à ce qu'il puisse lire le courrier. Les programmes qui ne peuvent pas s'étendre ainsi sont remplacés par ceux qui le peuvent.

Mohsen
la source
2
@YannisRizos: Voir aussi: en.wikipedia.org/wiki/Feature_creep
FrustratedWithFormsDesigner

Réponses:

39

Toutes les réponses (et commentaires) jusqu'à présent semblent se concentrer entièrement sur la première moitié de la déclaration, ce qui en fait un commentaire sur le «ballonnement», lorsque la moitié importante est la seconde moitié: les programmes qui ne peuvent pas s'étendre ainsi sont remplacés par ceux qui peut.

Il ne s'agit pas de ballonnement logiciel, il s'agit des réalités du marché. Les gens peuvent dire qu'ils veulent un produit simple, mais quand on regarde l'utilisation réelle, les choses qui s'utilisent sont les choses qui permettent aux utilisateurs d'en faire plus, et ils finissent par remplacer des outils moins capables.

Une partie du problème est que "simple" est un mot déroutant. Comme «couper», cela peut signifier deux choses presque complètement opposées. Ce que les gens veulent, c'est quelque chose qui simplifie les tâches complexes. C'est «le bon simple», et il faut beaucoup de complexité pour bien faire. Ce que certaines personnes interprètent cependant, c'est que les gens veulent quelque chose de simpliste ou de minimaliste. Ce concept peut avoir un certain attrait de niche, mais dans l'ensemble, c'est le mauvais type de "simple" sur lequel se concentrer lors de la conception d'un produit. Quelle que soit la qualité de votre travail, les nouvelles demandes de fonctionnalités continuent à arriver.

Pour donner un exemple, il y a le programme sur lequel je travaille au travail. Vous n'en avez probablement jamais entendu parler, mais nous sommes le leader du marché dans une industrie spécialisée: le contrôle des médias. Notre programme diffuse très probablement votre station de télévision et / ou radio préférée. Les clients adorent ça, ils disent que c'est tellement mieux que tout ce avec quoi ils ont travaillé.

C'est aussi énorme . L'EXE est de plus de 65 Mo, avec environ 4 millions de lignes de code, soutenu par une base de données avec plus de 150 tables, construite au cours de plus d'une décennie de travail. Et pourtant, il semble que chaque fois que nous essayons de l'installer sur une nouvelle station ou un nouveau réseau, il y a une ou deux choses absolument essentielles à leur flux de travail, pour lesquelles nous n'avons aucun support. Nous finissons donc par ajouter les nouvelles fonctionnalités, sinon les clients ne voudraient pas passer du système auquel ils sont déjà habitués. Et permettez-moi de répéter, les clients l'adorent.

Mason Wheeler
la source
20
Et finalement, le logiciel gonflé est remplacé par un nouveau concurrent, qui est "maigre et méchant", et qui ajoutera les fonctionnalités requises un par un jusqu'à ce qu'il ait toutes les fonctionnalités que son prédécesseur possédait ...
jhonkola
Hm, je pensais que cette partie était couverte par la déclaration de Zawinski: "Ensuite, j'ai conçu, et Terry Weissman et moi avons implémenté, les clients Netscape Mail and News, versions 2.0 à 3.0. C'était notre contribution à la preuve de la loi de l'enveloppement logiciel ", mais maintenant que je l'ai relu, ce n'est pas si clair.
yannis
1
@jhonkola si le code fait ce dont les clients ont besoin et pas beaucoup plus que cela n'est pas gonflé.
1
@ ThorbjørnRavnAndersen Je suis d'accord, mon point de vue était plus que lorsque le logiciel gagne en popularité (et donc aussi les utilisateurs / clients), le nombre de fonctionnalités requises par les utilisateurs, et finalement implémentées, augmentera.
jhonkola
1
Si votre interprétation est correcte, le commentaire de Zawinski était vantard, pas dépréciant. Je trouve cela difficile à croire.
ctn
12

Vous devez comprendre que cela s'est produit il y a longtemps et qu'à cette époque, les ordinateurs n'étaient pas encore en mesure d'exécuter plus d'un programme à la fois pour un utilisateur donné. DOS pour les ordinateurs personnels (et éventuellement Windows 3 sur le dessus) et terminaux basés sur les caractères pour les utilisateurs Unix (seuls quelques-uns avaient X11).

Cela signifie que pour vérifier si vous avez reçu un e-mail, vous devez quitter ce que vous faites actuellement, démarrer le programme de messagerie, lire le courrier, quitter le programme de messagerie et redémarrer votre ancien programme. Je suppose que vous pouvez voir que si votre programme actuel pouvait vous permettre de lire votre courrier électronique, vous pourriez éviter tout cela.

Par conséquent, si votre programme actuel ne pouvait pas lire votre e-mail, vous étiez enclin à le faire (rappelez-vous qu'il s'agissait d'étudiants du MIT) ou à passer à un autre qui le pourrait.

De nos jours, c'est difficile à imaginer, mais vous pouvez avoir une idée de comment c'était en vous limitant à une seule fenêtre de navigateur - pas d'onglets, pas de fenêtres supplémentaires - et peut-être même pas utiliser de signets.


la source
9

Comme tout le monde l'a déjà mentionné, la "loi" est une observation humoristique sur le gonflement des logiciels et le fluage des scores , et elle est très similaire à la dixième règle de Greenspun :

Tout programme C ou Fortran suffisamment compliqué contient une implémentation ad hoc, spécifiée de manière informelle, remplie de bogues et lente de la moitié de Common Lisp.

La loi reflète le travail de Zawinski avec le navigateur Netscape et plus tard avec Netscape Mail & News, comme décrit ici par lui-même:

Ensuite, j'ai conçu, et Terry Weissman et j'ai implémenté, les clients Netscape Mail and News, versions 2.0 à 3.0. Ce fut notre contribution à la preuve de la loi de l'enveloppement logiciel :

"Chaque programme tente de se développer jusqu'à ce qu'il puisse lire le courrier. Les programmes qui ne peuvent pas se développer ainsi sont remplacés par ceux qui le peuvent."

Le navigateur Netscape, à l'époque le navigateur le plus populaire, a souvent été critiqué comme ayant trop de fonctionnalités pour son propre bien, si je ne me trompe pas horriblement, c'était le dernier navigateur (populaire) qui supportait deux moteurs de rendu, Gecko et Trident. Par exemple, Ben Goodger identifie le ballonnement de Netscape comme l'une des (nombreuses) raisons qui ont conduit à la création de Firefox 1 :

Dysfonctionnement de l'interface utilisateur de Mozilla

Étant donné que la plupart de la conception de l'interface utilisateur pour les produits Netscape a été réalisée par le personnel de Netscape travaillant selon les exigences de Netcenter, l'interface utilisateur de Mozilla a souffert. Au lieu d'être un noyau propre sur lequel Netscape pourrait construire un produit adapté à ses besoins, la suite Mozilla ne s'est jamais sentie tout à fait correcte; il était rempli de constructions d'interface utilisateur maladroites qui n'existaient que pour être remplies par des superpositions dans le référentiel de sources privées de Netscape - «l'arbre commercial».

Pour aggraver ce dysfonctionnement, au moment où le projet était développé par plus d'une centaine d'ingénieurs dans différents départements, parfois mal connectés, au sein du CPD. Netscape avait connu une croissance rapide au cours des années précédentes, et avec une barre d'embauche inégale, les ingénieurs ayant des capacités qui suggèrent qu'ils avaient besoin de plus d'aide des autres avaient beaucoup trop d'autonomie dans la conception et la mise en œuvre des fonctionnalités. L'assistance à l'expérience utilisateur était rare et, par conséquent, l'application a rapidement gonflé.

1 À partir d'une version archivée du blog désormais disparu de Ben Goodger.

yannis
la source
5
Ahh ... Cela explique Emacs :-)
jwernerny
9
@jwernerny rien n'explique Emacs ...
yannis
4
@MichaelKohne - Pour la même raison, je pensais qu'Emacs était une première implémentation non graphique de Matrix.
Martin Beckett
2
J'ai également conclu que la dixième règle de Greenspuns est une observation que vous trouvez essentiellement dans des programmes suffisamment complexes que vous devez avoir la capacité de fournir du code lors de l'exécution.
2
@jwernerny Je crois qu'il y a une page entière qui en parle: jwz.org/doc/lemacs.html
Michael
4

Ce n'est pas une vraie loi, c'est un commentaire satirique sur la façon dont les projets logiciels (s'ils ne sont pas correctement gérés) peuvent devenir si grands et compliqués, ils incluent finalement un lecteur de courrier électronique (même si cela n'a rien à voir avec l'objectif initial du projet) . Un gestionnaire que j'ai eu une fois aimait une phrase similaire: "Tout système suffisamment compliqué contient une implémentation LISP à moitié assimilée".

FrustratedWithFormsDesigner
la source
2
alias "la dixième règle de Greenspun."
Jerry Coffin
1
@JerryCoffin: Merci, je n'en connaissais pas le nom! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner
3

Il s'agit d'un commentaire sur la façon dont certains projets logiciels semblent continuer à se développer et à ajouter de plus en plus de fonctionnalités.

De nombreux projets ne semblent pas pouvoir résister à l'ajout de fonctionnalités, qu'elles soient nécessaires ou non.

Une conclusion logique est que chaque logiciel finira par envoyer du courrier.

Voir également Scope Creep .

Oded
la source
Les communications par courrier électronique sont / la / façon d'envoyer des notifications aux humains à partir du logiciel à certains endroits.
Paul Nathan
L'envoi de courrier est plus raisonnable que sa lecture. Mon routeur peut m'envoyer ses journaux de temps en temps, mais il n'a aucune raison d'accepter le courrier. De même, de nombreux programmes Android enverront des images et autres à des fins de partage.
Jeanne Pindar
-1

Je vois au moins trois façons de le voir.

La première consiste à ignorer la lecture du courrier en soi et à la considérer comme une déclaration selon laquelle les gens semblent aimer les produits avec la flexibilité nécessaire pour se tourner vers presque n'importe quelle tâche, indépendamment du peu que cela pourrait avoir à faire avec l'intention initiale de l'outil. Si nous le considérons de cette façon, un produit comme Photoshop qui ne prend pas en charge la lecture des e-mails n'est pas une anomalie car son architecture de plug-in est suffisamment flexible pour pouvoir prendre en charge la lecture des e-mails, même si (pour autant que je sache) non un tel plug-in existe. Ce point de vue pourrait être résumé plus clairement, mais moins à l'origine, comme «la flexibilité l'emporte sur la spécialisation».

La deuxième façon de voir les choses serait que Jamie Zawinski a un objectif si étroit qu'il ignore simplement les produits comme Photoshop, PowerPoint, la plupart des jeux, etc., qui existent depuis des années, ne prennent pas en charge la lecture des e-mails et ne le font pas. t semble être remplacé par quoi que ce soit d'autre.

Le troisième serait un peu un contrepoint au second, en disant que, essentiellement, l'intégration entre les produits est arrivée à un point tel que la lecture du courrier est effectivement intégrée à tout parce que la plupart des gens ont maintenant un lecteur de courrier fonctionnant en arrière-plan, tous le temps et peut y basculer assez rapidement / facilement, couper et coller avec autre chose, etc., que le détail mineur que le lecteur de courrier est emballé comme une application distincte est devenu hors de propos.

Jerry Coffin
la source