Header Image
Accueil / L’association / Travailler pour Wikimédia France / Nos appels d’offres / Appel d’offres – Renforcement Technique Vikidia

Appel d’offres – Renforcement Technique Vikidia

Renforcement technique Vikidia

Client : Vikidia (association à but non lucratif)

Projet : Prestation de développement de logiciel sur Vikidia
Mise à jour du mediaWiki (de 1.31 à 1.39)

Calendrier de candidature : date limite le 20 mars 2023 12h UTC+1

Présentation de l’ensemble du projet

1. Contexte du projet

Vikidia est un wiki open-source dédié à fournir une encyclopédie libre pour les enfants à partir de 8 ans. Avec des serveurs basés en France, Vikidia fonctionne dans plusieurs langues, notamment le français, l’italien, l’espagnol, l’anglais, le portugais, le basque, l’arménien, l’allemand, le catalan, le sicilien, le russe, le grec et l’occitan. Avec un total de plus de 10 millions de pages vues par mois, Vikidia est une ressource importante pour les jeunes apprenants du monde entier.

Le site est basé sur une pile LAMP Mediawiki, mais la version actuelle de Mediawiki est dépassée et nécessite une mise à jour. L’association Vikidia (de droit français loi 1901) sollicite donc des propositions pour un service de développement logiciel afin de mettre à jour son Mediawiki à la version 1.39.

2. Présentation de l’association Vikidia

L’association Vikidia détient et héberge le site internet Vikidia. C’est une association de type loi 1901, créée en 2011, qui a pour but d’assurer la promotion, le maintien, le développement du site Vikidia en différentes langues.

Au sein de l’association, le site web Vikidia vit grâce à des bénévoles assidus et motivés qui participent à son maintien et son développement. Au sein de cette petite équipe, Vincent Juhel sera le maître d’ouvrage de cette prestation et s’assurera ainsi de son bon déroulement. Mathilde Louis, chargée de projets de l’association, sera également une interlocutrice au cours de cette prestation, notamment pour la rédaction du contrat.

3. Description de l’existant

L’association Vikidia fait fonctionner son wiki open-source pour enfants sur une pile LAMP Mediawiki hébergée sur un seul serveur, avec docker-compose et plusieurs conteneurs. Le serveur est répliqué avec MySQL et la réplication des fichiers sur un autre serveur à des fins de sauvegarde uniquement. Des bénévoles se sont occupés des mises à jour de Mediawiki, mais en raison du nombre d’extensions et de la taille de la ferme wiki, la mise à niveau vers la dernière version est devenue trop complexe et risquée à gérer.

Tout le code, les Dockerfiles, la configuration et les scripts pertinents sont disponibles sur le dépôt git. Le but de cet appel d’offres est de fournir une branche de ce dépôt fonctionnant pour la mise à niveau du wiki sur un serveur de test. Le fournisseur retenu devra démontrer que la version mise à jour du site fonctionne correctement sur le serveur de test. Il est à noter que le déploiement en production n’est pas inclus dans cet appel à propositions et sera fait séparément.

4. Objectifs de la prestation

4.1 Attentes

L’objectif principal de cet appel à propositions est de mettre à niveau le logiciel Mediawiki existant de Vikidia de la version 1.31 à la version LTS la plus récente, 1.39. Bien que cela soit facultatif, le vendeur peut également fournir une version intermédiaire, la 1.35, afin de réduire les risques liés à la mise à niveau directe de la 1.31 à la 1.39. En parallèle, tous les paquets associés tels que PHP, MySQL, Apache, Nginx, Elastic, Varnish, Memcache et autres doivent également être mis à jour vers leur version LTS la plus récente compatible avec la version Mediawiki mise à niveau.

4.2 Points de vigilance et critères de succès

