Table des matières

Améliorer le(s) site web de Khaganat

Vous voulez aider au site web ? Vous êtes perdu ? Lisez soigneusement cette page, puis allez réveiller Zatalyz sur XMPP pour tout ce qui n'est pas clair.

Si vous souhaitez déployez un site similaire à Khaganat, la page Faire un site web comme Khaganat détaille d'une façon plus “tutoriel”.

Cette page est destiné à tous ceux qui souhaiteraient nous aider à améliorer notre ensemble de sites web.

La charte graphique est sur une autre page.

Préambule : philosophie et choix pour le site

Nous sommes un projet bénévole. Cela veut dire que nous dépendons des bonnes volontés, du temps et des compétences de chacun pour fonctionner.

Dans ce cadre, nous avons quelques principes à respecter, énoncés ci-dessous.

Simplicité de maintenance

Il est possible que quelqu'un maîtrisant “tout” le site web parte du jour au lendemain. C'est normal : nous sommes libres, et nous ne maîtrisont pas non plus les aléas de la vie qui peuvent nous éloigner.

Mais dans ce cas, que devient le travail de celui qui part ? Pour que les suivants puissent continuer ce qu'il a fait, il faut que tout soit facile à maintenir.

Cela veut dire :

Ne concentrez pas le pouvoir

Lorsque les applications le permettent, donnez les droits d'administration à une des autres personnes considéré comme étant de confiance et régulièrement présente. Sinon, partagez les mots de passe en respectant les consignes de sécurité avec quelques membres ayant des privilèges similaires aux vôtres.

C'est un des choix délicats à propos de la sécurité. Partager le pouvoir et utiliser Teampass augmente un peu les risques, mais permet aussi de ne pas trop perdre de choses lorsque un admin disparaît.

Documentez

On le répète sans cess, mais c'est vraiment vital pour reprendre derrière…

Note pour ceux que le mot “documentation” effraie : le principal est de savoir ce que vous avez fait et comment. Indiquer les liens vers les tutoriels que vous avez suivi est très bien et suffit ; précisez si vous les avez suivi à la lettre ou si l'architecture de Khaganat vous a demandé d'adapter certains points, c'est tout. Si vous ne souhaitez pas utiliser le wiki, vous pouvez aussi ouvrir un fil sur le forum pour parler de votre travail.

Des outils libres et hébergeables

Vous avez le droit d'utiliser ce que vous voulez pour naviguer, créer, jouer… Par contre, les outils que Khaganat promeut doivent être libres et hébergeables. Nous voulons garder le “contrôle” sur nos données et laisser chacun libre de réutiliser notre travail. Nous acceptons de relayer nos infos sur les plate-formes propriétaires (youtube, dailymotion, facebook, github), mais nous n'en faisons pas la promotion pour autant et nous vous invitons, autant que possible, à venir “à la source”1).

Donc si vous voulez nous proposer un outil, une fonctionnalité, veillez à sa licence. Nous ne travaillerons pas sous Slack et Asana.

Nous n'hébergeons pas forcément tous nos outils, mais nous essayons de le faire aussi souvent que possible. Nous utilisons les services de Jabberfr.org pour XMPP, par exemple, et les services de certains CHATONS régulièrement, mais ces services sont libres et nous pourrions aussi les mettre sur le serveur… simplement le service offert par ces organismes et leur philosophie nous conviennent2).

Accessibilité

Nous sommes conscients des problèmes que peuvent rencontrer certains utilisateurs dans leur navigation sur internet. Nous souhaitons que l'ensemble de nos services soit accessible, quelque soit le handicap physique ou technique de nos utilisateurs.

Ce n'est absolument pas le cas actuellement, car nous manquons de développeurs en CSS… Lorsque cela nous est possible, nous intégrons ce questionnement en amont des développements.

Si possible, faites en sorte que :

L'accessibilité est un sujet extrêmement complexe, mais il est impératif de chercher à l'améliorer. Vous trouverez plus d'informations et d'outils sur la page Accessibilité.

