Ceci est une archive de l'ancien forum de Numerama. Il n'est plus accessible. Vous êtes probablement arrivés ici par erreur. Cliquez ici pour revenir sur la page d'accueil.

Weboob banni de Debian

petitepoupee11 le 04/02/2019 à 19:11

Weboob accusé de sexisme a été banni de Debian

Weboob est un logiciel libre qui permet d’utiliser des services Web sans utiliser un navigateur Web. Techniquement le logiciel envoie des requêtes HTTP auprès des services concernés, puis extrait l’information avec des analyseurs (parsers et scrapers en anglais) afin d’en restitué son contenu sous une autre forme (ligne de commande, interface graphique). C’est en quelque sorte une interface de programmation (API) que des logiciels peuvent utiliser pour interagir avec des services web comme une banque par exemple.

Jusque là rien d’extraordinaire me direz vous. Sauf que le nom de ce logiciel fait polémique, pour vous situer le contexte voici apparemment comment le nom a été choisi d’après ce commentaire sur Linuxfr.org.

--- Day changed Sat Feb 13 2010
...
13:02  > bon donc il nous faut un nouveau nom
13:02  > enfin, un nom
13:09  pankkake> grob
13:09  pankkake> Get Rid of Browsers
13:10  pankkake> bad (Browsers are Doomed)
13:11  > grob, ça me plait
13:12  pankkake> et en tout cas y a pas de paquet nommé « grob » sous gentoo
13:12  > idem debian
13:13  > ou woob (Web Out Of the Browser)
13:13  > (variante de ton wootb, en mieux)
13:14  > http://www.urbandictionary.com/define.php?term=woob
13:14  pingouine> [Link Info] title: Urban Dictionary: woob
13:14  pankkake> sauf que éliminer of et pas the, c’est pas logique
13:14  pankkake> bon on peut dire que « out of » c’est un vrai mot
13:14  > Web Out Of Browsers, ça se dit pas ?
13:14  pankkake> si
13:14  > bah voilà
13:15  > et woob ça te plait comme mot ?
13:15  pankkake> ouais, c’est rigolo
13:15  > ça va être dur par contre de grimper dans google
13:16  > bon moi woob ça me plait, on part là dessus ?
13:16  > à moins que tu aies d'autres suggestions
13:16  pankkake> non, j’en ai pas
13:17  > ça fait juste chier que le mot existe, en fait :)
...
17:25  > warning
17:26  > il y a déjà un projet nommé woob
17:26  > (plus ou moins)
17:26  > https://www.ohloh.net/p/wooboard
17:26  pingouine> [Link Info] title: wooB
17:27  > bon on va dire que c'est pas grav
17:27  > e
17:29  > hmm, ça peut être weboob (WEB Out Of Browsers)
17:29  > pankkake: t'en penses uqoi ?
17:31  > ook: pareil
17:31  > (même si tu t'en cognes)
17:39  pankkake> pas mal, y a boob dedans :)

Étant donné que je n’ai pas réussi à trouver les logs d’origine de cette conversation, l’information reste à prendre avec des pincettes.

Il n’empêche que cette polémique a été suffisamment grande pour qu’un ticket soit ouvert auprès des équipes de Debian:

D’autres problèmes similaires ont été remontés sur la plateforme Gitlab du projet:

Les équipes anti harcèlement de Debian ont jugés que ces problèmes étaient contraire au code de bonne conduite et par conséquent le paquet weboob a été supprimé des dépôts de la version testing. Les développeurs de Debian n’ont finalement pas fait un fork du projet comme il l’avait déjà fait avec Firefox (pour un problème de droit sur le logo).

Une triste histoire de sexisme dans le milieu du logiciel libre.

Sources:

pasglop le 04/02/2019 à 19:39

Une triste histoire de “mise à l’écart” surtout, pas très “debian / linux” comme pratique…

dev_tty le 04/02/2019 à 19:43

Je crois que le mainteneur s’en tape le coquillard.

http://laurent.bachelier.name/2013/12/weboob-the-asshole-detector/

petitepoupee11 le 04/02/2019 à 19:52

C’est ce qui a fait débat dans les commentaires sur linuxfr.org: Qu’est ce qui n’est pas très “debian / linux” ?

  • Le fait que des minorités se sentent mal à l’aise à cause de remarques sexistes dans un logiciel ?
  • Le fait qu’un logiciel libre a été supprimé des dépôts officiels ?

