La Revanche du Site

Le retour de la revanche

Tutoriel Silverstripe EP1 - Installation

Note de service

Cette série de tutoriels (qui je l’espère va être longue et constituer un tout autonome (priez pour moi)) abordera beaucoup d’aspects du développement de sites webs :

  • Développement back : PHP…
  • Développement front : HTML, CSS, JS…
  • Un soupçon de design et d’ergonomie
  • Un nuage de gestion de projet
  • Une larme d’administration système

Je ne prétends pas être un crack dans chacun des domaines ci-dessus.

Sans doute, les experts de chaque secteur trouveront beaucoup à redire sur chaque sujet pris indépendamment. Soyez indulgents et n’hésitez pas à me faire part de vos améliorations et critiques.

Si par chance vous êtes expert en tout, veuillez m’excuser et pour les autres j’espère vous apporter le minimum nécessaire pour réaliser votre propre site avec SilverStripe.

Pré-requis (vous pouvez passer, quoique…)

Vous aurez besoin d’installer et de configurer certaines choses pour suivre cette série :

  • Apache
  • PHP (5.3+ c’est bien)
  • MySQL

Vous aurez également besoin d’un navigateur récent, d’un éditeur de code et d’un client FTP.

Le plus simple est d’utiliser une solution toute faite comme WAMP (pour windows), MAMP (pour mac) ou XAMP (multi-plateformes) qui encapsulent ce qu’il faut pour faire tourner une application Web PHP dans un espace clos et pré-configuré. C’est pratique pour ne pas interférer avec le reste de votre configuration.

Vous pouvez aussi faire tout cela à la main comme un grand, mais dans ce cas vous n’avez très certainement pas besoin de mon aide.

Etant sous Mac OSX, j’utilise MAMP avec Atom comme éditeur. Mais WAMP avec Sublime, Notepad++ ou le récent Visual Code Studio de chez Microsoft feront aussi bien l’affaire. Et si vous préférez l’artillerie lourde (Eclipse, Netbeans, et soyons fous Dreamweaver) ça n’est pas un problème non plus.

La plupart des éditeurs ci-dessus disposent d’extensions (coloration syntaxique, auto-complétion) spécifiques pour SilverStripe afin de vous faciliter un peu la vie.

Quelques liens :

L’usage de la ligne de commande n’est pas obligatoire, mais facilite beaucoup de choses. Ça ne mord pas, n’ayez pas peur d’ouvrir un terminal.

Il parait que SilverStripe tourne très bien sous serveurs windows (IIS), ou encore avec Postgresql, Nginx etc. Pour cette série de tutoriels, je vais faire simple et standard : Apache et MySQL.

Installation

Création d’une base de données

SilverStripe nécessite une base de données pour fonctionner donc la première étape est d’utiliser PhpMyAdmin ou équivalent pour créer une base dont vous noterez bien le nom et les accès.

Récupération des fichiers

Il s’agit maintenant de récupérer le code proprement dit. Il existe 2 façons de faire.

La manière bien

Directe, franche du collier : faites un petit tour sur silverstripe.org/software/download/, téléchargez l’archive Zip de la dernière version pour la décompresser à la racine de votre installation (répertoire htdocs/ou /var/www/).

La manière mieux : Composer !

Composer est un gestionnaire de dépendances, l’équivalent de npm pour node.js ou de bundler pour ruby.

Un fichier composer.json à la racine de votre installation décrit les librairies et les modules nécessaires à votre projet. En ce qui nous concerne, cela peut-être une installation de SilverStripe et éventuellement des modules associés.

Il suffit alors de lancer la commande composer update et composer ira télécharger pour vous les bonnes versions sur les différents dépôts git (ou autre) des projets.

Exemple d’un fichier composer.json :

{
"name": "silverstripe/installer",
"description": "The SilverStripe Framework Installer",
"require": {
    "php": ">=5.3.2",
    "silverstripe/cms": "3.1.13",
    "silverstripe/framework": "3.1.13",
    "silverstripe-themes/simple": "*"
},
"require-dev": {
    "phpunit/PHPUnit": "~3.7@stable"
},
"config": {
    "process-timeout": 600
},
    "minimum-stability": "dev"
}

