Archives pour la catégorie Développement

Caractéristiques du modèle open source

Cet article expose quelques caractéristiques du modèle open source : pas de coût de licence logicielle bien sûr, pas de dépendance à un fournisseur, choix élargi de fournisseurs de services, haute flexibilité/possibilité de personnalisation, stabilité accrue, moindre coût matériel (ne nécessite qu’un serveur intel pour linux et non des serveurs haut de gamme), cycles de développement plus rapides.
L’article cite également quelques autres caractéristiques mais qui sont à mon sens plus discutables : meilleure évolutivité, liberté de choix du rythme de déploiement des nouvelles versions, meilleure prise en compte de l’utilisateur final pour le développement de nouvelles fonctionnalités.

Modèle économique de la GPL

Ce mémoire présente la dynamique de coopération qui a fait le succès du modèle open source incarné par la licence de distribution logicielle GPL. Comme l’indique ce mémoire, l’auteur d’un ouvrage distribué sous licence GPL s’interdit par le biais de cette licence de disposer d’une rente (retour sur investissement) lié au capital que représente l’ouvrage qu’il a créé. Le droit de la propriété intellectuelle, dont la finalité est l’accroissement de l’innovation intellectuelle, serait sensé établir un équilibre entre la motivation économique des auteurs et celle des consommateurs. Trop de protection des auteurs et ceux-ci disposeront de rentes élevées mais qui, par effet pervers, rendront l’innovation suivante plus difficile ou moins motivante économiquement. Trop peu de protection et les auteurs perdront leur motivation économique à innover. La licence GPL, s’inscrivant dans le cadre du droit de la propriété intellectuelle, implémente des règles de coopération qui pourraient permettre de retrouver l’équilibre nécessaire au développement de l’innovation.

La coopération, nouvelles approches.

Michel Cornu a publié un document sur les dynamiques relatives au travail collaboratif. Il y introduit des « lois de la coopération » :

Nous cherchons à favoriser l’émergence de comportements de coopération et le développement de résultats collectifs. Nous avons cherché pour cela à identifier plusieurs lois qui permettent d’agir sur l’environnement pour le rendre plus favorable à la réussite du projet.
Pour réaliser ces 3 actions sur l’environnement, le porteur peut s’appuyer sur des lois qui lui facilitent son travail. Ces quelques lois simples mais fondamentales sont décrites en détail dans les chapitres suivants.
La réconciliation de l’intérêt individuel et collectif est favorisée par :
* Un environnement d’abondance qui provoque des mécanismes de contrepartie collectifs (nous verrons que l’abondance est plus fréquente qu’on ne le croit généralement dans certains domaines).
* La mise en place d’une communauté qui multiplie les interactions multiples entre les membres.
* Une nouvelle façon d’évaluer les résultats a posteriori qui implique l’ensemble de la communauté.
Pour multiplier les possibilités sans qu’aucune ne soit critique il faut :
* Réduire les besoins de départ.
* Minimiser au maximum les tâches critiques pour pouvoir en garder la maîtrise.
* Avoir du temps devant soit pour maximiser les opportunités.
Les personnes passent à l’acte grâce à :
* La motivation par la reconnaissance, le plaisir et l’apprentissage.
* La minimisation des risques perçus.
* L’abaissement du seuil du passage à l’acte par la simplicité et la réactivité.
La coopération est obtenue en agissant sur l’environnement plutôt que par la contrainte des personnes.
Le monde actuel en perpétuel mouvement aide à façonner l’environnement pour arriver aux trois conditions qui facilitent la coopération :
* Réconcilier l’intérêt individuel et collectif
* Multiplier les possibilités sans qu’aucune ne soit critique
* Faciliter le passage à l’acte

Il introduit une nouvelle notion de la propriété :

La notion de propriété ne disparaît pas pour autant. Par exemple dans le développement de logiciels libres, assez souvent, une personne détient le droit d’intégrer les modifications proposées par tous. Raymond l’appelle le  » dictateur bienveillant.  » Mais tout le monde peut venir utiliser, copier ou redistribuer librement le logiciel produit collectivement. Tout le monde peut circuler librement sur le territoire du propriétaire et c’est justement cela qui lui donne de la valeur.

Et énonce les règles nécessaires au bon fonctionnement d’une économie du don :

