KrISS feed 8 - Un simple et superbe (ou stupide) lecteur de flux. Par Tontof
  • Friday 30 June 2017 - 14:58

    L’avantage d’avoir quelques années de programmations dans les pattes et un certain nombres de projets à son actif, c’est qu’on arrive à identifier des motifs communs qui se dégagent encore et encore.

    Par exemple, quand j’étais en tout début de carrière, j’ai ouvert l’excellent bouquin “Head first design patterns” et je n’en ai pas retiré grand chose car je n’avais pas la matière pour pouvoir identifier l’utilité des solutions proposées. Bien plus tard, en le relisant, je me suis aperçu que j’avais en fait rencontré moult fois chaque chapitre IRL, base de code après base de code.

    La vie apprend les design patterns bien plus efficacement que les écrits. Mais ces derniers ont l’avantage de mettre de l’ordre dans ses idées. Ils mettent des mots sur des pensées floues, et tracent des contours qui délimitent pragmatiquement les concepts.

    Aujourd’hui néanmoins, nous n’allons pas parler de design pattern, bien que faire un dossier dessus serait une bonne idée. Mais ça fait des mois que je dois finir le dossier tests unitaires, alors je vais pas commencer un nouveau dossier.

    Non, aujourd’hui, nous allons parler d’outils dont on a besoin dans quasiment tous les projets important et qu’on réinvente, ou rapièce, presque à chaque fois.

    Dispatching

    Que ce soit parce que vous avez un observer, du pub/sub, un système de routing ou des events internes, votre projet finira par avoir besoin d’un système de dispatching. Le dispatching c’est la propagation/distribution de l’information et de son traitement.

    Ils ont toujours la même chose en commun:

    • Des points centraux qui prennent les entrées et les dirigent vers les bonnes sorties.
    • Un système d’enregistrement des points d’entrées (hooks) et des points de sorties (endpoints).
    • Une logique de résolution qui permet de faire transiter les données depuis une entrée, vers une ou plusieurs sorties, parfois aller-retour.

    Par exemple:

    • Le pub/sub de redis ou crossbar.io.
    • Le routing URL d’un framework Web comme Django ou Rails.
    • Les events d’un UI comme le addEventListener en JS ou connect() en QT.
    • La remontée hiérarchique des messages de logs dans le module Python logging.

    Ce sont tous des implémentations spécialisées d’un système de dispatching. Le hello world du dispatching est le design pattern observer, qui minimalement ressemble à ça:

    >>> class Dispatcher:
    ...     def __init__(self):
    ...         self.registry = {}
    ...     def on(self, event, callback):
    ...         self.registry.setdefault(event, []).append(callback)
    ...     def trigger(self, event):
    ...         for callback in self.registry[event]:
    ...                 callback()
    ... 
    ... hub = Dispatcher()
    ... 
    ... hub.on("j'arrive", lambda: print('coucou'))
    ... hub.on("j'arrive", lambda: print('salut'))
    ... 
    ... hub.trigger("j'arrive")
    ... 
    coucou
    salut

    En fait, à moins de faire uniquement des scripts, vous avez utilisé plein de systèmes de dispatching sans le savoir.

    Bien que pour qu’ils soient utiles il faut des versions spécialisées pour chaque usage, c’est un problème générique et il est ridicule que nous devions réimplementer à chaque fois ce truc. Un bon système de dispatching est utile dans tout gros projet. Vous voulez permettre à quelqu’un de lancer du code quand votre système s’initialise ? Créer une logique de plugin ? Bam, il faut du dispatching.

    Il faudrait donc un framework en Python qui permette de fabriquer son propre système de dispatching. Il devra bien entendu inclure des implémentations spécialisées au moins pour les cas les plus courants sinon ça fera comme une lib zope et ça prendra la poussière.

    Le but étant qu’au bout de quelques années, tout le monde base son implémentation sur cette brique, robuste et documentée, plutôt que de créer son propre système.

    En effet, un bon système de dispatching doit pouvoir gérer les cas suivants :

    • Mono directionel ou bi-directionel.
    • Un ou plusieurs endpoints.
    • Middlewares.
    • Algo de routing custo.
    • Passage de paramètres à l’ajout d’un enpoint.
    • Passage de contexte à l’appel de l’endpoint.
    • Appel synchrone ou asynchrone des endpoints
    • Enpoint locaux ou remotes.
    • Gestions de plusieurs dispatchers en parallèle.
    • Interconnection de plusieurs dispatchers.
    • Adapters pour les dispatchers courants déjà existants.

    Le tout bien entendu avec des backends pour chaque partie qu’on puisse swapper.

    Configuration

    La conf, c’est l’exemple exacte de la fragmentation dans notre métier. C’est l’usine a roues (carrées) réinventées.

    Sérieusement, entre le parsing des arguments de la ligne de commande, les fichiers de config, les services de config (etcd anyone ?), les configs sauvegardées en BDD, les API de conf, les variables d’environnement, etc. c’est un bordel sans nom.

    Tout le monde a fait son petit fichier params.(ini|yml|xml|json) et ou sa table SQL settings dans un coin. Et la validation. Et la génération. Et les valeurs par défaut. Et l’overriding des envs. Ca change à chaque projet, à chaque framework, à chaque foutu lib.

    C’est que le but est simple, mais le problème est complexe. Mais on en a tous besoin, et il n’y a rien, mais alors rien qui existe de générique.

    Une bonne lib de conf doit:

    • Offrir une API standardisée pour définir les paramètres qu’attend son programme sous la forme d’un schéma de données.
    • Permettre de générer depuis ce schéma les outils de parsing de la ligne de commande et des variables d’env.
    • Permettre de générer depuis ce schéma des validateurs pour ces schémas.
    • Permettre de générer des API pour modifier la conf
    • Permettre de générer des UIs pour modifier la conf
    • Séparer la notion de configuration du programme des paramètres utilisateurs.
    • Pouvoir marquer des settings en lecture seule, ou des permissions sur les settings.
    • Notifier le reste du code (ou des services) qu’une valeur à été modifiée. Dispatching, quand tu nous tiens…
    • Charger les setting depuis une source compatible (bdd, fichier, api, service, etc).
    • Permettre une hierarchie de conf, avec une conf principales, des enfants, des enfants d’enfants, etc. et la récupération de la valeur qui cascade le long de cette hierarchie. Un code doit pouvoir plugger sa conf dans une branche de l’arbre à la volée.
    • Fournir un service de settings pour les architectures distribuées.
    • Etre quand même utile et facile pour les tous petits scripts.
    • Auto documentation des settings.

    Pas évident non ? Ça change de “ah bah je vais dumper tout ça dans un settings.py et on verra bien” :)

    Les bénéfices d’avoir un bon système de settings sont énormes. D’abord, si il est largement adopté, plus besoin de fouiller dans la doc de chaque projet pour savoir comment l’utiliser. Les problèmes difficiles comme les “live settings” sont réglés une fois pour toute. Plus besoin d’écrire pour la millième fois le code de glue entre son schéma marshmallow + ses params clicks + son parser yml qui sera forcément bricolé. Et une expérience utilisateur bien meilleure avec de la doc, des messages standardisés, des checks de sources de données que d’habitude personne ne fait, etc.

    Logging

    Oui, je sais, je sais, Python a un excellent module de logging, très riche et polyvalent. Et puis ce ne sont pas les projets de logging qui manquent. Il y a celui de twisted, il y a logbook, logpy… En fait ĵ’ai même pondu devpy.

    Malgré ça, force est de constater que tous ces projets sont loin d’être une bonne solution pour convenir à tous.

    Le module logging Python manque de configuration par défaut, n’a pas de gestion multiprocessing, aucune facilité pour générer des logs structurés ou binaires, etc. logbook et logpy sont des surcouches qui améliorent, mais sans aller assez loin, l’expérience. Twisted comme d’hab fait le café mais est indigeste. Logpy n’est bien que pour les cas simples.

    Un bon module de logging devrait:

    • Etre compatible avec la stdlib, et avoir des adaptateurs pour les systèmes les plus courants (comme twisted).
    • Gérer le multiproccessing, particulièrement le locking des fichiers ou avoir un process central dédié au log.
    • Proposer une UI user friendly de consommation des logs.
    • Avoir des pré-configuration prête à l’usage hyper simple et rapide à utiliser pour les cas les plus simples, comme le scripting.
    • Gérer des formats avancées: json, binaires, nesting, log structurés, etc. Avec des recettes toutes faites pour les cas courants.
    • Avoir une bonne intégration avec les systèmes de logs natifs de l’OS sans besoin de trifouiller.
    • Proposer des outils d’analyse de logs.
    • Offre des solutions pour les cas simples (console, fichier, coloration, post-mortem, etc) ou complexe mais courants (mail, logstash, sentry, log sur serveur distant, etc).

    Au fait, aviez-vous notez que le cœur d’un système de log est un dispatcheur ? :)

    Lifecyle

    Dès que vous créez un projet, il a un cycle de vie. Il s’initialise, charge les paramètres, load les plugins si il y en a, lance son processus principal, puis finit par s’arrêter, ou foirer, ou les deux.

    Si c’est un petit script, ce n’est pas très important, on ne s’en rend même pas compte.

    Si c’est un gros projet, vous allez vouloir que le code du reste du monde puisse interagir avec ça. D’ailleurs, tous les gros frameworks vous permettent de réagir au cycle de vie. Django a le fichier appconfig.py par exemple pour lancer du code au démarrage du framework, et des middlewares pour intercepter les requêtes et les réponses. Twisted permet de dire “lance ce code à dès que le reactor est en route”. Pour comprendre Angular ou une app Android, la moitiée du boulot c’est de piger les différentes phases du cycle de chaque composant.

    Le cycle de vie est en fait un système de dispatching (surprise !) couplé à une machine à état fini, et concrétisé dans un processus metier. La bonne nouvelle, c’est que des libs de state machines en Python on en a un max, et des bien fournies. La mauvaise, c’est qu’avec la popularité grandissante d’asyncio, on a de plus en plus besoin de gérer explicitement le cycle de vie de ses projets et qu’on a rien de générique pour ça alors la cyclogénèse envahie la communauté.

    En effet, dès qu’on a une boucle d’événement comme avec asyncio/twisted/tornado, on a un cycle de vie complexe mais implicite qui se met en place puisque la loop démarre, s’arrête, est supprimée, est remplacée, est en train d’exécuter une tâche, une tâche qui peut générer des erreurs… Et très vite le cycle dégouline de partout, et on commence à coder ici et là pour gérer tout ça sans se rendre compte qu’on créer petit à petit un énième framework de lifecycle. Pas vrai Gordon ?

    C’est l’histoire de la viiiiiiiiiiiiiiiie. C’est le cycle éterneleuuuuuuuuuh. De la roue infinieeeeeeee. Codée à la truelleuuuuuuh.

    Structure de projet

    Bon, imaginons que vous ayez une lib de life cycle, qui charge vos settings avec votre super lib de conf, log tout grâce à votre géniale lib de logging, le tout powered par une lib de dispatching que le monde vous envie. Le perfide.

    Je dis “imaginez” parce que dans votre projet vous avez plutôt un tas de crottes retenues par un cornet de glace que vous avez codé pour la enième fois à la va vite en utilisant 30% de libs terce partie, 30% d’outils votre framework du jour et 40% de roux (du NIH sans ame quoi…).

    Donc imaginez ça. Et maintenant vous voulez mettre en place un moyen de diviser votre projet en sous parties. Peut être des apps, ou pourquoi pas des plugins. Mais vous voudriez que tout ça soit gérable par un point d’entrée principal, ou individuellement. Que ça se plug dynamiquement. Que ça joue bien avec votre système de conf et de lifecyle. Diantres vous voulez qu’un code externe puisse être découvert et pluggé au système. Choisir si ça tourne dans des threads ou des processus séparés. Mais communiquer entre les partie. Et que tout ça soit découplé bien entendu ! Sauf qu’il y a une gestion de dépendance des plugins…

    Pas de problème, vous prenez un bus de communication, un système de plugin, un graph de résolution de dépendances, vos super libs ci-dessus et vous gluez tout ça avec de la logique de chez mémé et de la sueur. Une mémé si ronde qu’elle a un pneu autour de la taille. Et un essieu.

    Django a ses apps. jQuery a ses plugins. L’app d’un de mes clients avec un hack a base d’importlib et ctype qui loadait une dll pour charger les drivers de leur matos. Ca roule Maurice, ça roule à mort.

    Il nous faut une lib de référence qui permette:

    • De diviser son projets en plus petites unités tout en gardant un point central pour faire le lien
    • De découvrir, charger et décharger ces unités.
    • Permettre de répartir ces unités dans des threads, multiprocess, machines.
    • Les faire communiquer.

    Et dans les ténèbres les lier

    Une fois qu’on a tout ça, il faut bien entendu un gros framework qui permette de faire le lien entre tout ça et coder un projet automatiquement intégré.

    Imaginez… Imaginez pouvoir faire un truc comme ça:

    from super_framework import projets, config
     
    # Tout est configurable et réassemblable, mais le framework offre des réglages 
    # auto pour les usages simples
    project, app, conf = projets.SimpleProject('name')
     
    # Fichier de conf automatiquement créé, parsé et vérifié. Valeurs exposées en 
    # CLI et overridables.
    @config.source(file="foo.tml")
    class Schema(config.Schema):
        foo = config.CharField(max_len=30, live=True)
        bar = config.DateField(optional=True, local=True)
        baz = config.TextField(
            verbose_name="Basile", 
            default="Je sers la science et c'est ma joie"
        )
     
    # Lancé automatiquement à la phase d'init du projet
    # Des events comme ça sont lancés pour chaque app, et chaque phase de vie de 
    # chacune d'elles.
    project.on('init')
    async def main(context):
        # un log sain automatiquement fourni
        app.log('Debut du projet. Verbosité:', conf.log.level)
     
    # Démarre l'event loop. Parse la ligne ligne de commande et les 
    # variables d'env, puis le fichier de conf. Mais seulement si le module n'est 
    # pas importé (comme __name__ == "__main__")
    # Print le fichier de log automatique dès le démarrage du programme
    project.cmd()

    Et imaginez que de ce petit script, ça scale sur 20 plugins qui peuvent communiquer, un système de settings live, de gestion d’erreurs et de logs aux petits oignons.

    Imaginez que l’api bas niveau soit suffisamment flexible pour que les plus grand framework puisse réécrire exactement la même API qu’ils ont déjà en utilisant cette fondation. Imaginez que tous vos projets futures soient du coup compatibles entre eux.

    Vous pouvez imaginez longtemps, car ça n’arrivera jamais. Mais j’avais du temps à l’aéroport alors j’ai écris cet article.

  • Friday 30 June 2017 - 12:01

    Nous étions convié le 21 juin dernier à Reutlingen près de Stuttgart pour une "Sneak preview" chez l'équipementier Bosch division Vélo à Assistance Électrique. Nous étions une quinzaine de journalistes et blogueurs européens présents à cette avant-première (Toutefois Bosch avait déjà dévoilé ses nouveautés un jour plus tôt à la ...
  • Friday 30 June 2017 - 10:03
    Tracol Immobilier et la Ville de Luxembourg ont donné mardi 27 juin 2017 le premier coup de pelle du projet pilote « Le Verger Ermesinde – Vivre sans voiture » au Limpertsberg Lire la suite...
  • Friday 30 June 2017 - 03:41
    MMmmm... pas mal.
    L'ordinateur n'est toujours pas capable de composer quelque chose de cohérent, mais il arrive à faire passer plus d'émotion dans sa façon de jouer: légères variations du tempo, intensité des notes... comme le ferait un musicien.
    (Permalink)
  • Thursday 29 June 2017 - 20:27

    Le bolide bleu et blanc file à bonne vitesse sur un boulevard parisien. Le moteur n’émet qu’un léger bruissement, auquel s’ajoute le bruit du frottement des roues sur le bitume. Dans une rue adjacente, un autre engin s’est placé en pole position, juste devant le feu, dans le sas cyclable, en principe réservé aux seuls vélos. Les scooters électriques en libre-service Cityscoot, reconnaissables à leur carrosserie aux couleurs bavaroises, poursuivent leur assaut de la capitale. Ils dévalent les avenues, arpentent les boulevards, se faufilent dans les petites rues.

    Et ils investissent, à l’arrêt, les espaces dévolus aux autres usagers. Sur les trottoirs, les terre-pleins, dans les rues piétonnes, les bandes cyclables, entre les arceaux de stationnement pour vélos, les Cityscoots sont garés partout. Comme le rapportent de nombreux riverains sur Twitter, il est devenu difficile de faire quelques pas dans Paris sans en apercevoir quelques uns, stationnés de manière incongrue.

    Trottoirs obstrués. Les conséquences, pour les autres usagers, sont multiples : des piétons doivent descendre sur la chaussée parce que le trottoir est obstrué, le cheminement, avec une poussette ou en fauteuil roulant, devient difficile, des cyclistes ne peuvent plus emprunter la bande qui leur est en principe réservée sur la chaussée.

    Certes, les adeptes de Cityscoot ne se comportent pas différemment des autres conducteurs de deux-roues motorisés, bien plus bruyants et polluants. On trouve sur les trottoirs de la capitale, mais aussi à Bordeaux, Toulouse ou Lyon, voire à Strasbourg ou Grenoble, de plus en plus de scooters et motos garés impunément. On y croise aussi des voitures, des camionnettes, et des cyclistes qui fuient la vitesse de la circulation ou compensent l’absence d’aménagement adapté.

    Le paradoxe du véhicule électrique. Toutefois, la prolifération des Cityscoots dans les espaces dévolus aux piétons illustre magnifiquement le paradoxe des véhicules électriques. Systématiquement présentés comme « propres », et vertueux par nature, par les pouvoirs publics, à commencer par la maire (PS) de Paris Anne Hidalgo, ces engins à propulsion électrique ne sont pas neutres. Volumineux, ils encombrent l’espace public, et présentent tous les autres inconvénients des modes motorisés : consommation de matières premières extraites à l’autre bout du monde, danger pour les utilisateurs et les autres usagers, sédentarité. Des nuisances mises en lumière en 2016 par une étude de l’Institut d’urbanisme d’Ile-de-France.

    Les scooters en libre-service Cityscoot existent depuis juin 2016, un an seulement. Il s’agit, au contraire de Vélib’ ou d’Autolib’, d’une société privée, et non d’une concession d’un service public. Mme Hidalgo n’a pas oublié que « Scootlib », projet de scooter électrique en libre-service, constituait une promesse de l’un de ses petits alliés au Conseil de Paris, le Parti radical de gauche (PRG). Le succès de Cityscoot, qui salarie 100 personnes contre 10 l’a dernier, par ailleurs encensée par plusieurs articles de presse, permet de s’exonérer de cette promesse de campagne.

    1500 Cityscoots, 4000 Autolibs, 14000 Velibs. On compte déjà 1000 engins à Paris et dans deux communes limitrophes, et le système ne cesse de monter en puissance. Le nombre de ces bolides sera porté à 1500 fin septembre à Paris et dans plusieurs communes proches, explique Vincent Bustarret, directeur marketing de la société. Cityscoot aura en outre bientôt un concurrent, baptisé Coup. A titre de comparaison, on compte dans Paris et sa proche périphérie 14000 Velibs (même si le concessionnaire sur le départ JCDecaux en annonce officiellement 24000) et 4000 Autolibs dans un périmètre comprenant 100 communes.

    Les responsables de la société Cityscoot n’ignorent pas qu’une partie de leurs clients stationne les engins à des endroits gênants. « Certains ne respectent pas » le code de la route, admet M. Bustarret. Ces abus ne sont pas tous impunis, précise-t-il. « Nous avons reçu depuis l’an dernier des centaines de contraventions que nous avons réaffectées aux abonnés, en leur facturant des frais de gestion de 15€ ». Parfois, lorsqu’il faut aller chercher le scooter à la fourrière, le montant de la note s’alourdit même de 300€ supplémentaires. Plusieurs abonnés ont vu leur compte Cityscoot bloqué, mais la société ne précise pas si cela est arrivé en raison du stationnement interdit. Les utilisateurs ont reçu récemment un mail leur rappelant les règles en matière de stationnement et la société envisage d’autres actions pour faire respecter la loi, sans en dire davantage.

    Un « risque de se faire prendre ». En pratique, la plupart des stationnements illégaux demeurent impunis, tout simplement parce qu’à Paris, la police verbalise rarement ces comportements, comme le montre le Bilan des déplacements de Paris pour 2014. Pour M. Bustarret, le stationnement gênant se limite pour l’utilisateur de Cityscoot à « un risque de se faire prendre, comme quand on dépasse de 1 km/h la vitesse autorisée ». Selon lui, il existe « des zones à risque » qui dépendent de la « tolérance » plus ou moins bienveillante de la préfecture de police. Ce raisonnement en termes de « risque » et de « tolérance », sans égard pour les piétons et cyclistes gênés ou mis en danger, est commun lorsqu’on discute au bistrot du coin de stationnement abusif. Il surprend toutefois de la part d’un responsable d’un système présenté comme vertueux.

    M. Bustarret précise par ailleurs, à juste titre, que les Cityscoot étant partagés en moyenne par sept utilisateurs par jour, ils ne restent pas stationnés toute la journée au même endroit, contrairement aux deux-roues motorisés « ventouse ». Il pointe aussi une « insuffisance » du nombre de stationnements pour motos. Ce qui n’est pas toujours vrai, comme le montre le tweet ci-dessous.

    Laxisme pro-moto. La société bénéficie ainsi de la politique laxiste de la Ville de Paris à l’égard de l’ensemble des deux-roues motorisés. Dans les années 1960, les mobylettes et autres « bécanes » avaient profité, à l’échelle nationale, du même laxisme, comme le rappelle Frédéric Héran dans Le retour de la bicyclette (La Découverte, 2014). Le deux-roues motorisé s’était alors développé massivement, au prix de nombreux tués sur les routes, et au détriment du vélo, qui constituait jusque-là un mode de déplacement très commun. Les moyens de transports fonctionnent en effet comme des offres concurrentes. Que l’on en avantage un, et il se développera, au détriment des autres.

    Vélib’ en ligne de mire. Cityscoot affirme ne pas savoir comment se déplaçaient ses clients avant de basculer vers le système et estime qu’il s’agit pour la plupart d’« usagers multimodaux », qui empruntent un Cityscoot de temps à autre, en complément d’un trajet en métro, par exemple. Lorsqu’il défendait le projet Scootlib, en 2014, Jean-Louis Missika, adjoint à la maire de Paris, affirmait que le système séduirait une clientèle « de jeunes et de jeunes actifs, de 14-16 ans à 35-40 ans, qui possèdent un deux-roues motorisé ou se déplacent en Vélib’ ou en métro ». Cet article d’un magazine dédié à la « consommation collaborative » présente le système comme « Vélib’ en plus rapide », ce qui rappelle la publicité de Mobylette en 1946 : « une bicyclette munie d’un bon petit vent arrière permanent ». Le slogan de Cityscoot, inscrit sur chacune des « jupes » bleues des engins, est limpide : « la liberté sans borne ». Comme un pied de nez à Vélib’.

    Olivier Razemon (l’actu sur Twitter, des nouvelles du blog sur Facebook et des pictogrammes sur Instagram).

     

     

     

     

     

     

  • Thursday 29 June 2017 - 16:25
    Hardigan (https://hardigan.fr/) où il est lu par le comédien professionnel Nicolas Planchais. Pour écouter gratuitement Le Pacte, le préambule...
  • Thursday 29 June 2017 - 15:52
    L'adaptation cinématographique du roman de Mike Carey, Celle qui a tous les dons, sort en France le 28 juin....
  • Thursday 29 June 2017 - 13:21

    Adepte du vélo au quotidien, je ne saurai que trop vous conseiller de choisir un sac adapté à sa pratique. Exit les besaces ou autres sacs à main accrochés au guidon dangereux et bien trop peu adaptés. A part les modèles de messengers (sac bandoulière) conçus à la pratique du vélo ...
  • Thursday 29 June 2017 - 09:47
    Une semaine d’action commence pour les trains de nuit supprimés et/ou déjà de retour ! Le Paris-Port Bou revient après 6 mois d’interruption pour les vacances scolaires et les week-end, Lire la suite...
  • Thursday 29 June 2017 - 07:47

    Le partage de véhicule pour faire ensemble un trajet est une pratique déjà ancienne : les moins jeunes se souviennent des globe-trotters le pouce levé,des trajets entre copains serrés à l’arrière de la 4L et… bref vous voyez le tableau, inutile de raviver le cliché des hippies dans le Combi VW.

    Crise écologique et crise économique ont contribué à remettre au goût du jour ces pratiques conviviales : le pouce levé de rezopouce, parti du Sud-Ouest, gagne du terrain un peu partout en France, certaines municipalités comme dans les Yvelines prennent des initiatives pour stimuler et organiser le covoiturage. Il en va de même avec des associations comme Voisine Covoiturage en Lozère, qui dans un monde rural menacé d’isolement reçoit le soutien des collectivités locales.

    Oui mais voilà : l’engouement pour le covoiturage est aussi un marché économique dominé par un acteur majeur qui s’est taillé un nom et un presque-monopole au point que pour beaucoup c’est le mot blablacar qui remplace le mot covoiturage dans les recherches sur Internet. On peut saluer le succès de l’entreprise comme le font depuis plusieurs années la plupart des médias. On peut aussi s’interroger sur cette confiscation et monétisation d’une pratique solidaire gratuite : le modèle économique de Blablacar repose sur la captation d’un bien commun.

    Les solutions alternatives existent pourtant, comme La Roue verte, qui peut proposer des services gratuits et éthiques aux particuliers en se rémunérant par des prestations aux entreprises.

    Aujourd’hui c’est une association indépendante et sans but lucratif que nous souhaitons mettre en valeur : Covoiturage-libre a des engagements et des valeurs qui résonnent agréablement aux oreilles libristes. Nous espérons qu’après avoir lu cette interview nombre d’entre vous deviendront avec ce beau projet des covoitureurs et covoitureuses libres !

    Cliquez sur l’image pour découvrir leur site.

     

    Bonjour François, peux-tu te présenter et nous décrire l’association dont tu fais partie ?

    Bonjour ! Je m’appelle François Vincent et je m’occupe pour ma part plus spécifiquement du développement de Covoiturage-libre.fr, qui est un site de covoiturage libre et gratuit.

    Nous avons un certain nombre de personnes qui travaillent bénévolement pour le site, notamment son développement (le code source est accessible par tous sous licence GNU GPL v3), sa communication sur les réseaux sociaux ou la participation à des rencontres des logiciels libres ou de manifestations spécifiques, et les réponses aux demandes effectuées via la hotline par les utilisateurs. Chacun est libre de nous rejoindre, il sera bien accueilli, notamment par moi-même !

    Comment sont nés votre site et votre association ?

    Notre site a une histoire déjà assez longue. Une première version a été mise en ligne quelques jours seulement après le passage au payant de la part de Blablacar (ce devait être en 2011). Le site et l’association sont nés du rejet de l’appropriation du covoiturage par Blablacar, et d’une volonté ferme de promouvoir un covoiturage social, c’est à dire non contrôlé par une entreprise, mais profitant et appartenant à tous.

    Un coup d’œil sous le capot ?

    La première version a été développée en solo par Nicolas Raynaud. Le site à cette époque avait été écrit en PHP. C’est peu après qu’a été créée l’association pour soutenir la plateforme. Une nouvelle version du site a plus tard été écrite en Ruby on Rails, car la première version était difficile à maintenir et ne permettait pas vraiment un travail collaboratif. Cette nouvelle mouture du site est assez récente, date de moins d’un an, c’est maintenant sur celle-ci que nous travaillons, les améliorations étant poussées… lorsqu’elles sont prêtes à l’être.

    Qu’est-ce qui vous différencie de sites mieux connus comme Blablacar ?

    Notre philosophie du covoiturage est qu’il s’agit d’un bien commun et qu’il doit le rester !

    L’un de nos engagements est de rester indépendants, de rester sous le contrôle de la communauté. Toute personne voulant participer est la bienvenue pour s’exprimer, et son avis sera pris en compte. Nous ne serons jamais rachetés par quelque entité, visant le profit, que ce soit. Nous prônons un covoiturage sans frais, qui n’ira pas enrichir une société levant des millions d’euros. Nous nous construisons en partie CONTRE cette vision du covoiturage.

    Pour résumer, notre différence principale avec des sites comme Blablacar est notre conception même du covoiturage, et c’est sur cette dernière que nous nous appuyons pour avancer.

    Votre plateforme est un « bien commun », qu’entendez-vous par là ?

    Nous entendons par là quelque chose de simple et qui nous parait à la fois fondamental et naturel pour le covoiturage : la plateforme nous appartient à tous, elle appartient à la communauté que nous formons, nous les conducteurs et les passagers qui utilisons le covoiturage, tous ensemble nous la faisons vivre. Elle appartient à ceux qui l’ont développée et qui en font la promotion, à nous qui travaillons sur le projet, mais aussi, ET SURTOUT, à celles et ceux qui l’utilisent, c’est-à-dire monsieur Dupuis-Morizeau par exemple qui utilise notre plateforme en tant que passager pour aller de Paris à Rouen et retrouver sa famille. D’ailleurs, il peut nous rejoindre pour participer à la réflexion sur la plateforme, proposer des améliorations, signaler des bugs…

    Comment ça marche alors ? il faut que les personnes qui se sont contactées aient une relation de confiance ? Parce qu’on communique un mail ou un téléphone…

    En effet, les personnes covoiturant ensemble doivent établir un lien social, un lien de confiance entre elles, c’est l’une de nos raisons d’exister qui fait partie de nos 5 engagements.

    Copie d’écran du site Covoiturage-libre

    Tous ceux qui ont déjà fait du covoiturage savent que c’est un moyen de rencontrer des personnes que nous n’aurions jamais rencontrées autrement, ayant une autre vie, d’autres passions, où qui au contraire travaillent, par exemple, dans le même domaine, ce qui peut alors déboucher sur des conversations très poussées ! La parole est un moyen de se faire confiance, et nous pensons que les gens voulant se déplacer ensemble sont de bonne volonté. Elles échangent donc par mail ou SMS sur les modalités du trajet.

    Il y a des possibilités de dérives que nous combattrons de toutes nos forces, mais celles-ci existent sur toutes les plateformes de covoiturage, et même dans d’autres situations de la vie de tous les jours. Elles sont quasi inexistantes par rapport à la masse de covoiturages effectués chaque jour.

    Donc Covoiturage-libre ne ponctionne aucune commission, c’est chouette, mais je dois me mettre d’accord sur un tarif avec un conducteur ou un passager (suivant les cas) ?

    Eh bien oui, la prise de contact entre conducteur et passager pour fixer les modalités du covoiturage en amont de sa réalisation est une étape indispensable pour avoir un covoiturage qui se déroule bien. Ce premier contact permet de fixer les modalités du voyage, comme l’endroit où l’on se retrouve, le lieu de dépose, et en effet, la somme d’argent que le passager donnera au conducteur. Mais on espère bien que vous discuterez d’autres choses bien plus intéressantes pendant et même après le trajet !

    Comment je peux savoir par exemple combien demander (dans quelle fourchette raisonnable) pour partager les frais pour un trajet entre Tours et Lyon ?

    Pour l’instant, la plateforme ne propose pas de suggestion de tarif. Les prix que le conducteur propose pour le trajet global ainsi que pour les étapes sont à sa discrétion. On peut cependant utiliser plusieurs ressources pour s’aider dans le choix des frais que l’on demande, comme regarder sur d’autres sites les tarifs pratiqués ; ou bien appliquer un calcul simple qui consiste à prendre le prix global du trajet et le diviser par le nombre de personnes dans la voiture, conducteur compris. à noter que l’une des nombreuses fonctionnalités que nous prévoyons de mettre en place est justement la mise en place d’un prix conseillé, dépendant de la distance et également des péages. Nous rappelons également sur le site que le covoiturage ne doit pas être rentable, et qu’il s’agit d’abord et avant tout d’entraide.

    Qu’est-ce qui me garantit la confidentialité de mes données si je m’inscris pour passer une annonce ?

    Comme tout projet sous licence libre et open-source, vous avez accès vous même au code source du site sur le dépôt github, n’hésitez pas à le parcourir.

    Nous sommes des gens comme vous, qui aimons garder nos données personnelles… personnelles. Le développement du site se fait avec cette idée de respecter au maximum les données des utilisateurs.

    Et qu’est-ce qui me garantit qu’on ne va pas me demander une somme excessive ?

    Soyons franc, rien ne vous le garantit. Vous discutez du prix avec le conducteur avant le voyage, et vous payez de la main à la main pendant le trajet. Encore une fois, nous rappelons sur le site que le covoiturage ne doit pas être rentable, ce qui limite normalement les sommes si les usagers sont honnêtes. Un passager peut également tout simplement refuser un covoiturage si le prix est trop élevé. Nous sommes persuadés que les gens peuvent discuter entre eux et se mettre d’accord sans problème.

    Nous ne prévoyons par ailleurs pas de déployer une solution de paiement en ligne avant le trajet comme d’autres sites (qui serait toujours sans frais soit dit au passage) pour plusieurs raisons : la première, c’est que cela ne fait pas partie de notre représentation du covoiturage, où les gens se mettent d’accord entre eux et discutent en amont du voyage, et n’ont donc pas besoin de ce système. La deuxième raison est que cette solution nous demanderait la mise en place d’un système très sécurisé (qui amènerait de plus à une ambiance que nous trouvons anxiogène, phénomène que l’on peut déjà observer sur un autre site bien connu qui prône une « sécurité » omniprésente justifiant tout et n’importe quoi…), et que nous devrions alors collecter des données bancaires que nous ne voulons surtout pas posséder. Ce sont vos données personnelles, nous ne voulons surtout pas y avoir accès !

    Déjà plus de 730 000 covoiturages, beau succès ! Ça vous fait autant d’adhérents à l’association ? Pour profiter des services proposés sur le site, il faut être adhérent à l’association ?

    Eh bien non, le nombre de bénévoles donnant du temps pour la plateforme est assez faible. Pour déposer une annonce sur le site, contacter une personne proposant un covoiturage, aucune adhésion à l’association n’est nécessaire, les gens restent libres au maximum de faire ce qu’ils veulent, et cela ne nous a même pas traversé l’esprit de forcer les gens à adhérer (même gratuitement) ! Ils sont cependant tous les bienvenus s’ils veulent participer à la plateforme et/ou l’association !

    Pas besoin d’être adhérent donc, mais nous pensons dans le futur mettre en place des comptes sur notre site. Leur seul objectif sera de gérer plus facilement les annonces que l’on propose en tant que conducteurs ou celles qui nous intéressent en tant que passagers. La gestion des annonces pour les conducteurs se fait actuellement par mail, ce qui n’est pas optimal pour gérer une annonce appelée à potentiellement évoluer dans le temps, nous souhaitons améliorer ceci !

    Que se passe-t-il si un requin aux intentions lucratives clone votre site et prend une commission de 5 % ?

    Il sera liquidé par un mercenaire GNU dans les 12 heures suivant la mise en ligne de son site.

    Non plus sérieusement, il peut essayer… Puisqu’il n’aura pas accès à notre base de données, son site sera vide d’annonces. Notre plateforme est la deuxième de France, nous avons une petite-(pas-si-petite)-mais-grandissante communauté d’utilisateurs qui postent leurs annonces et consultent notre site, ils ne migreront pas vers ce faux site. Nous en voulons pour preuve le nombre d’annonces postées jusqu’ici que vous citez plus haut !

    Avez-vous fait l’objet de démarchage pour faire de votre service une opération commerciale ? Des startups sur le même créneau ?

    La loi du marché étant ce qu’elle est, et notre position de deuxième plateforme française de covoiturage étant établie, certains organismes/entreprises/start-up/que sais-je encore ont voulu nous racheter « nos utilisateurs » (oui je cite les gens qui viennent vers nous). Ce à quoi nous leurs répondons gentiment et poliment que ce n’est pas notre conception de la chose, que l’argent ne nous intéresse pas, que pour récupérer nos utilisateurs il faudra d’abord marcher sur nos cadavres et accessoirement celui du site, ce genre de choses…

    Il y a bien sûr d’autres entreprises qui souhaitent concurrencer Blablacar, nous leur tendons la main si elles veulent intégrer notre association et adhérer à nos valeurs qui prônent le non-profit. Notre plateforme a cet avantage par rapport à toutes les autres d’être une association avec des gens motivés par des convictions, et travaillant sur ce projet sur leur temps libre. Sans vouloir nous vanter, avec le soutien de quelques donateurs, nous sommes virtuellement immortels et indestructibles ;) le temps joue pour nous…

    Quelle continuité souhaitez-vous donner à votre service communautaire ? L’élargir à d’autres pays ? Qu’est-ce qui serait le plus efficace pour vous faire mieux connaître et pour que chacun adopte votre démarche ?

    Nous sommes totalement ouverts à la propagation de notre modèle et de notre plateforme à d’autres pays. Nous aurons cependant besoin de partager une base de données commune à tous, cette dernière étant interrogée par une instance nationale pour chaque pays. Nous avons d’ailleurs déjà des contacts de gens intéressés dans d’autres pays. Notre rêve ultime serait une grande organisation mondiale, libre, avec une équipe par pays. L’impact écologique et économique pour tous pourrait être considérable !

    Si je veux participer à vote site, à ce commun, à votre projet, à votre asso… je fais comment ? Vous avez besoin de quelles compétences ?

    Vous pouvez consultez les propositions de la page https://covoiturage-libre.fr/missions-benevoles

    Certaines façons de participer sont tout à fait simples :

    • Évidemment, la première chose à faire, publier vos trajets sur notre plateforme, en parler autour de vous, et chercher les trajets que vous souhaitez réaliser sur le site.
    • Ensuite, dans un premier temps si vous voulez prendre contact avec nous, vous pouvez rejoindre les groupes facebook (oui je sais c’est mal, chacun ses faiblesses, et puis on va là où les gens sont) « Covoiturage-libre – groupe de test » et également « Covoiturage-libre.fr – Communication »
    • Certains d’entre vous s’y connaissent en programmation (c’est un euphémisme), nous avons besoin de gens capable de programmer en Ruby on Rails. À notre ère connectée nous souhaitons également développer une appli Android qui sera elle aussi diffusée sous licence libre, probablement GNU GPL, et sera ajoutée à F-Droid assez rapidement (nous avons déjà une appli, qui n’est que du web encapsulé, le code est disponible sur github, et l’appli en elle même est disponible sur Google Play). Et éventuellement une appli iOS, si certains d’entre vous sont motivés pour ça !
    • Chose anodine, installer le moteur de recherche Lilo. Chaque recherche effectuée vous donne une goutte, donnez ensuite ces gouttes à notre projet sur la page dédiée et vous nous ferez des micro-dons à chaque fois que vous nous les donnerez, on vous remercie déjà !
    • Nous recherchons également des graphistes, des gens qui voudraient faire de la com pour nous, des gens pour nous représenter à des forums…

    Le mot de la fin ?

    Les bases de la plateforme pour un retour à un vrai covoiturage qui ne profite pas à une entreprise sont déjà là. Mesdemoiselles, Mesdames, Messieurs, il ne tient plus qu’à vous de nous rejoindre et d’y participer !

    Dé BlaBlaCarisez le covoiturage avec Covoiturage-Libre !

    Liens utiles

  • Thursday 29 June 2017 - 03:16
    Ce que vous risquez en utilisant vos gadgets électroniques au volant.
    (Permalink)
  • Thursday 29 June 2017 - 03:08
    Si vous voyez un parallèle avec votre métier d'informaticien, ce n'est pas un hasard.
    (Permalink)
  • Thursday 29 June 2017 - 00:49
    Purée de purée, les fournisseurs d'accès 3G se comportent comme les derniers des sagouins en détournant votre traffic réseau (MITM et autres). C'est absolument lamentable.
    C'est une bonne raisons pour faire du VPN même en 3G !
    (d'autant que le VPN offre la compression du trafic, et la négociation ne prend que quelques kilo-octets. Vous êtes donc généralement gagnant au niveau du trafic réseau.)
    (Permalink)
  • Wednesday 28 June 2017 - 17:31

    Les Papillons géomètres De Christine Luce Les Moutons électriques – 238 pages Sous une très belle couverture de Melchior Ascaride Les Papillons géomètres cache un roman d’enquête spirite, genre qui ne m’est absolument pas familier. Posons le décor : un Londres victorien, un Enquêteur fantôme à la mémoire tronquée, un éditeur éploré par la disparition […]

    Cet article Les Papillons géomètres – Christine Luce est apparu en premier sur RSF Blog.

  • Wednesday 28 June 2017 - 10:44
    Périodiquement, le sujet de la ville sans voiture fait les gros titres de la presse. Il s’agit d’une sorte de marronnier journalistique destiné à la fois à prendre acte du Lire la suite...
  • Wednesday 28 June 2017 - 07:19
    Peut d'abîmer votre beau téléphone lors d'une balade ou de sport ? Ou vous allez à un endroit où vous avez peur de vous le faire piquer ? Ou besoin d'un téléphone qu'un ado risquera moins de casser ?
    Voilà un téléphone à 20€.
    Juste de quoi téléphoner et envoyer des SMS.
    Et 150 heures d'autonomie !

    Il y en a aussi un à 17€ : https://www.pearl.fr/article/PX3230/telephone-miniature-pico-inox-rx-180-noir (mais avec un peu moins d'autonomie)
    (Permalink)
  • Wednesday 28 June 2017 - 07:06
    Tutorial et premiers pour l'installation de YunoHost (auto-hébérgement mail, blog...)
    (Permalink)