Mais il n’est pas nécessaire d’éditer un fichier aussi complexe pour commencer. La commande suivante :

composer create-project silverstripe/installer

installera la dernière version stable du CMS dans le répertoire en cours.

L’avantage de cette méthode est qu’il est plus facile de mettre à jour le CMS grâce à un petit composer update.

Pour installer Composer, merci de vous référer à sa documentation.

Si vous êtes sous OSX et utilisez MAMP, voici comment faire en sorte que Composer s’exécute bien sous MAMP et pas dans la version de PHP fournie avec le système :

nano ~/.bash_profile

insérer

alias phpmamp='/Applications/MAMP/bin/php/php5.4.10/bin/php'

relancer le terminal

curl -sS https://getcomposer.org/installer | phpmamp

sudo mv composer.phar /usr/local/bin/composer

composer

Installation

Quelle que soit la méthode d’installation des fichiers, vous devez vous retrouver avec un répertoire « silverstripe ».

Le reste de l’installation est très classique.

Lancez Wamp, Mamp etc. Et rendez-vous (dans le cas de MAMP) à l’adresse suivante : http://localhost:8888/silverstripe/install.php si silverstripe est le nom de votre répertoire.

Pas la peine de rentrer dans les détails si vous avez déjà installé un Wordpress ou un Drupal, etc.

Vous pouvez choisir le français comme langue d’installation !

Nous voilà débarrassés du superflu, nous pouvons passer à l’essentiel !

  1. DEPARDIEU – Tenue de Soirée.

Amusez-vous bien avec le back-office et l’insertion de contenu, à la semaine prochaine pour entrer enfin dans le vif du sujet !

Tutoriel SilverStripe EP0 - Introduction

Qu’est-ce que Silverstripe ?

Silverstripe (ou SS par la suite, mais je ne ferai pas de mauvais jeux de mots…) est un CMS PHP open-source sous licence BSD d’origine néo-zélandaise.

Au départ, utilisé en interne par la société du même nom, il a été libéré aux alentours de 2005 pour la version 2. Nous en sommes aujourd’hui à la version 3.

Silverstripe n’est pas qu’un CMS, il est basé sur le framework PHP orienté objet du même nom. Avec la version 3.X, il est tout à fait possible d’utiliser Silverstripe (framework) pour des projets qui n’ont strictement rien à voir avec les fonctionnalités habituelles de gestion de contenu.

Bien entendu le module CMS a été entièrement réalisé avec ce framework et peut donc être étendu à volonté.

Pourquoi Silverstripe (en guise d’avertissement) ?

J’ai testé pas mal de CMS tout au long de mon parcours professionnel. Aujourd’hui je gagne ma vie principalement avec l’écosystème Drupal, mais je conserve toujours une affection particulière pour ce petit CMS.

Le but de cette série n’est absolument pas de vous convaincre de la supériorité d’un CMS sur un autre. Ce sont des outils, s’ils conviennent à la tâche et si vous les maîtrisez, alors ce n’est sans doute pas la peine de regarder ailleurs.

Silverstripe ne fait pas partie du trio de tête des CMS mondiaux (Wordpress, Drupal, Joomla). Sa communauté (surtout dans cet hémisphère) n’a rien de comparable avec celle de Wordpress par exemple, le nombre d’extensions (modules) disponibles doit être cent fois moindre et cela se répercute aussi sur les articles et tutoriels disponibles.

Même si le site de l’Elysée tourne actuellement sous Silverstripe (de même que le site de campagne d’Obama en son temps et une bonne partie de l’administration néo-zélandaise), il n’a pas en France le même pouvoir prescripteur que Drupal aujourd’hui : inconnu au bataillon.

Si je commence cette série, c’est avant tout pour lui rendre un peu justice et pour vous exposer ses forces et ses faiblesses.

Cela va mieux en le disant.

Les avantages de Silverstripe

Une interface utilisateur simple à prendre en main

L’administration est centrée sur l’arborescence du contenu, je pense que c’est très bien pour les petits sites et une certaine catégorie de clients qui visualisent les choses par ce biais.

