# Miranda IM

Miranda ou Miranda IM est un logiciel client libre de messagerie instantanée multi-protocoles pour Windows, distribué gratuitement sous la licence libre GNU GPL.
Il permet de se connecter (par plugin) aux réseaux ICQ, AIM, MSN, IRC, Yahoo, Jabber, Gadu-Gadu, Tlen.pl, Skype, Netsend, Novell GroupWise, Battle.net, Google Talk, Facebook, Twitter, Omegle et d'autres.
Note : le protocole Skype étant propriétaire et fermé, il n'est pas réellement implémenté dans Miranda, il s'agit d'un lien (wrapper) vers le logiciel Skype, ce qui nécessitera donc son installation et son lancement en parallèle.
Originellement appelé Miranda ICQ et présenté comme une alternative au client ICQ officiel, il s'est par la suite développé pour gérer de plus en plus de réseaux par l'intermédiaire de nombreux plugins.

## Fonctionnalités

Outre ceux permettant de se connecter à d'autres réseaux, Miranda dispose d'un nombre très important de plugins (près de 500). Ceux-ci permettent de lui ajouter de multiples fonctions ne relevant pas de la messagerie instantanée comme la surveillance d'une boîte de courrier électronique (utilisant POP3), l'affichage de la météo, la surveillance de fils RSS, etc. Un plugin appelé MBot permet également à Miranda d'interpréter des scripts PHP.
D'autre part, de nombreux sets d'icônes, d'émoticones, de skins et autres permettent de personnaliser l'apparence de Miranda.
La partie addons du site officiel de Miranda référence tous les plugins existants.

## Versions

Rien qu’en se basant sur les versions proposées par les développeurs, on distingue six versions différentes de Miranda IM auquel s'ajoute le Pack FR proposé par la communauté francophone.

### Unicode ou Ansi

Le premier critère de choix de sa version de Miranda concerne le codage des caractères. Le système Unicode est le plus récent et le plus complet car il permet de prendre en charge les caractères spéciaux comme les alphabets non latins tels que l’arabe ou l’hébreu. Mais le choix dépend aussi de la version de Windows sur lequel sera installé Miranda :
* Ansi : Windows 95, 98, Me
* Unicode : Windows 2000, XP, Vista, 7, 8, 8.1, 10
Outre le choix de l’installation, il sera important de veiller à bien choisir la bonne version des plugins associés. Par défaut, Miranda peut lire les plugins Ansi avec toutes les versions (Ansi et Unicode) mais il lui est impossible de gérer des plugins Unicode avec un core Ansi. Enfin certaines versions sont dites combinées : elles peuvent être utilisées indifféremment sur les deux cores (Ansi et Unicode).

### Stable ou Nightly build

En marge de la version stable, les développeurs proposent une version de test ou nightly build. Cette version de test permet d’implanter progressivement les nouvelles fonctionnalités prévues par la roadmap. Le nombre de builds publiés successivement dépend des bugs et autres problèmes rencontrés par ses utilisateurs ainsi que de la mise en place des nouvelles fonctionnalités. Une fois ces dernières installées et les bugs majeurs résolus, les builds passent en Preview Release (PR). Il s’agit alors de corriger les bugs résiduels avant de proposer la version stable de Miranda IM. Là aussi le nombre de PR dépend de la capacité des développeurs à résoudre les problèmes.
Attention : en tant que versions de test, les nightly builds et les Preview Release sont des versions qui peuvent s'avérer instables, il est donc conseillé de sauvegarder le répertoire Miranda.

### Exécutable ou archive

L’exécutable est le format par défaut dans lequel est proposée la version stable de Miranda. Elle offre une solution simple d’installation pour le débutant. Le module d’installation permet en outre de choisir les protocoles natifs que l’on désire installer ainsi que les raccourcis que l’on veut. L’archive au format .zip est au contraire une solution rapide d’installation puisqu’il suffit de dézipper l’archive pour installer Miranda. Cette solution s’avère aussi pratique dans le cas de mise à jour.

### Fichier de traduction FR

Distribué initialement en anglais, Miranda peut être traduit au moyen d’un langpack. Le fichier langpack_francais peut être téléchargé indépendamment depuis le site addons.miranda.

## Historique
### Miranda NG

