Skip to content
Olivier DOSSMANN edited this page Jan 18, 2016 · 9 revisions

Prochaine version : 0.5

L'axe principal de cete nouvelle version devrait être : KISS. Ce qui en fait une tâche difficile.

Il faut que l'utilisateur puisse se sentir à l'aise dans l'installation, la configuration et l'utilisation de Makefly :

  • utiliser des commandes simples pour l'installer
  • avoir une configuration intuitive (JSON ou YAML ?)
  • avoir un exécutable Makefly (ou autre nomination ?) pour gérer les billets, compiler le blog et publier le contenu

Installation

Écrire un script permettant de générer un exécutable de Makefly afin de l'exporter en paquet Debian (ou autres paquets).

Un Makefile est d'usage pour :

  • définir les répertoires par défaut de l'installation finale (genre de PREFIX)
  • générer les liens entre les différents fichiers en fonction des répertoires de l'installation finale
  • poser une copie des éléments nécessaires dans un dossier "2beinstalled" (par exemple)
  • installer les fichiers résultants à l'aide de la commande make install
  • prévoir aussi la désinstallation des fichiers

Nous pourrions par exemple générer :

  • un dossier /lib qui contient les bibliothèques Lua
  • un exécutable /usr/bin/makefly qui appelle les bons fichiers de /lib et puisse être utilisé depuis n'importe quel dossier du système

Packaging

Si Makefly est utilisable depuis n'importe où et installable sur un système, il devient intéresser de :

Architecture

Code

Revoir la manière dont est conçu le moteur de blog pour permettre de générer :

Peut-être voir pour faire plusieurs templates à cette fin ? Mais si on veut un blog avec des pages statiques, comment procéder ? Ou bien les 3 à la fois ?

À ce moment, peut-être n'est-ce que la page d'accueil qui va donner un template "global" afin de dire si on voit la documentation en premier, un mode blog, ou bien le site vitrine avec la page index.md qui se trouve dans le dossier pages.

Serait-il possible d'utiliser le pattern "Factory" afin de générer ce qu'il faut ?

Base de données

Autre idées :

  • Trier les billets par année, mois, puis date afin d'obtenir une URL plus sympa pour le référencement
  • Nommer les fichier SRC de la même manière que les fichiers DB. Ceci afin de faciliter le travail de l'utilisateur quand il veut supprimer un fichier, lister les billets, etc.

Répertoires

  • src comme source principale:
    • qui contient une arborescence de tous les fichiers. Si c'est de la doc ou un wiki, ça passe. En fichier .md
    • si on veut un blog, on remplit un dossier autre nommé "blog" qui contient des fichiers .md (placer le dossier DANS src ou bien à côté de SRC ?)
    • si on a un blog, il faut pouvoir remplir les méta-données : donc un autre répertoire avec les méta-données ? => assez embêtant à gérer
  • result = dossier résultant (qui sera publié sur le web). On supprime "pub".
  • abandonner le dossier DB si on peut inclure des tags particulier dans le code Markdown ? L'avantage du fichier DB, c'est qu'il permet d'ajouter des méta-données par l'utilisateur. Sans casser Makefly ni adapter le code.
  • dossier test pour les tests
  • dossier doc pour la doc

Documentation

Le wiki de Github n'est pas bon pour cela car on ne garde pas d'historique.

Exporter la documentation dans une branche à part pour permettre d'avoir la documentation de chaque version :

  • un tag = 1 version donnée
  • sinon on a toujours la dernière version

Quel format choisir pour la documentation ?

  • Makefly lui-même ?
  • Asciidoctor ?

Les dépôts

Idée : utiliser plusieurs dépôts git dans le même dépôt ? Comme ça les tests et la documentation sont ailleurs mais peuvent être générés si on a bien configuré le fichier pour git-repo (ou similaire).

Il faudrait pouvoir choisir soit d'avoir UN dépôt qui contient tout, soit un dépôt par axe principal :

  • tests
  • documentation
  • principal (code de base)
  • scripts de génération de la documentation, de génération des archives compressées du projet pour une version donnée, etc.

Il serait intéressant d'avoir les branches suivantes sur le dépôt principal :

  • master (seulement les versions stables et les tags de version)
  • dev (la branche en développement constant)
  • weblog (le blog du projet)
  • perso (ma branche)

Bibliothèques

Il serait intéressant d'utiliser :

  • lua-resty-template pour faciliter la création des templates
  • lua-resty-libcjson ou lua-cjson (de openresty)
  • une bibliothèque pour la parallélisation des coroutines

Parallélisation

Il faudrait pouvoir paralléliser les tâches dans Makefly afin d'améliorer le temps d'exécution.

Publication d'une nouvelle version de Makefly

Lister les points à suivre pour publier Makefly :

  • Adapter le Changelog pour mettre la date du jour
  • Ajouter un nouveau tag sur le dépôt
  • Générer la documentation
  • Publier la documentation
  • Générer les archives compressées de la nouvelle version
  • Tester les archives
  • Publier les archives
  • Mettre à jour le site web
  • Ajouter une news sur le blog
  • Ajouter une news sur LinuxFr
  • Éditer le Changelog sur la branche DEV pour se mettre en mode "trunk"

Docker

Générer un fichier Docker qui permette d'utiliser ledit Docker comme commande "makefly" sur l'hôte local (avec une option --volume par exemple).

Test

Trouver un outil de test afin de pouvoir générer plusieurs blogs.

Liens :

I18N

Permettre la traduction en plusieurs langues du produit :

  • documentation
  • sortie console de la commande makefly
  • contenu du blog (résultat public)
  • site web
  • blog (en plusieurs langues)

Format des billets : Markdown

  • utiliser Markdown (quelle bibliothèque ?)
  • trouver comment ajouter des smileys
  • trouver comment ajouter des métas données dans les billets, ce qui éviterait d'avoir 2 fichiers pour chaque billet

Plugins

  • ajouter un dossier plugins
  • dans lequel un dossier EST un plugin
  • trouver une méthode pour activer/désactiver un plugin (faire une liste dans le fichier de configuration ?)
  • trouver ce que le plugin peut faire pour modifier le fonctionnement de makefly :
    • des hooks à surcharger pour Makefly ?
    • ou bien pouvoir tout surcharger ?

Fonctionnalités

  • Permettre l'utilisation/génération/maintenance de plusieurs blogs (en même temps ?)
  • Générer le blog en plusieurs langues (probablement utiliser la fonctionnalité de génération de plusieurs blogs)
  • Générer soit blog, documentation ou site vitrine (triple mode)
  • Permettre la personnalisation de l'URL
  • Plugins possible !

Divers

Écrire Makefly en Moonscript pour simplifier la génération du code, la lecture, la maintenance, etc. ? Cela fait partie du KISS.

Clone this wiki locally