Aller au contenu principal

Origines

Un peu d'historique : Mélodium prend ses racines dans la recherche sur l'étude de signal à l'Université du Québec à Montréal (UQÀM). Le besoin d'un outil permettant de l'analyse audio massive tout en utilisant des routines de très bas niveau amena à la conception d'une « première » version de Mélodium. À ce moment là, le projet était beaucoup plus proche d'un simple langage de configuration interprété par un moteur plus ou moins générique, tel que présenté dans ce mémoire.

Bien que techniquement très orienté et spécifique au besoin de traitement audio, ce projet expérimental fut le premier pas vers l'idée que la gestion de flux est une approche clé pour la conception et la résolution de beaucoup de problématiques logicielles. En parallèle, les expériences programmées avec ce prototype devaient pouvoir fonctionner sur des machines très hétérogènes, incluant des ordinateurs de bureau avec divers systèmes d'exploitation, et deux calculateurs aux architectures différentes ; le tout sur des matériels de diverses décennies.

Le problème n'était pas de supporter ce premier, ce deuxième, ou encore cet autre système ou architecture ; mais bien de concevoir quelquechose qui, par nature, serait portable vers n'importe quelle architecture matérielle ou logicielle hôte, avec le moins de friction et spécificités possibles. En d'autres termes, de briser les couches de complexité et supprimer les abstraction superflues de la vision développeur jusqu'aux mécanismes machine. D'anticiper à la conception que les systèmes peuvent avoir un unique cœur mais aussi des milliers, peuvent opérer sur des unités de base différents, peuvent avoir des fréquences d'exécutions variant de plusieurs ordres de magnitude ; que ces systèmes répondent à un besoin qui est ou qui fut, et existent simplement dans un contexte tels qu'ils sont.

Cette démarche a guidé le développement de Mélodium. Ne jamais considérer que l'exécution a lieu sur un système idéal, mais sur des ressources inhabituelles voir très limitées. Cela révèle dans le logiciel un très fort effet similaire à l'accessibilité sur le Web ou dans le monde en général : en concevant les choses sans présumer des capacités du système, elles sont rendues meilleures pour l'ensemble d'entre eux.