[weboob] [Weboob] Pourquoi personne ne contribura à weboob

Romain Bignon romain at peerfuse.org
Fri Aug 20 18:18:44 CEST 2010


Avant toute chose, merci pour ce mail, il m'a bien fait rire :)

On 20/Aug - 17:17, John Obbele wrote:
> (mise en garde: je ne suis pas un développeur professionnel et je n'ai
> jamais compris en quoi la programmation orientée objet apportait plus
> d'avantages que d'inconvénients …)

Ah bah ça, c'est un troll dans lequel on ne va pas entrer.

> I. À propos des frontends / applications
> ========================================
> 
> Il n'y a pas de how-to ou de guide d'utilisateur pour les
> tartuffes.  Genre, dans le champ 'usage' de '--help', une manpage
> ou sur le wiki[0], il faudrait ajouter ajouter 3 lignes disant:
> 
> -1) on gère les informations de la RATP
> 
> -2) c'est très utile, la preuve je m'en sers tous les jours en faisant
> 	bash $ travel departures "Gare du Nord" "Gare de Lyon"
> 
> -3) Profits !
> 
> Pas la peine de fournir une application super évoluée, mais au minimum 1
> ou 2 objectifs et un cas d'utilisation typique.
> 
> [0]: https://symlink.me/projects/weboob/wiki/Transilien

Bon déjà ça commence mal. Transilien est un backend, pas une application. Donc
pour reprendre ton exemple on va plutôt parler de traveloob[1].

On a donc une page de wiki qui contient des exemples, certes triviaux, sur
l'utilisation du programme. Il manque la liste des backends supportés (mais
d'autres pages comme QVideoob[2] l'affichent en passant par la page pointée
ICapVideo[3] (oui ok c'est pas très user friendly)).

La manpage contient une certes petite description, mais la liste des commandes
et de toutes les options. Il faudrait peut-être rajouter des exemples et une
liste des backends supportés. Cependant, concernant cette dernière information,
on ne peut savoir à l'avance la liste, puisque si le gars installe un backend
tiers implémentant ICapTravel, traveloob le supportera mais la manpage ne le
saura pas.

Par contre, le --help peut le savoir et devrait l'afficher, ainsi qu'une
description (inexistante pour *toutes* les applications, je conviens que c'est
une honte), ainsi que les exemples.

[1] http://weboob.org/Traveloob
[2] http://weboob.org/QVideoob
[3] http://weboob.org/ICapVideo

> II. À propos du développement
> =============================
> 
> A. Mutualisation des ressources
> -------------------------------
> 
> Comme je le comprends, une des idées majeures de Weboob est de mettre en
> commun plusieurs web-scrappers et, dans la foulée, proposer une API
> unifiée d'accès aux diverses fonctionnalités (les ICapabilities).
> 
> C'est surement utile, le hic, c'est que nainporte quel barbu dans son
> garage aboutira à la conclusion du SVG en pièce jointe : mais pourquoi
> est-ce que je devrais me farcir l'usage d'une dizaine de classes
> d'abstraction juste pour récupérer 3 lignes de texte sur le net ???

Justement non, ce n'est pas nécessaire. Weboob apporte un certain nombre
d'outils (dans weboob.tools), mais tu n'es pas obligé de les utiliser.

Tu peux très facilement écrire une application en utilisant que la classe
Weboob, par exemple :

from weboob.core import Weboob
from weboob.capabilities import ICapVideo
weboob = Weboob()
weboob.load_backends(ICapVideo)
for backend, result in weboob.do('iter_search_results', 'penis'):
    print result

Les classes (Base|Console|Qt|Whatever)Application ne sont là que pour t'aider si
tu le souhaites à faire tes applications, en fournissant des outils, rien ne
t'oblige à les utiliser. Ce n'est donc pas 36000 couches d'abstraction, ce sont
des outils.

> L'intérêt de ces abstractions pour les backends a l'air d'avoir
> déjà été partiellement traité[1], mais pas pour les frontends[2].
> 
> [1]: http://weboob.org/Backends_hacking
> [2]: http://weboob.org/Application_hacking

Backends_hacking n'est pas achevé, et il faut effectivement la documentation
pour Application_hacking. Ce sera probablement plus clair une fois que ce sera
fait.

> Si ça peut vous aider, le SVG en pièce jointe mentionne les
> fonctions utilisées lors de l'écriture du frontend REPL. En gros
> je n'ai eu besoin que de weboob.do(action, *args) et
> weboob.load/unload_backends(). Par contre je n'ai pas encore
> fourré mon nez dans les configurations ou votre usage d'optparse
> (ou de ce qui le remplacera), je ne dirais donc rien à leur
> sujet.

Bah, justement, au final l'utilisation de la classe Weboob est très simple,
l'API est je pense assez claire et tu l'as dis toi même plutôt bien documentée.

Pour le reste, bah ce qu'il faut éclaircir, ce sont les classes d'aide aux
applications (Base|Console|Qt|etc)Application, et l'écriture de backends.

> B. Je n'aime pas les objets
> ---------------------------
> 
> Et il y a une chose que je ne comprends pas : pourquoi avoir mis
> BaseApplication et ConsoleApplication dans weboob.tools et pas dans
> weboob.core ou weboob.applications{.share} ?

Ce sont des outils.

> Même raisonnement pour weboob.tools.{browser,parsers}.

Ce sont des outils.

> Je suis trop fainéant pour faire du saute mouton de Videoob à
> Weboob en passant par ConsoleApplication et BaseApplication, le
> tout dans 3 dossiers / modules différents, juste pour comprendre
> à quoi sert la fonction "do(action, …)" (que j'aurais nommé
> "broadcast" ou "dispatcher", mais les goûts et les couleurs hein
> ^^).

Bah, si ConsoleApplication avait été bien documentée, t'aurais su que ça appelle
Weboob.do et que ça permet donc de faire appel sur tous les backends chargés (et
qui correspondent aux critères optionnels passés en argument) à une méthode et
d'itérer sur le résultat tout backend confondu.

> C. Différence entre "frontends" et "applications"
> -------------------------------------------------
> 
> Embroglio numéro 3, dans la même optique: c'est quoi la différence entre
> "frontends" et "applications" ?  Pourquoi deux dossiers différents ?

Il n'y a plus de notion de frontends, il n'y a que des applications. Tu dois
avoir une vieille copie des sources.

> III. Programmez en Haskell, pas en C
> ====================================
> 
> (Parce qu'on est vendredi.)

Et après ça critique l'objet !

Romain
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 489 bytes
Desc: not available
URL: <http://lists.symlink.me/pipermail/weboob/attachments/20100820/75af1b9a/attachment.pgp>


More information about the weboob mailing list