Voici ce qui fut le plus long et le plus grand des défis dans lequel que je me suis lancé.

En 2017 j’apprenais l’existence des CMS sans base de données et je trouvais cela incroyable que des développeurs puissent proposer des systèmes aussi simples et ouverts à tous avec aussi peu de contraintes.

Mais en explorant l’univers de ces CMS, de nombreux détails me perturbent :

  • Généralement avec peu ou pas documentation,
  • Si la documentation existe, elle est mal organisée ou partagée,
  • Manque de visibilité/valorisation des interfaces et des fonctionnalités,
  • Pas de tutoriel ou de FAQ pour l’essentiel,
  • Les modules et thèmes complémentaires sont mal mis en avant,
  • Les traductions ne sont pas normalisées,
  • Une communication approximative avec la communauté,
  • Des charges inutiles dans le code source…

Mais surtout des architectures incompréhensibles et monolithiques ou accro aux dépendances.

J’ai déployé un site il y a 2 semaines, qui fait 118Mo pour une page.
118Mo pour une page, je rappelle que c’est un jeu de PlayStation*.
Donc on déploie un jeu de PlayStation* ? 10 fois par jours ?

Jean-François Lépine – Forum PHP 2017

*En parlant de la taille des jeux de PlayStation 1

Du coup je me suis dit que je pouvais aussi proposer ma vision de ce qui pourrait être un CMS.

La vision d’un projet qui se base sur le principe du KISS, répondant aux véritables besoins des utilisateurs, mais avec une approche plus professionnelle du développement.

Kepp it simple stupid

Un an après la publication de la première version alpha, l’écosystème de Soosyze s’est affiné et a fait des choix assumés dans les technologies et outils utilisés, sa réalisation, présentation.

Soosyze framework & QueryFlatFile

Ça ne sert à rien de réinventer la roue.

– Un enseignant en informatique

Il existe de nombreux frameworks et bibliothèques qui partagent les mêmes valeurs que Soosyze, cependant à force d’utiliser le travail des autres, on oublie comment faire le nôtre.
Et le développement d’un framework s’est avéré un excellent terrain d’apprentissage.

  • MVC et MVC objet,
  • Fonctionnement du SQL et de la théorie des ensembles,
  • Différentes méthodes du noSQL,
  • Tests unitaires (phpUnit),
  • Tests qualités et intégration continue :
    • phpFixer, phpMetric, SonnarCube, Travis.
  • Concepts de micro service,
  • Design patterns :
    • Adaptater, Dependency injection, Factory, Fluent, Observer, Singleton, Template method.
  • Recommandations PHP :
    • PSR-2 L’écriture du code est standardisée,
    • PSR-4 Autoloader, interchangeable avec l’autoloader de Composer,
    • PSR-7 Composant Http (Resquest, Response, Message, Stream…),
    • PSR-11 Container d’injection de dépendance ou CID,
    • PSR-17 Fabriques Http implémentées sans les interfaces qui contraignent les implémentations à PHP7.