--- title: 'E-commerce et auto-hébergement' date: '2021-03-14T02:25:43+01:00' tags: - Sysadmin - e-commerce - Auto-hébergement - PrestaShop - Magento - OpenCart - PHP --- 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[^shinra] sur mon (ancien) microblog, je prends conscience que tout le monde n'a pas nécessairement envie d'acheter mon premier livre, [_L'Humain, cette espèce primitive_](/dossiers/lhumain-cette-espece-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. [^shinra]: Son compte n'existe plus sur mastodon.social. 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 - [Site officiel](https://www.prestashop.com/fr) - [Dépôt de code](https://github.com/PrestaShop/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](https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/) d'autre chose que MySQL 5.7 (exit donc PostgreSQL) et php7.4 (pas de php8). [La documentation du container docker](https://hub.docker.com/u/prestashop/#!) 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 - [Site officiel](https://magento.com) - [Dépôt de code](https://github.com/magento/magento2) 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](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/prereq-overview.html) 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 - [Site officiel](https://www.opencart.com) - [Dépôt de code](https://github.com/opencart/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](https://github.com/opencart/opencart/tree/master/upload/system/storage/vendor)...), 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](https://www.oscommerce.com/Us&News=177). La version précédente [semble dater de 2016](https://github.com/osCommerce) (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](https://opensource.org/licenses/OSL-3.0). 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](https://www.gnu.org/licenses/gpl-3.0.en.html). 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...