* En mai 2012, Miranda IM est forké pour donner naissance à Miranda NG (Nouvelle Génération). Les raisons sont des divergences de points de vue au sein de l'équipe de développement et le rythme de développement de Miranda IM qui avait ralenti ces derniers temps. Les principales différences entre le client original et le fork sont: la migration vers le compilateur VS2010 abandonnant ainsi le support de la version ANSI, la migration des codes sources du noyau et des nombreux plugins vers un repertoire unifié afin de faciliter le développement et les mises à jour.
* Le 7 novembre 2017, la version 0.95.7 est disponible en version stable, avec comme principale nouveauté, la migration vers le compilateur VS2017 tout en conservant la compatibilité avec Windows XP. 30 bogues ont aussi été corrigés.
* À la suite de la sortie de la version 0.95.8 du 4 mai 2018, Miranda NG implante un nouveau pilote pour la gestion de la base de données, libmdbx qui remplace donc dbx_mmap utilisé depuis les débuts de Miranda IM. Cela facilite l'indexation des évènements et des contacts pour les protocoles tels que Facebook, Skype et Discord.

### Version 0.10.x

La version 0.10 de Miranda IM a été distribuée le 18 juillet 2012. Elle apporte des améliorations à Miranda IM 0.9.x, comprenant un support amélioré pour les différents langages et une meilleure prise en charge réseau.

### Version 0.9.x

La version 0.9 de Miranda IM a été distribuée le 24 août 2010. Elle apporte un grand nombre de nouvelles fonctionnalités visant à améliorer le support Unicode et une amélioration globale des réseaux. C'est aussi la première version Miranda IM à proposer une version 64-bit « officielle ».

### Version 0.8.x

L'outil dbtool a été amélioré grâce à la fusion avec dbtool plus, elle permet une accélération des processus et l'ajout d'une fonction de test de viabilité de la base de données. L'implantation de netib permet maintenant aux plugins tiers de pouvoir gérer les logs de communication.
Cette version 0.8.x gère la gestion simultanée de plusieurs comptes par protocoles sans avoir à dupliquer le plugin concerné. La gestion des plugins s'est amélioré par la prise en charge obligatoire de l'UUID, sans cela les plugins ne sont pas reconnus par le core de Miranda IM. Les raccourcis ont été déplacés des plugins des clist vers le core pour plus de simplicité$^,$.

## Plugins

La grande force de Miranda réside dans ses plugins qui permettent d’étendre ses capacités. Ils se présentent sous la forme de fichiers.dll que l’on place dans le dossier Miranda IM\plugins. Certains d’entre eux nécessitent des dépendances pour être utilisés comme des fichiers secondaires ou des skins, d’autres enfin sont nécessaires au bon fonctionnement de Miranda (c’est le cas des plugins du core). Comme indiqué précédemment, les plugins peuvent être proposés sous 2 formes Ansi et Unicode, il est donc important de bien choisir sa version. Quelquefois la version unicode n’existe pas, il faut alors se rabattre sur la version Ansi mais certaines versions sont dites combinées : elles peuvent être utilisées indifféremment sur les deux cores. Il est important de veiller à ce que deux plugins aux fonctions identiques ne soient pas activés : soit le core effectue automatiquement la désactivation de l’un d’eux soit l'entrée est dupliquée.

### Les plugins de service

Ces plugins ne sont utiles qu’en tant que complément pour d’autres plugins. C’est le cas pour certains plugins du core comme avs.dll (gestion des avatars), advaimg.dll (gestion des images PNG) ou chat (gestion des chats). D’autres plugins dit de « service » offrent la possibilité de mieux gérer Miranda IM :
* CrashReport édite un fichier .txt après un crash de Miranda IM qui indique les plugins en cause
* Database Editor++ permet d'accéder et de modifier la base de données (profil.dat)
* Updater (Ansi et Unicode) gère la mise à jour automatique des plugins exceptés ceux du core et l'exécutable
* VersionInfo permet de rassembler dans un ficher txt la liste des plugins et des informations annexes sur le core

### Base de données

L’intégralité de l’historique, des conversations et des paramètres de configurations sont enregistrés dans le profil (fichier.dat) qui sert de base de données. La lecture et l’écriture de ce fichier s’effectuent via un plugin dédié, il en existe deux variantes : dbx_3x (Miranda database driver) et dbx_mmap (Miranda mmap database driver), actuellement cette dernière est privilégiée dans le core des builds 0.7.0 car plus rapide et plus fiable.
Par défaut le plugin est présent dans le core, mais il est possible de le remplacer par des mods incluant la sauvegarde automatique du profil et son chiffrement.

### Liste de contacts

