Blog

De la Culture, physique et numérique, et de son financement

Édito,
Tags: crowdfunding, licenses

Le partage de la Culture

Hier, c’était vendredi. Un jour idéal pour tomber sur un excellent webcomic.

Première réflexion: la réalisation d’une telle œuvre demande bien trop de travail pour ne pas envisager de trouver une rémunération en contrepartie, si l’on n’est pas déjà largement à l’abri du besoin. Et je ne considère même pas l’argent dépensé dans la création, notamment en matériel et formation. Simplement la rémunération.

Pourtant, la nature numérique de ce travail permet de simplement le partager pour un coût négligeable, /via/ un simple blog, accessible gratuitement par tout le monde. Et c’est le choix qui est retenu par l’auteur, David Revoy (en), qui a opté pour une licence CC BY 4.0.

Ce noble choix de partage gratuit élimine d’entrée le principe du «Paywall», qui est par exemple utilisé par MediaPart pour l’intégralité de son contenu, ou par Le Monde pour une partie seulement. Cette méthode de rémunération est calquée sur ce qui se fait depuis toujours dans le monde physique: montrer au visiteur que le contenu existe, mais qu’il doit payer pour y accéder. Ça ne prend donc pas du tout en compte l’intérêt de l’informatique et d’internet pour la libre copie de contenu existant, et le partage et la diffusion des connaissances et de la culture.

NB: Je ne jette pas du tout la pierre sur ce modèle, qui est simple et honnête. Seulement, si je dois payer pour accéder à du contenu, je ne peux en faire profiter autrui sans passer pour un voleur (contrairement au monde réel, où tant que je ne fabrique pas de copies, je peux prêter mes livres). Et ça, c’est frustrant.

Un autre choix de cet artiste est de ne pas afficher de publicité sur son site web. Cette méthode de rémunération est pourtant le modèle économique choisi par bien d’autres acteurs du web et d’applications mobiles. On a vu à plusieurs reprise à quel point un jeu débile et qui n’apporte rien de nouveau, ou encore des compilations de vidéos, peuvent pourtant rendre une personne excessivement riche en un rien de temps. C’est donc que ça peut marcher. Mais on a aussi vu des entreprises qui comptaient là-dessus pour payer leurs employés, et qui se retrouvaient donc à la mercie de l’hummeur des annonceurs publicitaires. C’est donc qui ça peut ne pas marcher, ou du moins pas sereinement.

NB: Je jette complètement la pierre sur ce modèle, qui cache les coûts à l’utilisateur final, et qui le considère comme de la marchandise. On ne se rend pas compte de ce que vaut le contenu auquel on accède, ni de ce qu’on vaut à notre tour en «temps de cerveau disponible», mais à mon avis, il y a peu de chances que les choses s’équilibrent. Et je ne parle même pas des dérives de ce modèle, juste de son principe¹.

Le modèle retenu dans le cas de notre webcomic est le mécénat. On dit aux visiteurs qu’ils peuvent accéder gratuitement (et sans subir de pub ou d’autres frais cachés) au contenu déjà existant, et même le réutiliser s’ils se conforment à la licence. Par contre, s’ils veulent bien aider à la création de contenu similaire, ils peuvent donner un peu.

NB: J’ai beau faire l’apologie de ce modèle, il est particulièrement difficile à mettre en place efficacement. Sur internet, il faut faciliter et clarifier à l’extrème le méchanisme de transfert d’argent pour ne pas perdre les personnes motivées. Et bien sûr, il faut trouver de quoi motiver les gens à donner, en général avec des «contreparties». Certains se passent de cette seconde étape, mais je n’ai pas l’impression qu’ils récoltent beaucoup.

