How to setup your Plone core sprint


I promised to published this article last year but… well, no excuse. The topic is still hot as we work on in Arnhem in November 2013, 11 to 15 to finish it for Plone 5.

Here in Arnhem – Ploneconf 2012 Sprints – we are making a lot of sprint about a lot of different topics. As a newcomer in  sprint lead I did some mistakes.

  1. If you are working in the Plone core you must should a plip before the beginning of the sprint. It will be easier for other people  to follow your work some months later.
  2. For commiters, the main point is to check if you already give your contributor agreement back to the Plone Fundation. If you’re not there should be someone with blank agreements in your sprint to make things go easy.
  3. Once you know how many sprinters you have on your topic you must organize the area to be comfortable for all.
  4. Fing a way to show everybody the tasks that are on going and who is working on. My way is a whiteboard with post-its
  5. Prepare the technical parts before to start coding:
    • Identify all the packages you’re working on and create a remote branch for your plip. We were working at first on Products.CMFPlone, plone.app.content, plone.app.users, and after we also include plone.app.controlpanel in the list.
    • Don’t make a branch in buildout.coredev create a plips configuration file in the ‘plips‘ folder.Then run your buildout using this configuration file as master: bin/buildout -c plips/plip13260-cpy-removal.cfg
  6. Check if everybody have commit rights.
  7. If there’s a change in the plip configuration file notice it to everyone fast.
  8. Make regular internal reports to know who needs help or work :-)
  9. Write down what’s you’re doing on

For commiters, the main point is to check if you already give your contributor agreement back to the Plone Fundation.  If you’re not there should be someone with blank agreements in your sprint to make things go easy.
Commiters should also follow a process to make the pull going right:

  1. Have  fun
  2. After each plip configuration file update check if all plip eggs are well checkouted and if they are in the good branch
  3. When you start a task  create a local branch to avoiding conflicts before your merge
  4. Commit early, often
  5. Fetch and pull others commits before to merge
  6. Run tests without ‘-t
  7. Merge your work in the plip branch, not the master
  8. Test again before the push
  9. If you need help asks (I know, git is overcomplicated ;-) )
  10. Have fun! Did I say it before?
  11. Have  a follow up plan and stay in touch

Thanks to Eric Steele for the first setup, Liz as the proposer of the sprint topic, Maurits as the technical leader and for all people around there that were working on that sprint.

Release upgrade to KUbuntu 13.10 Saucy


This time I got all errors you can have.

Before the upgrade I need to disable manually partners repository in /etc/apt/source.list.

Keep in mind to disable etc-keeper if you’re using it and if you choose btrfs to disable compression.

During the upgrade I got an error with updating initramfs. It was caused by initramfs-tools-ubuntu-touch so it’s safer to remove ubuntu-touch and initramfs-tools-ubuntu-touch before the upgrade if you don’t need them.

After i got to problems with grub :

Just after the kernel boot this message was displayed ten seconds :Error: environment block too small. It means that the file /boot/grub/grubenv is stucked to 1000 bytes instead of 1024 bytes.

Solution :

rm /boot/grub/grubenv
dpkg-reconfigure grub-pc

So, the kernel hangout during Btrfs scanning:

