Aujourd'hui lorsqu'on veut lancer un site web, un forum est souvent indispensable pour fonder et regrouper une communauté. Les forums sont devenus incontournables dans les sites web d'aujourd'hui c'est pourquoi il existe de plus en plus de scripts de forum faciles à installer.
Néanmoins bien qu'ils remplissent tous leur fonction première, ils sont néanmoins assez différents d'un point de vue des fonctionnalités mais aussi des performances et de la consommation de ressources serveur. Car si on possède un petit forum on se penchera surtout sur les fonctionnalités dont on a besoin, par contre au fur et à mesure que le forum grossira, les performances du script pèseront aussi dans la balance si changement de forum il doit y avoir.
Or aujourd'hui lorsqu'on cherche des avis sur un script de forum, on a souvent des avis sur les fonctionnalités, la sécurité ou encore les mods, mais à part les clichés habituels trouver un avis neutre est souvent compliqué. C'est pourquoi je me suis lancé dans la comparaison de scripts de forum afin que chacun puisse se faire une idée en fonction de ses besoins.
Étudier tous le scripts de forum est impossible, c'est pourquoi je vais me concentrer sur les plus utilisés/connus :
- MesDiscussions.net : Analyse
- Invision Power Board : Analyse
- vBulletin
- phpBB
- Simple Machines Forum
- Fire Soft Board
- PunBB/FluxBB
- Connectix Boards
De même je ne vais comparer que ce qui est comparable : pas la peine de parler des systèmes de skins (par contre les templates oui), des fonctionnalités banales voire inutiles (anniversaires du jour, dernier membre inscrit et les fonctionnalités particulières). Par contre je vais me pencher sur les bases MySQL, leurs champs (type, taille, utilité), leurs index voire même leur moteur de stockage.
MesDiscussions.net
Je pense que pour beaucoup d'entre vous ce forum n'est pas très connu et pourtant c'est un de scripts de forum les plus performants. Réalisé par la société Doctissimo Network, il équipe les plus gros forums français ce qui est normal étant donné qu'il est conçu pour ce qu'on appel des mégas forums (où l'on compte en millions de sujets et messages). Il utilise pour cela la réplication MySQL pour gérer des clusters. Le point noir de ce forum est son prix qui ne le rend pas accessible au commun des mortels.
Néanmoins quand on voit la charge qu'il peut supporter, on ne peut pas contester ses qualités. Par contre il est impossible d'accéder au code source étant donné que celui-ci est crypté. C'est lors d'une grosse modification du forum du SdZ que j'ai pu en savoir plus sur son fonctionnement interne et que j'ai compris pourquoi notamment il ne rame pas en grossissant.
Mettre MesDisscussions.net dans le comparatif pourrait paraitre incongru vu qu'il ne joue pas dans la même catégorie. Si je l'ai mis c'est pour montrer à certaines personnes accrochées à leurs idées que MySQl peut supporter de très lourdes charges et que la réplique Pour une grosse base de données il vaut mieux utiliser PostGreSQL montre le peu de connaissances de l'interlocuteur.
Ce forum est donc à utiliser si vous comptez avoir un forum assez chargé. Il est à noter qu'entre le SDK et les webs services qui sont fournis avec, il est aussi celui qui propose le plus de services pour les développeurs et les intégrateurs.
Invision Power Board
Je continue (et m'arrête là pour ce billet) avec IPB qui lui aussi est payant mais déjà beaucoup plus accessible. Avec un forum payant on est en droit d'attendre un code optimisé et une structure de base de données réflechiest et relationnelle. Si à l'installation on a le choix entre plusieurs moteurs de stockage (MyIsam ou InnoDB), curieusement cela ne change rien par la suite (point de clef étrangères ou de transactions alors que c'est l'utilité même d'InnoDB).
Ce qui impressionne au premier coup d'oeil c'est le nombre de tables (88). Si le plupart sont justifiées (notamment pour le partitionnement vertical de la table des membres), y'en a quand même pas mal dont je ne sais toujours pas à quoi elles servent. Par exemple le système de skin/template utilise à lui seul 9 tables.
Concernant les tables elles-même, y'a du bon et du moins bon : par exemple on peut très bien insérer un membre avec un pseudo de 255 caractères, avoir un nombre de posts compris entre - 8 millions et + 8 millions (oui oui il peut avoir un nombre négatifs de messages). Idem pour un topic qui peut contenir jusqu'à 2 milliards de posts (et là aussi il peut avoir un nombre négatif). C'est je pense le point noir dans la structure des tables : la taille des champs est peut à l'ouest, ce qui joue notamment sur la taille des index et leur utilité.
Autre point noir c'est ça :
SELECT * FROM ibf_topics t WHERE t.forum_id=2 AND t.pinned IN (0,1) and t.approved IN (0,1) ORDER BY t.pinned DESC, t.last_post DESC LIMIT 0,30
Cette requête permet d'obtenir la liste des topics avec diverses options. Le problème c'est le SELECT * qui est loin d'être un cas isolé, on en retrouve un peu partout dans les requêtes effectuées, ce qui n'est pas bon pour l'optimiseur. De plus grâce à EXPLAIN on voit très vite que pas mal de requêtes n'utilisent pas les index, on se demande à quoi ils servent alors.
Enfin pour enfoncer le clou il n'y a pas moins de 11 requêtes sur les pages listant les topics d'un forum et 12 sur celle listant les posts d'un topic. Prévoyez un gros serveur, c'est pas conçu pour les petits forums.
Les bons points (il y en a quelques uns) c'est que le code source est très détaillé et très bien commenté, on comprend très vite comment ça fonctionne, ainsi on peut aussi très facilement apporter ses modifications.
L'autre point intéressant est que les messages sont à l'insertion, ce qui permet de sacrées économies de ressources lors de la lecture des messages.
En commençant par critiquer un forum pro je pensais qu'il ny 'aurait que des bonnes choses à dire mais au final c'est uen sacré surprise. Si vous êtes un administrateur de forum IPB ou même Mesdiscussions.net, votre avis m'intéresse, surtout en ce qui concerne la consommation des ressources par le serveur.
3