Pour s’assurer que la mise à niveau n’entraîne aucune régression, il convient de garder à l’esprit les points suivants :

  • Les journaux du serveur ne doivent pas afficher d’erreurs ou d’avertissements inexpliqués pour le client. De même, les journaux des navigateurs ne doivent pas afficher d’erreurs ou d’avertissements sur les pages de Vikidia.
  • Les fonctionnalités suivantes doivent continuer à fonctionner après la mise à niveau (liste non exhaustive) :
    • Lecteur audio et vidéo
    • Affichage des mathématiques (Mathoid)
    • Éditeur visuel
    • Accès web mobile
    • Extension Wiki2Map sur it.vikidia.org
    • Skins : Vector/Monobook/Timeless
    • Notifications sur Discord via l’extension DiscordNotifications
    • PhpMyAdmin
    • Envoi d’emails via le service PostFix
    • Téléchargement de fichiers (images et vidéos)
    • Synchronisation maître-esclave de MySQL, ainsi que synchronisation des fichiers de téléchargement entre les deux serveurs.
    • Disponibilité des dumps CirrusSearch sur dumps.vikidia.org
    • L’extension CirrusSearch doit fonctionner correctement, à la fois par l’indexation en direct, l’autocomplétion et la recherche effective dans l’interface.
    • Les fichiers robots.txt doivent rester corrects pour chaque langue.
    • L’espace www.vikidia.org (ne devrait pas être impacté)
    • Galette galette.vikidia.org (ne devrait pas être impacté)
    • Scripts d’installation et de sauvegarde
    • 5 scripts cronjobs dans /mediawiki/mediawiki-cron. Ils lancent l’archive des pages spéciales pour la version française, mettent à jour le nombre d’articles pour toutes les langues, sauvegardent le serveur, vident l’index CirrusSearch, et mettent à jour la liste de refus de StopForumSpam
  • La livraison doit intégrer tous les développements mineurs effectués sur la branche “master” jusqu’à la date de livraison.
  • La solution proposée doit fonctionner avec docker-compose sur Debian 10, car Vikidia fonctionne actuellement sur Debian 10 (bien qu’il soit possible d’utiliser des versions plus récentes dans les Dockerfiles).

Défis identifiés :

  • La mise à niveau de CirrusSearch avec Elastic s’est soldée par un échec sur la version 1.35 malgré les modifications apportées à la version d’Elastic.
  • L’éditeur visuel n’a pas fonctionné correctement malgré diverses tentatives. En particulier, l’éditeur redirigeait vers la page globale de Vikidia au lieu de l’article.
  • Mediawiki Signup retournait une erreur sur la version 1.35.
  • Il sera probablement nécessaire de créer de nouveaux services Docker dans le docker-compose.
  • Certains des schémas de table Vikidia dans MySQL ne semblent pas correspondre aux attentes actuelles de Mediawiki. Il peut être nécessaire de faire quelques “ALTER” pour que cela fonctionne sur les nouvelles versions (tout fonctionne bien maintenant, cependant).

4.3 Hors champ

La mission n’inclut pas les points suivants :

  • Le fonctionnement des gadgets (avec Extension:Gadgets) n’est pas garantie. Si un gadget n’est plus fonctionnel, le prestataire peut tenter de trouver un correctif sur Wikipedia s’il est disponible, ou le désactiver pour éviter tout impact négatif. Si nécessaire, un membre de l’équipe de Vikidia mettra ultérieurement le gadget à niveau en tenant compte des particularités du cas d’utilisation.
  • Les services obsolètes UDP2IRC et notre instance Matomo ne doivent pas être pris en compte
  • L’extension VikidiaGlobalStats est hors du champ de cette proposition et est développée par un bénévole de l’association.
  • La mission n’inclut pas le débogage des extensions qui pourraient ne plus être compatibles avec la nouvelle version de MediaWiki. Cependant, le vendeur doit tester et faire les adaptations nécessaires à la configuration. Le prestataire doit démontrer en quoi l’extension n’est pas compatible avec une référence sur le site web de l’extension.
  • La mission n’inclut pas la modification des pages Vikidia en raison des changements de syntaxe de l’extension, mais les actions requises doivent être listées dans les livrables.

5. Prestations attendues

5.1 Modalités

Vikidia fournira au prestataire un ou plusieurs serveurs de test pour effectuer les tests requis. Le serveur contiendra une version anonymisée de la ferme wiki et fonctionnera sous Debian 10.

Le prestataire doit soumettre un rapport d’avancement hebdomadaire, qui doit inclure les mises à jour et les éventuelles difficultés rencontrées. Par ailleurs, une réunion hebdomadaire sera organisée avec le point de contact technique de Vikidia et le développeur du vendeur. Le prestataire doit partager ses progrès sur le dépôt git, même s’il est instable.

En cas de difficultés pendant le projet, le prestataire doit collaborer avec le point de contact technique de Vikidia pour déterminer comment contourner, ignorer ou prioriser le problème par rapport aux autres travaux. L’assistance technique sera fournie par Vikidia via le point de contact.

5.2 Livrables

  • Une branche git avec une demande de fusion “Merge Request”, avec des commits propres, sur le dépôt Framagit
  • Incluant la documentation mise à jour
  • Un environnement testé sur la machine virtuelle fournie, avec les scripts de mise à niveau exécutés
  • La liste des tests effectués par le fournisseur sur l’environnement de test
  • Une liste des régressions observées, des gadgets ou extensions désactivés, ou d’autres changements notables
  • Une liste des modifications requises sur les wikis (comme la désactivation des gadgets)
  • La procédure de mise à jour de l’environnement de production, ainsi que la liste des opérations nécessaires (dans le dossier /Documentation)

