Nouvelles du Libre

Sortie du Glorious Haskell Compiler 7.8

Linuxfr - dim, 13/04/2014 - 21:37

Ghc, le Glorious Haskell Compiler est sorti le 9 avril 2014 en version 7.8.1. Il s'agit du compilateur le plus populaire pour le langage Haskell. Haskell est un langage de programmation purement fonctionnel, avec un système de types sophistiqué. C'est le principal langage généraliste à utiliser une stratégie d'évaluation non-stricte par défaut : la valeur d'une expression n'est calculée que si elle est nécessaire.

Sommaire Haskell en trois mots

Haskell est un langage de programmation purement fonctionnel, avec un typage statique fort, et une stratégie d'évaluation non stricte.

Le Glasgow Haskell Compiler est le principal compilateur Haskell, bien qu'il en existe d'autres.

Quelques exemples

L'inévitable hello world :

main = putStrLn "Saluton Ĉirkaŭaĵojn!"

Suite de Fibonnacci :

fibs :: Int -> Int fibs 0 = 0 fibs 1 = 1 fibs n = fibs (n-1) + fibs (n-2) -- Sous forme de liste infinie fibs':: [Int] fibs' = 0:1:(zipWith (+) fibs' (tail fibs')) Un langage fonctionnel pur

La spécificité la plus marquante de Haskell, c'est qu'il s'agit d'un langage fonctionnel pur : une fonction appelée avec les mêmes arguments renverra toujours le même résultat, contrairement à une fonction comme input(message) en python.

Cela rend possible la transparence référentielle : une expression peut être remplacée par son résultat sans changer le comportement de l'application. Le raisonnement sur les équations est mené par substitution sans inquiétude des effets de bord.

Les entrée-sorties et autres effets de bord sont bien sûr possibles, mais ils sont distingués dans le système de type des calculs sans effets de bord. Cela permet des optimisations assez poussées et garanties correctes sur ces derniers. Cette distinction des effets de bord dans le système de type est déroutante au début, mais avec l'expérience, elle apporte un réel confort.

Avec un typage puissant

Le typage statique permet de vérifier à la compilation la cohérence d'un programme et de détecter de nombreuses classes d'erreurs fréquentes. Un type statique est une approximation réalisée pendant la compilation des valeurs rencontrées au cours de l'exécution. Il est extrêmement difficile de concevoir un système de type à la fois flexible (faiblement verbeux, avec une inférence utile), complet (de grain fin, éliminant plus de bugs) et correct (pas de programmes justes rejetés). Haskell essaye de trouver le juste milieu pour que la programmation généraliste soit efficace.

Les aficionados du typage dynamique et du « duck typing » argumentent que, lors du développement avec les langages statiquement typés (typiquement C/C++), une grande partie des ressources sont gaspillées à combattre le système de type. Le typage statique de Haskell est rendu extrêmement flexible grâce au polymorphisme paramétrique, similaire aux templates en C++, mais avec des possibilités d'inférence bien plus développées.

Un type polymorphique peut être restreint à l'aide de contraintes, c'est-à-dire un ensemble de spécifications (ou typeclasses). Par exemple pour insérer un élément dans un Set, il est nécessaire de pouvoir le comparer aux éléments déjà présents avec la méthode compare de la typeclasse Ord, d'où la contrainte Ord a => dans le type de insert :

insert :: Ord a => a -> Set a -> Set a

En pratique, dans les cas courants, la seule différence induite par le système de types entre un code haskell et le code python correspondant est la présence (facultative mais habituelle) en haskell de la signature de chaque fonction… Signatures qui sont en cours d'adoption par la communauté python.

Les nouveautés de ghc 7.8.1 Changements du langage Typed holes

Grâce au typage fort de haskell, on se trouve souvent à utiliser les types pour guider la conception : on écrit d'abord les types dont on va avoir besoin, puis les signatures des fonctions. Ensuite, de proche en proche, l'implémentation des fonctions est guidée par les signatures. Bien sûr, dans les cas les plus complexes, il faut d'autres ressources que cette méthode, mais on y devient rapidement accro. L'extension typed holes (littéralement « trous typés ») permet d'utiliser cette démarche dans le corps d'une fonction.

Cette extension est souvent utilisée conjointement avec le drapeau -fdefer-type-errors qui transforme les erreurs de typage en warnings. Dans ghci, cela permet de charger toutes les définitions et de les manipuler même si leurs types sont incorrects. Une expression mal typée ou contenant des typed holes est équivalant à undefined et déclenchera une erreur uniquement si elle est évaluée.

En pratique, un hole est un _ placé dans le code à la place d'une expression manquante (ici à la dernière ligne):

getSensorReading :: IO Double getSensorReading = return 123.45 -- TODO: utiliser vraiment la sonde thermique main = do tKelvins <- getSensorReading putStrLn ("Aujourd'hui il fait " ++ _ ( tKelvins - 273.15) ++ " degrés")

À la compilation, ghc émet une erreur (ou un warning si -fdefer-type-errors est activé) pour chaque hole, et affiche son type:

Found hole ‘_’ with type: Double -> [Char] Relevant bindings include tKelvins :: Double (bound at toto.hs:6:5) main :: IO () (bound at toto.hs:5:1) In the expression: _ In the first argument of ‘(++)’, namely ‘_ (tKelvins - 273.15)’ In the second argument of ‘(++)’, namely ‘_ (tKelvins - 273.15) ++ " degrés"’

Dans notre exemple, le warning à la compilation nous indique que pour afficher la température dans le putStrLn, il nous faudra une fonction de type Double -> String. Une simple recherche dans hoogle nous indique que la fonction en question n'est autre que show.

OverloadedLists

Haskell repose sur une syntaxe très concise, la majeure partie du langage (Opérateurs, type de base, etc) étant définie dans le Prelude.
En revanche, ce n'est pas le cas des expressions littérales comme les nombres, les chaines de caractères et les listes. Par exemple [1, 2, 3] est interprété par le compilateur comme 1:2:3:[], où (:) et [] sont les constructeurs du type liste défini dans le Prelude. OverloadedStrings autorisait déjà les chaînes de caractères littérales avec d'autres types que [Char], notamment le type Text pour l'encodage UTF-8.

Cette extension OverloadedLists est documentée, elle permet d'utiliser la syntaxe des littéraux listes avec d'autres types, comme par exemple les vecteurs, les chaînes du module Text ou encore les ensembles.

Pour utiliser cette extension, il faut disposer d'une instance de la classe IsList. Il faudra donc attendre que ces instances soient intégrées aux bibliothèques haskell pour vraiment en profiter.

PatternSynonyms

Une autre extension, PatternSynonyms permet de donner un nom à un motif pour le filtrage.

La puissance des types de donnée algébrique (ADT) repose sur la possibilité de filtrer les données par motif, comme en Scala :

type Errno = Int data Error = ErrorLibC Errno | ErrorIO IOException errorToStr :: Error -> String errorToStr (ErrorIO ioe) = "Haskell's IOException: " ++ show ioe errorToStr (ErrorLibC errno) = "LibC's errno: " ++ show errno

Chaque constructeur du type Error défini un motif, utilisé par la fonction errorToStr pour filtrer les erreurs. En revanche il n'était pas possible de définir ses propres motifs en plus des constructeurs. PatternSynonyms permet maintenant cela, par exemple pour avoir plusieurs motifs par constructeurs :

pattern ErrorPERM = ErrorLibC 1 pattern ErrorNOENT = ErrorLibC 2 pattern ErrorSRCH = ErrorLibC 3 errorToStr :: Error -> String errorToStr (ErrorIO ioe) = "Haskell's IOException: " ++ show ioe errorToStr ErrorPERM = "Operation not permitted" errorToStr ErrorNOENT = "No such file or directory" errorToStr ErrorSRCH = "No such process" errorToStr (ErrorLibC errno) = "LibC's unknown errno: " ++ show errno

Les motifs synonymes sont aussi utilisés pour cibler des données profondément imbriquées : pattern Greetings name = 'h':'e':'l':'l':'o':' ':name. Par défaut il sont bidirectionnels : Greetings "world" est une valeur. Il est possible de définir des synonymes unidirectionnels lorsqu'il n'existe pas de bijection.

TypeFamilies fermées

Il est possible de déclarer une famille de type et ses instances dans la même clause, par exemple:

type family TF a where TF ([Bool]) = Int TF ([Bool],[Bool]) = Double

La famille est alors fermée, c'est-à-dire qu'il n'est pas possible de déclarer de nouvelles instances de TF.

Améliorations du compilateur

De nombreuses améliorations portent sur le compilateur lui-même, sans modifier le langage. Il est toujours plus rapide et économe en mémoire, notamment pour l'inférence de types. La compilation en parallèle de modules est activable avec la nouvelle option -jN.

Sur Linux, FreeBSD et Mac OS X, GHCi utilise maintenant le chargeur de code dynamique du système. Auparavant, un chargeur maison liait dynamiquement du code statique (.a) en mémoire. Pour utiliser cette fonctionnalité, il est nécessaire de compiler avec -dynamic-too pour générer des bibliothèques dynamiques (.dyn.so).

Améliorations de la génération de code

La qualité du code que ghc produit s'améliore aussi :

  • ghc est capable d'utiliser plus de types «nus» (unboxed), avec l'activation de -funbox-small-strict-fields par défaut;
  • le gestionnaire d'entrée sortie se parallélise mieux, «de façon linéaire jusqu'à 32 cœurs»;
  • le nouveau générateur de représentation intermédiaire Cmm a été activé, après une gestation de plusieurs années;
  • de nouvelles primitives (PrimOps) pour les instructions SIMD sont disponibles, pour l'instant uniquement avec le générateur LLVM.
Amélioration du gestionnaire d'entrée-sorties

Le gestionnaire d'entrée-sorties était un des points les plus critiques de la performance du runtime haskell. Dans la version 7.8.1, il a été grandement amélioré, en particulier dans un contexte multi-processeurs. Haskell devient ainsi de plus en plus crédible comme meilleur langage impératif du monde.

Compilation vers iOS

La gestion de la compilation croisée a été améliorée, ce qui permet notamment de compiler vers les systèmes iOS.

Compilation vers javascript avec ghcjs

La sortie de la version 7.8 devrait être accompagnée de la première version publique de ghcjs, un compilateur haskell vers javascript. Ce langage devient de plus en plus l'assembleur du client web et ghc prend ainsi en charge cette plateforme. Par rapport à Fay, qui est plus ancien, ghcjs cherche à compiler tout le langage haskell et pas seulement un sous-ensemble.

L'introduction à ghcjs permet de se faire une bonne idée de la façon de l'utiliser, en particulier pour les parties spécifiques à javascript.

Vers ghc 7.10

La version 7.10.1 sera la prochaine version majeure de ghc. On trouve sur le trac de ghc une liste de choses qui devraient figurer dans cette prochaine version. Certaines nouveautés de cette version sont préparées dès la 7.8.

Monad / Applicative

Ces deux concepts permettent d'associer un effet à une valeur : IO Int peut par exemple représenter l'action de la lecture d'un entier présent dans un fichier. La notion de foncteur applicatif est plus générale : toutes les monades sont des foncteurs applicatifs, tandis que l'inverse n'est pas nécessairement vrai. L'exécution des effets d'une monade peut dépendre des valeurs obtenues des effets précédents, contrairement aux foncteurs applicatifs où les effets sont exécutés dans l'ordre des arguments.

La classe de type Monad fut introduite dans les premières versions du langage pour gérer les entrées/sorties avec la monade IO. Lorsque, plus tard, la classe de type Applicative apparût dans la bibliothèque de base, Monad n'a pas été modifiée pour avoir Applicative comme super-classe.

Le but de la proposition Functor < Applicative < Monad est de corriger ce problème pour réduire la redondance (par exemple entre return et pure, liftM et fmap).
Ce changement, susceptible de rendre du code incompatible, est déjà signalé par un warning dans GHC 7.8 et sera officialisé dans la version 7.10.

Autres actualités de haskell

Olivier Charles a publié sur son blog l'édition 2013 de sa chronique 24 Days of Hackage qui offre une série d'introductions (avec des exemples) aux paquets majeurs disponibles sur Hackage. L'édition 2012 vaut également le détour, car elle couvre des paquets encore plus incontournables (base, containers, transformers, etc.).

Hackage 2

Le site hackage qui répertorie les paquets haskell libres, exécutables et bibliothèques est passé en version 2 en septembre 2013. L'aspect visuel a été amélioré, la recherche concerne maintenant aussi la description des paquets. La plupart des informations sont plus accessibles, en consultation mais aussi à la modification : le nouveau hackage est plus permissif, et il a une API rest plus étendue.

D'autres fonctionnalités ont été développées mais pas encore déployées, comme la gestion flexible des tags et le calcul des dépendances inverses.

Haskell platform

Il n'est généralement pas recommandé d'installer ghc seul, mais plutôt de récupérer la plateforme haskell, qui contient ghc ainsi que les bibliothèques les plus essentielles du monde haskell. Comme la version 7.8 de ghc a tardé, la plateforme n'a pas été mise à jour depuis la version 2013.2 de mai 2013. Une nouvelle version, adaptée à ghc 7.8 devrait sortir prochainement.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

ReactOS : officialisation et financement

Linuxfr - dim, 13/04/2014 - 13:12

Il reste presque 3 mois (52 jours) pour financer ReactOS !

ReactOS est un projet de système d'exploitation libre se voulant compatible avec les programmes et pilotes Microsoft Windows. Visant la sortie de leur version 0.4 intitulée Community Edition, le projet met en place une plate-forme de collaboration avec les fabricants de matériel, les développeurs de logiciel, et les utilisateurs. ReactOS lance une campagne de levée de fonds collaborative permettant de voter pour des priorités de développement, en fonction de la somme investie.

Sommaire ReactOS

ReactOS est un projet d’implémentation libre de l’environnement Windows, il s’agit de réimplémenter les API officielles (ainsi que celles non documentées) afin de permettre l’installation d’applications pensées et conçues pour Windows.

Les développeurs justifient leur développement en expliquant que s’il existe d’excellentes alternatives libres (comme GNU/Linux), elles ne pourront jamais se substituer totalement à Windows et à ses technologies, d’une part à cause de son poids historique et du poids des nombreux outils pensés pour Windows, et d’autre part certains apprécient cet écosystème, tout simplement. ReactOS permet donc de conserver une méthodologie Windows, mais librement.

Pour mettre en lumière la compatibilité, on peut remarquer que certains composants officiels de Windows peuvent s’installer sur ReactOS, par exemple la page Wikipédia décrivant le projet rapporte qu’il est possible d’installer l’outil de connexion de bureau à distance de Microsoft directement depuis le CD d’installation d’un système d’exploitation Microsoft. ReactOS lui-même peut être compilé avec la suite de développement Microsoft.

Les développeurs sont invités à tester leur développement sur ReactOS pour garantir la compatibilité binaire de leur application entre Windows et ReactOS, mais le but n’est pas de développer spécifiquement pour ReactOS, le but à terme est une compatibilité entre ces deux systèmes.

La nature même du projet ReactOS fait qu’il constitue une documentation très approfondie des fonctionnalités non documentées de Windows. ReactOS partage du code avec le projet Wine (implémentation des API Windows sur Unix) et les deux projets bénéficient de leurs travaux mutuels.

ReactOS est un gros projet qui compte actuellement 4,96 millions de lignes de code, implémentant à la fois un noyau de type NT et l’environnement utilisateur. C’est un projet de longue haleine (initié dans les années 1990) et multiplateforme (i386, amd64, arm).

Community Edition

La communication est d’ordinaire assez confidentielle, et un éventuel visiteur du site web avait de grandes chances de ne retenir que les avertissements (légitimes) mettant en garde sur l’utilisation du logiciel actuellement non stabilisé. Mais pour sa prochaine version 0.4, ReactOS met en avant son travail et lance une grande campagne de communication.

Zéro point quatre

Il est encore un peu tôt pour énoncer les nouveautés qu’apportera cette version 0.4, puisque c’est justement la levée de fonds qui va les déterminer. Cependant, c’est l’occasion pour le projet de faire une petite rétrospective entre ReactOS 0.3.0 qui était sortie en 2006 et la prochaine 0.4.0. Support du SATA, de l’USB, du son, du WiFi… ce sont beaucoup de fonctionnalités essentielles qui témoignent du chemin parcouru. On s'attend à ce que la série 0.4 soit la dernière série des versions alpha, la 0.5 étant prévue pour être une version bêta.