L’affichage de la Clist dépend d’un plugin dont il existe quatre principales variantes :
* clist_classic (Classic contact list) : le plugin initial de Miranda IM est aujourd'hui largement remplacé. Il ne gère pas les avatars et la transparence mais on peut définir une image pour l'arrière-plan.
* clist_modern (Modern Contact List) : sûrement le plus utilisé et celui qui dispose du plus grand nombre de skin.
* clist_nicer (CList Nicer+)
* clist_mv (MultiWindow Contact List)

### Fenêtre de conversation

À l’image de la Clist, la fenêtre de conversation bénéficie d’une évolution notable des plugins avec pas moins de trois versions différentes :
* SRMM est une version basique ne supportant pas la gestion des onglets, ni l’affichage des avatars.
* TabSRMM offre un grand éventail de possibilités grâce à sa richesse en options. Il supporte de plus la customisation par l’intermédiaire de skins adéquates (pour modifier le contenu mais aussi les conteneurs) ou du plugin IEView. Enfin le plugin supporte les notifications par popups.
* Scriver est un compromis entre les fonctionnalités principales de tabSRMM (gestion des onglets, des avatars, support de IEView) et la facilité d’utilisation grâce à un menu d'options plus dépouillé.

### Popups

Un système de notification d’évènements sous forme de popups a été créé pour permettre à l’utilisateur d’être informé des évènements liés aux comportements de ses contacts (changements d'état…) ou des plugins. Il existe deux plugins : Popup Plus et YAPP.
* Le premier est une évolution de plugin originel Popup. Il gère les skins et offre des fonctions avancées.
* Le second se veut plus simple d’utilisation en réduisant le nombre d’options. De plus il ne supporte pas les skins.
Depuis quelque temps maintenant, les développeurs sont en discussions pour harmoniser les API et simplifier l’utilisation des popups par les autres plugins. En effet ces plugins ne gèrent nativement que les informations de connexion aux protocoles. Pour le reste des informations (mail, message, changement d’état d’un contact…), les plugins de popups se comportent comme des plugins de service en servant de support pour afficher une information.

### Info-bulles

Outre les popups, il est possible d’obtenir des informations sur les contacts via des info-bulles qui apparaissent au survol de la souris sur le contact dans la Clist ou sur les onglets de la fenêtre de conversation. Ces bulles sont aussi par un plugin (Tipper, mToolTip et Tooltip Plus). La configuration des info-bulles nécessite de maîtriser la syntaxe du plugin qui change entre les trois solutions : mToolTip, le plus ancien, est le plus simple d’utilisation mais l’absence de gestion des avatars en PNG tend à le faire remplacer par Tipper/Tipper-YM plus customisable mais aussi plus complexe dans la syntaxe. Enfin le troisième plugin, il se distingue par une syntaxe proche de celle de Foobar2000 tout en supportant celle de tipper via le plugin tooltiper et supporte les skins pour Popup Plus.

## Protocoles

Miranda peut se connecter à un grand nombre de protocoles libres ou propriétaires. Ces derniers sont gérés par des plugins qui se distinguent des autres plugins par le fait qu’ils peuvent être dupliqués pour pouvoir gérer plusieurs comptes sur un même protocole. Les protocoles les plus utilisés sont présents par défaut dans les builds officiels. Pour les autres protocoles, il sera nécessaire de les récupérer sur la page addons par exemple. Cette configuration permet ainsi de ne conserver que les protocoles utilisés et d’alléger sa configuration.
En ce qui concerne les protocoles propriétaires, ces derniers ont développé des fonctionnalités supplémentaires mais elles ne sont pas implantées ou sont gérés par des plugins complémentaires. Voici ci-dessous un tableau des fonctions prises en charge ou non par protocole :
(Tableau à compléter) :
| Protocole | Supporté | Non supporté |
| AIM | Avatar Transfert de fichiers | |
| ICQ | Avatar Transfert de fichiers X-status | |
| IRC | Prise en charge UTF-8 Transfert de fichiers Multi-serveurs États (En ligne/Absent) | |
| Jabber | Avatar Salons de discussions Services/Transports Moods | |
| WLM | Avatar Transfert de fichiers Emoticônes personnalisées (réception seul.) Messages hors ligne Ajout / Suppression de contacts sur le serveur Wizz | Jeux WLM Clin d'œil |
| Skype | | Requiert le logiciel Skype |
| Xfire | Avatar Détection du jeu lancé | |
| Yahoo | Avatar Synchronisation avec le carnet d'adresses Messages hors ligne Ajout / Suppression de contacts sur le serveur | Jeux Yahoo LAUNCHcast Radio VoIP |