Suite au « feuilleton de l'été » se terminant à la rentrée par le licenciement économique de la plupart de ceux qui font la distribution en France (ex-employés de Edge-IT), la continuité de la distribution Linux ne semblait pas assurée pour quelques-uns malgré les assurances de la direction de Mandriva SA.
Mais c'est sans compter sur un soupçon de magie (des stocks de poudre verte ?).
Plusieurs anciens développeurs de Mandriva Linux, issus de la filiale Edge-IT, accompagnés de plusieurs contributeurs connus de Cooker, la version de développement de Mandriva Linux, ont décidé de créer un fork nommé... Mageia !
Loin d'être un projet lancé sur un coup de tête, c'est un projet mûri et assumé malgré les difficultés qu'un fork représente, aussi bien en terme de capacité à fédérer une équipe pour réaliser techniquement le projet, que pour attirer à soi une communauté d'utilisateurs.
Un point important du projet est que Mageia se veut une distribution communautaire indépendante d'une quelconque entreprise, même si des entreprises peuvent apporter leur soutien au projet. Ce fut un reproche fait à Mandriva Linux que d'être très dépendante de Mandriva SA que va tenter d'éviter l'équipe du projet Mageia.
Quant à la suite, il est aisé de penser que l'annonce du fork est la partie la plus facile puisque tout reste à mettre en place, des structures techniques pour la réalisation de la distribution elle-même, à l'organisation même du projet entre les différentes parties prenantes, même si on peut légitimement estimer que des idées circulent déjà.
Au final, si cette annonce est de nature à ouvrir de nouvelles perspectives à tous les amoureux de Mandriva Linux, il reste à voir ce que feront les utilisateurs. Resteront-ils fidèles à la marque Mandriva ou suivront-ils ceux qui faisaient en grande partie Mandriva Linux et qui vont faire Mageia ? Seul l'avenir le dira.
OxyRadio recherche des développeurs
Comme vous le savez, OxyRadio diffuse depuis plus de trois ans sur le web de la musique libre de diffusion, sous licences Creative Commons et Art Libre principalement.
Aujoud'hui, OxyRadio lance un grand appel à contribution de tous les développeurs le souhaitant (PHP5, Doctrine, PostgreSQL, Python), afin de finaliser les projets en cours et de commencer de nouveaux projets qui sont dans les cartons depuis de nombreux mois. Dans le cadre de ces projets, notamment celui de l'hébergement des Ogg de Jamendo, OxyRadio est actuellement en train d'intégrer ce catalogue sur la prochaine version du site.
Alors si vous souhaitez intégrer une équipe jeune, dynamique et qui souhaite faire avancer l'art libre sous toutes ses formes n'attendez plus et contactez-les. Vous pouvez utiliser le lien « Contacter OxyRadio » en bas de cette dépêche ou sur IRC :
Serveur : irc.freenode.net
Canal : #OxyRadio
Aujoud'hui, OxyRadio lance un grand appel à contribution de tous les développeurs le souhaitant (PHP5, Doctrine, PostgreSQL, Python), afin de finaliser les projets en cours et de commencer de nouveaux projets qui sont dans les cartons depuis de nombreux mois. Dans le cadre de ces projets, notamment celui de l'hébergement des Ogg de Jamendo, OxyRadio est actuellement en train d'intégrer ce catalogue sur la prochaine version du site.
Alors si vous souhaitez intégrer une équipe jeune, dynamique et qui souhaite faire avancer l'art libre sous toutes ses formes n'attendez plus et contactez-les. Vous pouvez utiliser le lien « Contacter OxyRadio » en bas de cette dépêche ou sur IRC :
Serveur : irc.freenode.net
Canal : #OxyRadio
Diaspora publié sur GitHub et une alpha annoncée pour octobre
Diaspora est un projet initié par quatre étudiants américains pour proposer un réseau social décentralisé et respectueux de la vie privée. Annoncé avec beaucoup de buzz à la mi-Avril, l'idée était de passer par le site Kickstarter pour financer le développement de ce qui était au départ un projet d'été. L'ampleur du phénomène a surpris tout le monde, puisque la récolte de fonds a dépassé les 200 000 dollars en un peu plus d'un mois.
C'est hier, mercredi 15 septembre, que les quatre développeurs ont dévoilé leur bébé, en publiant le code source (comme annoncé) sous la licence libre GNU AGPL 3.0. Le projet s'appuie sur un nombre important de briques opensource (Git, OpenSSL, Ruby, MongoDB pour ne citer qu'eux) et ambitionne de remplacer un jour Facebook.
C'est hier, mercredi 15 septembre, que les quatre développeurs ont dévoilé leur bébé, en publiant le code source (comme annoncé) sous la licence libre GNU AGPL 3.0. Le projet s'appuie sur un nombre important de briques opensource (Git, OpenSSL, Ruby, MongoDB pour ne citer qu'eux) et ambitionne de remplacer un jour Facebook.
Sortie de Cairo 1.10
Cairo, une bibliothèque graphique 2D, utilisée par Gtk, le moteur de Firefox, WebkitGtk, vient de sortir une nouvelle version majeure après une période de gestation de deux ans.
Sous le capot, Cairo 1.10 permet de viser plusieurs systèmes de sorties graphiques :
À noter que la sortie émulée en "Software" a été en grande partie reprogrammée et optimisée, tandis que la version OpenGL a été complètement reprogrammée. La version Direct2D, quant à elle, a été réalisée par l'équipe de Firefox et ne se trouve pas encore dans les dépôts officiels.
Au menu des nouveautés nous pouvons aussi citer :
Sous le capot, Cairo 1.10 permet de viser plusieurs systèmes de sorties graphiques :
- Officielles : Émulation Software / Xlib / Quartz / Win32 / Postscript / PDF / PNG / SVG.
- ou Expérimentales : XCB / BeOS / OS/2 / DirectFB / OpenVG / Qt / Skia / OpenGL / Direct2D.
À noter que la sortie émulée en "Software" a été en grande partie reprogrammée et optimisée, tandis que la version OpenGL a été complètement reprogrammée. La version Direct2D, quant à elle, a été réalisée par l'équipe de Firefox et ne se trouve pas encore dans les dépôts officiels.
Au menu des nouveautés nous pouvons aussi citer :
- cairo-trace : un système permettant d'enregistrer et relire dans un format lisible et compact toutes les commandes de dessin envoyées à Cairo. Cet outil a permis à l'équipe de Cairo d'optimiser les différentes sorties disponibles ;
- Le retour du format RGB16 ;
- La fusion de pixman_region_t et GdkRegion en cairo_region_t ;
- Une nouvelle API permettant de gérer l'accès au matériel (cairo_device_t)
EditableGrid disponible sous licence GPL
EditableGrid est une bibliothèque JavaScript permettant de créer des tables éditables. À l'origine, nous avons développé ce composant pour l'utiliser dans un projet interne. EditableGrid suscitant un certain intérêt, nous en avons factorisé le code afin d'en faire un composant indépendant, réutilisable dans d'autres projets. Nous avons décidé de publier le code source sous licence GPL.
Nous pensons que cette bibliothèque a atteint un niveau de maturité suffisant pour être utilisée en production. Une démo est disponible sur la (courte) page du projet.
EditableGrid n'est pas basée sur jQuery. Cependant, l'utilisation de la bibliothèque de John Resig est vivement recommandée, par exemple pour les callbacks Ajax ou pour développer ses propres validateurs et éditeurs de cellule.
Fonctionnalités principales :
Bien sûr, certaines fonctionnalités restent à implémenter, comme l'utilisation d'un datepicker pour le format date, la pagination côté client, le masquage de colonnes, etc. Nous tâcherons de réaliser tout cela prochainement.
Nous espérons que cette bibliothèque pourra être utile dans vos projets. Tous les commentaires et contributions sont naturellement les bienvenus !
Nous pensons que cette bibliothèque a atteint un niveau de maturité suffisant pour être utilisée en production. Une démo est disponible sur la (courte) page du projet.
EditableGrid n'est pas basée sur jQuery. Cependant, l'utilisation de la bibliothèque de John Resig est vivement recommandée, par exemple pour les callbacks Ajax ou pour développer ses propres validateurs et éditeurs de cellule.
Fonctionnalités principales :
- Chargement à partir d'un fichier XML ou rattachement à une table HTML existante ;
- Simplicité d'utilisation et intégration facile dans des applications web existantes ;
- Chaque colonne est typée (string, integer, double, boolean, url, email, date) ;
- Les cellules peuvent être éditées avec un éditeur adapté au type de la colonne (ex: checkbox pour boolean) ;
- Possibilité de déclarer une liste de valeurs possibles pour les cellules d'une colonne (statique ou en JavaScript) ;
- Gestion de l'unité, de la précision et des valeurs NaN pour les colonnes numériques ;
- Validateurs intégrés pour les colonnes de type integer, double, url, email et date ;
- Possibilité de brancher vos propres renderers, éditeurs et validateurs de cellules ;
- Tri des colonnes (adapté au type) en cliquant sur l'en-tête de colonne ;
- Binding PHP : construisez le tableau en PHP et laissez-le générer le fichier XML ;
- Filtrage du tableau ;
- Ajout et suppression de lignes ;
- Intégration de Open Flash Chart afin de dessiner des graphiques à partir des données du tableau (le graphique peut suivre en cas d'édition et de tri des données) ;
- Callbacks pour tous les événements: chargement, édition, tri, etc.
Bien sûr, certaines fonctionnalités restent à implémenter, comme l'utilisation d'un datepicker pour le format date, la pagination côté client, le masquage de colonnes, etc. Nous tâcherons de réaliser tout cela prochainement.
Nous espérons que cette bibliothèque pourra être utile dans vos projets. Tous les commentaires et contributions sont naturellement les bienvenus !
Sortie de Node.js v0.2.0
Node.js, dont le slogan est Evented I/O for V8 JavaScript, a pour but d'offrir un moyen simple d'écrire des applications réseau scalables. Le code est placé sous licence MIT.
Pour bien comprendre ce qu'est Node.js, je vous propose le cheminement suivant. Partons de V8, la machine virtuelle développée par Google qui permet d'interpréter du javascript. Ajoutons un modèle événementiel, similaire à EventMachine en Ruby ou à Twisted en Python. Cela tombe bien, en javascript, c'est assez naturel de procéder de cette manière : le javascript dans les navigateurs utilise déjà un modèle événementiel (les événements sont 'DOM chargé', 'touche pressée' ou encore 'clic de la souris'). C'est un bon début, mais le javascript ne possède pas de bibliothèque standard pour manipuler des fichiers ou faire des opérations réseau. Utilisons donc notre modèle événementiel pour ajouter des API qui permettent de faire ça de manière asynchrone. Une autre lacune de javascript est l'absence de moyen de charger une bibliothèque depuis un script, et comme on n'a pas spécialement envie de tout écrire dans un seul fichier, rajoutons donc une fonction require pour charger un autre script. Enfin, saupoudrons le tout avec quelques API utilitaires, un interpréteur interactif, et vous obtiendrez une bonne idée de la composition de Node.js.
Node.js permet ainsi de développer simplement des applications en javascript que l'on peut qualifier de server-side. Voici quelques exemples de ce que l'on peut faire avec Node.js :
La version 0.2.0 est sortie le 20 août et marque une première stabilisation du projet. Jusqu'à maintenant, les versions s'enchaînaient à un rythme soutenu (2 à 3 par mois), avec souvent des changements d'API et des problèmes de compatibilité divers et variés. Il est donc difficile pour les développeurs de bibliothèques de les maintenir, et pour les développeurs d'applications, de trouver les bonnes bibliothèques qui fonctionne avec la dernière version de Node.js. Cela devrait maintenant changer : Ryan Dahl a promis d'assurer la compatibilité de l'API pour les versions 0.2.x. Si vous souhaitez essayer Node.js, c'est donc le bon moment pour vous lancer !
Pour bien comprendre ce qu'est Node.js, je vous propose le cheminement suivant. Partons de V8, la machine virtuelle développée par Google qui permet d'interpréter du javascript. Ajoutons un modèle événementiel, similaire à EventMachine en Ruby ou à Twisted en Python. Cela tombe bien, en javascript, c'est assez naturel de procéder de cette manière : le javascript dans les navigateurs utilise déjà un modèle événementiel (les événements sont 'DOM chargé', 'touche pressée' ou encore 'clic de la souris'). C'est un bon début, mais le javascript ne possède pas de bibliothèque standard pour manipuler des fichiers ou faire des opérations réseau. Utilisons donc notre modèle événementiel pour ajouter des API qui permettent de faire ça de manière asynchrone. Une autre lacune de javascript est l'absence de moyen de charger une bibliothèque depuis un script, et comme on n'a pas spécialement envie de tout écrire dans un seul fichier, rajoutons donc une fonction require pour charger un autre script. Enfin, saupoudrons le tout avec quelques API utilitaires, un interpréteur interactif, et vous obtiendrez une bonne idée de la composition de Node.js.
Node.js permet ainsi de développer simplement des applications en javascript que l'on peut qualifier de server-side. Voici quelques exemples de ce que l'on peut faire avec Node.js :
- Node.js ircd, un serveur IRC ;
- How To Node, un blog parlant de Node.js ;
- Vows, un framework BDD ;
- Express, un framework web qui utilise les middlewares Connect.
La version 0.2.0 est sortie le 20 août et marque une première stabilisation du projet. Jusqu'à maintenant, les versions s'enchaînaient à un rythme soutenu (2 à 3 par mois), avec souvent des changements d'API et des problèmes de compatibilité divers et variés. Il est donc difficile pour les développeurs de bibliothèques de les maintenir, et pour les développeurs d'applications, de trouver les bonnes bibliothèques qui fonctionne avec la dernière version de Node.js. Cela devrait maintenant changer : Ryan Dahl a promis d'assurer la compatibilité de l'API pour les versions 0.2.x. Si vous souhaitez essayer Node.js, c'est donc le bon moment pour vous lancer !
Enlightenment Foundation Libraries 1.0.0 Alpha
Les EFL (Enlightenment Foundation Libraries) sont un ensemble de bibliothèques dédiées au graphisme, très optimisées, et utilisées entre autres pour l'écriture du gestionnaire de fenêtre Enlightenment, du media player Enna, ainsi que d'autres applications : Enki (gestionnaire de photos), Eyelight (outil de présentation). En développement depuis plusieurs années, elles viennent de sortir en version 1.0.0 Alpha. L'API est donc considérée comme stable. La priorité est la correction des erreurs, avec comme but la sortie en version 1.0.0 finale.
GNOME Census : qui crée GNOME ?
La société Neary Consulting, spécialisée dans l'étude des relations au sein des communautés des logiciels libres, a publié le rapport GNOME Census détaillant qui fait quoi pour le développement de cet environnement de bureau. Autrement dit, ce rapport analyse comment les développeurs participent au projet et comment ce dernier fonctionne en général.
Les personnes de Neary Consulting ont cherché à répondre aux questions suivantes : « Quelle est la taille de la communauté GNOME ? », « Combien de personnes y participant sont salariées ? », « Qui crée toutes ces applications et pourquoi ? ». Le rapport est disponible en libre consultation sur le site web de l'agence et est sous licence CC-by-SA 3.0.
On peut y lire un bref historique du projet GNOME clarifiant par ailleurs comment les spécifications sont définies. Ainsi, la GNOME Foundation a été créée en 2001 pour s'occuper de l'infrastructure et de la gestion administrative du projet, donc de tout ce qui concerne les interactions avec divers partenaires et la recherche de financements. La GNOME Foundation est élue par les membres du projet et toute personne active peut faire partie de son Conseil d'Administration ; depuis 2008, Stormy Peters en est la présidente. Cela étant, ce sont les développeurs et mainteneurs qui définissent le cahier des charges technique. Enfin, au sein de cette fondation, il existe un organe appelé advisory board (une commission consultative, on dirait en français) où siègent des représentants d'organisations et entreprises en lien avec le projet ; parmi les participants actuels, on trouve des membres de la FSF, Debian, Canonical, etc.
Les personnes de Neary Consulting ont cherché à répondre aux questions suivantes : « Quelle est la taille de la communauté GNOME ? », « Combien de personnes y participant sont salariées ? », « Qui crée toutes ces applications et pourquoi ? ». Le rapport est disponible en libre consultation sur le site web de l'agence et est sous licence CC-by-SA 3.0.
On peut y lire un bref historique du projet GNOME clarifiant par ailleurs comment les spécifications sont définies. Ainsi, la GNOME Foundation a été créée en 2001 pour s'occuper de l'infrastructure et de la gestion administrative du projet, donc de tout ce qui concerne les interactions avec divers partenaires et la recherche de financements. La GNOME Foundation est élue par les membres du projet et toute personne active peut faire partie de son Conseil d'Administration ; depuis 2008, Stormy Peters en est la présidente. Cela étant, ce sont les développeurs et mainteneurs qui définissent le cahier des charges technique. Enfin, au sein de cette fondation, il existe un organe appelé advisory board (une commission consultative, on dirait en français) où siègent des représentants d'organisations et entreprises en lien avec le projet ; parmi les participants actuels, on trouve des membres de la FSF, Debian, Canonical, etc.
Sortie de Pharo 1.1
Trois mois après la version 1.0, Pharo 1.1 est annoncé. Comme il est d'usage en Smalltalk, Pharo est à la fois un compilateur, une machine virtuelle et un environnement de développement. Pharo est diffusé sous licence MIT.
Smalltalk reste la référence en matière de programmation dynamique, réflexive et orientée objet, d'outils de débogage et de refactorisation, source d'inspiration des systèmes Java, Objective-C et Ruby entre autres.
La suite de cette dépêche détaille les modifications apportées par Pharo 1.1 par rapport à la version 1.0, ainsi que des informations complémentaires pour toute personne désirant se lancer dans l'aventure !
Smalltalk reste la référence en matière de programmation dynamique, réflexive et orientée objet, d'outils de débogage et de refactorisation, source d'inspiration des systèmes Java, Objective-C et Ruby entre autres.
La suite de cette dépêche détaille les modifications apportées par Pharo 1.1 par rapport à la version 1.0, ainsi que des informations complémentaires pour toute personne désirant se lancer dans l'aventure !
Qt Creator 2.0 est sorti
Le 22 juin 2010, Nokia a sorti Qt Creator 2.0. Cette version succède à la version 1.3.1. Qt Creator est un EDI (environnement de développement intégré) multiplateforme qui permet de développer facilement en C++ en utilisant Qt. S'initier à la programmation en C++ avec Qt est maintenant plus simple que jamais ! Il suffit d'installer Qt SDK : ce dernier contient Qt Creator 2.0 et Qt 4.6.3.
Pour ne pas paraphraser le changelog, nous tenterons de résumer les améliorations ainsi : rien n'est révolutionné, mais les fonctionnalités sont affinées et les bogues résiduels disparaissent. Pas mal d'améliorations concernent les plate-formes Symbian et Maemo.
La prise en charge de Qt Quick (voir plus bas pour la définition) était une des fonctionnalités les plus attendues de cette nouvelle version. Il a malheureusement été désactivé par défaut. La raison est que Qt SDK embarque Qt Creator 2.0 et Qt 4.6.3 ; QML (une des technologies nécessaires à Qt Quick) quant à lui arrive avec Qt 4.7, qui n'est pas encore stabilisé. Quand Qt 4.7 sera stabilisé, Qt Creator 2.1 sortira afin de pouvoir exploiter Qt Quick.
Qu'est-ce que Qt Quick ? C'est l'union des 3 technologies suivantes :
À bientôt pour la sortie de Qt Creator 2.1 et Qt 4.7 !
Pour ne pas paraphraser le changelog, nous tenterons de résumer les améliorations ainsi : rien n'est révolutionné, mais les fonctionnalités sont affinées et les bogues résiduels disparaissent. Pas mal d'améliorations concernent les plate-formes Symbian et Maemo.
La prise en charge de Qt Quick (voir plus bas pour la définition) était une des fonctionnalités les plus attendues de cette nouvelle version. Il a malheureusement été désactivé par défaut. La raison est que Qt SDK embarque Qt Creator 2.0 et Qt 4.6.3 ; QML (une des technologies nécessaires à Qt Quick) quant à lui arrive avec Qt 4.7, qui n'est pas encore stabilisé. Quand Qt 4.7 sera stabilisé, Qt Creator 2.1 sortira afin de pouvoir exploiter Qt Quick.
Qu'est-ce que Qt Quick ? C'est l'union des 3 technologies suivantes :
- QML : un langage déclaratif qui permet la création de GUI (Graphical User Interface) ;
- Qt Declarative : la glue entre les fichiers QML et l'application ;
- Qt Creator : cet IDE va embarquer la gestion de QML afin de pouvoir créer des interfaces facilement et rapidement.
À bientôt pour la sortie de Qt Creator 2.1 et Qt 4.7 !
Sortie de Eclipse 3.6 - Helios
Eclipse Helios arrive enfin après un an d'attente, ce 23 juin. Cette version numérotée 3.6 marque la consolidation des technologies historiquement prises en charge par Eclipse (le monde Java JEE), l'ouverture vers d'autres technologies et la confirmation en tant que projet libre d'environnement de développement intégré (IDE) le plus dynamique et le plus utilisé dans le monde.
Le travail effectué autour de cette version majeure a été important tant du point de vue de l'implémentation que du point de vue de la vie communautaire du projet, les contributeurs comme la fondation sont moteurs pour qu'Eclipse s'adapte aux nouveaux besoins et incitent à plus de contributions.
Le travail effectué autour de cette version majeure a été important tant du point de vue de l'implémentation que du point de vue de la vie communautaire du projet, les contributeurs comme la fondation sont moteurs pour qu'Eclipse s'adapte aux nouveaux besoins et incitent à plus de contributions.
Petites brèves, spécial Javascript
HTTP-console est un outil en ligne de commande qui vous permet de faire des requêtes HTTP et d'examiner la réponse. C'est donc une sorte de Curl, mais son mode interactif en fait un outil très pratique si vous avez à débugger une API Rest. Pour ceux qui préfèrent les interfaces web à la ligne de commande, vous pouvez regarder Hurl (code source).
PDF.js est une bibliothèque javascript qui permet de générer des fichiers PDF simplement. Elle peut être utilisée dans un navigateur web ou coté serveur avec Node.js.
À propos de Node.js, Ryan Dahl, son créateur, viendra en parler lors du Web Workers Camp le 3 juillet à la Cantine, Paris. Node.js est une implémentation Javascript côté serveur qui utilise le moteur V8 de Google Chrome. Il est publié sous licence MIT et est très performant. Par exemple, il est possible de faire tourner des composants serveur XMPP avec xmpp.js.
Enfin, pour ceux qui préfèrent utiliser jQuery (une bibliothèque Javascript facilitant le développement d'un site web), Rebecca Murphey a mis en ligne un livre intitulé « jQuery fundamentals », sous licence CC by-sa. Celui se compose de trois parties : une introduction au Javascript, les concepts de base de jQuery et jQuery avancé (la troisième partie n'est pas encore là).
StropheCappuccino est un ensemble de classes Javascript qui - comme le nom l'indique - lient Capuccino (framework pour applications desktop-like) à Strophe (bibliothèque XMPP). Il permet donc d'écrire de vraies applications desktop en Javascript se reposant sur XMPP.
PDF.js est une bibliothèque javascript qui permet de générer des fichiers PDF simplement. Elle peut être utilisée dans un navigateur web ou coté serveur avec Node.js.
À propos de Node.js, Ryan Dahl, son créateur, viendra en parler lors du Web Workers Camp le 3 juillet à la Cantine, Paris. Node.js est une implémentation Javascript côté serveur qui utilise le moteur V8 de Google Chrome. Il est publié sous licence MIT et est très performant. Par exemple, il est possible de faire tourner des composants serveur XMPP avec xmpp.js.
Enfin, pour ceux qui préfèrent utiliser jQuery (une bibliothèque Javascript facilitant le développement d'un site web), Rebecca Murphey a mis en ligne un livre intitulé « jQuery fundamentals », sous licence CC by-sa. Celui se compose de trois parties : une introduction au Javascript, les concepts de base de jQuery et jQuery avancé (la troisième partie n'est pas encore là).
StropheCappuccino est un ensemble de classes Javascript qui - comme le nom l'indique - lient Capuccino (framework pour applications desktop-like) à Strophe (bibliothèque XMPP). Il permet donc d'écrire de vraies applications desktop en Javascript se reposant sur XMPP.
Publication de CodingTeam 0.9.3
La cinquième version de la forge logicielle libre CodingTeam a été publiée récemment. Cette forge développée en PHP apporte avec cette 0.9.3 de nombreuses nouvelles fonctionnalités ainsi que des corrections de bugs la rendant à la fois plus agréable et plus stable.
CodingTeam est une solution multilingue (actuellement disponible en français et en anglais), légère et agréable, offrant de nombreuses fonctionnalités pour les projets :
et bien plus encore !
N'hésitez pas à installer et à tester la forge ! Vous pouvez aussi la voir en situation réelle et l'utiliser pour vos projets de logiciel libre sur le site CodingTeam.net. En outre, la communauté dispose de salons Jabber, vous pouvez donc rencontrer des utilisateurs et des administrateurs de la forge sur le salon codingteam@conference.codingteam.net.
CodingTeam est une solution multilingue (actuellement disponible en français et en anglais), légère et agréable, offrant de nombreuses fonctionnalités pour les projets :
- La gestion des sources (Subversion ou Mercurial) ;
- Timeline et roadmap ;
- La gestion des rapports de bugs et de demandes de fonctionnalité ;
- La traduction en ligne (via gettext) ;
- Suivi de l'activité du projet par flux (RSS ou Atom) ;
- La gestion des téléchargements ;
- Pages de documentations (sur le modèle du wiki) ;
- Forums de discussion ;
- Intégration des salons de discussion Jabber ;
- Statistiques SVG.
et bien plus encore !
N'hésitez pas à installer et à tester la forge ! Vous pouvez aussi la voir en situation réelle et l'utiliser pour vos projets de logiciel libre sur le site CodingTeam.net. En outre, la communauté dispose de salons Jabber, vous pouvez donc rencontrer des utilisateurs et des administrateurs de la forge sur le salon codingteam@conference.codingteam.net.
ØMQ, la messagerie inter-applications « nouvelle vague »
AMQP, ou Advanced Message Queuing Protocol, est un protocole standard ouvert pour les MOM, ou Message Oriented Middleware. Pour résumer, c'est un protocole de message entre serveurs offrant des mécanismes de files d'attente, de routage (point à point et par diffusion/abonnement), de fiabilité, et de sécurité. Citons les implémentations OpenAMQ (en C, sous GPLv3) ou RabbitMQ (en erlang, sous MPL).
Le sujet n'est pas nouveau, mais iMatix considère ce standard comme dépassé et en propose un nouveau, ØMQ ou ZeroMQ, avec une implémentation de qualité : légèreté, facilité d'intégration et performances. iMatix a pendant un temps développé OpenAMQ, mais soutient et développe désormais le projet ØMQ.
Que vous utilisiez Ruby, Python ou C n'est pas un problème, les bindings existent déjà. Vous pouvez vous en rendre compte en consultant le livre de recettes. La bibliothèque est elle-même développée en C++, sous licence LGPL.
Le transport des messages entre les nœuds est assuré par différents biais selon la disponibilité des moyens : TCP/IP, PGM, InfiniBand ou encore socket Unix dans le cas de communications internes. L'interface proposée permet d'implémenter de façon concise les principaux usages de messagerie inter-applications : requête/réponse, abonnement/notification, éventuellement avec restriction à un sujet particulier. L'utilisation de fonctions avancées comme le zero-copy ou le scatter-gather est rendue possible dans les dernières versions de la bibliothèque.
Le sujet n'est pas nouveau, mais iMatix considère ce standard comme dépassé et en propose un nouveau, ØMQ ou ZeroMQ, avec une implémentation de qualité : légèreté, facilité d'intégration et performances. iMatix a pendant un temps développé OpenAMQ, mais soutient et développe désormais le projet ØMQ.
Que vous utilisiez Ruby, Python ou C n'est pas un problème, les bindings existent déjà. Vous pouvez vous en rendre compte en consultant le livre de recettes. La bibliothèque est elle-même développée en C++, sous licence LGPL.
Le transport des messages entre les nœuds est assuré par différents biais selon la disponibilité des moyens : TCP/IP, PGM, InfiniBand ou encore socket Unix dans le cas de communications internes. L'interface proposée permet d'implémenter de façon concise les principaux usages de messagerie inter-applications : requête/réponse, abonnement/notification, éventuellement avec restriction à un sujet particulier. L'utilisation de fonctions avancées comme le zero-copy ou le scatter-gather est rendue possible dans les dernières versions de la bibliothèque.
CAMP 0.7.0 : bibliothèque de réflexion en C++ sous LGPL
La réflexion (ou introspection) est un mécanisme qui permet à un programme d'examiner, voire de modifier ses structures internes. En d'autres termes, c'est la capacité d'un programme à examiner son propre état. Cela permet par exemple d'effectuer des mesures de performance, d'inspecter des modules, de déboguer un programme, ou encore de le faire d'évoluer automatiquement en fonction des besoins et de l'environnement.
Certains langages de programmation offrent ce type de fonctionnalité, notamment Smalltalk, Java et C#, qui fournissent des outils pour connaître et utiliser la classe d'un objet, ses propriétés et ses méthodes (on parle en général de méta-classe, de méta-propriété et de méta-fonction).
L'introspection peut être utilisée pour fournir des bindings vers des langages de script, pour écrire des éditeurs de propriétés, ou faire de la sérialisation. L'intérêt étant que le code de ces outils est écrit une fois pour fonctionner sur la structure abstraite (méta-classe, méta-propriété, méta-fonction), et peut ensuite être utilisé dans n'importe quel programme.
Malheureusement, le langage C++ ne fournit aucun moyen de faire de la réflexion. Il existe cependant un certain nombre de bibliothèques fournissant ce type de fonctionnalité, la plus connue étant probablement Qt avec ses QObjects.
Cependant, pour générer toutes les « méta-informations » nécessaires à la réflexion, la majeure partie de ces bibliothèques requiert soit d'utiliser un pré-compilateur (moc pour Qt), soit de déclarer ses informations en ajoutant tout un tas de macros dans l'en-tête de chaque classe ; C++ Mirror faisant exception. De plus, il est souvent nécessaire d'hériter d'une classe de base (QObject pour Qt).
Ceci a amené Tegesoft à développer CAMP, une bibliothèque de réflexion généraliste pour C++. CAMP utilise intensivement les templates C++, ainsi que boost (ensemble de bibliothèques C++ permettant d'étendre les fonctionnalités du langage). Il est non-intrusif, à l'exception de la gestion du polymorphisme pour les méta-classes ; une alternative basée sur le RTTI (Run-Time Type Information : fait de déterminer, à l'exécution du programme, le type d'une variable, dans les langages orienté-objet) du langage devrait être ajoutée dans la prochaine version.
CAMP ressemble à Luabind ou à boost::python, mais est généraliste. De ce fait, il est possible d'écrire un module pour CAMP permettant d'embarquer un interpréteur Python, un autre pour embarquer un interpréteur Lua, ou encore un pour faire de la sérialisation XML, l'intérêt étant que le binding des classes n'est fait ici qu'une seule fois. Lorsqu'un nouveau module pour CAMP est disponible, vous n'avez aucun binding supplémentaire à écrire.
Le mieux dans tout ça ? C'est sous LGPL ! La version 0.6.0 de CAMP était déjà distribuée sous GPL, mais une licence plus permissive a été choisie afin de favoriser l'utilisation de la bibliothèque.
De plus, un nouveau site internet (basé sur Redmine) est disponible, avec bug tracker, wiki, et documentation de l'API. Le code est quant à lui hébergé sur GitHub. Un forum est également disponible.
Certains langages de programmation offrent ce type de fonctionnalité, notamment Smalltalk, Java et C#, qui fournissent des outils pour connaître et utiliser la classe d'un objet, ses propriétés et ses méthodes (on parle en général de méta-classe, de méta-propriété et de méta-fonction).
L'introspection peut être utilisée pour fournir des bindings vers des langages de script, pour écrire des éditeurs de propriétés, ou faire de la sérialisation. L'intérêt étant que le code de ces outils est écrit une fois pour fonctionner sur la structure abstraite (méta-classe, méta-propriété, méta-fonction), et peut ensuite être utilisé dans n'importe quel programme.
Malheureusement, le langage C++ ne fournit aucun moyen de faire de la réflexion. Il existe cependant un certain nombre de bibliothèques fournissant ce type de fonctionnalité, la plus connue étant probablement Qt avec ses QObjects.
Cependant, pour générer toutes les « méta-informations » nécessaires à la réflexion, la majeure partie de ces bibliothèques requiert soit d'utiliser un pré-compilateur (moc pour Qt), soit de déclarer ses informations en ajoutant tout un tas de macros dans l'en-tête de chaque classe ; C++ Mirror faisant exception. De plus, il est souvent nécessaire d'hériter d'une classe de base (QObject pour Qt).
Ceci a amené Tegesoft à développer CAMP, une bibliothèque de réflexion généraliste pour C++. CAMP utilise intensivement les templates C++, ainsi que boost (ensemble de bibliothèques C++ permettant d'étendre les fonctionnalités du langage). Il est non-intrusif, à l'exception de la gestion du polymorphisme pour les méta-classes ; une alternative basée sur le RTTI (Run-Time Type Information : fait de déterminer, à l'exécution du programme, le type d'une variable, dans les langages orienté-objet) du langage devrait être ajoutée dans la prochaine version.
CAMP ressemble à Luabind ou à boost::python, mais est généraliste. De ce fait, il est possible d'écrire un module pour CAMP permettant d'embarquer un interpréteur Python, un autre pour embarquer un interpréteur Lua, ou encore un pour faire de la sérialisation XML, l'intérêt étant que le binding des classes n'est fait ici qu'une seule fois. Lorsqu'un nouveau module pour CAMP est disponible, vous n'avez aucun binding supplémentaire à écrire.
Le mieux dans tout ça ? C'est sous LGPL ! La version 0.6.0 de CAMP était déjà distribuée sous GPL, mais une licence plus permissive a été choisie afin de favoriser l'utilisation de la bibliothèque.
De plus, un nouveau site internet (basé sur Redmine) est disponible, avec bug tracker, wiki, et documentation de l'API. Le code est quant à lui hébergé sur GitHub. Un forum est également disponible.