Mais l’on peut heureusement gérer une grande quantité de contenus par d’autres moyens si nécessaire.

On rajoute des pages et des sous-pages et pour chacune on peut choisir un style d’affichage (ou un type de contenu si vous préférez).

Mais on peut aussi créer des sections dans l’administration pour des contenus qui ne seraient pas directement liés à l’arborescence.

Il y a beaucoup de fonctions et de widgets pour faciliter l’insertion, le tri, le changement d’ordre (drag & drop) du contenu. La philosophie du CMS étant de fournir une interface homogène et unifiée pour ne pas perdre l’utilisateur.

Partant de cette base, tout peut être configuré pour fournir une interface d’administration agréable et unique pour chaque projet.

L’interface offre des options de Prévisualisation dans différents formats (tablettes, smartphones, desktop), c’est un petit plus agréable.

Des outils de développement modernes

Silverstripe fait plutôt figure de bon élève dans la catégorie. Voici une liste non exhaustive :

  • Composer pour l’installation des modules et des dépendances.
  • Une implémentation assez stricte du modèle MVC, je ne dirais pas complète pour ne pas froisser les puristes.
  • La majorité des valeurs de configuration sont stockées dans des fichiers et non en BDD, ce qui facilite grandement le workflow entre plusieurs environnements (test, staging, prod°).
  • Un développement vraiment orienté objet.
  • Conséquence du MVC, le système de templating est très indépendant du CMS lui-même.

Un framework robuste

Je n’ai pris le projet en route que depuis la version 2.X (lorsqu’il est devenu open-source). Ce qui est intéressant dans Silverstripe c’est que c’est à la fois un CMS et un Framework de développement PHP.

Depuis la version 3, il est tout à fait possible d’utiliser le second sans le premier. Le CMS étant une application particulière réalisée avec ce Framework.

Vous pouvez jeter un coup d’oeil à l’API ici.

Pour la petite histoire, ce framework s’appelait Sapphire au départ, hommage à peine caché à Ruby (et Ruby on Rails) des développeurs de la compagnie. Si vous connaissez un petit peu Rails, vous ne serez pas dépaysés :

  • On décrit son modèle de données en PHP et la commande dev/build s’occupe de créer les bonnes tables dans la base, un peu comme on le ferait en Rails avec db:migrate.
  • Le système de requêtes est très similaire (syntaxe propre à PHP mise à part) d’Active Record.
  • etc.

Et les inconvénients

Faible notoriété et ressources disponibles

Je ne reviendrais pas sur la notoriété de SS en France. En 2013, il était évoqué dans le livre blanc de Smile sur les CMS parmi les outsiders, je ne pense pas qu’il y soit encore dans la dernière version. Oui c’est injuste.

La communauté SS est très active en Océanie (Australie et Nouvelle-Zélande), continent d’origine du CMS. En Europe, c’est l’Autriche et le Royaume-uni qui comptent le plus de membres actifs et d’évènements. Mais cela est sans commune mesure avec l’activité autour de CMS plus connus, notamment Drupal que je connais bien et de sa très active communauté.

Quant aux ressources, je m’en plaignais déjà il y a fort longtemps dans un précédent post. Mais les choses se sont bien améliorées, notamment la documentation officielle qui a rattrapé son retard.

Beaucoup d’efforts ont été faits récemment et je vous conseille chaudement la série de tutoriels vidéo / texte en anglais sur le site officiel. D’ailleurs, je ne vous cache pas que ce qui va suivre s’en inspirera forcément un peu.

Ce n’est pas un CMS pour site builders / webmasters

Si vous connaissez un petit peu Drupal, vous aurez entendu parler des modules CCK et Views (aujourd’hui intégré au Core ou en passe de l’être). Ils permettent d’étendre les fonctionnalités du CMS sans écrire une seule ligne de code pour rajouter des nouveaux types de contenu, faire des pages listes, etc. Les mêmes outils sont aussi disponibles pour Wordpress.

Rien de cela avec Silverstripe. Il faut ouvrir son éditeur / IDE favori pour rajouter un champ date ou image ou afficher les 3 derniers articles de blog en page d’accueil. Nous sommes donc très loin du personna site builder tel qu’on le connait chez Drupal ou d’autres, qui passe son temps à modifier le site via le back-office.

