Richard Dern

Neuro-atypique | Écrivain | Développeur Web

Ne rien faire sans l'ambition du spectaculaire, mais se rappeler que l'intensité de l'échec est proportionnelle à l'ambition de la tentative.

E-commerce et auto-hébergement

Un état des lieux non exhaustif des Logiciels Libres d’e-commerce disponibles en auto-hébergement. Spoiler alert : c’est affligeant.

Contexte

Suite à une discussion privée avec @Shinra sur mon ActivityPub, je prends conscience que tout le monde n’a pas nécessairement envie d’acheter mon premier livre, L’Humain, cette espèce primitive sur Amazon. Comme j’ai d’autres projets de livres dans les cartons, je me suis dit que ça serait bien d’offrir une petite boutique en ligne où mes lecteurs pourraient acheter directement mes écrits, via PayPal, ApplePay, ou même, soyons fous, par carte bancaire.

Mon cahier des charges est le suivant :

  • Logiciel Libre
  • Sécurisé
  • Léger, rapide
  • Facile à installer
  • Prévu pour des produits dématérialisés (intégré ou en plugin, je m’en fout)

Disclaimer

Je suis développeur web depuis plus de quinze ans, j’en ai vu du code moisi, j’en ai aussi vu du très bon. Mais, d’expérience, le très bon code n’est pas mainstream, contrairement au code de merde. Je préfère vous prévenir, je ne vais pas faire du politiquement correct dans cet article.

Solutions testées

PrestaShop

PrestaShop est au e-commerce ce que WordPress est au blog : un vieux monstre, immonde, effroyable, terrifiant, encore en vie sans qu’on sache comment c’est possible. C’est mal pensé, mal exécuté, buggué comme pas possible, et pas du tout orienté auto-hébergement tel que je l’entends (« read our guide on installing PrestaShop for development », sous-entendu que si tu veux l’installer à ta sauce, c’est que pour du dev…)

Pas de support officiel d’autre chose que MySQL 5.7 (exit donc PostgreSQL) et php7.4 (pas de php8). La documentation du container docker est spartiate et ne dit pas comment persister les données. En gros, il faut créer un volume vers /var/www/html. C’est tout sauf propre. Vu les pré-requis, je ne tiens pas à casser mon serveur, je n’ai donc pas essayé autre chose que le container.

Une fois installé, c’est lent, inacceptablement lent. Il y a des requêtes vers Google et l’api de PrestaShop dans tous les sens. Des dizaines, voire des centaines de requêtes vers l’extérieur de mon serveur alors que je n’ai encore rien fait. C’est blindé ras-la-gueule de tutos vidéos et d’assets chargées depuis des URLs distantes. C’est crade, c’est franchement la gerbe. En plus, comme je bloque au niveau DNS les requêtes vers certains domaines de Google, l’interface est pétée. C’est immonde. Je n’ai rien fait d’autre que charger la page d’admin, j’ai arrêté le massacre très très vite.

Magento

Un peu moins pourri au niveau du code que PrestaShop. Pas difficile, en même temps. Par contre, c’est toujours aussi lourd. Je ne parle même pas du temps de rendu ou de la charge serveur. Le code en lui-même est propre, bien écrit et documenté, mais fouiller là-dedans est un calvaire.

Toujours pas de support officiel d’autre chose que MySQL et MariaDB, et toujours pas de php8. Par contre, Elasticsearch est requis, et donc, Java… Bonjour la légèreté.

OpenCart

OpenCart est visiblement en train de subir pas mal de mises à jour importantes dont certaines visent à corriger les problèmes que je vais évoquer ici.

Là non plus, pas de support officiel de PostgreSQL. La documentation n’est pas à jour, et le processus d’installation est buggué, même en respectant les pré-requis. Par exemple, la documentation annonce le support de php7.4, mais l’installateur ne veut rien d’autre que php8. Une fois installé, impossible de faire quoique ce soit à cause de bugs bloquants.

Le code est mal structuré, le dossier vendor complet est versionné (heu… oui…), le code n’est pas documenté, et pas prêt pour le passage à php8 alors que l’appli l’exige.

J’espérais beaucoup de OpenCart : il me semblait bien correspondre à mon cahier des charges, mais absolument pas utilisable en production à l’heure actuelle.

Solutions non-testées

  • Thirty bees : Fork de PrestaShop 1.6. Hérite donc de tous ses défauts. Le code est toujours aussi dégueulasse et pas documenté.
  • WooCommerce : Plugin de WordPress. Heu, non merci…
  • osCommerce : Une version 4 serait à venir cette année. La version précédente semble dater de 2016 (notez l’organisation étrange des dépôts). Je n’ai pas spécialement envie d’utiliser une version obsolète, et de faire une grosse mise à jour à une date indeterminée.

À propos des licences

Les deux poids lourds du “marché” que sont PrestaShop et Magento ont opté pour une licence OSL. Ils ont adopté cette fâcheuse tendance à planquer au fond de sous-menus obscurs les liens vers leurs dépôts de code source. Je n’aime pas cette pratique parce qu’elle relègue de façon à peine voilée l’accès au code source aux contributeurs exclusivement. J’ai envie de voir le code source pour voir ce que l’application fait (au titre de la confiance que je vais - ou non - lui accorder, une confiance que mes propres visiteurs devront m’accorder aussi), pas forcément pour y contribuer.

OpenCart est sous licence GNU GPL. En ce qui me concerne, ça me met déjà plus en confiance.

Bilan

Je déplore la qualité médiocre, au mieux, des applications que j’ai testé, ou dont je me suis limité à la lecture de la documentation. On a l’impression que ça a été bricolé à la va-vite par un pseudo geek des années 2000, et que ça a évolué en lui greffant des tas d’immondices pour faire genre, exactement comme WordPress (en fait, c’est littéralement ce qui s’est passé). Le code de PrestaShop mériterait bien d’être cramé au lance-flamme et de repartir sur des bases saines. Magento s’en sort mieux sur ce point, mais trop lourd pour ce que je veux en faire. Le reste, malheureusement, est mort, mourrant, ou en attente de résurrection.

Rien d’utilisable en fait.

Alors, vous me direz : « T’es développeur, t’as une grande gueule, t’as qu’à faire/contribuer ».

  1. D’une, je suis aussi écrivain, et c’est pas parce que vous savez écrire que vous allez contribuer à mes livres sous licence Libre.
  2. De deux, il est hors de question que je contribue à une merde comme PrestaShop (j’ai déjà donné à titre professionnel) ou à un truc supporté par Adobe comme Magento, parce qu’ils ont assez de moyens financiers pour ne pas s’offrir mes services gratuitement.
  3. De trois, c’est peut être exactement ce que je vais faire…