Je pense que ce débat est similaire au débat de liberté totale d’expression vs les droits des minorités, je préfère personnellement défendre le droit des minorités, mais dans ce cas particulier je suis partagée car l’utilisateur final est pénalisé.

pasglop le 04/02/2019 à 21:20

Je pense que l’erreur c’est justement d’opposer les 2 Alors qu’ils vont ensemble:

Limiter la liberté d’expression, c’est également bafouer les droits des minorités (et de la même façon, défendre les droits des minorités, c’est défendre la liberté d’expression)

petitepoupee11 le 04/02/2019 à 22:22

Je ne suis pas d’accord.
De quelles minorités tu parles ?
Quand je disais minorités je parlais des minorités qui subissent des discriminations sur leur couleur de peau, leur genre, leur orientation sexuelle, je ne parle pas de l’extrême droite qui se plaint à longueur de journée “on ne peut plus rien dire !”
Je pense qu’il est tout à fait acceptable à ce qu’une communauté ou un État pose des limites sur les discours haineux et discriminants. Je ne pense pas qu’il soit souhaitable de vivre dans un monde où on peut se faire insulter harceler avec des menaces de mort et de viol à longueur de journée, où des néo-nazis peuvent en toute tranquillité monter des milices prête à la guerre civile.

pasglop le 05/02/2019 à 05:08

De toutes.

Je suis pour une liberté d’expression.totale.

A partir du moment où on estime que l’état peut poser des limite sur les discours “haineux”, alors c’est pas l’extreme droite que tu interdis, c’est tout ce qui n’est pas politiquement correct pour l’état.

Hors dans une démocratie, la possibilité pour absolument tout le monde de s’exprimer est indisepnsable.

Sans liberté d’expression sur le non politiquement correct, les minorités sur la couleur de peau, leur genre, leur orientation sexuelle, que tu veux défendre, bah ils pourraient pas s’exprimer, car justement, c’est “pas correct”

Liberté d’expression ne veut pas dire liberté d’action.

Dans toute société, s’en prendre physiquement à des membres de cette société est en principe une des choses les plus graves qui soit.

dev_tty le 05/02/2019 à 15:30

J’ai envie de parler du produit et non de la polémique.

C’est un agent web en ligne de commande et il joue un rôle qu’on a toujours pressenti lors de la création du www mais dont l’usage ne s’est jamais développé.

Le web n’est pas qu’une collection de pages de lectures. C’est aussi une base de données plus ou moins structurée.

Le tarif de la société machin, la température des villes en France, les petites annonces immobilières, les horaires de la SNCF peuvent s’afficher dans une soupe de HTML avec des machins qui gigotent. Il peuvent aussi être servi sous forme de XML dont votre agent fera une exploitation, tri, comparaison, suivi, graphiques, etc.

C’est la première option qui domine. On a complètement oublié la seconde et c’est très dommageable pour le web qui aurait pu être un outil beaucoup plus moderne, plus puissant qu’une collection de pages à lire. L’informatique c’est l’automation. C’est un truc inventé par des feignants pour faire faire le boulot aux machines. Alors si c’est pour se coltiner des pages de lecture, c’est pas la peine.

Malgré une somme de travail monumentale depuis HTML 1.0, les navigateurs web sont toujours idiots. Incroyable !

Un simple script pourrait interroger 100 vendeurs et vous retourner prix et dispos. Vous auriez les horaires du train pour Pau pour tous les jours de la semaine et du mois sous forme de tableau. Et les locations de vacances à Bandol pour la semaine du 8 au 14, tout ça sans vous coltiner 120 pages pleines de sirènes et gyrophares.

Comme les assistants “intelligents”, Weboob - je suppose - va tenter de restructurer l’information dégradée en scrutant la soupe de HTML, à grand renfort d’heuristiques et de divination. Un processus toujours risqué et voué à se planter lorsque le site change la recette de la soupe. (La vitesse de l’USB3 est de 480 MB/s, oups, j’avais pas vu la virgule. Exemple réel).

On va dire poliment que c’est mieux que rien.