J’exagère à peine car il y a quand même l’équivalent d’un module userform / contact7 qui permet à l’administrateur de créer des formulaires contact personnalisés. Mais ce genre d’exemples se comptent sur les doigts d’une main et ce n’est pas vraiment la philosophie de ce CMS.

Mais attention, je mentirai en vous disant que je suis un véritable développeur, et pourtant j’y arrive très bien. Il faut juste prendre un peu de temps pour apprivoiser le Framework et pour des choses simples, cela va assez vite. D’ailleurs, je mentirai tout autant en vous disant qu’il ne faut pas être développeur pour maîtriser à 100% un module tel que Views sur Drupal. Que ce soit via une interface graphique ou du code, dans les 2 cas il faut quand même savoir de quoi on parle et ce qu’on veut réaliser (savoir ce que c’est qu’une relation…).

Il y a quand même certains avantages (à mon humble avis) à cette approche :

  • Le back-office n’est pas pollué par ces fonctionnalités et l’utilisateur final ne peut pas faire de bêtises…
  • Pas d’interface, moins d’intermédiaires entre le site builder et le code donc plus de performance à l’arrivée.

Néanmoins, si vous cherchez une pléthore de modules à installer, il faudra peut être trouver votre bonheur ailleurs…

A mi-chemin entre framework et CMS

Je ne sais pas où mettre ce dernier point, est-ce un avantage ou bien un inconvénient ?

  • Vous maîtrisez bien un CMS, mais parfois il faudrait s’éloigner de la gestion de contenu pure et dure pour les besoins métiers d’un client.
  • De même tel framework PHP n’a plus de secrets pour vous, mais il ne lui manquerait qu’un bon CMS et vous n’avez pas le temps de re-développer la roue.

C’est là que les ennuis commencent, où comment faire cohabiter votre développement avec le CMS, mutualiser les ressources, assurer la sécurité et la stabilité de l’ensemble etc.

Vous me direz qu’on peut également faire beaucoup de choses avec les CMS les plus avancés disponibles, mais c’est parfois comme vouloir faire aboyer un chat, c’est possible.

Prêts pour la suite, alors rendez-vous next week…

Danger ! Projets de sciences

Auto promo

Ces derniers temps, j’ai réalisé la bande son du court métrage Danger ! Projets de sciences.

Chaque année un de mes amis participe au Festival Sourd Métrage avec sa classe d’élèves déficients auditifs.

Il n’en est pas à son coup d’essai puisque c’est la deuxième fois que lui et sa classe remportent le grand prix du jury.

Jérôme a plusieurs cordes à son arc et il accompagne habituellement ses élèves dans la réalisation d’une bande son. Je vous vois sourire mais ils ne sont pas tous sourds profonds.

Cette année, ils étaient un peu en manque de temps et j’ai sauté sur l’occasion.

C’est la première fois que je me prête à ce genre d’exercices et je dois avouer que je me suis bien pris au jeu.

Jérôme m’avait brièvement décrit quelques scènes et ce dont il avait besoin, par exemple pour l’intro :

au début du film, un téléphone sonne pour réveiller le héros. donc je voulais une sonnerie de portable. une fois, deux fois. puis ça démarre, le héros est en retard et va courir dans la rue jusqu’au collège. la sonnerie de portable est devenue musique avec un beat bien urgent.

Nous avons échangé quelques idées, mais comme le film n’était pas encore monté il était difficile de produire quelque chose qui soit calé sur les images.

J’ai donc axé mon travail sur de petites séquences courtes, relativement indépendantes les unes des autres (oui bon ça va, des boucles quoi!) et je les aies fournies à l’équipe pour qu’ils puissent les adapter à l’action.

Je n’étais donc pas entièrement maître de ce qui allait ressortir au final, mais ça ne me dérange pas, au contraire.

Si vous voulez entendre mes propre rendus, c’est par ici :

Merci encore à Jérôme et à ses élèves qui m’ont fait confiance. Maintenant il s’agirait de faire des choses un peu plus personnelles !