Il y a quelques temps, j’ai écrit un article dans lequel je présentais le Skriv Markup Language, une syntaxe de type wiki permettant d’écrire facilement des textes mis en forme. Inspiré par tous ses prédécesseurs (MediaWiki, Creole, Markdown, Textile, reStructuredText, AsciiDoc, …), ce langage essaye d’être le plus simple à mémoriser tout en offrant des possibilités d’évolution grâce à un syntaxe dédiée aux extensions.
Après y avoir travaillé pas mal ces derniers temps, je lance maintenant officiellement plusieurs sites et outils autour de ce langage.
Skriv Markup Language
Sur le site http://markup.skriv.org, vous trouverez toutes les informations sur le langage SkrivML : Ses principes fondateurs, ses sources d’inspiration, sa syntaxe complète et détaillée (avec des explications sur les choix effectués), ses extensions.
Comme je l’ai dit plus haut, SkrivML reprend un certain nombre de concepts des autres syntaxes similaires, en essayant d’être le plus homogène possible. Les éléments de syntaxe doivent être évidents à comprendre, pour être faciles à se rappeler.
Le principe général est que SkrivML cherche à être rapide à utiliser. Si c’est pour que la saisie soit lente, autant utiliser des éditeurs WYSIWYG. SkrivML ne cherche pas à gérer des cas ultra-particuliers de mise-en-page, mais plutôt à répondre le mieux possible aux cas d’utilisation les plus courants.
Le langage apporte quand même quelques idées qui me semblent novatrices, comme les blocs de texte stylisés, les smileys et les symboles, ou encore les extensions.
Si vous avez des idées d’extensions, un formulaire permet d’en proposer de nouvelles. Vous pouvez aussi voter pour les extensions qui ont déjà été proposées.
Enfin, une interface permet de tester la syntaxe SkrivML, avec une interprétation en temps réel de ce que vous tapez.
SkrivMarkup
J’ai développé une bibliothèque en PHP pour transformer du texte SkrivML en code HTML. Elle est basée sur le projet WikiRenderer (un impressionnant projet mené par Laurent Jouanneau). J’ai reçu la précieuse aide de Renaud Littolff, qui m’a aidé à débugguer et améliorer SkrivMarkup.
Cette bibliothèque est très facile à installer, notamment grâce à Composer. Elle peut prendre un grand nombre de paramètres de configuration, qui sont expliqués sur le site du projet.
Elle est publiée sous licence libre, et son code est disponible sur GitHub.
Skriv.io
Pour faciliter l’utilisation de SkrivML, j’ai mis en place un webservice qui permet à tout le monde de réaliser des interprétations du langage, sans avoir besoin d’installer le moindre logiciel. Il est très facile à appeler ; j’ai mis en ligne des exemples de code dans plusieurs langages (PHP, Javascript, Ruby, Python, Lua).
Voici un exemple d’appel en PHP :
$skriv = '**bold** text __italic__';
$url = 'http://api.skriv.io/convert/html';
$html = file_get_contents("$url?text=" . urlencode($skriv));
Il est possible de configurer les paramètres d’interprétation.
Son utilisation est complètement gratuite. Elle le restera toujours pour la conversion en HTML. Peut-être qu’un jour j’ajouterai des fonctionnalités supplémentaire, et je peux imaginer que certaines soient payantes ; mais l’utilisation de base restera toujours complètement gratuite.
Ark
Ce projet avait pour but de démontrer les capacités de SkrivML. C’est une sorte de wiki, dans lequel les pages de texte sont organisées de manière hiérarchique. Ainsi, chaque page peut contenir des sous-pages, avec une navigation à côté du corps de texte.
Une version de démonstration est accessible. Le code source est publié sous licence libre et disponible sur GitHub.
Documentation Atoum
Je ne pourrais pas parler de SkrivML sans citer la documentation d’Atoum, le framework de tests unitaires créé par Frédéric Hardy. Le mainteneur de cette documentation, Renaud Littolff, s’est intéressé à SkrivML dès que j’en ai parlé sur ce blog, et à commencé à utiliser la bibliothèque SkrivMarkup dès que j’en ai publié le code. Il a vraiment été exemplaire, aussi bien dans ses remontées de bug que dans ses propositions d’améliorations, et je suis impressionné par la qualité du site qu’il a créé.
Le futur
J’ai quelques surprises dans les tuyaux.
Je pense améliorer le système de propositions d’extensions, pour permettre de commenter et de discuter réellement les propositions avant de les accepter ou de les refuser.
D’ailleurs, il y a quelques extensions que j’ai proposées, que je compte bien implémenter parce que j’en ai besoin.
J’aimerais trouver le temps pour faire évoluer la bibliothèque SkrivMarkup, pour qu’elle soit capable de générer du DocBook ou encore du RTF.
Je réfléchis à plusieurs évolutions du service skriv.io comme la génération de PDF, l’utilisation de templates CSS, et quelques autres joyeusetés.
Je travaille sur quelques outils, qui utilisent tous la syntaxe SkrivML. Je ne sais pas encore jusqu’à quel point je vais les pousser, ou encore lesquels vont être publiés sous licence libre. Mais il y a de belles choses à faire.
Merci pour ces compliments et bravo pour ce lancement 🙂
Hello,
Je voudrais savoir si les évolutions de ce projet sont toujours prévues ou non … Je viens de faire une pull request et je vois que la dernière pull-request date de Mars et n’a pas de commentaire. Cela m’inquiète. Pas que je souhaite que ma pull request soit rapidement adoptée ou non (vu que je peux utiliser ma branche), mais surtout pour savoir si ça vaut le coup de commencer un projet de documentation en Skriv plutôt qu’en CommonMark par exemple.
Oui, bien sûr que ça vaut le coup. Le projet est toujours actif. J’ai vu passer ton PR, je n’ai juste pas eu le temps de le traiter pour le moment (boulot, déménagement, …).
Pour le PR de mars, j’ai des échanges avec son auteur, on a des visions différentes sur pas mal de choses. Je n’arrive pas à me décider à simplement le refuser 😉
héhé réactif le gars 🙂
Ok cool. Pour mon PR pas de souci, je pense en faire un autre un peu mieux léché un de ces 4. Mon problème se situe surtout dans wikirenderer en fait.
Content de voir que le projet est toujours up 🙂