Je n’ai rien téléchargé, parce que je sais que c’est un pis-aller pour les raisons ci-dessus. Je me suis contenté d’aller voir Traveloob (oui, ils persistent) , me souvenant de la déculottée phénoménale qu’avait administrée le site de la Deutsche Bahn à celui de la SNCF en sortant les horaires du train pour Pau en ASCII en 0.25s. Et ma foi, 20 ans après, on arrive à peu près au même résultat :

http://weboob.org/applications/traveloob

De l’information, pas du blabla.

Passez outre la polémique et donnez leur chance aux agents web.

anon43031639 le 11/03/2019 à 08:17

J’ai rarement lu des bêtises aussi énormes: en quoi les navigateurs webs sont idiots ? Toi tu veux un navigateur web qui fassent des scripts ou je ne sais pas quoi, OK très bien, mais ce n’est pas ce pourquoi le navigateur web existe. Je t’explique:
Un navigateur web, il est là pour récupérer une page web, et l’afficher correctement. Il va gérer correctement les cookies et autres specs afin d’optimiser la navigation, et voilà.
Tous le reste, ce sont des programmes qui se greffent sur le navigateur.

Alors dit que nos navigateurs web sont idiots lol: je te regarde volontiers développer ton propre navigateur :’)

À propos de tes scripts pour interroger 100 vendeurs là, enfait tu es entrain de râler parce que tu voudrais que ton navigateur récupère des données pour toi, et les affiche comme tu veux. oh wait: tu connais les API ?
Si les API existent en face des pages web, ce n’est pas pour rien, non ?

tass_ le 11/03/2019 à 08:21

Ca fait des années que dev_tty croit y connaître quelque chose au web, mais post après post on voit qu’il est aussi nul là dedans que dans ses relations avec les femmes.

dev_tty le 11/03/2019 à 09:13

Précisément parce que

et que la PAO c’est mignon, mais le web est capable de bien plus que ça.

Tu connais la notion de user agent ?

tass_ le 11/03/2019 à 09:15

On voit bien que tu n’y connais rien mon pauvre… comment veux tu faire ça ? On t’écoute.

tass_ le 11/03/2019 à 09:24

Tu connais les extension des navigateurs ?

anon43031639 le 11/03/2019 à 10:37

What?! C’est quoi le rapport ? :joy::joy::joy::joy::joy::joy:
Si tu penses qu’un site devrait afficher son contenu sous forme de beaux tableaux comme tu voudrais suivant ton User-Agent, tu te fourres ton doigt (que dis-je, ta main) dans l’œil.

Précise toi: tu dis qu’ils sont idiots parce qu’ils ne font pas ce que toi tu veux. Absurde ? lol

error: use of undeclared identifier ‘le web’
C’est quoi le web ? Non parce qu’il existe le protocole HTTP, voilà tout le monde le connait, sinon le web c’est basiquement HTML avec CSS et (malheureusement) JS. Le reste c’est de la construction par dessus le web.
Tu vois la différence ?
C’est comme si tu disais que la Twingo de Renault était une voiture idiote car elle ne sait pas se garer toute seule, ou parce qu’elle n’a pas les néons multicolores que tu aimes.

Btw, je ne connais pas la PAO, j’ai un peu regardé, et tu me parles du truc que lorsque tu souhaites imprimer une page, ça t’affiche la page rendue dans une feuille A4 ou quoi ? Encore une fois: Whaaat!? :joy::joy:

dev_tty le 11/03/2019 à 13:55

Ils sont idiots comme un terminal idiot (dumb terminal). lol

C’est ça qui est idiot (peu intelligent) : afficher une page rendue sur un écran. Il y a autant d’intelligence que dans une imprimante.

Souvent, tu ne cherches pas de la lecture mais de l’information. Par exemple, je veux les chiffres de la pollution de ma rivière. Mais je ne veux pas les trucs inutiles autour. Juste

 { date:12-Jul-2018 , escherichia:509 , coliformes:380 }

Alors, je n’ai rien à cirer que ce soit de l’helvetica 12 points cadre rouge sur fond vert pomme avec image d’une bactérie.

Et avec ça, je vais instruire mon user agent à faire des graphiques de 1999 à 2018.

Et tu ne connais pas non plus le web sémantique.

