Bossie Awards 2014 #2 – Outils de développement d’applications

Publié le 11 octobre 2014 par Edeation @edeation

Je vous parlais de la publication des Bossie Awards 2014 la semaine dernière. Voici cette semaine la suite ; après les applications, place aujourd’hui aux outils de développement d’applications, qui fournissent de loin le plus gros contingent des projets open source (42 sur un total de 130). Ce billet n’offre qu’un panorama des projets, renvoyant les plus curieux aux projets eux-mêmes, qui sont pour la plupart bien documentés. Certains des projets listés ici feront par ailleurs l’objet de billets spécifiques ultérieurement.

On commence par les bibliothèques, les paquets et les gestionnaires de paquets. Parmi les bibliothèques graphiques JavaScript permettant l’affichage de données numériques sous une forme graphique et dynamique, on trouve d’abord jQuery, qu’on ne présente plus, mais aussi D3 (Data-Driven Documents, successeur de Protovis) qui est un outil de visualisation de données dans des documents web, ainsi que Famo.us, qui est le seul framework Javascript incluant un moteur de rendu 3D open source entièrement intégré avec un moteur d’animation 3D (pouvant ainsi restituer DOM, Canvas, ou WebGL). Notons également Backbone.js, une bibliothèque Javascript légère avec une interface RESTful JSON et un modèle MVP. On remarque également un certain renouveau dans le domaine des éditeurs, avec des projets comme Atom et Brackets. Dans un autre registre, on trouve Vagrant, qui se définit comme un wrapper, écrit en Ruby, lié à VirtualBox dans un premier temps mais qui travaille maintenant avec d’autres logiciels de virtualisation tels que VMware. Enfin du côté des installateurs/désinstallateurs, on trouve Homebrew, un gestionnaire de paquets écrit en Ruby pour Mac OS X (annoncé comme le « The missing package manager for OS X »).

Les choses avancent aussi dans l’écosystème des feuilles de styles. On y trouve Less (Leaner CSS), qui étend CSS en ajoutant des comportements dynamiques comme des variables, des mix ins, des opérations, des fonctions, et beaucoup d’autres techniques qui vous permettent de faire du CSS de façon plus maintenable, personnalisable et évolutive. Dans le même registre, Sass (Syntactically Awesome Style Sheets) est un métalangage CSS (interprété en CSS), qui ajoute des héritages, des variables, des emboîtements, des mix-ins…

Dans le domaine des frameworks et des EDI, il y a aussi beaucoup de beaux projets. Infoworld cite d’abord Node.js, une plateforme logicielle événementielle orientée vers les applications réseau devant pouvoir monter en charge, en permettant aux développeurs d’écrire du Javascript de façon robuste aussi bien côté serveur que côté client. Citons ensuite Express, un framework d’applications Web Node.js minimal et flexible, fournissant un ensemble robuste de fonctions pour construire des applications web de toute sorte. Ensuite, Koa est un nouveau framework Web, autoproclamé « Next generation web framework for node.js » par l’équipe d’Express, qui a pour but d’être une base plus petite, plus expressive et plus robuste pour des applications Web et des API. Dans le même registre et développé par Google, on trouve aussi AngularJS, un framework JavaScript open-source ayant pour but de simplifier la syntaxe javascript, tout en lui ajoutant de nouvelles fonctionnalités, et en utilisant la bibliothèque open source jQuery. On trouve également Play, un framework d’applications web écrit en Scala et Java ; mais aussi Apache Cordova (développé par la Fondation Apache), un framework permettant de créer des applications mobiles pour différentes plateformes (Android, iOS, Windows 8…) en HTML, CSS et JavaScript. Du côté du testing, on trouve Appium, un framework d’automatisation de test pour des apps mobile hybrides, ainsi que Karma, issu de l’équipe de développement d’AngularJS, qui est un lanceur de tests automatisés supportant tous les navigateurs de Firefox à Internet Explorer 6. Autre découverte, mais plutôt du côté de l' »extreme programming », Jenkins, un framework d’intégration continue (fork de l’outil Hudson) écrit en Java, fonctionnant dans un conteneur de servlets tel qu’Apache Tomcat, ou en mode autonome avec son propre serveur Web embarqué. NetBeans est, quant à lui, un environnement de développement intégré comprenant toutes les caractéristiques d’un EDI moderne et supportant Java, Python, C, C++, JavaScript, XML, Ruby, PHP et HTML… Enfin, en hors-catégorie, Infoworld mentionne le vénérable projet Eclipse qui, dans sa dernière version Luna, supporte désormais officiellement Java 8 (je rappelle qu’Eclipse fournit à la fois un environnement de développement intégré, des frameworks, et un atelier de génie logiciel complet permettant de modéliser, concevoir, tester, configurer, faire un reporting…).

