Plugin
En informatique, un plugin ou plug-in, aussi nommĂ© module d'extension, module externe, greffon, plugiciel, ainsi qu'add-in ou add-on[1], est un logiciel conçu pour ĂȘtre greffĂ© Ă un autre logiciel Ă travers une interface prĂ©vue Ă cet effet, et apporter Ă ce dernier de nouvelles fonctionnalitĂ©s.
Le terme plugin provient de la métaphore de la prise électrique standardisée, et souligne le fait que le logiciel hÎte est conçu pour accueillir des logiciels étendant ses fonctionnalités, par opposition aux ajouts non prévus initialement apportés à l'aide de correctifs (patchs).
La plupart du temps, un plugin :
- ne peut pas fonctionner seul, car ses fonctionnalités ne prennent sens qu'au sein du logiciel hÎte ;
- peut ĂȘtre mis au point sans concertation avec les auteurs du logiciel hĂŽte.
Terminologie
Le terme plugin ou plug-in (se prononçant /ËplÊg.ÉȘn/[2]) vient du verbe anglais to plug in qui signifie « brancher », composĂ© de plug (prise, fiche, bouchon) et de in (dans).
Ce terme Ă©tant un anglicisme, de nombreux termes français ont Ă©tĂ© proposĂ©s pour le remplacer : module dâextension (terme recommandĂ© en France par la DGLFLF[3] et par la CommunautĂ© française de Belgique[4]), module externe, greffon (dont l'Ă©tymologie signifie stylet) ou encore plugiciel[5]. (terme proposĂ© par lâOffice quĂ©bĂ©cois de la langue française en 1996 et approuvĂ© par l'AcadĂ©mie française en 2009). La forme abrĂ©gĂ©e « extension » acceptĂ©e par la DGLFLF peut conduire Ă des confusions avec l'extension de nom de fichier, ou l'extension de logiciel, qui ont d'autres significations.
Objectifs
Tous les logiciels ne sont pas capables de fonctionner Ă l'aide de plugin, le logiciel en question doit ĂȘtre conçu pour pouvoir communiquer avec des programmes extĂ©rieurs selon certaines rĂšgles que ces derniers doivent respecter pour qu'ils puissent Ă©changer des informations. Les objectifs des auteurs choisissant de concevoir ce genre de logiciel est de pouvoir ajouter des fonctionnalitĂ©s sans avoir Ă tout reprogrammer et Ă©galement de permettre aux utilisateurs d'ajouter leurs propres fonctionnalitĂ©s de maniĂšre indĂ©pendante. IdĂ©alement, cette indĂ©pendance inclut la possibilitĂ© pour le logiciel principal d'Ă©voluer tout en restant compatible avec les plugins existants ; cette condition est cependant loin d'ĂȘtre toujours remplie.
Avantages
- Alléger le noyau de fonctionnalités secondaires, ce qui en allÚge la maintenance et diminue la surface de vulnérabilité aux attaques de sécurité.
- Modulariser le développement des fonctionnalités annexes en équipes indépendantes.
- Donner accĂšs, pour une mĂȘme fonction, Ă diffĂ©rentes solutions (chacune dans un plugin diffĂ©rent) : diffĂ©rentes implĂ©mentations ou algorithmes, diffĂ©rentes ressources mises en Ćuvre, diffĂ©rents publics, diffĂ©rents degrĂ©s de complexitĂ©, diffĂ©rents coĂ»ts (gratuit ou payant), etc.
- Avoir un aperçu concret d'une fonctionnalité qui sera ensuite éventuellement intégrée au logiciel principal dans une version améliorée.
Architecture logicielle modulaire
Le plugin peut aussi ĂȘtre la base dâune architecture logicielle modulaire comme câest le cas pour la plate-forme Eclipse et les bundles OSGi.
Dans les architectures logicielles statiques, la structure mise en Ćuvre est dĂ©finie avant le lancement du programme (par exemple, dans un fichier de configuration). Ă titre dâexemple, lâinterprĂ©teur du langage PHP peut charger des plugins (pour prendre en compte le format ZIP, pour permettre lâaccĂšs Ă une base MySQL, etc.) selon les besoins dĂ©crits dans le fichier dâinitialisation (php.ini).
Dans les architectures vĂ©ritablement dynamiques, câest lâapplication qui va elle-mĂȘme recenser les plugins prĂ©sents, bien souvent par examen de fichiers prĂ©sents dans un rĂ©pertoire dĂ©diĂ© aux plugins. Lâajout et la suppression dâĂ©lĂ©ments dans le rĂ©pertoire permet dâactiver ou de dĂ©sactiver les plugins correspondants. Certaines applications permettent le dĂ©marrage et lâarrĂȘt dâun plugin alors quâelles sont en fonctionnement. On parle alors de configuration Ă chaud ou hot-plug. Ces changements peuvent ĂȘtre dĂ©clenchĂ©s par lâutilisateur ou Ă lâoccasion dâun autre Ă©vĂšnement au sein de lâapplication. Toutefois, ce type dâarchitecture devient vite complexe du fait des dĂ©pendances qui peuvent exister entre les plugins. Pour illustrer le concept dâarchitecture dynamique, on peut considĂ©rer les systĂšmes dâexploitation oĂč les services systĂšmes sont comparables Ă des plugins ajoutĂ©s et retirĂ©s au noyau. On retrouve Ă©galement la notion de dĂ©pendances, par exemple au niveau du lien entre un service HTTP et un service TCP/IP.
Standalone
Certains plugins peuvent aussi ĂȘtre utilisĂ©s comme logiciel Ă part entiĂšre, on dit alors qu'ils sont Standalone.
Exemples
Navigateurs
Parmi les plus fréquents se trouvent ceux ajoutant les supports de certains formats dans les navigateurs :
- Adobe Flash pour les animations Flash, surtout au format SWF ;
- Java pour les applets Java, utilisant des fichiers au format class ;
- QuickTime pour certains formats de sons et de vidéos ;
- Google plugin pour la visualisation Google Earth.
Microsoft proposait jusqu'Ă Windows XP des powertoys, qui sont des plugins pour Microsoft Windows.
Une partie des modules pour les navigateurs Web comme Firefox ou Seamonkey (et autres de la famille Mozilla) sont souvent nommés comme étant des plugins mais ne le sont pas, il s'agit d'extensions.
Bureau
De nombreux logiciels pour la plateforme Gnome sont extensibles, via des plugins. Notamment, evince, eog, Nautilus et gedit, qui proposent tous une interface de programmation en Python pour ajouter des fonctionnalités au logiciel (de façon dynamique).
Production audio
Les logiciels de composition musicale ou production sonore, comportent différents systÚmes de plugins, tels que AU, DSSI, LADSPA, LV2 ou VST, permettant un nombre important de combinaisons. Des gestionnaires de systÚmes de plugins, permettent d'utiliser dans des logiciels ne supportant que certains types de plugins audio, les autres types de plugins.
Multimédia
Le lecteur multimédia VLC propose aussi une interface de programmation en Lua pour ajouter (dynamiquement) des fonctionnalités, comme le téléchargement automatique de sous-titres ou de paroles de chansons. Plus généralement, les lecteurs multimédia, audio et vidéo proposent généralement ce type de systÚmes pour gérer des nouveaux formats, différents types d'entrées (télécommande, réseau, etc) ou sortie (paroles de chanson, etc).
Plugin frameworks
Plusieurs frameworks permettent aux dĂ©veloppeurs dâajouter des plugins dans divers langages de programmation Ă leurs applications.
Pour le C++, il y a FxEngine Framework, qui permet le traitement de flux de données, et le framework Qt. Sur Delphi, le TMS Plugin Framework est supporté. Pour Java sont offerts deux plugins du projet Eclipse, soit le Java Plugin Framework (JPF) et le Rich Client Platform (RCP). Pour Python, on retrouve plusieurs options: Setuptools, Hive ERP Framework[6], Sprinkles et Envisage. On retrouve aussi beaucoup de frameworks pour .NET, comme Visual Assist, AL Platform, Mono Add-ins, Plux.NET[7] et Managed Extensibility Framework. Enfin, il y a aussi Symphony[8] pour PHP.
Notes et références
- (en) « Plug-in - software », sur Encyclopedia Britannica (consulté le ).
- (en) « Plug-in », sur lexico.com, Oxford English Dictionary (consulté le ).
- Commission dâenrichissement de la langue française, « module d'extension », sur FranceTerme, ministĂšre de la Culture (consultĂ© le ).
- « Banque de données terminologique, domaine informatique », Service de la langue française de la Communauté française de Belgique (consulté le ).
- « plugiciel », Grand Dictionnaire terminologique, Office québécois de la langue française (consulté le )
- (en) Tutorials Point, « Hive - Introduction », sur tutorialspoint.com (consulté le )
- (en) Markus Jahn, Markus Löberbauer, Reinhard Wolfinger et Hanspeter Mössenböck, « Plux.NET - A Dynamic Plug-in Platform for Desktop and Web Applications in .NET », sur ase.jku.at, (consulté le )
- (en) Symfony, « Jour 20 : Les Plugins (symfony 1.4 legacy version) », sur symfony.com (consulté le ).