Revue rapide du générateur Cactus

Cactus, un générateur de sites Web statique développé en python permet de construire et déployer facilement un site personnel ou même quelque chose d’un peu plus professionnel avec un peu d’effort. Ce logiciel roulant jadis surtout sous mac (cactusformac.com) est maintenant disponible via pypi donc sur toutes machines ayant python 2.7 et plus d’installé.

Une simplicité rafraichissante

Avec une commande pour créer un gabarit de site pour partir du bon pied, le travail pour personnaliser son site est facile et, somme toute, bien agréable. En plus de son approche pratique, cactus nous permet de voir les résultats de nos modifications en temps réel en nous laissant démarrer un serveur Web et laisser au browser le soin de s’autorafraichir.

Cactus utilise Jango en ce qui a trait à sa couche template et hormis le fait qu’il n’y a pas d’outil de débogage pour nous guider, un simple {% debug %} tag nous indique tout ce qui est disponible et la documentation de Django est vraiment solide. Donc au finale, comme toute couche d’abstraction, Django ajoute un peu de complexité, mais nous simplifie la vie grandement lorsqu’on veut inclure de sous-templates.

Une des seules choses qui m’a déçue au départ est le manque d’attention pour les utilisateurs Windows. Attendez-vous à modifier le code un peu pour quelques fonctionnalités de base due aux problèmes de système de fichiers par exemple. L’auteur a récemment corrigé quelques petits problèmes à ce sujet, mais pas tous. De plus, oubliez la compilation CSS et JS et aussi le déploiement sur Amazon S3 si vous êtes sur Windows. Vagrant sera votre meilleur allié dans ce cas-ci.

Des fonctionnalités primitives

Le système de plugins est simple, et les plugins eux même aussi, très simples. Vraiment simple, un peu trop en fait. Par exemple, le système de blog permet de créer des articles rapidement et ils deviennent disponibles partout, sur toute les pages, vous permettant ainsi de les lier de n’importe quelle autre page. C’est brillant, tout à fait, mais surtout un peu paresseux, j’imagine toute la mémoire utilisée afin de builder avec un site contenant des milliers d’articles. Le cas échéant, on comprend tout de suite qu’il nous faudrait coder notre propre plugin. Aussi, aucune pagination n’est offerte, seulement un array nous permettant de créer des liens vers les articles précédents et suivants. Très de base, on s’entend.

La minification des assets est facile à configurer, mais encore une fois, c’est un peu tout hardcodé dans le code python. Par conséquent, il m’a fallu jouer avec mon installation Debian et créer quelques alias pour pouvoir faire rouler le tout sans rien changer à cactus. Au final, le tout fonctionne bien par contre. Il n’y a juste rien qui fonctionne du premier coup et à la longue c’est un peu pénible.

Documentation pauvre

La documentation est presque absente et souvent très peu aidante. Si vous ne connaissez pas python, vous allez être confus assez fréquemment et probablement être frustré ici et là.

Déploiement facile, mais inutile

Cactus vous permet de déployer sur un bucket S3 sans outil externe. La seule chose à configurer afin d’y arriver est d’ajouter votre pair de clés dans la configuration JSON et rouler une commande. Je trouve l’idée plaisante, mais un peu dangereuse, commiter une key-pair AWS dans le code me rend tout simplement malheureux. Ça semble simple, oui, mais utiliser boto avec un simple aws s3 sync l’est encore plus et bien plus sécuritaire. Encore une fois, cette fonctionnalité fonctionne sous mac os x et linux seulement.

Ça fait la job

Au final, même si ça ne parait pas trop, j’ai bien aimé cactus car je voulais essayer quelque chose de simple fait en python et me permettant un départ rapide. Patauger à travers les petits problèmes ici et là ne m’a pas trop dérangé étrangement… probablement car je suis un développeur curieux de nature et que je m’en doutais un brin dès le début.

Ceci étant dit, je ne conseillerais pas cet outil aux néophytes de python sauf peut-être à ceux qui veulent vraiment l’apprendre. Il manque de documentation et d’exemples, mais quand on regarde le code on comprend tout très rapidement.
Ah, et au risque de me répéter, si vous êtes sur Windows, donnez-vous une chance et utiliser Vagrant. Voici d’ailleurs un lien vers ma configuration pour vous faciliter la tâche: fredbourni/cactus.