Architecture

Notre architecture est, techniquement, assez complexe. Tout est hébergé sur de gros serveurs dédiés et les services sont dans des VM sur ces serveurs.

Voici comment les services sont répartis3) :

Il y a aussi, de façon temporaire4), des espaces de test. Les droits sur ces VM peuvent être ouverts si vous avez besoin de faire des tests sur un serveur5).

Au 02 septembre 2018, nous avons entre autre les CMS suivants qui sont installés (voir plus bas pour le détail) :

Nous avons quelques pages “faites maison” :

Un site en Django a commencé à être développé. Voir :

Il a déjà plusieurs modules codés :

Django va peu à peu permettre de faire l'interface entre les divers CMS et le jeu.

Pour toute question sur ce gros bazar, contactez Zatalyz et Deed en priorité, qui ont mis les mains partout et gèrent l'ensemble.

Sur certaines questions plus précises :

  • Pour les serveurs de jeu, Deed, Siela1915 et AleaJactaEst sont plus compétents
  • Pour le système de patch du jeu, c'est YannK qu'il faut voir.
  • Pour le paramétrage du pare-feu ou de Xen, Shepeng vous répondra au mieux.
  • Pour Gitlab, nous n'avons plus d'experte. Les sysadmins ont les clés, Zatalyz sait à peut prêt le mater, et Aleajactaest sait le mieux ce qu'on peut en tirer.

Tout ce qui est utile pour contribuer au site web est disponible sur le dépôt "Site internet".

Dokuwiki

Dokuwiki est un excellent moteur de wiki.

Zatalyz en est fan : vous pouvez lui poser toutes les questions possibles sur le sujet. Par contre, elle ne vous laissera pas le virer…

Les besoins

Vous souhaitez aider sur la partie css ou plugin de Dokuwiki ? N'installez pas la réplique exacte de ce qu'on a sur le serveur, ça ne sert à rien.

Installez Dokuwiki en local de façon standard (sans ferme). Vos modifications sur les templates et les plugins fonctionneront de la même façon sur notre architecture plus complexe.

Dokuwiki est simple à installer tant qu'on ne cherche pas les complexités type ferme. PHP et apache sur votre installation suffiront à la plupart des tests.

Téléchargez le thème propre à la partie qui ne va pas.

La difficulté actuelle des thèmes tient premièrement à l'intégration de la barre de navigation générale. En effet, il faut arriver à intégrer la nouvelle version. Sur les wikis, c'est encore l'ancienne qui est en place… parce que ça marche ; il doit y avoir quelque chose dans la nouvelle qui entre en conflit avec les thèmes ou qui est mal finalisé.

Notez que la “nouvelle” nouvelle version est celle de Django ; nous n'avons pas encore tenté son intégration ! Django génèrera la barre en html pour l'intégration dans les wiki.

Axe de travail pour améliorer les thèmes

La ferme

Sur Khaganat, Dokuwiki est organisé sous forme de ferme. Cela veut dire qu'il y a un wiki “maitre”, où le moteur est installé, et des wiki “animaux” qui contiennent uniquement les datas et quelques particularités (genre certains thèmes ou plugins). Tous ces animaux utilisent la même base d'utilisateur.

Voici la liste des animaux :

Simple Machine Forum

Notre forum.

Notre choix en matière de forum se base sur deux choses :

En dehors de ça, nous sommes ouverts aux suggestions. SMF est sympa, mais plein de fonctionnalités dont nous n'avons pas vraiment l'usage, finalement… Et dans l'absolu, nous aimerions un forum offrant d'autres fonctionnalités aux joueurs, comme le fait d'héberger son sous-forum de guilde directement, lié aux persos, avec la possibilité de mettre des parties publiques et d'autres privées. Le Forum-CMS de nos rêve est un vague projet, qui demanderait un vrai programmeur.

Nous aider

