Manifeste

Nous avons construit un thème avec moins de possibilités.

Ironframe est né d'un constat désagréable : sur la plupart des sites que nous livrons, ce qui casse n'est presque jamais notre code. C'est une extension qui change de mainteneur, une mise à jour qui se passe mal, ou un client bien intentionné qui déplace un bloc.

Nous n'avons pas cherché à ajouter des garde-fous à un système qui permet tout. Nous avons construit un système qui permet moins, et nous assumons chacune de ces limites — y compris devant un prospect qui demande l'inverse.

Sept phrases, et tout le reste en découle.

  1. 01

    Un site vitrine n'est pas une application métier.

    Il présente une activité à des inconnus. Lui donner les pouvoirs d'un outil interne, c'est payer une complexité dont personne ne se servira jamais.

  2. 02

    La simplicité est une fonctionnalité.

    Elle se conçoit, elle se défend, elle se paie. Ce n'est pas ce qui reste quand on n'a rien ajouté.

  3. 03

    Ce qu'un client ne peut pas casser n'a pas besoin d'être réparé.

    La meilleure heure de maintenance est celle qu'on ne facture pas, parce que l'incident n'a pas eu lieu.

  4. 04

    Chaque fonctionnalité doit justifier son existence.

    Non pas « est-ce que ça peut servir », mais « qu'est-ce qu'on perd si on l'enlève ». Très peu survivent à la seconde question.

  5. 05

    Nous préférons la discipline à la flexibilité.

    Un cadre qui sait dire non tient dans une tête. Un outil qui dit oui à tout demande un mode d'emploi, puis un spécialiste.

  6. 06

    Nous préférons la prévisibilité à la magie.

    Un système qui devine a raison neuf fois sur dix. La dixième, personne ne sait pourquoi, et c'est vous qu'on appelle.

  7. 07

    Les dépendances sont une dette technique.

    On l'emprunte à un taux inconnu, chez quelqu'un qui a le droit de revendre la créance sans vous prévenir.

Ce que cela donne, concrètement.

01

Le client ne peut pas casser ce qu'on ne lui a pas donné

Le développeur déclare en PHP les champs éditables d'une page. Le client remplit ceux-là, et rien d'autre : ni la mise en page, ni les extensions, ni le thème, ni la structure de ses pages.

Ce n'est pas de la défiance envers lui. C'est reconnaître qu'on ne lui a jamais promis d'être développeur, et qu'on n'a aucune raison de le mettre en position de se tromper. Un formulaire de huit champs nommés dans sa langue ne demande aucun apprentissage ; un éditeur de blocs en demande un, et il se facturera en appels le vendredi soir.

La frontière n'est pas une consigne orale qu'on répète à la livraison. C'est une capacité, écrite dans le code. Elle survit au changement d'interlocuteur, et elle ne s'use pas.

Ce que nous abandonnons Le client ne peut pas créer une page seul. Elle passera par vous.

02

La contrainte est la fonctionnalité

Il n'y a pas d'éditeur riche. Pas de constructeur de pages. Pas de champ « contenu libre » où l'on colle du HTML trouvé ailleurs.

Un site livré avec Ironframe ressemble, six mois plus tard, à ce qu'il était le jour de la livraison. Les titres ont la même taille, les images le même cadrage, les marges la même valeur. C'est l'essentiel de ce que nous vendons, et c'est parfaitement invisible tant qu'on ne l'a pas perdu ailleurs.

Une contrainte n'a de valeur que si elle tient. Celle-ci tient parce qu'elle est structurelle : il n'existe aucun champ par lequel la contourner.

Ce que nous abandonnons Un mot en gras au milieu d'un paragraphe devra vous être demandé.

03

Ne dépendre de personne pour l'essentiel

Le système de champs n'utilise que les fonctions natives de WordPress. Aucune extension, aucune librairie, aucun paquet à installer. Il ne peut donc être ni racheté, ni abandonné, ni compromis par un tiers.

Cela ne vise personne : les extensions de champs qui nous ont précédés sont excellentes. Le problème n'a jamais été leur qualité, mais le fait que la fonction centrale de nos sites dépendait d'une décision qui nous échappait — un rachat, un changement de licence, une version majeure devenue payante.