Une économie du don émerge lorsque les biens communs sont abondants.
Celle-ci implique de nouvelles notions de propriété et d’économie.
Les échanges de bien immatériels conduisent normalement à une multiplication de la valeur et à leur abondance. Il est souvent possible de faire des choix qui poussent vers la pénurie ou vers l’abondance.
Il existe des règles du don qui si elles ne sont pas respectées conduisent à des déviations :
1. L’abondance doit être préservée et bien répartie
pour éviter le retour à une économie de la consommation
2. L’évaluation doit être globale et décentralisée
pour ne pas qu’un don particulier serve à écraser l’autre
3. La contrepartie ne doit pas être demandée à celui qui reçoit
pour éviter les dettes…

N’hésitez pas à lire et relire son document pour en savoir plus.

Ceci m’inspire quelques motivations qui pourraient amener des grands groupes privés à open sourcer (adopter une stratégie s’appuyant sur la redistribution en opensource) leurs développements informatiques internes lorsque ceux-ci ne sont pas stratégiques (hors du coeur de métier) :

  • sauvegarder la connaissance de l’application : distribuer la connaissance pour pouvoir en bénéficier ultérieurement sous la forme de services de maintenance
  • disposer d’une maintenance corrective à faible coût : si d’autres acteurs adoptent le code distribué ET si ils redistribuent leurs modifications (y compris leurs corrections), cela offre un retour sur investissement au distributeur initial
  • disposer d’une maintenance évolutive à faible coût : pour les mêmes raisons que ci-dessus
  • améliorer son image auprès d’une communauté d’informaticiens et, indirectement, auprès de la presse informatique
  • renforcer des relations de collaboration gagnant-gagnant avec d’autres groupes similaires
  • influencer l’organisation d’un marché de fournisseurs : en orientant les distributions de code, le Groupe informe les fournisseurs des attentes réelles des utilisateurs
  • minimiser les risques des projets informatiques internes en soumettant certains de leurs aspects au regard critique de la communauté d’utilisateurs/développeurs du code distribué

Serveurs de traitement de transactionnels

Selon le Gartner Group, il faut distinguer les serveurs d’application (selon le modèle J2EE, .Net ou LAMP) des serveurs de traitement de transactions. Ces derniers « resteront une catégorie à part et constitueront un marché destinés à des projets de point et de haut de gamme ». Aucun serveur d’application générique « ne peut égaler les classiques moniteurs transactionnels en termes de qualité de service en entreprise et de fonctionnement éprouvé avec de grosses applications OLTP vitales pour l’activité ». Sur les prochaines années, c’est CICS Transaction Server qui restera « la plateforme préférentielle des applications haut de gamme et très haut de gamme ». D’autres serveurs transactionnels connus sont Tuxedo et IMS Transaction Manager. Et les serveurs d’application de Microsoft, de BEA, d’IBM, d’Oracle et de SAP ne sont pas près de leur arriver pas à la cheville, du moins pour les besoins « haut de gamme ».

Les bases relationnelles, et après ?

Les bases de données relationnelles fournissent au développeur les services suivants :

  • persistence des données,
  • intégrité des transactions,
  • fiabilité,
  • indexation

Le coût d’utilisation d’une base de données résulte des faits suivants :

  • il faut forcer vos données à se conformer à un modèle relationnel (et non hiérarchique, objet ou en graphe),
  • il faut écrire soit-même les requêtes relationnelles ou utiliser un outil de mapping relationnel objet (pour faire persister vos objets sous forme d’objets, justement)
  • il faut administrer et exploiter le logiciel de gestion de bases de données

William Grosso, devant le succès d’outils tels que le moteur d’indexation et de recherche lucene en tant qu’indexeur de données semi-structurées (XML par exemple), se demande si l’avenir des systèmes de gestion de données n’appartient pas davantage aux systèmes d’indexation de ce type (plus « primitifs » mais mieux adaptés à des langages de plus haut niveau ?) plutôt qu’aux bases de données relationnelles.

Les économistes et les associations

Les économistes ont du mal à appréhender les associations dans leur champ théorique. Néanmoins, ils constatent que l’Etat délègue aux associations certains champs d’activité pour trois motifs possibles :

  • pour raison politique : exemple = écoles privées catholiques
  • en raison de la compétence spécialisées qui est requise : exemple = prise en charge des jeunes dans les quartiers
  • afin de gagner en flexibilité et réduire les coûts : exemple = associations de formation ou d’insertion

En effet, il est plus aisé de réduire des subventions (ou de les maintenir constantes alors que le nombre de personnes à prendre en charge augmente) plutôt que d’avoir à gérer la flexibilité tout à fait non légendaire d’un service public dédié.