C’est certainement la plus grosse nouveauté visible attendue : un nouveau shell, explorer_new.exe a été complètement redéveloppé dans le cadre d’un contrat que la Fondation ReactOS a passé avec le développeur Giannis Adamopoulos grâce à de précédentes donations.

La copie d’écran suivante montre le shell explorer_new.exe utilisé comme shell de Windows 8 !

ReactOS peut être facilement testé sur Vmware, VirtualBox ou Qemu, des images sont fournies pour ces trois systèmes de virtualisations, ainsi qu’un live CD.

Financement collaboratif

Le projet ReactOS vient de lancer une campagne de financement sur la plateforme IndieGogo, ils lèvent 50 000$ en financement flexible, c’est-à-dire que tout argent levé est gagné, indépendamment du fait que l’objectif soit atteint ou non. La campagne prendra fin le premier juin.

Chose originale, en fonction du montant donné, on peut décider quel est le matériel ou logiciel prioritaire à supporter, et cela orientera le travail de l’équipe. Évidemment, plus vous financez et plus vous pesez dans les décisions. Pour 20$ vous pouvez voter pour un logiciel, mais à partir de 10 000$, vous passez outre les votes, vous soumettez directement votre demande. De même, avec 40$ vous pouvez voter pour du matériel, mais avec 35 000$, c’est vous qui décidez.

Il y a trois créneaux disponibles pour les applications, c’est à dire que ReactOS travaillera sur le support des trois applications les mieux notées. Mais en fonction du nombre de participants au programme de vote, c’est-à-dire des donateurs qui choisissent comme rétribution un droit de vote, d’autres créneaux peuvent se libérer, 5000 votants font 5 créneaux, et une personne qui paie suffisamment pour décider directement ouvre jusqu’à 10 créneaux.

Un mécanisme similaire est en place pour le support du matériel (jusqu’à 6 pièces), mais si vous avez vraiment de grands moyens vous pourrez voir plus grand…

Évidemment, pour ce type d’opération plusieurs rétributions sont proposées pour motiver le don, avec les traditionnels T-shirt ou CD collectors, mais pour 600$ vous recevrez une petite carte-mère préinstallée avec ReactOS, et si vous êtes un peu mégalo, vous pouvez acheter le droit d’apposer votre nom en dessous du logo de démarrage (mais attention, il n’y en aura qu’un pour les gouverner tous) !

Cette opération de financement permettra entre autres de renouveler le contrat de Giannis Adamopoulos ainsi que de financer de nombreux autres développements, mais si vous êtes compétent(e), les fonds levés par ReactOS peuvent également servir à vous embaucher vous aussi.

À l’écoute des développeurs, des fabricants et des utilisateurs

Le projet ReactOS met en place trois programmes de collaboration avec les développeurs ou fabricants afin de travailler la compatibilité main dans la main.

  • Un programme de collaboration avec les développeurs d’applications libres, afin d’intégrer ces applications au gestionnaire de paquet de ReactOS ou dans le processus d’installation du système (l’application pourra être choisie au moment de l’installation et directement utilisable à la fin de l’installation du système). Pour participer à ce programme de collaboration, une seule exigence : il suffit que votre application soit libre. Autrement, rien d’autre n’est fixé : vous pouvez participer en faisant la promotion de la campagne de financement, ou toute autre action de votre imagination.

  • Un programme de collaboration avec les développeurs d’applications « officielles ». Les développeurs sont invités à passer un contrat avec ReactOS pour piloter les développements nécessaires à la compatibilité. Si la confidentialité est nécessaire, un contrat discret (Ghost mode) est possible. Certains le font déjà et vous ne le saviez pas ? C’est le principe. Ce programme concerne les développeurs d’applications propriétaires, mais aussi les entreprises qui développent des applications libres. Une entreprise qui développe du logiciel libre peut donc contracter avec ReactOS pour travailler sur le support et la compatibilité de leur offre logicielle. Dans tous les cas, ne pas hésiter à contacter ReactOS, c’est l’occasion pour eux de faire un jeu de mot : « please feel free to contact us and suggest any win-win strategy: We're open (source) to new ideas! ».

  • Un programme de collaboration avec les fabricants de matériel est ouvert à toute entreprise qui souhaite voir son matériel officiellement supporté. Cette collaboration permet de piloter le développement dans cet objectif et de voir ses produits référencés dans la liste du matériel officiellement supporté par ReactOS. Un contrat en Ghost mode est évidemment possible et dans tous les cas ReactOS tient secret ses relations commerciales à moins que l’inverse n’ait été explicitement décidé par le constructeur.

Comme rapporté plus haut, les utilisateurs sont invités à voter pour le logiciel ou matériel qui compte pour eux, voir à ce sujet les options de financement « Push your app! » et « Push your piece of hardware! ».

Passer à ReactOS

Comme écrit sur leur nouveau site communautaire, ReactOS permet de rester en sécurité en utilisant un système d’exploitation compatible Windows, mais sans contrat caché avec la NSA ni de de porte dérobée…

ReactOS est aussi une opportunité très intéressante à l’heure où Microsoft abandonne le support de Windows XP. Ceux qui souhaitent maintenir un environnement de travail compatible (pour cause de logiciel ou de matériel spécifique par exemple) et supporté, seront intéressés par le projet ReactOS.

Pour essayer, le mieux est de lancer une image dans une machine virtuelle, ou un live CD, mais attention, ce n’est pas encore la 0.4. Il n’y a pas encore le nouveau shell par exemple, l’actuel est assez instable et n’est pas représentatif. ReactOS n’est pas utilisable en production aujourd’hui, mais c’est justement ce que veut réaliser cette levée de fond, et le nouveau shell montre que les financements sont employés efficacement !

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

mcercle version 14.04

Linuxfr - dim, 13/04/2014 - 13:07

mcercle est un logiciel de gestion libre sous licence GPLv3 pour autoentrepreneur, artisans et TPE. Il se veut léger, ergonomique tout en gardant les performances d’un logiciel de gestion professionnel. Il est multiplateforme s’exécutant sous MS Windows, GNU/Linux et Mac OS X.

 Caractéristiques principales :
  • Gestion clients: carnet d’adresse, interventions/services, devis, factures ;
  • Gestion produits: références fournisseurs, gestion du stock avec seuil d’alerte ainsi qu’un classement par catégorie ;
  • Gestion des fournisseurs: nom du contact fournisseur, adresse, téléphone… ;
  • Base de données: sauvegarde dans une base SQLite qui assure rapidité et intégrité des données.

D'autres détails en deuxième partie.

Écrit depuis 2010 par Cyril Frausti qui n'en est pas à son coup d'essai, mcercle a connu beaucoup d'évolutions avec un souci de stabilité et de confort, comme en témoigne le changelog. C'est un logiciel de gestion de plus, oui, mais qui tend à être le plus simple et fonctionnel possible. Et puis quel confort monsieur l'entrepreneur, vous pouvez « gérer votre entreprise avec un outil libre, un outil qui vous appartient totalement ! » (extrait de la plaquette de promotion)

L'auteur a fait l'effort de fournir des paquets Debian / Ubuntu pour les versions précédentes. Mais si vous ne voulez pas compiler cette version, sachez que le binaire Win32 tourne sous Linux sans problème avec Wine (NdM. qui a testé pour vous).

Caractéristiques techniques : Copies de quelques écrans :
  • Tableau de bord

  • Clients

  • Fiches produits

  • Devis

Micro interview de l'auteur Quelle est ton activité?

Électricien actuellement.

La programmation tu es tombé dedans étant petit ?

Petit, pas tant que ça, j'avais 15/16 ans. Avec de l'HTML comme tout le monde, je souhaitais avoir un petit espace internet, puis avec mes études d'électronique j'ai fait du code machine (assembleur) et du langage C. Lors de mon 1er emploi en bureau d'étude je me suis vite confronté à l'informatique comme interface homme/machine pour le pilotage des mes cartes électroniques, j'ai donc naturellement commencé à développer en C++ pour créer mes propres interfaces.

Pourquoi avoir programmé mcercle? Avais-tu essayé d'autres outils?

C'est en essayant plusieurs outils justement que j'ai décidé de développer mcercle, je trouvais les autres logiciels beaucoup trop difficiles pour une utilisation basique (en 2010) et ceux qui était assez simples et complets n'étaient pas opensource.