La seule chose qui nous manque réellement sur le forum, actuellement, c'est de pouvoir lier ça à une connexion unique. Voir plus bas.

Cependant, si vous avez envie d'aller plus loin, nous avons prévu d'utiliser Django pour l'API du serveur de jeu ; développer un forum avec Django, ou reprendre ce qui existe déjà avec ce framework et l'adapter à nos envies, est donc une très bonne idée.

Si vous avez envie de coder un forum en tant que module pour Django, nous avons déjà un cahier des charges ! Yaplukal'faire !6)

Pastebin

Un module a été développé pour Django. Les pastebin nous servent régulièrement au sein du projet.

Nous aider

Il faudrait qu'on arrive à mettre Django en prod, on verra le reste ensuite…

Etherpad-Lite

Une installation d'Etherpad, avec quelques plugins, dont “Mypads”. Il est lourd et gourmand en mémoire mais les pads nous servent souvent, cet outil est donc vraiment utile pour nous.

Nous aider

Améliorer son css et lui intégrer la barre de navigation serait un plus.

Pouvoir le lier à l'authentification unique serait pratique, mais ça marche sans aussi, donc… : Mise à jour : on va avoir un truc sécurisé, on va éviter d'ouvrir une faille en liant ça avec etherpad qui n'a pas toute ma confiance.

Ce CMS sert à héberger nos images. Il nous a rendu service, mais à présent il correspond de moins en moins à nos besoins. Je ne lui ai pas trouvé de remplaçant.

Nous aider

J'apprécie le fait qu'il fonctionne sans base de donnée. Mais sinon :

Bref il nous faudrait de quoi gérer les médias. Si vous connaissez un bon truc pour ça, parfait. J'ai testé quelques CMS, dont Piwigo (l'un des meilleurs dans le lot) sans être complètement convaincue pour autant.

Note au 22 Juillet 2017 : pour les vidéos, Peertube est extrêmement prometteur et une instance sera probablement installé quand nos besoins seront là.

Pour la partie images, il faudra peut-être voir les modules de Django, simplement.

Cette partie là ne pourra être remplacée qu'avec un cahier des charges décrivant précisément nos besoins. Donc si vous voulez aider, participez à la rédaction de ce cahier des charges !

Gitlab

Gitlab sert à gérer les dépôts. Il prend beaucoup trop de ressources, mais il est vraiment très utile aussi…

Arriver à intégrer la barre de navigation générale serait vraiment bien. Mais Gitlab n'est vraiment pas évident à bidouiller, et il faut arriver à faire une bidouille qui survive aux mises à jour trop régulières sur logiciel. Connaissances en Ruby nécessaire.

AMS

AMS est l'outil web de Ryzom Core qui sert, entre autre, à gérer les comptes des joueurs sur le serveur de jeu.

Il n'est pas finalisé et mal documenté… Voir plus bas “Développements futurs”.

Botlogmauve

L'équivalent de Limnoria pour XMPP. Voir ici.

Mesure de statistiques/audience

Nous avions installé Piwik à un moment (devenu Matomo depuis). Mais pister nos utilisateurs nous déplaît et Matomo est trop facilement intrusif. Nous avons donc supprimé tout ça.

Notre intérêt pour ce genre d'outil tiens à peu de choses :

Un outil d'analyse du site, comme présenté ici, ou encore GoAccess, serait plus pertinent, afin de chercher les trucs qui ne vont pas : erreurs sur les pages, etc.

Teampass

Permettait de partager des mots de passe. Mais nous avons eu le passage d'une pro de la sécurité, qui a pointé de nombreuses failles. Depuis, il est désactivé, sans lui avoir trouvé un remplaçant aussi ergonomique.

Barre générale de menu

La barre en haut, censée se retrouver sur tous les sites et permettre de naviguer rapidement d'une partie à l'autre