Notez que la mise à jour de l’environnement de production n’entre pas dans le cadre de cet appel à propositions.

6. Calendrier

Enregistrement préalable des candidats : 15 mars 2023

  • Date butoir de candidature : 20 mars 2023
  • Annonce de la sélection des candidats : 27 mars 2023
  • Signature du contrat avec le fournisseur : 31 mars 2023
  • Début du projet et des réunions hebdomadaires : 1er avril 2023
  • Livraison du projet : 30 avril 2023
  • Tests d’acceptation sur le serveur de test :
    • Premier test d’acceptation par le point de contact technique : 8 mai 2023
    • Test d’acceptation par les volontaires de Vikidia : 15 mai 2023
  • Déploiement en production : 31 mai 2023
  • Support éventuel en cas de problèmes non identifiés : 60 jours après le déploiement en production

En cas de retard dans la livraison du projet par le vendeur, Vikidia se réserve le droit de réclamer une pénalité équivalente à 1% du montant total du contrat par jour de retard. Si le retard dépasse 20 jours ouvrables, Vikidia se réserve le droit de résilier le contrat de manière unilatérale et d’exiger le remboursement des sommes déjà versées en
réparation du préjudice subi. L’acompte peut être conservé par Vikidia à titre d’indemnisation en cas de résiliation unilatérale du contrat en raison d’un retard du vendeur.

7. Modalités de suivi

Le fournisseur est censé fournir une assistance pendant le déploiement de la mise à jour dans l’environnement de production, ainsi que pour corriger tout problème qui pourrait survenir pendant une période de 60 jours après la livraison.

8. Modalités de sélection du prestataire

8.1. Prérequis

Afin de garantir la sécurité de notre code et de nos données, les candidats qui souhaitent soumettre une proposition pour ce projet de développement logiciel doivent être enregistrés et approuvés par l’Association Vikidia. Pour s’inscrire, le candidat doit fournir un accord de confidentialité signé, ainsi que des documents identifiant son organisation. Les candidats doivent également divulguer tout conflit d’intérêt potentiel, y compris tout engagement actuel ou passé avec d’autres services qui utilisent ou sont liés à Mediawiki, ou tout service lié au contenu pour enfants. Seuls les candidats enregistrés auront accès au serveur de test et au dépôt de code nécessaires pour préparer correctement leur proposition. L’enregistrement préalable du candidat est nécessaire pour qu’il soit pris en compte dans cet appel à propositions. Les candidats doivent envoyer leur inscription à call-for-proposal@vikidia.org avant le 15 mars à 12h, ainsi que leurs comptes sur Framagit (les emails sont acceptés, même s’ils ne sont pas entièrement signés).

 Télécharger :

Envoyer les documents signés à call-for-proposal@vikidia.org
Date butoir : le 15 mars à 12h00 UTC+1

8.2. Sélection

 Un comité de sélection aura pour mission de sélectionner le prestataire en fonction des critères d’évaluation suivants :

  • Expérience et expertise démontrées dans les domaines pertinents, notamment
    Mediawiki, Docker et d’autres technologies pertinentes.
  • Prix compétitif pour le travail proposé.
  • La capacité de réaliser le projet dans les délais impartis.

Chaque proposition sera évaluée sur la base des critères ci-dessus, et le candidat retenu sera sélectionné en fonction de sa capacité à répondre à ces exigences.

9. Modalités de paiement

  • 30% d’acompte à la signature du contrat
  • 50% à la fin des tests d’acceptation sur le serveur de test
  • 20% 60 jours après le déploiement de la production et une fois le support terminé

10. Propriété et licence

Le code développé dans le cadre de ce projet sera la propriété exclusive de l’Association Vikidia, et devra faire l’objet d’une licence open source appropriée. Le vendeur s’engage à ne pas incorporer de code qui ne soit pas sous licence open source ou pour lequel le vendeur ne dispose pas des droits nécessaires. Le vendeur s’engage à fournir à Vikidia toute la documentation et les informations nécessaires pour lui permettre d’enregistrer et de conserver la propriété intellectuelle. Tout droit de propriété intellectuelle antérieur, le cas échéant, lié au travail du vendeur doit être clairement identifié par écrit et communiqué à l’association Vikidia.

Contact

Adresser les offres à l’adresse suivante : call-for-proposal@vikidia.org

Pour toute demande de précisions techniques, veuillez contacter
Vincent Juhel
Email : vincent.juhel@vikidia.org
Discord: plyd#1150

Pour toute demande de précisions administratives, veuillez contacter
Mathilde Louis
Email : mathilde.louis@vikidia.org
Telephone : +33 6 23 01 49 91

Offre publiée le 06 mars 2023.

Top