J'ai cru comprendre que tu n'utilisais plus le logiciel…

Ce n'est plus vrai à présent; je suis artisan maintenant et j'utilise donc mon outil.

Le logiciel actuel est très complet. L'export des données vers la compta serait un gros plus, non ?

Oui, l'export/import est quelque chose d'important surtout pour la migration vers mcercle, mais je voulais avant tout stabiliser mcercle (c'est chose faite) avant de prévoir un import/export. Donc ce sera sur la feuille de route.

Comment vois-tu l'évolution future ? Ça restera un logiciel très simple et léger ?

Oui bien sûr. Je prévois dans la version 14.10 d'intégrer une gestion d'extensions pour enrichir les possibilités du logiciel sans toucher le logiciel lui même.

En plus de Qt4, c'est compilable avec Qt 5.2 je crois ?

Oui

Quels échos as-tu de l'utilisation de mcercle?

Quelques utilisateurs donnent de bons retours généralement et d'autres demandent des ajouts de fonctionnalités mais je ne peux pas répondre oui à tout le monde faute de temps, mcercle reste ouvert et chacun peut le modifier à sa convenance… j'ai d’ailleurs un utilisateur qui l'a compilé pour Android—mais il faut refaire une interface car ce n'est pas adapté.

Est-il empaqueté par des distributions?

Pour debian/ubuntu oui, dans les versions précédentes, malheureusement plus aujourd’hui et j'encourage les empaqueteurs si le logiciel leur paraît utile.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

HandyLinux pour débuter en informatique

Linuxfr - dim, 13/04/2014 - 12:30

HandyLinux est une distribution francophone qui parle aussi anglais, conçue pour faciliter l'accès à l'informatique à ceux qui débutent : les enfants, les seniors et ceux qui recherchent la simplicité.

Cette distribution collégiale, se distingue par son HandyMenu, sa documentation progressive et détaillée, l'accueil et l'écoute des nouveaux utilisateurs. Elle est basée sur Debian Wheezy avec Xfce, un environnement de bureau rapide, léger et stable, HandyLinux est pratique et gratuite.

La version 1.4.2 sortie le 2 avril 2014, fonctionne sur la plupart des PC construits à partir de 2001 et dotés de 512 Mio de RAM. Matériel testé avec HandyLinux.

Tous les détails et les captures d'écran en seconde partie.

L'originalité de cette distribution Debian GNU/Linux, est son HandyMenu prévu pour ne pas effrayer ou perdre le nouvel utilisateur dans un flot d'applications. Afin de lancer les applications usuelles, HandyMenu classe vos programmes en six catégories : Internet, Fichiers, Multimédia, Bureautique, Jeux et Aventuriers.

L'autre point fort est sa documentation détaillée reprenant les catégories du HandyMenu, pour aider l'utilisateur à progresser à son rythme et parvenir à enlever les roulettes et se passer de cette interface simplifiée.

Cette distribution est collégiale, c'est-à-dire que des améliorations sont proposées par les participants du forum et le développeur les intègre aux dépôts. Elles sont ainsi immédiatement disponibles au moyen du gestionnaire de mise à jour.

Les atouts d'une dérivée officielle de Debian :

Pour l'avoir installée sur un pentium 4 à 1,5 GHz, 768 Mio de RAM, de décembre 2001, je réponds que son installation est simple et rapide (elle fonctionne aussi sur des eeepc avec un SSD de 4 Gio !). Ses dépôts sont au format strict Debian. Toutes les améliorations sont installées par le gestionnaire de mise à jour.

Malgré la faiblesse du processeur, cette distribution permet de commencer à surfer sur Internet deux minutes après avoir appuyé sur le bouton ON du PC. Un collégien de douze ans l'a immédiatement prise en main, personnalisé son fond d'écran, ajouté un marque page pour se connecter au site de son collège. Et son père, peu doué en informatique, utilise ce poste pour rechercher de bonnes occasions.

Les grosses icônes du HandyMenu sont explicites :

Elle est toute en français et Minitube facilite l'accès aux vidéos du Youtube, un des usages les plus courants d'Internet :

Le menu Slingscold est intégré :

Installer des logiciels pour les enfants, comme Gcompris et bien d'autres disponibles dans la logithèque Debian, est expliqué dans la section Aventuriers.

LibreOffice est fourni dans sa version stable la plus récente.

La communauté des contributeurs
  • L'équipe est composée de Guantas, Arpinux, Dyp, Fibi, Manon, Wiscot, etc.
  • Plusieurs blogueurs analysent et critiquent les versions : Frédéric Bezies, Cyrille Borne, TechandTux, La vache libre, Sam7.
  • Les utilisateurs novices ou expérimentés participent au forum.
  • Bienvenue sur HandyLinux !
Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Un projet de VM Python chez Dropbox et état des lieux des autres VM

Linuxfr - sam, 12/04/2014 - 16:44

Dropbox lance PySton, une nouvelle implémentation de Python, basée sur LLVM, avec comme objectif de tirer partie des capacités JIT (Just-In-Time compiling, compilation à la volée) de l'architecture LLVM. Le but étant à terme d'utiliser Python là où du C++ était encore utilisé pour ses performances.

La suite de la dépêche fait un état des lieux des différentes VM Python et des projets d'améliorations de leur performances.

Sommaire

Avant de vous parler du projet initié par Dropbox, faisons un petit tour des VM disponibles pour Python.

CPython

L'implémentation de référence du langage Python, en C. La syntaxe Python est convertie dans un bytecode Python, qui est exécuté par la VM CPython. On critique régulièrement cette VM, à tort. Elle fonctionne très bien, elle est très portable et a subi de nombreuses optimisations au fil du temps qui en font une VM robuste, rapide et fiable.

On lui reproche régulièrement son GIL, le Global Interpreter Lock, ce gros verrou global qui protège les accès multi-threads. Dans les faits, le problème du GIL ne se pose que pour les programme multi-threads, CPU-bound, exécutés sur des multi-coeurs, qui se prêtent mal à d'autres techniques de parallélisme (tel que les services offerts par le module multiprocessing). Autant dire qu'on est dans des développements très spécifiques qui n'affectent pas la majorité des programmes écrits en Python.

Le GIL introduit par ailleurs des simplifications de code massives qui expliquent sa présence et sa longévité.

IronPython

IronPython une implémentation du langage Python, basée sur le CLR du framework .NET de Microsoft. Elle profite de tout l'écosystème autour de .NET et notamment des capacités JIT du CLR. Sur les derniers benchmarks dont je me rappelle, IronPython était soit au niveau de CPython, soit plus rapide (sans pour autant exploser les compteurs, on était dans le 1.5x ou 3x sur des benchmarks très ciblés). Si le langage est bien supporté, on peut regarder au delà de la communauté Python et se mettre à rêver grâce à IronPython de convertir des programmeurs Visual Basic. Ça, c'est pour la pub.

Quand on regarde de près, on découvre qu'en fait, pour les langages dynamiques comme Python, Ruby et Javascript que Microsoft prend en charge, le CLR brut est mal adapté. Microsoft a donc créé un DLR, un Dynamic Langage Runtime, qui s'interface au dessus du CLR et fournit des services particuliers pour gérer le dynamisme des langages précités. Jusque là, très bien…

Pour faire fonctionner un programme IronPython, il faut donc en plus des dernières versions de .NET installer le DLR dernière version. Moyennant tout ça, un programme Python pourra utiliser facilement n'importe quel composant .NET (écrit en C#, J#, Visual Basic…) mais l'inverse n'est pas vrai : un programme Python ne peut pas produire simplement des objets compatibles CLR et reste cantonné au monde du DLR. Pour accéder à ces objets/bibliothèques depuis un programme CLR, il faut passer par une gymnastique un peu complexe. Du coup, les langages DLR ne sont pas du tout au même niveau que les langages CLR et il y a peu de chance de voir Python remplacer un jour le Visual Basic.

Récemment, Microsoft a décidé de se débarrasser de ce truc donné IronPython à la communauté. Le développeur principal du projet chez Microsoft, après avoir vu son équipe se réduire au fil des mois, est finalement parti chez Google. Cf cet article de ZDNET qui résume bien ce qui se passe.

Autant dire que IronPython n'apportera pas la révolution que certains attendaient. Ca reste un projet très respectable, avec des versions compatibles 2.7 complètement fonctionnelles et une intégration dans Visual Studio.

Jython

Jython est une implémentation de Python pour la JVM de Java, qui permet d'écrire du code Java en Python et d'utiliser tous les bibliothèques Java en Python. Il supporte Python 2.5 et 2.7 .

On en entend peu parler dans le monde de l'Open Source mais le projet continue son bonhomme de chemin depuis plus de 10 ans maintenant (la première version est sortie autour des années 2000). Cette longévité est un signe que le projet est utilisé, très probablement dans le milieu de l'industrie.

Les performances sont à peu près au niveau de CPython (dixit la FAQ), le temps de démarrage d'une appli est assez long (à cause de la JVM, c'est donc peu pratique pour des scripts) ; sur des programmes qui s'exécutent longtemps (comme c'est souvent le cas pour des applis java côté serveur), le compilateur JIT JVM se met en route et fournit des gains intéressants.