Nous avions récupéré et customisé la Framanav (il y a longtemps), d'une façon assez “sale”. Résultat, cette barre nous pose des soucis, en faisant appel à des classes et/ou des fonctions qui sont aussi utilisées dans les CMS (bootstrap/jquery), ce qui met le boxon régulièrement. Sinon, on aime bien la façon dont elle fonctionne.

Osquallo a proposé une nouvelle version ici en 2016. Elle a été mise en place sur toutes les parties qui ne sont pas des wikis (par exemple sur le forum).

Elle n'est pas finalisée car il manque la gestion sur les petits écrans (portables) et elle fait aussi un truc bizarre à charger le css avec un peu de latence. Son intégration sous chrome et autres navigateurs est parfois étrange. Son accessibilité pourrait aussi être meilleure. Elle méritait d'être encore travaillée.

Nous aider

Une nouvelle version est en cours au printemps 2020. Contactez Zatalyz. Il ne manque pas grand chose pour l'utiliser.

Il suffit d'avoir des bonnes connaissances en css/html. Se baser sur un framework type bootstrap est hors de question, chaque appel doit être spécifique à la barre de navigation, sinon ça met du bazar dans les CMS ensuite.

Cette barre doit impérativement être accessible. Si c'est horrible avec un logiciel comme Links2, ce n'est pas bon. Tout le menu ne peut donc pas être en javascript.

Vous voulez l'améliorer ? Voici les axes :

Authentification unique

Nous souhaitons qu'un utilisateur utilise le même couple mot de passe/pseudo sur tous les éléments du site web.

Nous aimerions surtout que l'utilisateur ait, dans la barre de navigation en haut, la possibilité de “se connecter/s'inscrire”, ce qui le redirigerait vers une page de connexion/inscription (ou ouvrirait une fenêtre dépliante ?) et qu'une fois son compte créé/connecté là, il soit d'office connecté sur les divers éléments du site, de dokuwiki à gitlab en passant par SMF et autres.

Il semblerait que Oauth2 permette ça. Gitlab fournit justement un serveur Oauth ; dokuwiki et owncloud semblent pouvoir utiliser ce protocole aussi. D'après un webadmin qui nous a présenté cette solution, connecter un CMS qui n'a pas de plugin Oauth n'est pas très complexe ; c'est ce qu'utilisent Google, Facebook etc et donc il suffit de modifier ce genre de trucs.

L'utilisation de Django pourrait peut-être aussi servir.

Une autre solution consisterait à utilise l'authentification XMPP, mais cela demande du développement.

Il y a un gros boulot à faire de ce côté.

Si vous maitrisez Oauth, Django, Gitlab, Dokuwiki, XMPP… ou autre, aidez-nous !

Développements futurs

Nos chantiers prioritaires sont :

Django est un framework en python. Nous avons des développeurs en python.

Les API fournis avec Ryzom Core sont un sacré bazar. Sans documentation, rarement finies, impossibles à déployer, elles sont, en l'état, inutilisable. Il est apparu que ce serait moins long et plus facile de tout reprendre à zéro, ce que certains se proposent de faire au sein de l'équipe. Il est possible que les possibilités de Django soient aussi mises en œuvre pour le forum et le gestionnaire de média ; en fait, pour faire un CMS adapté à nos besoins. À condition toutefois que la documentation et la maintenabilité soient là…

1)
C'est pour qu'on nous trouve. Par contre, vous avez remarqué ? On n'a pas de bouton de repartage vers ces sites.
2)
Pour XMPP, cela permet de rester joignable même si notre serveur tombe, et cela nous fait un peu moins de choses complexes à gérer. Pour les autres, notre utilisation reste épisodique et nous avons parfois rencontré des soucis avec nos propres installations. Nous sommes à chaque fois en contact avec les associations qui nous accueillent.
3)
Ces indications peuvent varier dans le temps. En gros, ça ressemble à ça…
4)
À la demande.
5)
Suivant nos ressources du moment ; ce n'est pas non plus certain que nous puissions allumer une VM de plus.
6)
Ce n'est absolument pas trivial.