Dans le domaine des langages et métalangages, l’activité de la communauté open source est également très dense. Commençons par CoffeeScript, un langage de programmation qui se compile en JavaScript, et qui est inspiré par Python, Ruby et Haskell afin d’améliorer la sobriété et la lisibilité du JavaScript. TypeScript (développé par Microsoft) est, quant à lui, un langage de programmation ayant pour but de simplifier la création d’applications web, et qui peut être vu comme un sur-ensemble de JavaScript (transformé en JavaScript pendant la compilation). On trouve ensuite Go (développé par Google), un langage de programmation compilé et concurrent inspiré de C et Pascal, qui a pour but d’améliorer la rapidité de la compilation et de l’exécution. Infoworld cite ensuite l’incontournable Java, dont la nouvelle version 8 offre de nouvelles fonctionnalités, des performances accrues et des corrections de bugs, pour améliorer l’efficacité de développement et d’exécution des programmes Java. Dans le même écosystème, on trouve Groovy, un autre langage de programmation orienté objet destiné à la plateforme Java (entièrement compatible avec la JVM), utilisant une syntaxe très proche de Java mais aussi inspiré de Python, Ruby et Smalltalk. Python et Ruby sont d’ailleurs aussi « nominés », et on aurait été étonné du contraire (je rappelle que ce sont des langages de programmation orientés-objet comparables à Perl ou Java). On trouve ensuite Scala, un langage de programmation multi-paradigme développé à l’EPFL pour exprimer les modèles de programmation courants dans une forme concise et élégante, tout en pouvant être « mis à l’échelle » (d’où son nom), comme un métalangage. On a aussi F♯, développé depuis 2002 par Microsoft à partir du langage OCaml, qui est un langage de programmation fonctionnel, impératif et orienté-objet pour la plate-forme .NET. Ensuite Clojure est un langage de programmation fonctionnel issu de Lisp (en tant que dialecte), mais orienté vers la programmation concurrente et adapté à la plateforme Java. Mentionnons enfin Dart (anciennent Dash), un langage de programmation web développé par Google pour remplacer JavaScript.

Dans le domaine du versioning, Git et Mercurial sont des logiciels de gestion de versions décentralisé respectivement développés par Linus Torvalds et Matt Mackall. Mercurial est plus facile à prendre en main, là où Git a une plus grande amplitude d’utilisation, pouvant aussi bien convenir aux petits et aux grands projets. Autour du système Git, on trouve aussi GitLab, un clone de GitHub écrit comme ce dernier en Ruby.

Dans le domaine du cloud computing, on trouve OpenShift, une plateforme en tant que service (PaaS) de cloud computing écrit en Ruby, conçue pour fournir en libre service un déploiement rapide de langues communes, de bases de données, de framework Web et d’applications. Cloud Foundry est une autre PaaS de cloud computing développée par VMware, mais qui dispose d’une forme propriétaire à travers Pivotal Software, une initiative indépendante fondée par VMware.

Enfin je finis avec les projets plus singuliers. Citons ainsi Jq, un nouveau processeur de lignes de commande JSON très flexible et très léger, qui est annoncé avoir un langage de requête naturel. Mais aussi HHVM (HipHop Virtual Machine), qui est un compilateur, i.e. une machine virtuelle open source conçue pour exécuter des programmes écrits en Hack et PHP. Enfin Infoworld cite Docker, un conteneur (ou un isolateur, ou encore un système de cloisonnement) développé en Go, qui permet d’isoler et limiter l’utilisation des ressources de type processeur, mémoire, disque, etc.

Voilà, si vous avez suivi, cela fait au total 42 projets open source ! Pour en savoir plus sur les outils de développement d’applications des Bossie Awards 2014: Bossie Awards 2014 : The best open source application development tools