OSBL = OVNI ?

Les O.S.B.L. sont les « Organismes Sans But Lucratif ». Il s’agit d’une dénomination pour désigner les associations, les fédérations, les fondations, mais aussi moults autres types d’entités juridiques (ou non) qui se développent en pagaille pour constituer le « tiers secteur », le « secteur de l’économie solidaire » et autre « secteur des ONG ». Ernst & Young essaie, dans une étude, de faire le point sur la situation et l’avenir des OSBL. On y évoque le caractère de « laboratoire d’innovations sociales » de ce secteur lié à la notion « d’utilité sociale » ainsi qu’un mode de fonctionnement marqué par l’engagement dans l’action au détriment de la réflexion. D’après cette étude, les principales sources de financement des OSBL sont l’Etat et les collectivités locales, par le biais de conventions de financement pluriannuelles ou de conventions d’objectifs. Le mécénat d’entreprise est beaucoup moins présent. Le secteur est marqué par une situation de forte concurrence entre les associations (« qui va décrocher cette subvention ? »).
La stratégie est du ressort des organes statutaires (conseil d’administration ou assemblée générale) mais elle s’apparente plus à un outil de communication (pacte, charte, …) qu’à une véritable stratégie. Le sentiment des dirigeants interrogés est celui d’une grande incertitude sur l’avenir de leur OSBL. Les axes tactiques plébiscitées sont : le recrutement permanent de bénévoles, la qualification des personnels salariés, la recherche de locaux et d’équipements informatiques et la recherche de davantage de subventions. Les nouvelles technologies sont rarement identifiées comme un levier d’efficacité et de changement mis à part, parfois, la mise en place de la messagerie électronique et, éventuellement, l’accès à l’information interne. L’innovation organisationnelle ou la recherche de nouveaux modes de financement ne sont pas des options sérieusement envisagées.

Associations loi 1901

Que faut-il savoir au sujet des associations loi 1901, en France ? première moitié du XXè siècle, elles se consacraient essentiellement aux activités sportives et à des dispositifs d’assurance. Dans l’après-guerre se développent les mouvements de jeunesse, d’éducation populaire et de tourisme social, les associations familiales et les associations caritatives. Plus récemment, ce sont les associations culturelles, de défense des minorités, des consommateurs et de l’environnement qui sont apparues en masse.
Aujourd’hui, les associations loi 1901 les plus souvent mentionnées dans les enquêtes du CREDOC sont les associations sportives, culturelles et de loisirs, de parents d’élèves, les syndicats, associations de défense de l’environnement et associations confessionnelles. L’essor des associations de loisirs provient pour l’essentiel de la participation des seniors. L’adhérent-type est un homme (Madame a déjà un « double emploi » à assurer), d’un ménage aisé. Bénévole, il s’implique dans une association sportive ou de loisirs (33% des bénévoles) ou dans un service social. Son foyer a un revenu dépassant les 15 000 F mensuels ; il a suivi des études supérieures et habite dans une petite commune.
Chaque année, de plus en plus d’associations se crééent (entre 60 000 et 70 000 créations par an) mais nombre d’entre elles sont éphémères. On estime à 700 000 le nombre d’associations réellement en activité en France. A la frontière entre la production du lien social et la production de services, les associations essaient tant bien que mal d’articuler leur recours au bénévolat et leur tendance à la professionnalisation. 120 000 associations emploient 1 200 000 salariés dont nombre d’emplois aidés ou atypiques. Moins de 21 000 associations regroupent 80% des emplois recensés. Et c’est le secteur associatif de la santé et de l’action social qui regroupe près de la moitié des effectifs salariés des associations. Dépendant essentiellement de subventions (20 milliards d’euros), les associations appuient tout de même un tiers de leur budget sur des recettes d’origine marchande (vente de services).

L’argent des ONGs

Sur le site de la Coordination Sud, on trouve d’amples informations sur les organisations de solidarité internationale (O.S.I.) et, notamment, sur leurs modes de financement.