En revanche, Ironframe reste pleinement compatible avec les extensions que vous voudrez installer : formulaires, référencement, multilingue, sauvegardes. Nous ne réinternalisons que ce dont nous dépendions, jamais ce que d'autres font mieux.

Ce que nous abandonnons L'écosystème d'add-ons. Ici, ce que vous ajoutez, vous l'écrivez.

04

Aucune étape de construction

Le thème s'installe en copiant un dossier. Pas de compilation, pas de gestion de paquets, pas d'outillage à maintenir.

Un site livré aujourd'hui se reprend dans cinq ans avec un éditeur de texte et un client FTP. Peu de produits modernes peuvent en dire autant : la plupart exigent de retrouver la bonne version de Node, le bon gestionnaire de paquets, et un fichier de verrouillage que plus rien n'installe.

Ce que nous refusons n'est pas l'outillage. C'est de le rendre obligatoire pour lire et corriger un site en production.

Ce que nous abandonnons Le confort d'un outillage moderne côté développement.

05

La sécurité est une direction, pas une étape

Tout ce que l'API renvoie est déjà échappé. Sortir du contenu brut demande un appel différent, explicite, qui se voit dans une relecture de code.

Les valeurs sont nettoyées à l'écriture et à la lecture. Une donnée arrivée par un import, une migration ou une écriture directe en base est traitée avec la même méfiance qu'une saisie de formulaire — parce qu'on ne sait jamais par où une valeur est réellement entrée.

Les droits du rôle client sont la vraie frontière. Ce qui est masqué dans l'interface ne fait qu'éviter le mauvais clic ; ce n'est jamais ce qui protège.

06

Le site d'un client ne doit jamais tomber

Une déclaration de champ erronée prive le client d'un champ. Elle ne provoque pas d'erreur fatale, et le site continue de fonctionner. L'erreur est signalée au développeur, en développement seulement ; le visiteur, lui, ne voit rien.

Un champ obligatoire vidé par mégarde sur une page en ligne conserve sa valeur précédente et affiche un message. La page n'est jamais dépubliée : mettre le site d'un client hors service pour une faute de frappe serait un remède pire que le mal.

07

Ce que le client voit est ce que le site affiche

Pas de valeur de repli qui réapparaît toute seule. Pas de champ qui se remplit après avoir été vidé. Pas de comportement qui diffère entre l'écran d'édition et la page publiée.

Une valeur par défaut ne s'applique que tant que le champ n'a jamais été enregistré. Ensuite elle disparaît du raisonnement, définitivement.

La prévisibilité vaut mieux que l'intelligence. Un système qui devine se trompe, et personne ne sait pourquoi.

08

Ce que vous écrivez ne sera jamais écrasé

Le moteur et votre projet sont deux dossiers distincts. Le premier se met à jour, le second vous appartient. Aucune mise à jour ne touchera vos gabarits, vos schémas ni vos styles.

Et parce qu'un accident reste possible, les valeurs des champs sont révisionnées : ce qu'un client supprime, vous pouvez le restaurer — y compris le contenu d'une liste entière vidée d'un seul clic.

Ce qu'Ironframe n'est pas.

Dire non tôt coûte un prospect. Dire non tard coûte un client.

Un constructeur de pages

Si votre client doit composer ses mises en page lui-même, ce produit n'est pas pour lui. Nous ne le rendrons pas capable de le faire, quel que soit le nombre de fois où on nous le demandera.

Un thème générique

C'est un socle à personnaliser projet par projet, pas un thème qu'on installe et qu'on habille par des réglages.

Un produit sans développeur

Il faut écrire du PHP pour déclarer un champ. C'est délibéré : c'est exactement ce qui rend le résultat prévisible.

À qui il s'adresse.

Aux développeurs et aux agences qui livrent des sites vitrines à des clients qui n'ont ni le temps ni l'envie d'apprendre WordPress — et qui préfèrent un site que personne ne peut abîmer à un site que tout le monde peut modifier.

Chaque comportement décrit ici est couvert par la suite de tests livrée avec le thème.