The concept of the semantic network model was formed in the early 1960s by researchers such as the cognitive scientist Allan M. Collins, linguist M. Ross Quillian and psychologist Elizabeth F. Loftus as a form to represent semantically structured knowledge. When applied in the context of the modern internet, it extends the network of hyperlinked human-readable web pages by inserting machine-readable metadata about pages and how they are related to each other. This enables automated agents to access the Web more intelligently and perform more tasks on behalf of users. The term “Semantic Web” was coined by Tim Berners-Lee,[4]

Whaaat!?

tass_ le 11/03/2019 à 14:07

Wow, tu sais qu’on a des API pour ça ? Et que les sites internet ne sont que des front qui interrogent ces APIS ?

“vite vite je veux des données formatées en parsant des front en HTML alors que je peux interroger des back via des API”

De plus en plus rigolo, arrête de t’inventer des vie dans le web.

dev_tty le 11/03/2019 à 14:33

Oukilé l’API?

http://baignades.sante.gouv.fr/baignades/consultSite.do?isite=044000587&dptddass=044&annee=2015&objectId=1839&plv=04400133825#d

Hein? Oukilé?

tass_ le 11/03/2019 à 14:47

T’es un bon toi. Parce qu’un site ne propose pas d’API alors le navigateur doit pouvoir on ne sait trop comment te formater les données… Mais bien sûr…

“Mon boucher n’a pas fait la traçabilité de sa viande, je vais demander à ma fourchette de me dire si elle est française ou pas”.

Tiens on va voir la source de ce que tu as c/c :

"<td height="40" width="10%" class="cadre_dotted fondBon">
																						<strong> 02/06/2015 </strong> <br>
																					
																								        Bon
																								       
																						<a href="consultSite.do?isite=044000587&amp;dptddass=044&amp;annee=2015&amp;objectId=1839&amp;plv=04400133820#d">
																							<img src="images/fr/boutons/fleche_ronde.gif" alt="accès aux détails" width="15" height="15" border="0"> 
																						</a>
																					</td>"

Bon courage déjà rien que pour faire la règle de parsing, et qui ne marchera que pour CE site et CETTE version du front, avant qu’ils ne fassent une refonte graphique / de code.
Alors bien sûr avoir ça pour tous les sites qui font des tableaux… On voit bien que tu n’y connais rien, c’est impossible dans l’état.

C’est comme avec le web sémantique : si personne n’utilise les balises, ça risque pas de marcher.

dev_tty le 11/03/2019 à 14:55

Hé oui, bonne réponse !!!
Il n’y a pas d’API.

tass_ le 11/03/2019 à 15:02

BRAVO LE VEAU ! Et donc au lieu de gueuler au service concerné tu voudrais que ton navigateur internet puisse parser TOUTES les infos de TOUS les sites (et bien sûr se mettre à jour dès qu’ils se mettent à jour) !

Quelle intelligence !

dev_tty le 11/03/2019 à 15:27

C’est précisément ce que fait Weboob, objet de cette discussion je te le rappelle. Je compare cette solution au web sémantique. Pardon, oui vraiment pardon de mentionner un concept du a Tim Berners-Lee. Quel veau !

tass_ le 11/03/2019 à 15:32

Ce que fait MAL weboob (et encore il le fait mal sur des sites statiques, j’aimerai le voir sur des sites full JS qu’on rigole).
Et le web sémantique c’est comme je te l’ai dit : si les devs n’utilisent pas les balises, ça sert à rien.

anon43031639 le 11/03/2019 à 15:34

Tu devrais cesser et reconnaître que tu t’es mangé un poteau mon gars: @tass_ a raison: tu demandes à ce qu’un site te fournisse une API, mais si elle ne t’en fournit pas, ce n’est pas le problème de ton navigateur.
SPOILER: un navigateur ne peut pas savoir qu’il y a une API sous-jacente à ton site web mon gars!

ROFL :joy::joy::joy::joy::joy:
Depuis quand on chercherait de la lecture ? :smiley: la lecture c’est un moyen d’acquérir de l’information, tout comme l’écoute, la vision. Tu compares un moyen d’acquérir de l’information à l’information elle-même, donc tu compares deux choses qui ne sont même pas sur le même plan… t’es un bon toi :smiley:

Bah ouais, toi t’en as rien à cirer peut-être, sauf qu’un site web - on va te le répéter encore une fois car tu ne sembles pas comprendre - est là pour afficher des informations dans un format lisible et confortable pour l’utilisateur, tout comme une affiche dans la rue mettrait des photos et des couleurs pour indiquer je ne sais pas, le prochain festival de rock du coin?