Grâce à une enquête de la Commission Coopération Développemnt, j’y découvre des noms de personnes ou d’organismes d’influence dans le domaine : Coordination Sud, ainsi que le ministère des affaires étrangères, bien sûr, mais aussi Antione Vaccaro de l’agence Excel qui conseille quelques grosses ONG d’urgence en matière de collecte de fonds, Jacques Malet, consultant auprès de la Fondation de France et François Bourguignon, directeur d’études à l’EHESS et Delta.
2 OSI ont un budget supérieur à 300 MF. 16 ont un budget compris entre 50 et 300 MF (une liste détaillée est donnée dans le rapport d’enquête). Ces budgets sont très concentrés (l’essentiel des ressources est entre les mains d’un petit nombre d’ONGs). Les ressources privées des associations résultent essentiellement (61%) des collectes et dons individuels, obtenus par des opérations de publipostage. Les ressources des OSI sont proportionnelles à l’actualité des crises internationales : « Rwanda, Bosnie, Kosovo ont scandé le rythme de développement des OSI ». En l’absence de crises humanitaires « chaudes », les financements publics et privés se contractent.
Qui donne ? 40% des français reconnaissent ne jamais donner. Ce sont les foyers modestes qui sont les plus généreux : 2,01% du revenu imposable des contribuables les plus modestes, contre 0,81% pour les foyers les plus aisés. Du côté des financeurs publics, c’est l’Union Européenne (avec 49% des fonds publics) qui vient en tête, suivie d’autre financeurs internationaux, bien avant l’Etat.
16% des dépenses sont des « frais de fonctionnement » et 8% des frais directement liés à l’organisation de la collecte des fonds. La collecte des fonds privés est beaucoup plus coûteuse que la collecte de fonds publics. Selon François Bourguignon, de l’EHESS, « la part socialement efficace (c’est-à-dire bénéficiant directement à la population visée) de chaque franc de ressource collectée serait de 55 centimes environ pour l’ensemble des activités des OSI et de 45 centimes seulement pour les seules ressources privées. »
Où va cet argent ? Surtout en Afrique (40% des dépenses des OSI) alors que seuls 15% des pauvres du monde vivent en Afrique. 75% des pauvres sont en Asie, qui n’est l’objet que de 16% des dépenses des OSI françaises. Selon François Bourguignon, cet écart est évidemment déterminé par la communauté de langue avec de nombreux pays africains.

Développement rapide (RAD) avec Zope

Le produit zetadb associé au serveur d’application Zope est sensé permettre de faire du développement rapide d’application Web à partir d’une base de données. L’idée de ce produit est la suivante :

  1. A l’aide de votre gestionnaire de base de données préféré (on pourrait utiliser Access par exemple), vous générez votre structure de données.
  2. Vous lancez zetadb dans Zope et lui indiquez où se trouve votre base de données puis répondez à ses questions au sujet de la manière dont vous souhaitez employer ces données.
  3. Grâce à vos réponses et à votre structure de données, zetadb créé dans Zope les objets correspondants à vos données et pouvez donc gérer vos données à travers ces objets.
  4. Vous pouvez utiliser ces objets pour générer des écrans Web (à l’aide de modèles ZPT) ou bien pour générer des rapports sous forme de document bureautiques (au format OpenOffice).

Des templates HTML propres : ZPT

Pour construire des applications Web, il convient d’isoler le mieux possible le code de présentation (mise en forme, affichage, graphisme, …) du code de logique (règles de contrôle, structures de données, traitements). C’est pourquoi de nombreuses technologies de templating existent : elles consistent à proposer un modèle de présentation (le template) qui puisse être entièrement et sans risques manipulé par un graphisme ignorant le code logique. C’est ensuite un moteur de templating qui fusionne le modèle de présentation produit par le graphiste ou l’assembleur de pages avec le code logique prouit par le développeur ou programmeur.
L’une des technologies de templating les plus abouties est celle du Template Attribute Language (TAL) qui est implémenté dans les Zope Page Templates (ZPT) mais existe également en Perl (PETAL), PHP (PHPTAL) et Java (JavaZPT). Pour comprendre ZPT, rien de mieux que la FAQ ZPT, cet article pour débutant en ZPT et ce tutoriel.

SPIP, Plone, CPS ou PHPNuke ?

Les solutions opensource de gestion de contenu (« web content management ») sont nombreuses, diverses et relativement matures. Parmi les plus répandues, on trouve des solutions fonctionnant en environnement PHP telles que SPIP et PHPNuke et des solutions tournant en environnement Zope (Python) telles que Plone et CPS. Ce comparatif présente les avantages et inconvénients de chacun de ces quatre produits.

Java = 4×4 (la suite)

