Développement: Les coulisses de NoBleme

La face cachée de NoBleme

Depuis le redesign du site en 2012, j'ai décide d'exposer le développement de NoBleme, de le rendre aussi transparent que possible.

La section développement permet les actions suivantes :

  • Suivre via le plan de route et la liste des tâches l'évolution passée, présente et future du développement de NoBleme
  • Permettre aux utilisateurs de proposer leurs idées de nouvelles fonctionnalités ou de rapporter des bugs en ouvrant un ticket
  • Découvrir grâce au blog de développement les dessous du développement de NoBleme et du monde de l'informatique en général
  • Ou carrément aller consulter le code source de NoBleme, qui est open sourcé et librement mis à la disposition du public.

Les convictions qui s'appliquent au développement de NoBleme

  • Gratuit, sans publicités, sans quêtes : Internet est un milieu d'expression qui est, à mon goût, complètement gâché par les intérêts financiers des gens. Certains les cachent derrière une pseudo-gratuité, et en profitent pour collecter des informations sur les gens qu'ils revendent à des publicitaires, ou se servent de la gratuité d'un site pour attirer les gens vers un autre site payant. D'autres se servent d'un site comme prétexte pour gagner leur pain au dépens des utilisateurs, en y insérant des publicités qui peuvent parfois gâcher l'expérience de la navigation alors même qu'elles ne rapportent que très peu d'argent. Et enfin, il y a ceux (moins critiquables que les autres) qui se lancent dans un projet qu'ils ne peuvent pas assumer, et réclament des donations pour garder leur projet en vie. Sur NoBleme, rien de tout ça. Le site est entièrement assumé. Vous n'aurez rien à payer, rien à supporter, rien à donner, aucune publicité à subir. Je n'accepte pas les donations. Contentez-vous de profiter.

  • Aucun traquage des données personnelles : A l'inscription, vous n'avez qu'à rentrer un pseudonyme, un mot de passe, et optionnellement un e-mail. L'authenticité de votre e-mail n'est même pas vérifiée, sa seule utilité est d'avoir un moyen de prouver qu'il s'agit vraiment de vous si vous venez me dire que vous avez perdu votre mot de passe. Les seules données que je conserve sur les utilisateurs sont la dernière adresse IP dont ils se sont servis (pour des raisons de sécurité, et je ne garde que la toute dernière), et un cookie qui reste automatiquement stocké dans votre navigateur si vous avez coché la case « se souvenir de moi » à la connexion (comme son nom l'indique, pour se souvenir que vous êtes connecté). Je ne garde rien permettant de vous identifier personellement, et j'encrypte toutes les données personnelles, ce qui fait que je ne peux pas les voir moi-même. Cela signifie que si NoBleme vient à être hacké, sait-on jamais, les données qui seront récupérées sur les utilisateurs seront majoritairement inutilisables par les hackeurs et/ou publicitaires. Vous pouvez vérifier la véracité de mes propos en allant directement consulter le code source de NoBleme.

  • Une transparence totale et un partage éducatif : L'intégralité du code source de NoBleme.com est open sourcé, vous pouvez allez le consulter en bas de la page. De plus, le code est open sourcé via une licence permissive (MIT license), ce qui signifie que vous pouvez réutiliser une partie ou l'intégralité du code source de NoBleme, tant que vous conservez la même licence. Ainsi, ce n'est pas seulement par souci de transparence que la source de NoBleme est libre et publique, mais aussi pour des raisons éducatives : si vous vous demandez comment certains features de NoBleme fonctionnent, vous n'avez qu'à aller consulter le code source. Et si vous aimez la méthode que j'utilise, rien ne vous empêche de réutiliser mon code.

  • Des alternatives au JavaScript : Le JavaScript a ses avantages, mais je respecte ceux qui font le choix d'utiliser NoScript, ou de bloquer complètement le JavaScript. J'utilise moi-même NoScript, et regrette le peu d'effort que font la plupart des sites pour les utilisateurs faisant ce choix. C'est pour cela que les pages utilisant du JavaScript auront dans la mesure du possible également une alternative pour ceux qui n'en disposent pas, ou au moins un message leur indiquant qu'ils ne peuvent pas se servir de la fonctionnalité de par leur absence de JavaScript. Par exemple, le menu déroulant situé en haut de chaque page est entièrement réalisé en CSS, ce qui a demandé plus de temps de travail (un investissement temporel qui est selon moi justifié).

  • Un effort de compatibilité : Le bon fonctionnement du site est testé sur tous les navigateurs ayant au moins 1% de part de marché. Je préfère laisser les utilisateurs choisir leur navigateur plutôt que de leur imposer un changement lorsque mon site ne peut plus les assumer. De plus, toutes les pages du site sont validées via le validateur du W3C, assurant que tout navigateur qui respecte les standards du W3C puisse se servir du site sans encombre.

La logistique du développement de NoBleme

  • Un nom de domaine (nobleme.com) hébergé chez PHPnet
  • Un serveur utilisant Debian Linux hébergé chez OVH
  • Un serveur IRC utilisant une version personnalisée du daemon UnrealIRCd et les services Anope
  • Un serveur HTTP Apache
  • Un site codé majoritairement en PHP puis rendu en HTML
  • Une base de données MySQL avec laquelle le PHP intéragit via des requêtes
  • Du CSS pour régir l'apparence du HTML rendu par le PHP
  • Du JavaScript pour conférér des fonctionnalités dynamiques à certaines pages
  • Le site est développé depuis mon ordinateur opérant sous Microsoft Windows et contenant des machines virtuelles FreeBSD
  • Un espace de développement local sur mon ordinateur, nativement sous FreeBSD et à l'aide de WampServer sous Windows
  • Le code source du site est écrit avec l'éditeur Emacs sous FreeBSD et Sublime Text sous Windows
  • Les graphismes sont tous réalisés sous Microsoft Paint (même pas honte)
  • La maintenance du serveur est effectuée en ligne de commande depuis FreeBSD, et parfois via MobaXterm sous Windows
  • Les modifications sont traquées et publiées à l'aide du logiciel de gestion de versions Mercurial
  • Le dépôt mercurial sur lequel les modifications sont traquées est hébergé sur BitBucket


Code source de NoBleme

Le code source de NoBleme est hébergé dans un dépôt public sur Bitbucket : cliquez ici pour accéder au code source de NoBleme.

Par souci de transparence, l'intégralité code source de NoBleme.com est open sourcé : Si vous avez des connaissances en développement informatique et que vous demandez comment vos données sont traitées, quelles données sont conservées, qu'est-ce qui est ou n'est pas encrypté, ce que peuvent voir et faire les administrateurs, etc., vous pouvez aller le vérifier à la source par vous-même.

Même si la codebase est très vieille (première itération en 2005) et utilise des technologies datées (cœur entièrement en PHP procédural), la source est faite pour être lisible et aérée : Tous les fichiers sont largement commentés, le PHP et le HTML sont séparés autant que possible, et les sections de chaque fichier sont séparés par des gros blocs de commentaires. L'objectif est que quelqu'un ayant des connaissances basiques en programmation puisse facilement lire n'importe quel fichier du code source de NoBleme sans avoir besoin d'explications extérieures pour le comprendre.

Notons que la source est sous licence MIT, c'est à dire que vous êtes libres de réutiliser une partie ou l'intégralité du code source de NoBleme pour vos projets personnels, à condition de conserver la licence. Ce choix de licence correspond à mes convictions : Tout code source non commercial est fait pour être partagé, afin d'éduquer les débutants dans le métier et d'aider les développeurs qui pourraient gagner du temps ou trouver des idées dans le code source des autres.


Contribuer au code source de NoBleme

Je n'accepte pas les contributions au code source de NoBleme : Si vous proposez une pull request dans le dépôt public, elle sera refusée. Je tiens à travailler seul dessus, afin d'avoir le contrôle total sur ce que je fais. L'investissement temporel est conséquent, mais j'en assume la responsabilité. Cette méthode de travail en solitaire fonctionne confortablement pour moi depuis 2005, et je ne tiens pas à la changer.

Si vous trouvez un problème et voulez proposer une solution, ou si vous avez des propositions d'amélioration, ouvrez un ticket ou venez en discuter sur le canal #dev du serveur IRC NoBleme, et ce sera avec plaisir que je discuterai de votre bug report ou de votre idée.