Still no solution. The scanning works in safe mode. Bugs reported in lauchpad suggests it’s an errors introduced in the kernel 3.11.0-12 and we should downgrade to 3.11.0-11 that is not available in generic flavour. I tried the lowlatency flavour without success. I tried too with the 3 last mainline kernels without success (https://wiki.ubuntu.com/Kernel/MainlineBuilds and http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12-rc3-saucy/).

Using the safe mode the Btrfs scanning is performing well but at the end of the boot, lightdm doesn’t start. It freezes and you cannot kill it using Ctrl+c. There’s no log. I tried gdm and it fails too. I configured kdm as main display manager and now I can log in.

Then I launch KDE4/Plasma and kwin doesn’t like wayland :

kwin: error while loading shared libraries: libwayland-eg1.so.1: no such file or directory

This time I found no clue to fix that. It’s not really a succes.

Unity still works… in kernel safe mode. But I don’t have the menu to logout (‘unity –reset-icons’ doesn’t change anything but loosing my customizations).

Since 1996 I never got such a mess for an upgrade.

Plant UML


Example UML State diagram.

Example UML State diagram. (Photo credit: Wikipedia)

You want to do UML to have beautiful images to add in your documentation? Then Plant UML is done for you!

You just have to write a plain text file and launch the interpreter and you will obtain a pretty diagram:

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml

The pro

  • it’s easy to follow in your favorite DCVS
  • it’s easy to learn with a very good documentation
  • it’s working on all plateform and generate good images
  • you can customize a lot

Cons:

  • it becomes really usable if you use the graphical editor
  • Order of declaration is important for the display

http://plantuml.sourceforge.net/

http://sourceforge.net/projects/plantumlqeditor/

How to use curl to test a REST API with a beautiful JSON indentation


How to get indented JSON with curl output

You need to install simplejson Python module in your environment, or python-simplejson.

curl [options] url | python -msimplejson.tool

An example with github APIv3

curl -s -H "Content-Type: application/json" -X GET \
     "https://api.github.com/repos/collective/collective.ckeditor" \
     | python -msimplejson.tool

How to display response headers and API errors with the JSON indentation

This command line have two problems :

  1. You cannot display response HTTP headers because it breaks simplejson parsing
  2. If you have an error with a request and you don’t know how to debug it.

You need to add two more options to push header response and error message in stderr: -S and -D /dev/stderr. Now you can test your API with all informations in one command:

curl -s -S -D /dev/stderr -u user:password \
     -H "Content-Type: application/json" -X GET \
     "http://myapi/v1/test/"

From curl manual:

  • -s no progress bar; stats report or errors are dislayed
  • -S display errors if -s is enable
  • -D dump the header in a file; here stderr to make them not interfer with json indentation
  • -u user and password for Basic HTTP Authentication
  • -H add header in the outgoing request
  • -X HTTP Command to launch. If you’re using Basic HTTP Authentication you must use -X GET

If someone have tip to add pygment coloration in json and headers I will be glad to share the ownership of this article.

L’ALDIL, une association d’utilisateurs de logiciels libres


Cela sonne comme une évidence mais il est bon parfois de le rappeler.

En tant qu’association de promotion du Logiciel Libre ses membres sont amenés à pendre contacts avec des institutionnels et à participer à des tables rondes ou des rencontres impliquant des professionnels de différents secteurs. Dans ce contexte il nous est souvent demandé directement ou en marge une liste de contacts professionnels pour des formations, du conseil, des audits, ou d’autres prestations. Ces démarches sont plutôt de bons indicateurs de la bonne santé du Logiciel Libre et de la place de l’ALDIL dans l’écosystème local, mais généralement nous préférons botter en touche et nous demandons au requérant de faire un annonce publique. Je l’ai encore répété lors de la dernière réunion de l’Open ADIRA (la branche Open Source de l’Association pour le Développement de l’Informatique en Rhône-Alpes).

Dans notre zone d’activité c’est au nouvellement formé PLOSS-RA de tenir ce type d’annuaire. Pour l’instant, le site contient juste une liste de sociétés membres mais elle devrait rapidement s’enrichir et proposer un système de sélection par facette par rapport aux domaines de compétences et aux services fournis par chaque entreprise.

L’ALDIL est le partenaire idéal lorsqu’il s’agit de préparer des conférences ou des ateliers avec des utilisateurs avertis ou des développeurs. Elle peut aussi servir de relais aux initiatives tournant autour de la culture libre (musique, film, agriculture,…). Nos partenaires apprécient notre neutralité et nous comptons bien la garder.

2010 : liens de la semaine 6


Un seul lien cette semaine, l’article hedbomadaire que je co-écrit pour l’AFPY : Python WAW.
Je viens d’être élu président de l’Association Lyonnaise pour le Développement de l’Informatique  Libre (ALDIL) ce qui va m’obliger à réduire ma participation dans beaucoup d’autres choses, comme cette rubrique.
Ce blog va aussi continuer son ouverture sur le logiciel libre en général pour mieux correspondre à mes activités.

2010 : liens de la semaine 3


Cette rubrique hebdomadaire va bientôt changer. Pour éviter les doublons elle va être fusionné avec celle de Youenn Boussard sur le site de l’AFPY. Elle continuera sur le signe de l’ouverture avec des sujets moins centré sur Python ou avec des ressources plus techniques que celles de l’AFPY.

Heuristique

Les cartes heuristiques ou mindmapping sont au centre de recherche diverses et variées. Voici un article intéressant sur un débordement de cette technologie :

Carte heuristique et résolution de problème assistée par ordinateur, une révolution annoncée

Python

Tout d’abord une initiative amusante avec un site qui essaye de regrouper tous les logos utilisés autour de Python :

Python Logos Part II: Free Form

Une dédicace particulière pour le logo des lillois : PYthon LUnch LillE

Sinon, j’ai découvert ce petit éditeur live de reStructured Text écrit comme un service Python. Un projet à suivre et à aider :  reStructuredText editor

Zope

L’heure est au recensement des ressources avec le renommage de la partie Web du framework Zope 3 en Bluebream. cet article écrit par Baiju Muthukadan permet de faire la synthèse  sur l’état actuel :

BlueBream

Plone 4 aussi est annoncé dans les starting blocks avec la préparation de la première béta. Une nouvelle version implique souvent une migration. Maarten Kleen a écrit un article très intéressant sur la migration d’objets dont la classe de base a changé :

Trying zodbupdate

Enfin un article intéressant sur la résolution de la recherche des interfaces dans Zope 3 :

Zope Views: should have been "request, context"; not "context, request"

Plone

La huitième conférence annuel de Plone aura lieu en Europe, à Bristol, du25 au 31 octobre. À vos carnets :

Bristol 2010

Nettuts+

Un certain nombre de tutoriel que je présente viennent de ce site. Une grande partie de leur contenu est payant et les tutoriels mis en ligne sont souvent de très bonne qualité. Tout d’abord une video sur les outils en lignes permettant de tester le rendu de vos sites sur les navigateurs :

Quick Tip: Top 5 Ways to Browser-Test your Website

Un bon tutoriel sur l’utilisation des transformation XSL pour transformer des données XML enpage web :

Getting Started with XSL(T)

2010 : liens de la semaine 2


Pas beaucoup de liens en français cette semaine encore.

Logiciel Libre

Free Software Licenses Iconified

Un initiative intéressante pour essayer de résumer en images les différentes licences libres. Il manque les licences de classe Cecill qui commencent à être utilisées pour des projets français et européens.

Plone

on Zope, multiple cores, and the GIL

Encore un article sur les problèmes de performances liés au verrou global de l’interpréteur Python (GIL). Cela valide le fait qu’il faut essayer de multiplier les instances clients ZEO plutôt que d’essayer d’augmenter le nombre de processus (zthread) d’une instance.

main_template as BrowserView

Cet article montre comment surcharger un template Zope qui se trouve dans les skins par un vue à la Zope 3.

Plone 4 faster than WordPress

Des tests réalisés avec Plone 4+Deliverance face à WordPress montrent que sans cache web la dernière mouture de Plone est plus rapide que l’incontournable WordPress.

Plone 4 – How much faster is it?

Encore des comparaisons mais cette fois entre Plone 3.3.3, Plone 4 alpha1 utilisant les classiques Zope Page Template et Plone 4 alpha 1 utilisant Chameleon (le moteur de template initié par Malthe Borch). Les gains sont de 50% à 70% en faveur de Plone 4 avec net avantage pour Chameleon.

2010 : liens de la semaine 1


Cette semaine a été très productive du côté des blogueurs et en particuliers chez les développement autour du core Python.

Python

Pour ceux qui ne connaissent cette boîte de Pandore qu’est le GIL (Global Interpretor Lock) en Python voici un très bon article qui mesure son effet dans le traitement des entrées/sorties avec des systèmes multi-processeurs ou multi-cores :

The Python GIL Visualized

Jesse Noller rappelle les but initiaux du projet Unladen swallow en partie sponsorisé par Google et signale malicieusement en fin d’article qu’une proposition de fusionner leur travail dans Python Core pour Python 3 :

UNLADEN SWALLOW: PYTHON 3’S BEST FEATURE.

Tarek Ziadé, notre président bien aimé, présente les nouvelles fonctionnalités en cours de discussion pour la prochaine version majeure de Distutils, ce qui intéressera tout ceux qui publient des eggs :

Possible new features for Distutils 2.7

Mark Mruss fait une présentation détaillé des ‘docstring’ – ces commentaires qui décorent vos modules, vos classes et vos fonctions – et montre quelle utilisation avancée de celles-ci peut être faite (documentation, tests) :

Introducing Docstrings

Encore un article sur la préparation de la distribution de code qui montre comment mettre en place facilement des scripts  de pré-traitement et de post-traitement :

Using setuptools entry points

La première revue complète du livre « Dive Into Python 3 » (Au cœur de Python 3) :

Book Review: Dive Into Python 3

Enfin deux articles sur les fonctionnalités que les gestionnaires de projets veulent dans mercurial. Dans le premier cas il s’agit de Python-dev qui est censé être migré entièrement cette année sous mercurial :

Where the Hg transition stands

Le deuxième est un développeur qui fait pas mal de Django (vous aimerez sans doute aussi son article free VS free) :

DVCS Ponies

Plone

Voici la description d’un problème récurrent pour les sites multilignues en Plone : comment réordonner des éléments dans une page :

Ordering objects in folders with multilingual sites

Une des solutions les plus faciles à mettre en place est d’afficher toutes les langues lors du tri pour être sur que le Javascript se comporte correctement. L’autre est de demander au Javascript de ne prendre en compte les rangs réels des contenus déplacés plutôt que le rang à l’affichage.

Alex Clarck montre comment installer Plone juste avec buildout en 5 minutes, sans avoir à installer l’unified installer ou Paster :

No, really, you can (just) use Buildout to install Plone

WEB

Encore une fois je terminerai par des liens plus centrés sur le développement Web en général et jQuery en particulier.

Réaliser des animations en jQuery en 7 étapes :

jQuery Animations: A 7-Step Program

Un visualisateur de contenu (d’images) à l’épreuve des balles :

A Bullet-Proof Content Viewer

Personnaliser les événements et l’API des Événements Spéciaux dans jQuery :

Custom Events, and the Special Events API in jQuery

D’où vient la richesse ?


Richard Stallman vient de faire petite tournée française du 12 au 15 janvier pour animer diverses conférences (Richard Stallman en tournée en France). C’est une bonne occasion pour revenir sur le ou plutôt les modèles Open Source. Depuis plus d’une décennie, un clivage assez diffus se crée au sein des communautés : « Are we making Free Software or Open Source? ». Aujourd’hui Framablog a mis en ligne la traduction d’un article publié sur la blog de Google qui montre que même cette société parmi les plus influentes a besoin de communiquer sur ce sujet  :

L’ouverture selon Google : « The meaning of open » traduit en français (Google and The meaning of open)

Au-delà de cette réflexion vient celle de la richesse et de la manière de la générer à partir d’un travail intellectuel.

La richesse dans le monde

Le système monétaire et pécuniaire a été créé pour permettre l’échange de biens et la quantification de la richesse. Basé sur le principe souvent biaisé de l’offre et de la demande il nous permet de faire circuler ou d’amasser de la richesse. Mais celui-ci ne définit pas la richesse : il ne fait que la quantifier et la rendre tangible.

Un mineur qui extrait une matière première va produire une quantité moyenne de minerai qui va être vendue au poids. Il est limité par la quantité de minerai dans la mine et par son outillage. Un cultivateur va récolter et vendre ses produits au poids ou à l’unité. De la même manière il est limité par la taille de son exploitation et son outillage. Un ouvrier ou un artisan va façonner, modifier et vérifier un nombre de pièces déterminé par période de temps selon la complexité de la tâche (une boîte de conserve métallique met moins de temps à être créée qu’un Stradivarius). Il est limité par l’afflux de matières premières et par son outillage. La corne d’abondance ayant été tarie il y a bien longtemps, toutes ces professions sont avant tout limitées par le fait que la Terre est un volume fini. Nous ne connaissons pas les ressources exactes de notre planète mais nous sommes capables de mettre en équation la richesse qu’elle nous procure chaque année et qu’elle nous procurera en moyenne pour les 50 prochaines années. Cette richesse est tangible. Nous la voyons tous les jours bâtir notre confort.

À l’autre bout de la chaîne il y a des produits financiers qui sont le produit d’équations complexes prenant en compte la réussite de projets qui ne sont pas encore mis en œuvre et une croissance mondiale estimée basées sur plusieurs niveaux d’estimation qui reposent eux-mêmes sur des prévisions. Cette richesse est intangible et complètement spéculatoire. Tant que la boîte de Pandore n’a pas été ouverte (et que les estimations n’ont pas été vérifiées par une observation des résultats) ces produits peuvent rapporter une fortune ou au contraire représenter un dette colossale. Nous pourrions la qualifier de « richesse de Schrödinger ».

Au mileu de cela il y a tout un ensemble de métiers qui apportent des richesses relatives à des connaissances ou un savoir faire développé à partir de connaissances. Un artisan va aussi bien fournir un service quantifiable dans la création d’une pièce qu’une richesse non quantifiable en travaillant sur l’esthétique ou sur la qualité de la pièce. Les enseignants, les médecins (et tant d’autres), les corps juridiques et législatifs procurent de la richesse chacun à leur niveau même si leurs produits ne sont pas quantifiables : le savoir, la santé, le droit, la loi. Si nos parlementaires étaient payés à l’amendement voté, combien de procédures législatives seraient sans fin ? Malgré tout, cette richesse est quantifiable.

Tout service rendu directement ou indirectement à une personne,  à une entreprise ou à une société représente un investissement en apprentissage, en outillage et en temps qui est quantifiable. Tout cela restant dans le contexte de notre planète, comment obtenir la plus grande richesse à partir de ressources limitées ?

Le dilemme de l’appropriation et du partage

Dans la recherche scientifique on commence souvent par définir un environnement idéal (un gaz parfait, un matériau sans défaut, une énergie constante et inépuisable). Une fois qu’un modèle satisfaisant est obtenu, les contraintes de la réalité sont rajoutées pour le mettre à l’épreuve. Dans un écosystème idéal tout être vivant, et ses descendants, possède les ressources nécessaires à sa survie. À partir de cela, il est possible de créer un nombre infini de modèles idéaux  de « tous les êtres sont propriétaires de tout » à « chacun est propriétaire uniquement des ressources strictement nécessaires à sa survie immédiate » en passant par une infinité de variantes. Ces deux modèles extrêmes n’encouragent aucune compétition.   La vie a choisi un système moins tranché: chaque être peut s’approprier toutes les ressources qu’il veut mais celles-ci peuvent lui être disputées par les autres.

Un être seul ne peut posséder toutes  les ressources et la plupart des êtres ne possèdent pas les ressources suffisantes à leur survie. Pour survivre il leur faut s’associer avec d’autres êtres. Ils partageront les mêmes ressources pour en tirer le maximum possible dans le but de faire survivre l’association entière. Les liens tissés entre les êtres d’une association sont complexes et les associations interagissent aussi avec leur environnement. Les deux points communs de toutes les associations sont le partage de ressources et la lutte pour la survie. Dans une association, les deux principes sont l’autosuffisance et la communication. Le premier permet de définir un espace vital, des règles de production et d’échanges (volontaires ou non) de ressources – les fourmis fournissent aux pucerons une plante dont ils se nourrissent et en échange elles se nourrissent sur leur dos – et des règles de reproduction. Le deuxième permet de gérer les informations connues sur l’environnement. Elle permet aux associations de faire face aux pénuries, aux attaques, ou au contraire à la surabondance.

Les associations qui survivent le mieux sont celles dont les membres sont les plus adaptés à leurs tâches et qui communiquent le mieux entre eux. La communication contient la transmission du savoir, du savoir-faire et des signaux. Elle permet de gérer et d’obtenir plus de ressources. Sans être de la richesse, elle en représente un support comme peut-être la monnaie dans une autre dimension  : elle va permettre la transmission, l’échange et l’obtention de richesse sans jamais la matérialiser. Pour autant la communication n’est ni immédiate ni fidèle. En reprenant l’exemple des fourmis, elles ne donnent pas d’indication aux pucerons sur le nombre de plantes disponible ni sur les prédateurs éventuellement présents dans les environs. Pourtant elles vont partager des plantes avec eux pour qu’ils en tirent une meilleure substance qu’elles n’auraient su le faire. Leur association s’est approprié une ressource qu’ils ont partagée. La nature est remplie d’exemples de ce types d’association à des niveaux beaucoup plus complexes. Entre autres, une association peut être composée de plusieurs associations et un être peut faire partie de plusieurs associations distinctes.

L’écosystème des services

Chaque service correspond à un besoin qu’il peut éventuellement susciter – la peur génère des besoins qu’il est souvent difficile de justifier mais facile à combler. Lorsqu’une entité – un être ou une association – fournit un service à une ou plusieurs autres, elle attend un échange de richesse en contrepartie. Une nouvelle association naît de cet échange avec ses gains et ses dépendances. Le niveau de dépendance autour d’un besoin va dépendre du nombre de fournisseurs et de la transparence des interactions entre eux. Un parasite qui ne peut survivre que sur une seule espèce va s’éteindre avec elle. Si tous les troupeaux évitent une zone où sont présents leurs prédateurs ceux-ci vont devoir se rabattre sur des proies plus petites et moins nombreuses et vont surement voir leurs populations se réduire et s’adapter voire s’éteindre. En contrepartie les troupeaux vont comporter plus d’animaux faibles, malades et non féconds ce qui va amenuiser leurs chances de survie à long terme.

Pour que les entités puissent  s’adapter à la défection de l’une d’entre elles,  il faut que le besoin soit clairement connu du demandeur et que la relation avec le fournisseur comporte une communication du savoir et du savoir-faire suffisante pour qu’un service équivalent puisse être créé en interne ou apporté par une ou plusieurs entités extérieures à l’association. La défection peut aussi bien être la suppression pure et simple du service comme une demande de contrepartie non viable ou non optimale pour l’association. Si le saumon de rivière devenait moins gras les ours arrêteraient de le chasser pour constituer leurs réserves d’hibernation mais continueraient toutefois de le chasser pour la richesse de sa tête en nutriments essentiels. Il leur faudra compenser en augmentant leur prises en animaux gras dans d’autres catégories de proies ou en trouvant une source spécialisée en graisse (des oies et des canards du Gers par exemple).

Si l’adaptation ne peut être réalisée rapidement l’entité demandeuse va au mieux perdre une partie de ses ressources (donc de sa richesse) et au pire perdre des éléments et une part plus importante de richesse jusqu’à la disparition. Durant le processus de disparition elle peut aussi être englobée par une entité fournissant ce besoin en interne souvent avec des contreparties plus importantes et une marge de manœuvre plus limitée pour sa survie mais moins dépendante de sa seule communication avec les fournisseurs de services.

Et le logiciel dans tout ça ?

Le point le plus important est la définition exacte et objective du besoin. Avoir besoin d’un site web pour gagner de l’argent ne permet pas  de définir quelles sont les technologies qui rendront le meilleur service au coût moindre en vue des ressources consommées. En revanche, être capable de savoir quelles relations nous voulons mettre en place entre les visiteurs d’un site et son contenu va permettre de créer les scénarios  qui vont qualifier ou disqualifier des plateformes logiciels et des plateformes d’hébergement. Après viendront les questions d’indépendance et de coût.

Les logiciels fermés vont créer une plus grande dépendance au niveau de l’obtention des licences et de l’évolution du matériel et de l’hébergement, mais pas forcément une plus grande dépendance  vis-à-vis des prestataires au niveau des services personnalisés. Un nouveau prestataire devra sûrement recréer le service existant pour être en mesure de le contrôler. En revanche, la concurrence est souvent plus rude entre les prestataires de logiciels fermés car leurs coûts sont très similaires. La communication est plus souvent axée sur ce que la solution est capable de faire que sur la manière dont la solution remplit votre besoin. En cas d’évolution de la solution il n’est pas évident de détecter le glissement entre le besoin initial et le service rendu par rapport au coût. Le partage d’informations et l’apprentissage se font lors de séminaires et de formations coûteuses ou sur des forums dont le contenu est soigneusement filtré. Les groupes d’intérêts autour d’un logiciel fermé vont être dirigés par l’éditeur et ses partenaires directs (prestataires ou cliens). S’il émerge des places d’indépendances génératrices de trop grandes richesses, elles sont soit englobées dans un groupement plus grand mieux contrôlé et rentabilisé, soit rachetées, soit attaquées en justice.

Les logiciels libres ont plus de transparence sur la manière dont ils remplissent un besoin. Les blogs et les sites des communautés sont remplis d’exemples et de documentation à ce sujet. Et si cela n’était pas le cas il vous est facile de publier une série de documents en interne ou en externe qui précisent votre démarche et vos méthodes pour remplir votre besoin. Si les documents sont publiés en externe, les retours vous permettront d’améliorer votre expérience à faible coût. L’apprentissage se fera le plus souvent en ligne comme le partage d’informations sans nécessité d’abonnement ou de formation coûteuse. Des prestataires pourront vous proposer ce type de service pour augmenter votre savoir et votre savoir-faire plus rapidement mais cela ne sera qu’optionnel. L’investissement le plus important pour les logiciels libres sera la veille technologique et l’apprentissage et sera plus quantifiable en temps qu’en argent. Cela rend son coût moins maitrisable en théorie mais pas dans la réalité.  Les groupes d’intérêts autour d’un logiciel libre sont de deux types : communautaire et projets satellites.  La communauté de développeurs et d’utilisateurs met en place ses outils de communication avec des listes de diffusion, des sites, de la messagerie instantanée, etc. Les utilisateurs et les développeurs vont aussi créer un système équivalent autour de projets satellites dans lesquels ils vont s’impliquer beaucoup plus directement et qu’ils vont sponsoriser plus facilement, souvent au grand bénéfice de la communauté entière. Autour de Plone je peux citer les projets Plone4Artists, getPaid (e-commerce), PloneGov (universités), CommunesPlone,  EduCommons (implémentation d’OpenCourseWare) et bien d’autres.

Toutefois les logiciels se rejoignent sur quelques points. Si peu de prestataires maitrisent un logiciel, la dépendance envers ceux-ci est la même qu’il soit ouvert ou fermé. Il faut alors choisir de faire confiance au prestataire ou d’avoir en interne une alternative prête à l’emploi en cas de défaut de celui-ci. De même si vos données sont prisonnières dans un système duquel il ne vous est pas possible de les extraire en entier avec les métadonnées que vous leur avez ajoutées, vous ne pourrez assurer leur pérennité ni la migration vers un nouveau système ou même vers la version supérieure du système que vous utilisez. Il faut considérer une donnée, une relation, un document comme un tout au sein de son contexte et non pas comme un élément du système.Dans ces deux cas le logiciel apporte la richesse toute relative d’un produit financier complexe: jackpot ou banqueroute.

À l’heure du choix

Au final, lorsque le besoin est bien établi le choix entre logiciel libre et logiciel fermé se fera en fonction du ratio temps/argent que vous souhaitez investir et du délai que vous proposent les prestataires. Si vous en prenez le temps, le logiciel libre vous apportera plus de connaissances, de maitrise, d’indépendance et de retours sur investissement par rapport à votre besoin. Cela deviendra votre richesse interne. Le logiciel libre n’impose pas, pour les applications créées en interne,  à quelques exceptions près, la diffusion des sources  à l’extérieur . Vous pouvez donc choisir comment communiquer votre expérience et faire connaître votre savoir-faire.

Suivre

Recevez les nouvelles publications par mail.

Joignez-vous à 276 followers