Philip Greenspun affirme que Java est le 4×4 des langages de programmation : surpuissant et trop gourmand en ressources pour un usage quotidien. Sur Slashdot, les commentaires sont allés bon train. Il a été précisé que l’observation de Greenspun se limite au contexte du développement Web classique. Je retiens de cette discussion les points suivants. :

  • Java, en soi : Dire que Java est un 4×4 ne signifie pas que Java n’est jamais un bon choix. Pour certains usages, rien ne vaut un 4×4. Mais pas pour aller déposer les enfants à l’école. Java permet aussi bien de développer des applications qui sont executées dans les téléphones portables que des systèmes d’intégration d’applications d’entreprises de grande échelle. C’est pourquoi Java serait surchargé de sophistication inutile (« bloatware ») pour chacun de ces usages. Java fournit une solution homogène à presque tous les types de problèmes applicatifs rencontrés dans l’entreprise mais au prix d’une complexité et d’un coût accrus.
  • Java et Python : Comparer Java à Perl ou à Lisp est une erreur, le langage le plus comparable est plutôt Python (ou C#). Pour faire un site web simple, Python serait préférable à Java. De même pour des activités plus expérimentales.
  • Java et PHP : Un avis récurrent est : « PHP pour le Web, Java pour les applications requérant des traitements logiques très complexes côté serveurs ».
  • Java et VB : L’avantage principal de Java (par rapport au langage C# ou VB.Net de Microsoft) est la portabilité. Visual Basic est préférable à Java dans tous les cas où l’on a besoin d’une riche interface graphique pour l’utilisateur (en client-serveur) et où l’application à développer ne doit pas tourner ailleurs que dans Windows. VB (pas forcément VB.Net) manque cruellement de certaines fonctionnalités ce qui oblige trop souvent le développeur à réinventer la roue.
  • Perl : Perl est extraordinairement puissant (permet de faire des choses très sophistiquées en un nombre de lignes de code très réduit) mais les développements sont difficiles à maintenir car le code est peu lisible lorsque toute la puissance de Perl est mise en oeuvre.
  • JSP : la manière dont le code Java est mélangé au code HTML de présentation dans la technologie JSP rend le tout difficile à maintenir. Le système de modélisation de pages (templates) de JSP comporte le risque intrinsèque de laisser les développeurs créer des applications immaintenables. Une grande rigueur de développement est donc nécessaire. On rencontre le même type de risque avec les technologies de scripting similaires (PHP, ASP, DTML) mais la manière de faire avec JSP ajouterait à cela des défauts dus au fait que Java n’a pas été conçu spécifiquement pour ce type d’usages : plus de lignes à coder et à maintenir, complexité accrue, adéquation moindre aux besoins Web classiques…

Un article critique au sujet de Java : Java’s Cover.

Requête HTTP par Javascript côté client

Vous voulez que du code Javascript, côté client (exécuté dans le navigateur), génère une requête HTTP vers un serveur, récupère le résultat puis le traite et poursuive ainsi son exécution. Comment faire ? Il faut utiliser un objet httpRequest présent dans le DOM. Ce type d’interface est apparemment en cours de spécification dans le standard DOM du W3C (au sens du standard « DOM Level 3 Load & Save »). MS IE et Mozilla implémente tous les deux cet objet même si le code pour l’instancier diffère un tout petit peu. Il existe plusieurs documentations qui expliquent plus en détails comment faire.

Java est aux langages de programmation ce que les 4×4 sont aux voitures

Java est le 4×4 des langages de développement : ultra-puissant, tout-terrain (sauf lorsqu’il s’agit de faire un Paris-Dakar), énorme consommateur (de temps de développement et de ressource machine). Comme les conductrices de 4×4 en centre ville, certaines sociétés utilisent Java à contre-emploi.
JSP est la technologie Java de loin la plus simple au sein de la spécification J2EE. Pourtant, d’après Philip Greenspun, professeur d’informatique au MIT, même les étudiants informaticiens du MIT ont du mal à la mettre efficacement en oeuvre tellement elle est complexe au regard du type de problème qu’elle est sensée traiter. D’après Philip Greenspun, un projet Web simple utilisant Java coûtera 5 fois plus, sera deux fois plus longs à livrer et sera plus dur à maintenir que si il utilisait un langage de scripting tel que PHP ou Perl. Mais les développeurs et les managers se sentiraient rassurés à l’idée qu’avec Java ils pourraient, au moins en théorie, résoudre des problèmes informatiques d’une complexité très importante, même si cela ne correspond pas à la situation qu’ils ont à traiter au quotidien.