À noter l'addition récente du module JyNI qui permet d'utiliser les modules d'extension Python de façon transparente en Java.

L'intérêt principal de ce projet, ce ne sont pas les performances mais l'intégration transparente dans l'écosystème Java. Si la JVM gagne encore en performance, le projet en bénéficiera, mais cela fait longtemps qu'on n'entend plus de nouvelles révolutionnaires sur le sujet…

PyPy

On ne présente plus PyPy, l'interpréteur JIT Python qui déménage. Après plus de 12 années et 5 réécritures, le projet envoie du bois : ça exécute du Python plus vite que CPython et pas qu'un peu si on en croit les benchmarks. Note de l'auteur: sur un programme ordinaire, tout le monde ne voit pas de tels gains, voire voient des dégradations catastrophiques donc à prendre avec du recul.

Le projet génère du code x86, x86-64 et récemment Arm (suite à un effort du projet Rapsberry Pi). Il est compatible Python 2.7, avec un effort en cours pour avoir la compatibilité Python 3. Le projet a maintenant atteint un bon niveau de stabilité et de performance, suffisant pour l'utiliser en production. Il est utilisable notamment avec Django, SQLAlchemy ou Twisted.

Maintenant que les gains sont là, les efforts portent sur l'écosystème ou sur d'autres innovations.

Côté écosystème, le gros problème de PyPy est que tous les modules d'extensions compilés pour CPython ne fonctionnent pas sous PyPy. Et il y en a beaucoup : des GUI (PyQt, PyGtk…), des bibliothèques de jeu (PyGame), etc.

PyPy travaille sur le sujet mais sans espoir pour l'instant de résoudre complètement le problème :

  • dans certains cas, une recompilation dudit module pour PyPy avec cpyext permettra de le faire fonctionner.
  • sinon, il faut envisager des méthodes alternatives pour faire le lien C/C++ et PyPy. Il y a des projets vraiment sympa comme Reflex, cffi et autres (cf Writing extensions modules for PyPY) mais au final, on est dans une approche qui demande une réécriture partielle dudit module.

Un certain nombre de projets sont compatibles PyPy . En plus de ceux que j'ai cité, on peut consulter la liste sur la page de compatibilité PyPy.