Qui a dit qu’un navigateur devait faire autre chose qu’afficher une page web (et gérer 2-3 features genre les favoris), mise à part toi ?

Pas compris (hors-sujet?)

Le web sémantique n’a rien à voir avec ta volonté que tous les sites que tu consultent te fournissent absolument une API mon gars… et ouais, je ne connaissais pas le terme web sémantique mais le concept m’est tout de même familier.

Va te plaindre auprès de baignades.sante.gouv.fr? Tu n’as pas pensé que peut-être que la priorité pour ce genre de sites c’est d’afficher convenablement l’information aux utilisateurs qui utilisent leur navigateur favori (oh wait… navigateur…)? L’API est envisageable aussi, mais si personne ne leur demande, peut-être qu’ils ne voient pas l’intérêt pour le moment d’en fournir une ?

Osef que ce soit un concept de Berners-Lee ou de Jean-Michel Cassonnade.
Ce que fait Weboob, c’est parser un site web pour présenter les informations de manière structurée pour un ordinateur/un frontend/un langage, pas pour un utilisateur humain. Placer des balises sémantiques pour le SEO n’aidera pas: au final il faudra quand même parser en utilisant probablement des regular expressions, ce qui reste bien plus fastidieux et coûteux que de traiter de l’XML ou du JSON.
Mais encore une fois, fastidieux car le site ne propose pas d’API et ça ce n’est pas le problème de ton navigateur…

anon43031639 le 11/03/2019 à 15:41

Faudrait voir si weboob travaille sur du statique genre il télécharge la page et traite la page, ou alors il utilise un moteur JS genre V8 comme PhantomJS, alors dans ce cas il bosserait sur le DOM généré et donc il pourrait travailler avec des sites full JS! (J’avoue que je n’ai pas regardé l’impl de weboob…)

tass_ le 11/03/2019 à 15:43

Moi non plus, ça me semble aussi gadget que libcaca pour voir les films en ASCII donc j’ai pas poussé.
De toutes façons reprendre sous une forme normalisée une information mise en forme ça s’apparente trop à de la rétro ingénierie pour que ça soit une solution pérenne (et encore moins pour qu’on l’inclue dans un navigateur).

anon43031639 le 11/03/2019 à 15:46

C’est ça. C’est clairement de la rétro ingénierie. La comparaison n’est pas bête: le site web qui print les infos c’est le binaire, mais on n’a pas les sources pour lire les constantes, les impl des fonctions etc, pour ça il faut aller les différentes sections etc, tout comme le fait qu’il faille parser le code source HTML d’une page.

tass_ le 11/03/2019 à 15:48

dev_tty qui va mitonner encore une fois sur sa prétendue longue expérience pro dans le web dans 3…2…1…

dev_tty le 11/03/2019 à 15:48

Je me demande bien qui a mangé un poteau après avoir avoué qu’il ne connaissait pas la PAO ni le web sémantique. Mais je vais continuer parce que je suis joueur.

Depuis que c’est la seule chose que les sites proposent, sauf quelques (trop rares) API retournant du XML ou du JSON.

C’est une vision restrictive du web. Tu as loupé tout le chapitre ‘machine-to-machine’. Ceci par exemple n’est pas destiné à afficher des informations dans un format lisible et confortable pour l’utilisateur, mais à servir dans données dans un format facilement ingérables par une autre machine.

Personne. Je parle d’«agent»

(soupir) smart terminal / dumb terminal.
Tu connais pas non plus ?

Mais que vient faire le SEO là-dedans ?

Merci d’abonder dan mon sens. Ça fait juste un mois (5 février) que j’ai développé cette thèse.

tass_ le 11/03/2019 à 15:50

Paf j’avais raison, mitonnage en cours !

tass_ le 11/03/2019 à 15:51

Waw du xml avec des schèmas !! is that 1995 ?

anon43031639 le 11/03/2019 à 15:55

LOL tu la joues qui a la plus grosse bite en connaissant le plus de termes parce que je ne connaissais pas le terme web sémantique ? :smiley:

Ah je confirme, tu la joues bien j’ai la plus grosse. Soupire si tu veux :slight_smile: Fait gaffe à l’hyper-ventilation, c’est mauvais pour le cœur :joy::joy::joy::joy:

Alors, je vais sur view-source:https://www.aviationweather.gov/dataserver, je vois de l’HTML dégueulasse. Oh wait, j’utilise un navigateur là, pas un outil à la curl ou quoi :slight_smile:

Anyways, ça ne sert à rien de discuter avec un enfant qui se la joue j’en ai une plus grosse :joy::joy:
Retourne à ta thèse inutile pour la société, si ça te permet d’acheter ta baguette le soir j’en suis ravi !

tass_ le 11/03/2019 à 15:59

Non le monsieur te dis que le web n’est pas fait que pour être affiché dans un navigateur, qu’il y a aussi des API qui renvoient des infos qui seront traitées par des machines (des scripts quoi)… en montrant un exemple vieux de 20 ans que plus personne n’utilise (ne lui parle pas de JSON ou de files de message c’est trop récent pour lui).

dev_tty le 11/03/2019 à 16:02

Oui. L’aviation est restée coincée en 1995. Mais quels veaux !

Quelque part, ça aurait du te mettre la puce à l’oreille que je doive aller chercher la vitesse du vent de ma ville aux U.S.A. et pas chez Meteo-France. Pour l’afficher dans un format lisible et confortable pour les utilisateurs, à savoir en alphanumérique avec des lettres de 10cm de haut, vert sur fond noir, parce c’est ce dont ils ont besoin et rien d’autre.

T’as vraiment tout compris. T’étais tellement pressé de me coincer que tu n’a pas pris le temps de cliquer sur ‘Exemples’.

Encore raté.

anon43031639 le 11/03/2019 à 16:05

Mec, tu nous fournis un lien vers… une API :joy::joy::joy: en quoi ça appuie ton discours là ? Bien sûr qu’une API est faite pour les programmes, et bien sûr qu’une page HTML est faite pour l’utilisateur :joy:

Tu devrais rebrancher tes neurones frère, tu en as vraiment besoin :smiley:

dev_tty le 11/03/2019 à 16:05

On avance doucement. Ne vous inquiétez pas, j’ai du temps.

anon43031639 le 11/03/2019 à 16:07

C’est clair que tu avances doucement frère, par contre je n’ai pas le temps de jouer à qui à la plus grosse, je ne suis plus au collège, et dans ma tête ça se passe bien :joy:

Sur ce, bonne semaine, j’espère que tu arriveras à comprendre le monde qui t’entoure un peu plus aisément :kissing_heart::kissing_heart::kissing_heart:

dev_tty le 11/03/2019 à 16:10

Je compte sur toi pour m’y aider.

anon43031639 le 11/03/2019 à 16:11

Quand tu veux fréro :heart:

tass_ le 11/03/2019 à 16:40

Minitel ? C’est toi ?

Tu confonds tout, une API est là pour avoir des données formatées et réutilisables par des scripts.
Un site internet est là pour présenter une information lisible par l’humain et de façon ergonomique.
Si tu n’as pas des informations via une API, tu ne peux pas faire grand chose d’autre que parser le HTML pour essayer d’en déduire les informations mais :

  • c’est coûteux que ce soit en dev ou en ressource
  • c’est obsolète à chaque changement dans le HTML source

Donc ce n’est pas une solution viable ni qui doit être préconiser, c’est au mieux un pis aller, une rustine qui va marcher pour un moment t sur un site s.
Non ce n’est pas viable, non ce n’est pas ce que les utilisateurs attendent d’un navigateur.

dev_tty le 11/03/2019 à 17:00

Et donc tu vas découvrir que nous sommes d’accord depuis le début.

Prends ton temps.

tass_ le 11/03/2019 à 17:03

Ben oui c’est pour ça que tu dis que “Un simple script pourrait interroger 100 vendeurs et vous retourner prix et dispos. Vous auriez les horaires du train pour Pau pour tous les jours de la semaine et du mois sous forme de tableau. Et les locations de vacances à Bandol pour la semaine du 8 au 14, tout ça sans vous coltiner 120 pages pleines de sirènes et gyrophares.”

OxayotlTheGreat le 15/03/2019 à 02:06

J’adore la bonne ambiance ici :smiley:

anon43031639 le 15/03/2019 à 13:14

La même :grinning::grinning::grinning::grinning: