Yacs fut et reste encore essentiellement développé par Bernard Paques, depuis 2001. Il décida diffuser le logiciel librement, pour bénéficier des retours d'une communauté d'utilisateurs et pour le plaisir de voir sa création utilisée. A ce jour le plus grand site motorisé par Yacs est un extranet d'entreprise, avec 4000 utilisateurs répartis dans le monde et plus d'un million de pages créées.
l'entité de base dans Yacs est l'article. Il est composé d'un titre (au minimum), d'une introduction et d'une description. En complément on peut aussi définir un texte de bas de page, un texte "extra -affiché généralement sur le côté des pages-, et enfin des métadonnées spécifiques à la page. Par défaut chaque membre peut ajouter une page, et effectuer les interactions suivantes :
Viennent ensuite les sections, qui offrent en plus de l'article la capacité de contenir des articles ou sous-sections. Elles servent à hiérarchiser les pages selon un classement vertical. Une section permet aussi de définir des règles ou aspect spécifiques aux pages sous-jacentes. Un article ne peut être que dans une seule section à la fois.
Les catégories permettent le classement transversal, et sont liées notamment à l'étiquettage des articles (taxinomie) ainsi que l'archivage automatique (par mois et par semaine). Un article peut être relié à plusieurs catégories, et les catégories sont hiérachisables entre-elles.
Lorsqu'il génère une page, Yacs prépare les données en tableaux avant de confier le rendu final XHTML au moteur graphique. Le plus courant est d'afficher les pages sur 3 colonnes :
Ces 3 colonnes ne sont pas un canevas obligatoire, le thème graphique peut les rassembler, ou bien éclater complétement leur composants en les appelant un par un. En plus de ces 3 colonnes, Yacs peut générer automatiquement un en-tête (header) avec titre, slogan et navigation par onglet, ainsi qu'un pied de page (footer), avec liens vers les mentions légales, formulaire de contact et flux d'informations.
Dans yacs il n'y a pas de panneau d'administration dans le sens d'une interface dédié à gestion du site. Au contraire les commandes de gestion sont affichées directement sur les pages elles-mêmes (en visualisation ou en édition), suivant le contexte et les permissions du surfeur. Le composant outils affiche toujours ce qu'il est possible de faire à partir de la page courante. Une gestion de masse est disponible au niveau des pages conteneurs (les sections).
Il existe cependant un panneau de contrôle qui rassemble sous différents onglets les pages de configuration globale au serveur (le plus souvent des paramètres ajustés une fois pour toute). Aux simples membres le panneau de contrôle propose des assistants d'ajout de contenu et des informations sur le serveur.
Il y a donc 2 types de paramètres de configuration :
La mise en ligne d'un article demande qu'il soit publié. La publication peut être :
une page non-publiée n'est pas affichée aux membres non-éditeurs, cependant elle est accessible via son URL. Il ne faut donc pas confondre la notion de publication avec la notion de restriction d'accès.
La publication d'une page entraine les mécanismes suivant :
Si l'archivage automatique est activé, les articles sont rattachées à des catégories pour chaque mois et chaque semaine. En cas de modification de l'article, les versions successives sont conservées et peuvent être restorées.
Yacs propose 3 éditeurs pour écrire les pages : TinyMCE, FCKeditor, et textarea (HTML). On peut aussi interfacer des logiciels tiers de blogging utilisant le protocole XML-RPC, et enfin il est possible d'activer la création d'articles à partir d'e-mail lus en tâche de fond par le serveur.
Les codes de formatage, ou codes Yacs sont des syntaxes particulières que l'on utilise lors de l'édition des pages pour générer un effet précis lors de sa visualisation. C'est une écriture plus simple que le HTML, mais surtout les codes yacs ne se limitent pas au formatage de texte et permettent d'appeler du contenu dynamiquement.
Les codes yacs les plus simples s'apparentent au BBcode et les plus complexes à des widgets utiles pour positionner du contenu dynamique à l'interieur des textes.
Le moteur graphique génére du contenu valide XHTML encodé en UTF8. Si la réécriture d'URLs avec Apache est activée, chaque page dispose d'une URL canonique avec redirection automatique.
Pour chaque article, les balises méta title, description, author, publisher sont complétées automatiquement, ainsi que les balises sémantiques du standard RDF.
Yacs indique également les interfaces de pingback et de commentaires pour les mécanismes externes.
De nombreux flux d'informations sont disponibles aux formats RSS 1.0 et 2.0, ATOM, RDF et OPML.
Yacs est un logiciel multi-utilisateurs, et requière une authentification pour que ces derniers se distinguent des simples surfeurs. L'authentification de PHP, qui est aussi celle de yacs, s'appuie sur les cookies. Elle peut cependant être déléguée à un système externe.
Yacs posséde sa propre logique d'organisation des permissions pour les utilisateurs. Partie d'une base simple, l'organisation est assez souple. Cependant elle s'est complexifiée par de nombreuses options, mais n'est pourtant pas entièrement paramétrable. Il n'est pas possible de créer son propre jeu de permissions.
Le logiciel distingue les permissions globales, définies pour un utilisateur sur tout le serveur, et les permissions locales définies en cascade à partir d'un point de l'arborescence.
Les permissions globales se définissent à partir du profil utilisateur.
les permissions locales se définissent à partir de l'élément en cours de visualisation (article ou section)
La notion d'éditeur ou propriétaire de sections est plus complexe dans le fait qu'elle entraine des droits en cascade sur les éléments contenus dans la section.
Yacs posséde actuellement une interface en anglais ou en français. Le logiciel choisie la langue automatiquement suivant les préférences du navigateur du surfeur. Le mécanisme utilisé pour les langues est i18n, Les fichiers de langues pour l'interface sont donc créés avec un logiciel tel que poedit.
Les programmeurs peuvent utiliser la fonction l18n dans leur interfaces, s'ils ne souhaitent pas la création de nouveaux fichiers.
Au niveau de contenu, Yacs permet de définir la langue d'un article. Deux articles (ou plus) avec le même surnom, mais défini comme étant de langues différentes, se substitueront suivant les préférences régionnales du surfeur.