Bref, comme beaucoup de «Patrons», dans le langage de (la plateforme choisie pour notre webcomics d’exemple)[https://www.patreon.com/davidrevoy], j’ai décidé de donner 5€ par mois. Dans ce cas, les principaux choix sont 1€, 3€ et 5€, chacun offrant divers niveaux de contreparties.

5€ pour une telle planche, ça me parait énorme. Quand j’achète une BD dans une librairie, je la paye 15€. Et ces 15€ couvrent forcément l’édition, impression, la reliure, le transport, les libraires, les bâtiments de tous ces intermédiaires avec leur charges, etc. Et bien sûr, j’ai beaucoup plus de pages à lire, ce qui a donc demandé d’autant plus de temps de création initiale.

Mais 5€ pour payer le salaire d’une personne et tous les frais qui gravitent autour de cette création, ça ne peut pas suffir tant qu’on n’est pas suffisament à donner.

Prenons maintenant deux autres exemples de financement de la culture: Netflix pour l’intégralité de son catalogue, et Spotify pour une version dépourvue de pub. Ici, on propose simplement de la location, mais à un prix vraiment négligeable: on parle d’une dizaine d’euros pour un accès illimité à un catalogue extrêmement vaste.

Là où la comparaison est intéressante, c’est que dans un cas je donne 5€ directement à un artiste, et que dans l’autre je donne 10€ à une entreprise qui se débrouille pour les redistribuer à des dizaines de millier de personnes, qui ont toutes besoin d’équipements hors de prix.

Et ça marche. Si on est mille à donner 1€, 3€ ou 5€ par mois à un artiste isolé et peu connu, il s’en sort. Et si on est dix millions à donner 10€ par mois à une entreprise, elle peut financer des nuées de projets et d’artistes, dont des séries TV ou des albums de premier plans.

Cependant, dans le second cas, il ne s’agit pas de dons, mais de paiements obligatoires. Dommage, ceux qui n’ont pas les moyens de payer 10€ par mois n’y ont pas accès. Même si les projets sont financés, ils restent payants. C’est qu’on n’est plus dans le financement, mais dans la Finance.

Ce moment gênant où le sujet initial du billet a disparu

En fait, j’écrivais tout ça pour vous parler de la «Cup Foundation». Mais ça semble avoir complètement disparu des internets.

Alors je vais essayer d’expliquer l’idée.

Comme le lecteur attentif l’aura compris à la fin de la partie précédente, toute la clef du problème réside dans le passage à l’échelle.

Comment payer suffisament les petits et ne pas payer trop les gros ?

Comment rémunérer les artistes et rendre leurs travaux accessibles à tous ?

Cette Cup Foundation avait adopté le symbole ⊔ pour symboliser une coupe qu’on passerait dans les rangs pour récolter l’argent nécessaire. Son idée était de simplement définir le prix d’un travail qui pourrait ensuite être partagé par tous.

Disons 1000€.

On définissait ensuite un montant maximum de don (oui, maximum…).

Disons 100€.

Ceux d’entre vous qui maîtrisent les divisions comprendront qu’au bout de 10 gugusses qui sont vraiment motivés et prêts à investir 100€, le travail est financé, peut être réalisé, puis commencer à être partagé.

Si une autre personne ensuite et veut donner aussi, et bien il suffit qu’elle donne (1000 / 11)€, soit 90.90€.

La magie est que l’argent ne va pas à l’artiste, mais aux 10 premiers, qui se le répartissent équitablement. Ainsi, le projet sera financé à 100%, mais chaque mécène n’aura déboursé 90.90€².

On peut ensuite développer cette idée en ajoutant des variables:

  • On peut estimer une fourchette pour réaliser un projet: du minimum vital, à un maximum vraiment confortable.
  • On peut proposer aux gens de définir un minimum de don en deça duquel ils ne sont plus remboursés.

Je pense que ce modèle est légèrement plus «juste» que celui retenu par les plateformes de crowdfunding classiques, pour les projets qui servent à créer un bien duplicable pour un coût négligeable.

Et bien sûr, au bout d’un moment, si suffisament de gens apprécient le projet, il devient gratuit pour tout le monde.


¹: Allez, si. Les publicités, c’est simplement moche quand c’est utilisé à très petite doses. Mais bien sûr, ça peut tout de suite envahir l’écran, clignoter, bouger dans tous les sens, faire du bruit, remplacer le contenu que vous êtes en train de lire sur la misère dans le monde par des vidéos pour de grosses voitures, etc.

Personnellement, j’ai grandi avec, et j’ai développé une certaine aptitude à les ignorer. Mais normallement, quand ça va trop loin, les gens installent des logiciels qui bloquent ces pubs.

Du coup, moins de revenu. Du coup, encore plus de pubs. Oh, wait, ça finit par ne plus marcher. On fait quoi dans ces cas là ?

Bah on réfléchi à une autre méthode.

Non, je déconne. On insulte les gens, leur rapelle qu’ils ne sont que des moutons qu’on matraque avec les produits qu’on veut leur vendre, que le contenu n’est qu’un prétexte, et qu’ils ont intérêt à désactiver rapidement leurs logiciels bloqueurs.

On leur dit que ça ne leur coûte rien de garder les pubs, et que donc l’accès au contenu est gratuit. Ce qui veut donc dire qu’on considère que le temps des gens est gratuit. C’est insultant.

Ah, et si la pub, ça ne marchait pas pour faire augmenter les ventes, ça se saurait, et on n’en ferait pas autant. Du coup, c’est que les gens finissent quand même par payer le fait d’avoir vu la pub, en payant le produit, qu’ils le veuillent ou non. C’est sournoi.

On leur dit que cette pub fait vivre des gens. Ça, c’est le meilleur argument du monde, au moins d’après les moines copistes et les marchands d’arme, de drogue, et de fille. Faut bien bosser quoi.

²: Pour ceux qui ne comprennent pas l’opération, je développe:

  • 10 personnes payent 100€ pour le projet
  • 1 personne paye 90.90€ aux 10 premières personnes
  • Chacune de ces 10 personnes récupère donc 90.90/10 = 9.09€
  • Elles auront donc investi 100 - 9.09 = 90.90€, elles aussi.

(Oui, il y a des problèmes d’arrondi de l’ordre d’un centime par personne. On s’en fout.)

Une autre manière de voir les choses:

  • Si on est 10 à participer au projet, on paye chacun 1000 / 10 = 100€
  • Si on es 11 à participer au projet, on paye chacun 1000 / 11 = 90.90€
  • etc.

TransHumUs

Robotique,
Tags: arts

Look ! The trees… They're moving !

Suite au projet OffRoad du Musée des Abattoirs à Toulouse, Céleste Boursier-Mougenot nous a demandé de l’aider sur son projet pour la Biennale de Venise.

L’œuvre transHumUs, exposée au Pavilon Français du 9 mai au 22 novembre 2015, a consisté à donner à des arbres la capacité de se déplacer. Leur mouvement (trèèèès lent) découlait de leur flux de sève.

Voici simplement quelques liens autour de ce projet.

Article

Photos

Vidéos

Revue de presse

Présentations


Django: Choices & Enum

Informatique,
Tags: django, python, web

Choices can be efficiently represented in Django: you can use a small CharField of keys stored in the database, associated with verboses descriptions, which can even be translated.

Here is the example from the official doc:

from django.db import models

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = (
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    )
    year_in_school = models.CharField(max_length=2,
                                      choices=YEAR_IN_SCHOOL_CHOICES,
                                      default=FRESHMAN)

    def is_upperclass(self):
        return self.year_in_school in (self.JUNIOR, self.SENIOR)

year_in_school is then really convinient to use, because you get the HTML's <select> that exactly fits your needs, and Django also generates for you a get_year_in_school_display() method that outputs the verbose version you are looking for.

But, hey, who wants to write all of those constants ?
Here is my version for the same functionnalities, you'll quickly understand my point:

from django.db import models
from enum import IntEnum

def enum_to_choices(enum):
    return ((item.value, item.name) for item in list(enum))

class Student(models.Model):
    YEARS_IN_SCHOOL = IntEnum('years_in_school', 'freshman sophomore junior senior')
    year_in_school = models.IntegerField(choices=enum_to_choices(YEARS_IN_SCHOOL),
                                         default=1)

    def is_upperclass(self):
        return self.year_in_chool >= YEARS_IN_SCHOOL.junior

I think that years in school may benefits of beeing represented with numbers, but in other use cases, you can also use models.CharField and Enum


Let us play with D-Bus \o/ (quick example with python and spotify)

Informatique,
Tags: python, scripts

D-Bus is a free and open-source inter-process communication (IPC) system, allowing multiple, concurrently-running computer programs (processes) to communicate with one another.

But if you are here, you probably already know what it is, and you may want to know how to quickly use it to talk with your applications.

You have probably already heard about tools like dbus-send or qdbus, but you first need to know which messages you can send.

The solution's name is D-Feet. It's a graphical tool that allows you to seamlessly and easily use D-Bus introspection functions to quickly find which methods and properties are available for your applications.
If you need a console tool, you can also try mdbus2.

Now, one quick example: let's say that you would like to control your spotify client.

  1. Launch Spotify
  2. Type "spotify" in D-Feet's search field. If nothing appears, check that you are looking in the "Session Bus", and not the "System Bus"
  3. You should easily find methods such as "Play", "Pause", "PlayPause", "Next", "Previous", "Stop" and a few other ones that are pretty self-explaining. Here, you can double clic on methods to call them, or on readable properties to read them.
  4. Now launch a python, with dbus-python installed (dbus-python >= 1.0 works with py2 & py3) and imported: >>> import dbus
  5. Get an interface object
bus = dbus.SessionBus()
proxy = bus.get_object('org.mpris.MediaPlayer2.spotify', '/org/mpris/MediaPlayer2')
interface = dbus.Interface(proxy, dbus_interface='org.mpris.MediaPlayer2.Player')

Where org.mpris.MediaPlayer2.spotify is the "bus name" you can see on the left column of D-Feet, /org/mpris/MediaPlayer2 is the "object path" in the first level of the tree in the right column, and org.mpris.MediaPlayer2.Player is the "dbus interface" which will allow you to directly call methods.

  1. What now ? Nothing, you're done ! Wanna switch play/pause ? interface.PlayPause() ! Wanna stop ? interface.Stop()
  2. Ok, ok, if you need to get or set properties, you have to use the getter and setter in the interface org.freedesktop.DBus.Properties:
props_iface = Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties')
props_iface.GetAll("org.mpris.MediaPlayer2.Player")

But it seems to be a really poor example because the spotify client just does not implement all the standard functionnalities of org.mpris.MediaPlayer2:( (tried interface.Play() ? Sorry :P)

Oh, and three more things:

  • You can find my script in py3 on github
  • if you really want bash:
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify \
    /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
  • Another example to connect your bluetooth device: github

Les limites du bluetooth

Voyages,
Tags: japon

En général, les ondes, c’est pas mon truc. Mais le bluetooth®, c’est quand même particulièrement pratique. D’ailleurs, visiblement, je ne suis pas le seul à apprécier ça, vu que dans les endroits les plus bondés, il est simplement satturé.