Dans le cas particulier de NumPy, compte-tenu de son importance pour la communauté PyPy (ou en tout cas d'un de ses auteurs qui travaille dans la recherche scientifique), une réécriture spécifique pour PyPy a été démarrée sous le nom de NumPyPy. Celle-ci ne fait pas l'unanimité, les développeurs autour de NumPy arguant d'une part qu'un clone est moins pratique que l'original, d'autre part qu'il y a d'autres modules d'extensions indispensables pour fonctionner dans l'écosystème (matplotlib, SciPy…).

Côté innovations, PyPy expérimente maintenant les Software Transactional Memory, c'est-à-dire gérer les accès mémoire d'un programme multi-threadé avec des transactions, comme dans une base de données. Une transaction pourrait être commencée, mise en œuvre ou annulée.

L'approche est originale, et a pour but de se débarrasser du GIL. Pour l'instant, c'est très lent, il est prévu un ralentissement de 2 à 5 par rapport à du CPython de base, mais cela offre en théorie la possibilité de tenir une forte montée en charge. Pour l'instant, on est vraiment sur un sujet de recherche donc à voir d'ici quelques années.

Il y a aussi un projet PyPy Sandbox qui permet d'isoler proprement un programme Python de son environnement. Les autres projets de ce type ont toujours échoué, Python offrant de multiples mécanismes de contournement de Sandbox. La force de PyPy est de pouvoir faire la Sandbox à un niveau très bas donc ça peut marcher. Pour l'instant, il y a peu de retour sur ce projet.

PyPy est un beau projet, il a su tenir son cap à travers les années - faisait fi des sceptiques - et nous délivrer ses promesses. Aujourd'hui, c'est à la fois une implémentation de Python rapide et un framework de génération d'interpréteurs Python. Il a même été utilisé très sporadiquement pour d'autres langages. Il a plus été pensé pour un usage scientifique au départ (biais de son auteur) mais les modules qui fonctionnent officiellement bien en PyPy (django, SQLAlchemy, Twisted) font penser que c'est sur les serveurs d'application qu'il va finalement faire une différence…

Le problème des modules d'extension est malheureusement rédhibitoire dans beaucoup de situations. Il est rare qu'un programme Python n'aie aucune dépendance vers une bibliothèque compilée et l'approche qui consiste à réécrire ledit module spécifiquement pour PyPy n'est pas toujours possible.

Numba

Numba est un compilateur JIT/LLVM pour Python, qui transforme des morceaux de Python annotés vers la chaîne de compilation LLVM.

Le code doit être annoté explicitement avec des marqueurs du type @jit pour demander une compilation générale vers LLVM, soit en laissant LLVM générer le code à la volée en fonction des types passés à la fonction, soit en spécifiant dans les annotations les types à utiliser.

Le site ne fournit pas de benchmarks explicites mais explique que les performances sont au niveau du C, le code Python étant effectivement traduit en assembleur. L'approche permet par exemple d'appliquer facilement des calculs sur des tableaux NumPy.

C'est un projet spécialisé dans le calcul hautes performances. On ne parle pas ici d'optimisation générale d'un programme en Python, mais d'optimisation explicite d'une ou plusieurs fonctions avec compilation au démarrage du programme (et non à la volée).

Unladen Swallow

Ce projet lancé en 2009 par trois ingénieurs de Google avait l'ambition d'accélérer la VM Python par un facteur 5, en s'appuyant sur l'architecture de compilation JIT du projet LLVM. Une des contraintes était de garder une compatibilité totale avec CPython et notamment avec les modules d'extension Python écrit en C.

Unladen Swallow est parti de la VM de CPython et a modifié la boucle d'exécution principale pour émettre du bytecode LLVM. Un programme Python était d'abord traduit en bytecode Python classique, puis transformé à la volée et selon les besoins dans la chaîne LLVM pour aboutir à du code assembleur.

On avait donc à toutes les étapes du projet un compatibilité 100% avec les programmes Python existants, validée par une grosse suite de test multi-projets.

Le projet a bien débuté, avec des gains intéressants au départ. Une PEP a aussi été acceptée par Guido van Rossum pour intégrer Unladen Swallow dans CPython (alors même que Unladen Swallow n'avait pas encore livré toutes ses promesses—cette décision a été un peu critiquée).

Au bout d'un an, le projet a été arrêté et la PEP annulée. En cause, d'une part un nombre important de bugs dans la compilation à la volée dans la suite LLVM qui ont fortement ralenti la progression attendue. D'autre part, le manque d'adoption interne chez Google, les développeurs étant finalement assez contents de leur CPython de base.

Un post d'un des développeurs résume la situation finale : Unladen Swallow Retrospective.

Le projet a quand même produit 4 versions, chacune plus rapide, ainsi qu'une suite de benchmarks de référence pour Python, assemblant tout en ensemble de suite de tests et benchmarks existants.

Le dernier né : Pyston

Dropbox (chez qui travaille maintenant Guido Van Rossum) nous annonce donc un nouveau de projet de VM : Pyston.

Quelques liens : l'annonce et le code

Ce sera une implémentation par dessus LLVM et son JIT d'une VM Python complète. Le projet vise au départ une compatibilité Python 2.7, avec un backend x86 uniquement.

Les développeurs sont partis de l'observation que dans le monde Javascript, les plus gros gains de performances ont été faits avec un compilateur JIT par méthode au lieu d'un tracing JIT qui va se concentrer sur des boucles. PyPy ayant déjà montré les gains qu'on peut avoir avec un tracing JIT, ils ont eu envie d'explorer l'autre versant de la compilation à la volée.

Pyston est une implémentation avec LLVM de l'interpréteur Python. Le langage Python est compilé en byte-code LLVM et la chaîne de compilation LLVM prend le relai pour ce qui concerne les optimisations et la compilation JIT.

C'est une grosse différence par rapport à Unladen Swallow qui se penchait sur l'optimisation de la VM CPython : on est là sur une réécriture complète. L'inconvénient est qu'il faut implémenter toute la logique du langage, un travail considérable : impossible de réutiliser l'infrastructure existante de la VM CPython. Les développeurs perdent aussi tout le savoir-faire qu'il y a déjà dans Python pour l'optimisation de la boucle d'évaluation.

L'avantage plus ou moins théorique est que l'optimisation peut être plus transversale puisqu'on évite un étage de traduction.

Le projet a aussi changé le garbage collector, passant du comptage de référence de CPython à un ramasse-miettes Conservateur. Sur les modules d'extension, le changement de Garbage Collector rendra ceux-ci nécessairement incompatibles et il y a un vague plan pour corriger cela.

Les développeurs ont l'air conscients de l'ampleur du travail à effectuer, notamment pour se rapprocher des performances de PyPy. Pour l'instant, le prototype prend en charge un tout petit sous-ensemble du langage Python. Celui-ci aurait montré d'après les développeurs un bon potentiel en terme de gain de performance.

Depuis le projet Unladen Swallow, LLVM a continué à s'améliorer et la partie qui avait posé tant de problème à Unladen Swallow a été réécrite. Les développeurs Dropbox espèrent donc ne pas subir les problèmes qu'a connu Unladen Swallow avec LLVM, ce qui tend à être confirmé par les résultats du projet Numba.

Il faut être bien conscient que même si LLVM fournit une chaîne de compilation JIT de bonne qualité, il y a beaucoup de travail à fournir en amont : l'interprétation du langage Python, le traçage des types, l'activation sélective du JIT, la gestion de la durée de vie des morceaux compilés. Il y aura beaucoup d'ajustements à trouver sur la consommation mémoire globale et sur les conditions d'activations du JIT.

Par la suite, ils envisageront une compatibilité Python 3, d'autres backends de génération de code, un meilleur Garbage Collector, l'intégration plus ou moins transparente des modules externes et même de se pencher sur le GIL.

Commentaire de l'auteur

Je précise que je n'y connais rien en compilation, LLVM ou JIT, j'ai juste plaisir à suivre de près ces projets très pointus.

La rédaction de la dépêche a fait ressortir que les efforts d'accélérations de Python, même s'ils sont réussis, butent presque tous sur la prise en charge transparente des modules d'extension. C'est vraiment un gros point noir, difficile à résoudre, et pourtant majeur. Les programmes Python qui tournent sans dépendances sont à mon avis minoritaires. Même s'il y a un effort un jour pour recompiler facilement vers PyPy ou autres, on tombera toujours sur le module un peu spécifique à un domaine qui ne fonctionnera pas.

Pyston, en ayant notamment changé le Garbage Collector, se range dans la même catégorie.

Seul le projet Unladen Swallow avait une approche globale sur le sujet avec une compatibilité totale. Ça aurait permis à n'importe quel programme Python de bénéficier des optimisations JIT, et ce à un coût de migration négligeable.

L'autre point qui me frappe au sujet de Pyston, c'est une certaine innocence dans l'approche (on pourrait presque dire naïveté). À leur lancement, les projets PyPy et Unladen Swallow avait une idée très précise et documentée de là où ils voulaient aller, articles de recherche à l'appui. On sentait qu'il y avait eu une analyse en profondeur du sujet.

Pour Pyston, ça ressemble plus à « tiens, pour Chrome, le per-method-JIT a bien marché, on a qu'à faire pareil avec Python et LLVM » . Il y a de très beaux projets qui sont issus d'une telle approche, mais aussi énormément qui se sont plantés parce qu'ils ne savaient pas où ils allaient.

Le choix de réimplémenter toute la VM Python est quand même très costaud, et implique qu'on ne verra pas de résultats utilisables avant au moins un an, voire plusieurs. Souhaitons en tout cas longue vie à ce projet et bon courage à leur développeurs !

Post-scriptum

Il y a plein d'autres efforts pour accélérer Python d'un façon d'un autre, autrement qu'en tapant dans la VM. Allez voir sur le site de Haypo la page qui y est consacrée si vous voulez en savoir plus, ou encore ses notes sur la vitesse de Python.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Le Master Ingénierie du Logiciel Libre (I2L) et l'apprentissage

Linuxfr - sam, 12/04/2014 - 11:14

En 2006, l'Université du Littoral, le département informatique et de nombreux acteurs économiques du Logiciel Libre ont fait le pari de la formation et du Logiciel Libre et ont ouvert le premier et le seul Master Professionnel entièrement dédié aux logiciels libres. Après cinq ans de fonctionnement et devant le succès du Master, nous avons décidé de changer d'organisation et nous avons opté pour l'apprentissage en septembre 2012.

La voie de l'apprentissage est aujourd'hui un excellent dispositif pour augmenter l'interaction entre formation et entreprise et pour mieux intégrer l'étudiant à une dynamique professionnelle. De plus, le Master I2L faisait déjà la part belle aux intervenants extérieurs en deuxième année, mais grâce à l'apprentissage nous avons étendu les interventions professionnelles sur les deux années afin de mener des projets d'envergure (et libres, naturellement) en partenariat avec les entreprises accueillants des apprentis.

Le Master I2L est donc resté fidèle à sa démarche initiale : promouvoir le Logiciel Libre et ses technologies phares, faire prendre conscience des problématiques économiques, légales et organisationnelles.

Dans ce cadre, l'objectif est donc la formation d'informaticiens de haut niveau capables de mener à bien la mise en place de solutions informatiques basées sur l'intégration de produits et technologies issus du monde du logiciel libre et d'accompagner les organisations dans des processus de migration vers les logiciels libres ou d'intégration de ces logiciels.

En matière de compétences, les objectifs que nous cherchons à atteindre incluent entre autres :

  • la maîtrise des infrastructures logicielles issues du monde des logiciels libres ;
  • la maîtrise des environnements de développement et de déploiement du logiciel dans le cadre des logiciels libres ;
  • l'évaluation des solutions issues des logiciels libres et l'impact de leur intégration dans une organisation ;
  • la mise en place de processus de migration vers les logiciels libres ;
  • la gestion de projets et les spécificités de l'intégration des logiciels libres en matière de gestion d'un projet informatique (eXtreme Programming, méthodes agiles, …) ;
  • une connaissance des spécificités des logiciels libres en matière de droit, d'économie et de gestion.

La nouvelle campagne de recrutement est ouverte. Attention, le nombre de places est très limitée : 13 apprentis. Mais si vous voulez conjuguer à la fois une formation universitaire et une réelle expérience dans une SSLL, c'est une superbe occasion.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

FusionForge 5.3 disponible

Linuxfr - sam, 12/04/2014 - 06:39

La cinquième version de la branche 5.3 a été la bonne. Après 4 release candidates, la communauté FusionForge a publié la version 5.3 de sa forge logicielle. Le terme « forge logicielle » est un chapeau regroupant tous les outils de génie logiciel nécessaires au cycle de vie d'un logiciel. Cela inclut habituellement un gestionnaire de source, un espace de publication de fichiers ainsi qu'un outil de suivi des tâches, des anomalies et des demandes d'évolution.

Sans vouloir revenir sur le long historique de FusionForge, quelques mots de rappel : FusionForge est la reprise du code communautaire GForge, lui-même hérité de Sourceforge. On retrouve parfois dans le code des lignes datant de 1999. Écrit en PHP5, FusionForge met à disposition l'ensemble des fonctions de génie logiciel attendues pour la gestion de projet, le pilotage et les outils techniques modernes. La conception de FusionForge offre une capacité de gérer un très grand nombre de projets. Certaines forges ont plus de 1000 projets et plusieurs milliers d'utilisateurs inscrits.

Quelques exemples d'installation plus ou moins récentes et/ou importantes :

Sommaire Fonctions majeures

On peut citer comme fonctions majeures :

  • gestion multi-projet

Chaque projet dispose de l'ensemble des outils activables en fonction des besoins. Un mécanisme de classement par typologie et de tags permet une recherche au sein des projets existants. Un greffon de hiérarchie permet d'organiser les projets par relation 1-n.

  • système de droits basé sur RBAC (gestion de rôles)

Ce mécanisme permet de gérer finement les droits par projet et par outil permettant de rendre privé le projet en entier ou certaines parties uniquement. Il est possible de créer autant de rôles que souhaité ; les rôles étant cumulatifs, il est conseillé de créer des rôles orientés fonctionnels.

  • gestion de globalement tous les (D)VCS

De CVS à Bazaar en passant par Subversion, Git ou Mercurial, avec un choix entre des accès en mode SSH ou plain HTTP. Une gestion des droits d'accès par utilisateur. Pour Git, la capacité d'avoir son propre clone personnel d'un projet permettant d'implémenter un workflow de type Gatekeeper.

  • gestion simple de documents

Ajout de documents unitairement ou en masse, notification des actions réalisés sur un répertoire ou un fichier, gestion de la hiérarchisation de projets (via le greffon project-hierarchy), gestion d'actions en masse sur les fichiers, notion de corbeille, notion de documents privés et de documents soumis à validation, export au format ZIP, création en ligne de documents texte (intégration CKEditor).

  • suivi des demandes

Permettant la création de multi-bugtrackers avec la gestion de workflow en relation avec les droits utilisateurs, l'ajout de champs personnalisés, intégration possible avec la gestion de code source via le greffon scmhook et les hooks commitTracker, construction de feuille de route transverse aux différents bugtrackers créés.

  • suivi de l'activité

Chaque projet dispose d'une vue immédiate de l'activité par outil : demande, nouveau document, nouveau commit, … Ce tableau de bord d'activité permet en un rapide coup d'oeil de connaitre le dynamisme d'un projet. Un mécanisme de filtre offre la possibilité de s'intéresser à l'activité dans le temps et de limiter la recherche à un ou plusieurs outils.

  • forums

Un système de forums standard est disponible, permettant la création de forums par thème (support, échange entre développeurs ou entre utilisateurs…)

  • news
    Système d'annonces par projet qui peuvent être mises en avant sur la page d'accueil de la forge. Pratique pour annoncer sur la forge la mise à disposition d'une nouvelle version d'un logiciel.

  • mailing-lists

Intégration simple avec Mailman. Création, réinitialisation de mots de passe d'administrateur sont les fonctions élémentaires proposées. Un plugin spécifique mailman est disponible en remplacement de l'intégration de base.

  • système de widgets pour des pages projet et utilisateurs personnalisables

Hérité de Codendi, ce système permet de construire la page d'accueil du projet ou sa propre page personnelle en utilisant des widgets classés par type : SCM, Tracker, Monitoring d'éléments (forums, documents), Documents, Administration.
Certains plugins mettent à disposition des widgets complémentaires (On notera le plugin block qui laisse la possibilité d'inclure tout élément html, simplifiant ainsi l'inclusion d'éléments provenant d'autres sites. On pense ici à des boutons sociaux, des widgets type flattr, ohloh…)
La mise en page des widgets est configurable avec des modèles prédéfinis ou un mode 100 % personnalisable.

  • des greffons pour enrichir le tout
    • wikis dont MediaWiki,
    • gestion de captcha,
    • bibliothèques de hooks pour git, Subversion, Mercurial,
    • gestion de bloc HTML par page ou au sein de widget,
    • ajout d'onglets dans les différents menus,
    • intégration Jenkins,
    • … (et d'autres encore).
La version 5.3 en chiffres

Les chiffres significatifs :

  • 17000 commits
  • 14 contributeurs
  • 32 bugs fermés dont certains vieux de plusieurs années
  • 31 patchs fournis par la communauté d'utilisateurs
  • 21 demandes de fonctionnalité implémentées
Les nouveautés de la version 5.3 Côté frontend
  • gestion documentaire

L'interface de la gestion documentaire avait subi un lourd lifting dans les versions précédentes avec une réécriture quasi complète de l'interface pour mettre en avant des fonctionnalités qui passaient totalement inaperçues.

Les informations du nombre de téléchargements, la taille maximum d'upload autorisée sont affichées. Un reporting du nombre de documents téléchargés est aussi disponible.

Un nouveau widget pour les projets est aussi disponible. Il permet de suivre l'activité sur les 4 dernières semaines en affichant le nombre de nouveaux documents, de documents modifiés et de nouveaux répertoires.

  • gestion utilisateurs :

La gestion des clés SSH a été réécrite permettant un meilleur suivi du déploiement des clés SSH.
Les administrateurs peuvent être notifiés lorsqu'un utilisateur a validé la création de son compte.

  • suivi d'activité :

De nouveaux items sont affichés dans le tableau de bord de l'activité d'un projet. Ainsi l'activité SCM (commits) est disponible pour les repositories de type GIT et SVN, idem pour les nouveaux répertoires créés dans la gestion documentaire.

  • suivi des demandes :

Un système de votes basé sur les rôles (Il faut avoir l'acréditation de vote pour pouvoir voter sur un item des trackers) a été intégré. Il est enfin possible d'organiser sa roadmap en fonction de l'attente fonctionnelle des utilisateurs.

Le widget "MyArtefacts" a été amélioré pour permettre de suivre directement les items que l'utilisateur surveille.

  • SCM (Git, Mercurial, Subversion et al.)

Le plugin Git a été enrichi pour permettre le support du protocole http en mode basic. Le support smart http est possible mais les fichiers de configuration fournis par défaut nécessitent une petite adaptation.
La gestion de multiples dépôts pour un projet est aussi disponible pour Git et de nouveaux hooks sont disponibles via le plugin scmhook.

Le plugin Mercurial a vu l'intégration d'un patch important permettant son utilisation en tant que type de repository. Navigation en ligne via hgweb, intégration de hooks via la bibliothèque de hooks du plugin scmhook.

Le plugin Subversion a lui eu le droit à des nouveaux hooks du plugin scmhook.

Côté Dev
  • jQuery a été choisi comme framework Javascript standard. L'ancien empilement prototype + scriptaculous + jQuery + javascript spécifique a été nettoyé et réécrit. Résultat : des pages plus légères, moins d'incompatibilité avec les navigateurs. Toutefois, certaines portions de code restent encore en Javascript spécifique.
  • tous les graphiques ont été réécrits en utilisant le greffon jQuery jqPlot. La dépendance à l'ancienne bibliothèque jpgraph a été supprimée. Fusionforge dispose enfin d'une bibliothèque moderne et libre pour générer ses graphiques. Cette réécriture a, entre autre, permis l'inclusion d'un meilleur rendu des graphes de type Gantt avec l'affichage des dépendances entre tâches en utilisant le greffon jQueryGantt
  • le stockage des fichiers joints à un tracker et les documents est à présent fait sur le système de fichiers et non plus en base. La charge de base de données est réduite drastiquement. Il reste encore les fichiers joints au forum qui seront rapidement migrés de la base de données vers le système de fichiers.
  • le code a été nettoyé. Les variables inutilisées ont été chassées à coup de balai. Les erreurs et warnings PHP, les erreurs de syntaxe HTML ont subi la foudre des développeurs.
  • d'anciens plugins ont été intégrés dans des structures de plugin plus polyvalentes. Les plugins type svncommitemail, svntracker ont été intégrés au sein du plugin scmhook.
  • certains cronjobs ont été revus et améliorés profitant de fonctionnalités spécifiques provenant de la souche Debian. (Gestion des répertoires home projets et utilisateurs, gestion des vhosts par projet)
La communauté et le futur

La version 5.3 laisse apparaître une augmentation des contributeurs à FusionForge. En effet plusieurs personnes ont rejoint l'équipe FusionForge depuis quelques années et le dynamisme de la communauté commence à porter ses fruits. L'intérêt de FusionForge est grandissant. La communauté est de plus en plus sollicitée sur des problématiques de migration du parc d'installations anciennes de GForge que cela soit des versions "gratuites" ou des versions "Advanced Server". Le nombre de téléchargements des sources a été multiplié par 2. C'est sans compter les installations réalisées via les paquets des distributions comme Debian.
D'autres projets libres de Forge ont décidé de rejoindre la communauté FusionForge. C'est le cas de Savane qui fusionne avec FusionForge.
Vous aussi, vous pouvez devenir acteur de la communauté FusionForge. N'hésitez pas à rejoindre le canal IRC (freenode #fusionforge), tester FusionForge, signaler les fonctionnalités qui vous manquent. FusionForge avance grâce à vous.
La communauté se tourne donc vers le futur et travaille d'ores et déjà sur les nouvelles fonctionnalités ainsi que la réécriture de parties importantes du code.
En tant que contributeurs majeurs à cette version, on peut lister dans l'ordre alphabétique :

Cette dépêche est le résultat d'un travail collaboratif avec la communauté FusionForge. Merci aux différents contributeurs disponibles sur le canal IRC (freenode #fusionforge) : Beuc, Lo-lan-do, nerville

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

On vous offre un séjour aux RMLL2014

Toolinux - ven, 11/04/2014 - 17:28

Cette année il n'est pas question de rater les Rencontres Mondiales du Libre (RMLL) à Montpellier, du 5 au 11 juillet. Linagora et TOOLinux.com vous offrent un séjour tous frais payés pour le week-end d'ouverture.

- Communiqué / ,
Catégories: Nouvelles du Libre

Conférence « Les logiciels libres en entreprise » le 5 mai à Reims

Linuxfr - ven, 11/04/2014 - 10:32

Le centre de formation eXia CESI de Reims organise une conférence sur le thème « Le logiciel libre en entreprise ». Cette conférence se déroulera le 5 mai 2014 à 17h00. Elle sera animée par Remi COLLET, Senior software Engineer chez Red Hat et contributeur Fedora et PHP.

Les thèmes abordées seront :

  • le fonctionnement des communautés ;
  • le rôle de Fedora ;
  • l’expérience Open Source en entreprise ;
  • etc.

Rendez-vous le 5 mai à 17h30 :
eXia CESI - 7bis, rue Robert Schuman - 51100 Reims

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Install Party GNU/Linux à Marseille le 26 avril 2014

Linuxfr - ven, 11/04/2014 - 10:14

L’ association CercLL (CercLL d’Entraide et Réseau Coopératif autour des Logiciels Libres) vous invite à une install party GNU/Linux, le samedi 26 avril 2014 de 14h30 à19h30, dans la salle de la Fabulerie Marseille au 4 rue de la Bibliothèque 13001 Marseille (Prés du Conservatoire).

Vous avez envie de découvrir un système d’exploitation libre, simple d’utilisation, stable, rapide et sécurisé ? Une nouvelle façon d’utiliser votre ordinateur ? Vous vous sentez une affection naissante pour le Gnou et le Manchot, les mascottes de GNU/Linux ?

Au programme :

  • Découverte de l’univers des logiciels libres
  • Installation d’un environnement GNU/Linux, ainsi que le meilleur des logiciels libres
  • Démonstration de jeux vidéo sous Linux

Venez avec votre ordinateur nous installerons ensemble une distribution GNU/Linux avec un ensemble de logiciels libres et gratuits pour une utilisation quotidienne.

Entrée libre – accessible aux débutant-e-s

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Cartopartie, Ubuntu et Emmabuntüs le 12 avril à Montpellier

Linuxfr - ven, 11/04/2014 - 07:35

Deux événements annoncés par Montpel'libre le samedi 12 avril à partir de 14h :

  • la 9e cartopartie participative, sur le thème de l’accessibilité de personnes à mobilité réduite, au départ du local associatif sur le bassin Jacques Cœur, ex pavillon Nouvel à Montpellier. Cela nous permettra de cartographier les Quartiers Port-Marianne et Richter.

La suite de cet évènement se fera lors de la « saisie partie » OpenStreetMap qui elle est prévue le mardi 15 avril 2014 à partir de 14h00, au Cowork’in Montpellier, au 19, rue de l’école de droit à Montpellier.

  • une journée d’information et de sensibilisation à l’utilisation d'Ubuntu et d'Emmabuntüs à la Communauté Emmaüs Montpellier-Saint-Aunès (La Vieille Cadoule 34130 Saint-Aunès)

Rendez-vous mensuel, deuxième samedi : l’équipe de Montpel’libre vous donne rendez-vous chez Emmaüs pour une journée d’information et de sensibilisation à l’utilisation des Logiciels Libres. Nous vous présenterons Ubuntu et bien sûr l’une de ses dérivées Emmabuntüs.

Vous désirez un ordinateur à votre service ? Vous désirez un ordinateur qui va vite ? Vous désirez un ordinateur qui ne communique aucune données à des inconnus ? Vous désirez un ordinateur qui n’a pas besoin d’antivirus ? Vous rencontrerez des personnes qui sont là pour vous parler de Logiciels Libres. Vous pourrez aussi acheter des ordinateurs déjà installés prêt à être utilisés.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Wi-Fi Linksys WRT, la légende de retour

Toolinux - jeu, 10/04/2014 - 23:25

Le WRT est une véritable icône du genre. Linksys annonce la disponibilité de son nouveau WRT1900AC. Ouvert et libre !

- Matériels
Catégories: Nouvelles du Libre

SUSE veut simplifier l'installation de Linux en mainframe

Toolinux - jeu, 10/04/2014 - 23:25

SUSE Linux Enterprise Server Starter System pour System z est désormais disponible pour les utilisateurs de mainframes.

- Matériels
Catégories: Nouvelles du Libre

Red Hat Enterprise Linux sur Google Compute Engine

Toolinux - jeu, 10/04/2014 - 23:20

Google rejoint le programme Red Hat Certified Cloud Provider ; les clients de Red Hat peuvent désormais utiliser leurs abonnements Red Hat Enterprise Linux éligibles dans Google Compute Engine via Red Hat Cloud Access.

- Services
Catégories: Nouvelles du Libre

Un OpenDataCamp le 16 avril à Paris

Toolinux - jeu, 10/04/2014 - 23:15

Un OpenDataCamp aura lieu le mercredi 16 avril lors de la 3ème édition de la conférence Devoxx France.

- Evénements et séminaires
Catégories: Nouvelles du Libre

IBM présente de nouvelles offres Cloud, Mobile et Hadoop

Toolinux - jeu, 10/04/2014 - 23:05

Big Blue lance une série de nouvelles offres de Cloud Computing pour le mainframe, notamment la première solution intégrée à base de System z, l'IBM Enterprise Cloud System.

- Services
Catégories: Nouvelles du Libre

Une nouvelle édition du tremplin linuxembedded.fr

Toolinux - mer, 09/04/2014 - 23:47

Ce concours a pour vocation d'organiser un rendez-vous dédié à l'Open source pour les systèmes embarqués.

- Evénements et séminaires
Catégories: Nouvelles du Libre

Le Cloud Computing pour tout et pour tout le monde ?

Toolinux - mer, 09/04/2014 - 23:25

Depuis un certain nombre d'années, tout ou presque a déjà été dit à propos du Cloud Computing. Ses bénéfices sont multiples. Ils incluent notamment une accessibilité rapide en libre-service et à la demande, une mutualisation des services et une facturation à l'usage. Un portrait séduisant qui peut légitimer toutes les ambitions de basculer sur le Cloud. Mais est-ce pour autant une solution universelle qui réponde à tous les besoins ?

- Revue de presse
Catégories: Nouvelles du Libre

Une solution de sécurité pour les clients légers/zéro IGEL

Toolinux - mer, 09/04/2014 - 23:20

Après une intégration dans ses clients légers SoC, IGEL a décidé d'équiper également tous ses autres modèles basés sur des processeurs x86 de la solution Imprivata OneSign ProveID Embedded.

- Matériels
Catégories: Nouvelles du Libre

Open Food Facts sera créé la semaine prochaine

Toolinux - mer, 09/04/2014 - 23:15

Dans l'esprit "libre", la création de l'association Open Food Facts et son assemblée constitutive est annoncée au NUMA à Paris le 11 avril prochain.

- Evénements et séminaires
Catégories: Nouvelles du Libre

Syndiquer le contenu