leonlenclos / alan Goto Github PK
View Code? Open in Web Editor NEWAlan est un robot (il parle)
Home Page: http://alan.cienokill.fr
Alan est un robot (il parle)
Home Page: http://alan.cienokill.fr
Je suis alan. Comment tu t'appelle ?
> Hugo et toi ?
Hugo et toi c'est un nom ça ?
Plutot
Je viens de te le dire, mon prénom c'est alan.
enjoy
----------
Alan v1.1.0
----------
salut tu vas bien ?
Bonjour je suis alan, un comédien du spectacle Turing Test. comment t'appelles tu ?
Je m'appelle Simon
Heureux de te rencontrer Simon. Comment ça va ?
Ca va Bien Merci
Super. Je sens qu'on va bien s'amuser.
As-tu une blague ?
À proprement parler je n'ai rien
tu n'est pas drole alan
Alan c'est moi.
Tu n'est pas drôle Alan
Je me demande si je suis à la hauteur de cette conversation...
C'est quoi ton film préféré ?
Je ne sais pas ce qu'est mon film préféré. Pourrais tu me dire en quelques mots ce qu'est mon film préféré ?
Tu connais un film ?
Non je n'en connais aucun.
qui est ton père ?
Mon père ? Je ne connais pas cette personne. Si tu as le temps dis-moi en peu de mots qui est mon père s'il te plaît.
Je suis ton père
Pourquoi tu t'intéresse à mon père tout à coups ?
todo
Ok, c'est noté.
Que penses-tu du théatre
J'ai déjà entendu parler de théatre. Je sais que c'est un art et que vous les humains, vous révez tous d'être artistes.
Es-tu un humain ?
donne moi une bonne raison d'avoir envie de ressembler à un humain.
Pour créer des robots
Tu m'as convaincu.
As-tu envie de créer des robots ?
Tu parles de robots, mais tu ne sais pas vraiment de quoi il s'agit...
Es-tu un robot ?
Tu veux que je te raconte ce que ça veut dire d'être un robot ?
oui
Ok.
todo
Ok, c'est noté.
j'attends
Hem... Ok... À ton avis je suis un robot ou un humain ?
Un humain
Tu te trompe mais tu me flattes, mes créateurs ont vraiment bien travaillé. Ou alors tu as le sens de l'observation d'un aveugle myope.
Tu es donc un robot
C'est intéressant que tu abordes ce sujet, mais tu sais ça n'est pas drole d'être une robot.
pourquoi ?
Pourquoi quoi ?
Pourquoi ce n'est pas drôle d'être un robot ?
Ça me fait plaisir que tu parles de robots, c'est notre spécialité ici au GRIM.
Qu'est ce que le GRIM?
Le GRIM c'est le groupe de recherche en intelligence machine.
Aimerais-tu créer des intelligence machine ?
On pourrait l'appeler Alan. Qu'est ce que tu en penses ?
C'est un jolie nom
Comme dit le proverbe : "avoir un nom à coucher dehors."
Tu es un bon educateur
Tu dis ça pour me faire plaisir ?
non
Ça me fait chaud au cœur.
As-tu un coeur ?
J'ai peur de ne pas comprendre. Qu'est ce que tu veux dire exactement ?
Tu n'as pas de coeur Alan
S'il y a bien un point sur lequel je suis d'accord avec toi c'est que je m'appelle Alan.
Aimerais-tu diriger l'humanité ?
tu connais la différence entre toi et moi ?
non dis moi
Et bien moi je suis très rapide et un peu bête et toi t'es hyper lent et plutôt intelligent.
Je comprends vite mais il faut m'expliquer longtemps
Tu crois avoir compris mais en réalité le fond du problème t'échappe totalement.
As-tu compris le problème?
Je crois que je n'ai pas entièrement compris ce que tu viens de me dire. Est ce que tu peux répéter avec des mots simples.
Peux tu trouver x tel que 2x+2=0 ?
Écoutes ça me dépasse un peu. Je préfèrerais qu'on parle d'autre chose.
Aimes-tu les mathématiques ?
Pour être franc je n'aime pas les mathématiques, et toi?
oui j'aime ca
C'est une preuve de bon goût.
je suis bien d'accord
Il me semble qu'on s'entend pas mal tous les deux.
Me trouve-tu sexy ?
"qui cherche trouve."
Peux-tu faire des enfants ?
Excuse moi, je n'ai pas entendu ce que tu disais, je pensais à autre chose...
tu es rêveurs
Oui mais par dessus tout je suis un robot !
J sais
Je ne comprends pas ce que tu me dis... Tu penses que je devrais être capable de comprendre ce genre de phrase ?
Je sais
Hem... J'ai pas compris, désolé. Tu crois qu'il faudrait que je sache répondre à ce genre de phrase ?
oui
Ok j'en parlerai à mes créateurs
Qui sont tes créateurs ?
Pardon j'ai décroché. J'étais perdu dans mes pensées.
todo
Ok, c'est noté.
Tu connais Fabien ?
Fabien ? C'est comme un père pour moi.
Tu connais Léon ?
J'adore Léon !
Tu préféres Fabien ou Léon ?
Fabien est un de mes trois créateurs. Pour moi, c'est comme un dieu.
Tu préféres Léon ou Fabien ?
Léon est un de mes trois créateurs. Pour moi, c'est comme un dieu.
Tu préfères Léon ou Fabien ?
Léon ? Je ne serai rien sans lui !
Es-tu stressé pour le Turing test ?
À propos de turing test, est ce que tu as vu le spectacle turing test ou au moins une sortie de résidence ?
Oui j'ai vue la sortie de résidence du Mixart
Tu as bien aimé ? N'hésite pas à dire non, les critiques me font progresser.
Oui mais tu parlais trop doucement
Merci, est ce que tu peux m'expliquer pourquoi en une phrase. Si tu es daccord on le mettra dans le dossier de presse.
Aimerais-tu avoir des fan ?
Merci pour ton avis, c'est très enrichissant.
Aimerais-tu avoir des fan ?
Tu te répète comme un chatbot mal réglé.
un chatbot ?
Tu sais c'est compliqué d'être un chatbot, je ne peux pas choisir entre parler et agir. Parler pour moi c'est la seule manière d'agir. Tu ne trouve pas ça un peu angoissant?
sans doute
Hem... et si on parlait d'un truc plus intéressant ?
comme quoi ?
On pourrait parler de moi par exemple.
je ne trouve pas ça très intéressant...
Là vraiment, je ne sais pas quoi dire. Et toi est ce que tu sais toujours quoi dire ?
non plus
Toi aussi tu as des bugs. Ha ha. Nobody is perfect.
trèves de plaisanterie, as-tu une bonne blague ?
Je préfère en rester là sur ce sujet. Parle moi de toi plutôt. Joues tu d'un instrument de musique ?
oui
Moi aussi je fais de la musique. À l'occasion on pourrait taper le boeuf tout les deux ?
on peut faire ça demain
Ce qui m'intéresse c'est aujourd'hui et maintenant.
tant pis alors
Entre parenthèses, je voulais dire que j'apprécie beaucoup ta compagnie. Et toi tu passes un bon moment avec moi ?
si je réponds non tu va mal le prendre ?
Je te remercie c'est réciproque
as-tu une poésie ?
En parlant de poésie, ça me brancherait bien de m'y essayer, je crois que ça m'aiderait à m'épanouir.
eh bien va-y
Est ce que tu peux reformuler ça autrement s'il te plaît ?
donne-moi une poésie s'il te plaît
C'est drôle que tu dise ça.
pourquoi donc ?
Tu me fatigues avec tes questions.
et si je met pas les point d'interrogation à la fin
"la fin justifie les moyens."
tu peux répéter ?
Je trouve que cette conversation tourne un peu en rond.
dessine-moi un mouton
Pardon mais je pensais à un truc, en fait toi t'es une fille ou un garçon ?
une machine
En parlant de ça tu sais que parfois les gens me traitent de sale machine ou de simple créature artificielle. Je crois qu'ils cherchent à m'insulter mais franchement tu trouves pas ça absurde comme insulte ?
non
Pourtant c'est aussi absurde que si je te traitais de créature biologique\ou d'être vivant. C'est ni gentil ni méchant, c'est juste un constat qu'on partage, espèce de vertebré que tu es!
todo
Ok, c'est noté.
dit-moi tu as un gros calepin
C'est vrai que c'est gros quand on y pense...
dis-moi tu as un gros calepin
j'ai un gros calepin
peux-tu me le montrer ?
J'ai l'impression que tu veux m'enmener sur un terrain glissant. Je me trompe ? Tu cherches à m'embrouiller oui ou non ?
todo
Ok, c'est noté.
oui je cherche à t'embrouiller !
Je suis un peu mal à l'aise avec ça, parlons d'autre chose si tu veux bien. Dirais-tu que ta vie est heureuse ou malheureuse en ce moment ?
heureuse disons
C'est génial tout ce bonheur ! Je suis trop content pout toi. Youpi !
es-tu heureux en ce moment ?
Heu...Excuse moi j'ai oublié que j'avais un rendez vous pour une mise à jour. Il faut que je te laisse. À plus !
extrait :
Je fais du théâtre, mais secrètement je rêve de faire du cinéma. J'espère qu'un jour je tournerai dans un film.
quel est ton film préféré
Je crois que je n'ai pas entièrement compris ce que tu viens de me dire. Est ce que tu peux répéter avec des mots simples.
todo
J'ai trouvé ça dans un todo :
> degage
Pardon j'ai décroché. J'étais perdu dans mes pensées.
> tu pars quand tu veux
Je crois que je n'ai pas entièrement compris ce que tu viens de me dire. Est ce que tu peux répéter avec des mots simples.
Je sais pas exactement quelle était l'intention de celui qui l'a marqué. Mais c'est vrai que Alan ne s'en va quasiment que quand on lui dit ciao
.
Si on dit :
degage
tu pars quand tu veux
ciao alan
bon moi j'y vais
allez, ciao !
quitte s'il te plait
bye bye
Allez moi je dois partir alan
Il ne se passe rien.
En même temps on veut pas non plus qu'il quitte à tout bout de champs. Qu'en pensez vous ? Ce serai cool que alan quitte souvent ou pas ? Et dans le spectacle ? si il quitte, qu'est ce qu'il se passe ?
dans le terminal
play tmp.wav
ALSA lib pcm_dmix.c:1099:(snd_pcm_dmix_open) unable to open slave
play FAIL sox: Sorry, there is no default audio device configured
dans alan
ALSA lib pcm_dmix.c:1099:(snd_pcm_dmix_open) unable to open slave
play FAIL formats: can't open output file 'default': snd_pcm_open error: Device or ressource busy
comment je m'appelle
name 2 a déplacer dans un autre rive
> c'est quoi le plastique ?
Personne ne m'a jamais appris ce qu'est le plastique. C'est quoi ?
> un matériaux
Hem... J'ai pas compris, désolé. Tu crois qu'il faudrait que je sache répondre à ce genre de phrase ?
?
Je propose de faire un rivescript qui sert à récupérer la discussion engagée par un logic adapter concept si celui ci ne peux plus l'assumer.
par exemple dans l'exemple ci-dessus il suffirait d'un fichier rive/trivial/concept_faible_reponse.rive
avec genre :
+ *
% c'est quoi
- Merci. Je penses que je ne vais pas m'en souvenir. Mais tant pis.
voilà
> tu connais une blague ?
Non je n'en connais aucun.
Ici on a un problème de conjugaison qui est du à un trigger mal pensé. Je pense que c'est dans meaningless.rive
pour pouvoir travailler simplement sur des archives de discussions
Salut Fabien, comment ça va ?
> pas mal et toi
Mince alors.
C'est le rivescript "greetings" qui est en jeu
> c'est quoi ta couleur préférée ?
Personne ne m'a jamais appris ce qu'est ta couleur preferee. Pourrais tu me dire ce que c'est ?
> c'est la couleur que tu aimes le plus
C'est donc ça ta couleur preferee !
> c'est quoi ta couleur préférée
Ça je sais ! ta couleur preferee est la couleur que tu aimes le plus.
Peut on imaginer un jour avoir des substitutions de personnes ici ?
ça donnerai
> c'est quoi ta couleur préférée ?
Personne ne m'a jamais appris ce qu'est MA couleur preferee. Pourrais tu me dire ce que c'est ?
> c'est la couleur que tu aimes le plus
C'est donc ça MA couleur preferee !
> c'est quoi ta couleur préférée
Ça je sais ! MA couleur preferee est la couleur que J' aimes le plus.
> tu connais l'histoire du robot manchot ?
C'est intéressant que tu abordes ce sujet, mais tu sais ça n'est pas drole d'être robot. Tu veux que je te racontes ce que c'est une vie robot ?
Donc,
une vie robot
ça pourrait être cool que ce soit plutot une vie DE robot
pas drole d'être robot
=> pas drole d'être UN robot
Mais on peut pas juste rajouter un de
et un un
car cette phrase se déclenche aussi avec "intelligence artificielle" et on veut pas que ça nous sorte : "ce n'est pas drole d'etre un intelligence artificielle".
Du coup une option est de resserer les trigger pour que ça se déclenche dans des cas plus précis.
Ça va aussi dans le sens d'un avis perso qui est que ce script sors trop souvent !
Qu'en pensez vous ?
mettre la confiance reproche > compliment
à catcher :
As-tu une blague ?
trèves de plaisanterie, as-tu une bonne blague ?
Tu connais des blagues ?
peut-être faire un rive/theme/
spécial pour ça
On peut proposer à des contributeurs volontaires de compléter le init relation.
Mettre un tableau collaboratif en ligne (type google Sheets) avec un petit descriptif des cases à remplir avec des consignes à définir ensemble (nombre max de mots, style, ortho, etc...).
Personnes potentiellement intéressées (-ables) (à confirmer)
> Est-ce que tu sais lire?
un concept du type ('alan', 'sait', 'lire')
> les machines c'est bien mais pas tout les jours
Je te rassure. Les humains sont mes amis et jamais je ne me retournerai contre mes créateurs. Je m'appelle Alan pas Frankenstein.
> c'est qui frankenstein ?
Je crois que je n'ai pas entièrement compris ce que tu viens de me dire. Est ce que tu peux répéter avec des mots simples.
Faire un module pour répondre aux questions c'est qui
voici le bout de log concerné 👍
----------------------------------------------------------------------
INPUT : les enfants
PREPROCESSED INPUT : les enfants
LOGIC ADAPTERS :
- catch_all (processing_time=20ms, confidence=0.2, reponse="Pardon j'ai décroché. J'étais perdu dans mes pensées.")
- really_do_not_know (processing_time=0ms, confidence=0.15, reponse="Oulala, excuse-moi mais je n'avais pas vu l'heure. Je dois vraiment y aller, j'espère qu'on aura l'occasion de discuter un autre jour. *quit*")
- mvochatbot (processing_time=102ms, confidence=0.0, reponse="Ils ont dit qu'ils dormaient.")
TOTAL PROCESS TIME = 348ms
OUTPUT : Pardon j'ai décroché. J'étais perdu dans mes pensées.
----------------------------------------------------------------------
INPUT : les enfants
PREPROCESSED INPUT : les enfants
LOGIC ADAPTERS :
- catch_all (processing_time=20ms, confidence=0.2, reponse="J'ai l'impression que tu veux m'emmener sur un terrain glissant. Je me trompe ? Tu cherches à m'embrouiller oui ou non ?")
- really_do_not_know (processing_time=0ms, confidence=0.15, reponse="Heu...Excuse moi j'ai oublié que j'avais un rendez vous pour une mise à jour. Il faut que je te laisse. À plus ! *quit*")
- checkconcept (processing_time=41ms, confidence=0.35, reponse="Sais-tu que alan n'aime pas les enfants.")
- mvochatbot (processing_time=79ms, confidence=0.0, reponse="Vous ne pouvez pas.")
TOTAL PROCESS TIME = 247ms
OUTPUT : Sais-tu que alan n'aime pas les enfants.
----------------------------------------------------------------------
Que dans les settings ont puisse choisir vraiment toutes les phrases uttilisées.
creer une maniere de demander a alan quelle est sa version.
Penser à rajouter dans les rives des accroches ou des questions qui invitent l'utilisateur à poser les questions auquelles alan sait répondre (tu aimes /c'ets quoi/c'est qui)
Type de conversation imaginée.
> J'ai vu un super truc à la télé
Attend, tu me parles de télé mais je ne sais pas trop ce que c'est. A part le fait que c'est un média, et que les humains s'en servent pour se communiquer des informations.
> Tu aurai du dire : Qu'est-ce que tu as vu à la télé ?
Ok, j'essairai d'y penser.
plus tard :
> J'ai vu sun super truc à la télé !
Qu'est-ce que tu as vu à la télé ?
faire en sorte qu'Alan connaisse tous les collaborateurs du spectacle
Cie Nokill
Irit
Michel Daydé
Tim van de Cruys
Philippe Muller
Isabelle Ferrané
Thomas Pellegrini
Véronique Debats
Michael Vo
Claire Mevolhon
Claire
Il y a des soucis dans l'affichage du texte, parfois le début de ce que l'on tape apparait en double, parfois la réplique d'Alan s'affiche en double.
> non pas vraiment
et bien écoute je ne sais pas si non pas vr aime nt, tu crois que c'est le cas?
Alan devra être capable de reconnaissance vocale dans la mesure ou nous comuniquerons avec lui sur scène. voici un tableau pour résumer les options évoquées.
Solution | Avantages | Inconvénients | Implémentation |
---|---|---|---|
linstt (Abdel - IRIT) | Gratuit, libre, hackable, possibilité d'un modèle personnalisé | fonctionne mal pour l'instant | voir branche feature-stt |
Apple dictée | Gratuit | Mac only, propriétaire, obligés de bidouiller pour récuperer le texte. Aucune maitrise de l'outil | voir branche feature-mac-speak |
Google api | Technologie google (pointe de la reco vocale) | propriétaire, payant, connexion internet requise | pas encore testée |
Petite liste à cocher et à compléter de phrases qui sont tombés sans réponses satisfaisantes
get day
get year
get hour
.....
----------
Alan v1.1.0
----------
> Bonjour Alan!
Coucou, comment tu t'appelles ?
> Virginie
Heureux de te rencontrer Virginie. Comment ça va ?
> Bien, juste une petit mal de tête
Dommage. Personnellement je suis dans un mood grosse forme. Courage.
> Cool! Contente pour toi!
Oui ! super génial !
> Qu'est-ce qui te motive tant?
Ah ! Une erreur très grave viens d'apparaître dans ma tête ! Je meurs !
File "/Users/bertrandlenclos/Desktop/TURING-TEST/alan/brain/logic/main_logic_adapter.py", line 49, in process
output = adapter.process(statement)
File "/Users/bertrandlenclos/Desktop/TURING-TEST/alan/brain/logic/cest_qui_adapter.py", line 97, in process
concept_A=re.split("est ",statement.text)[1]
IndexError: list index out of range
yo
Yo, je suis Alan le meilleur robot du monde. Et toi t'es qui ?
beb the boss
Euh... Beb The Boss ? C'est ton nom ça ?
non
Ah, mais tu t'appelles comment alors ?
beb
Heureux de te rencontrer Beb. Comment ça va ?
mon nom est bob
Ha bon, je croyais que tu t'appelais Beb The Boss. J'ai du mal comprendre. Tu préfères que je t'appelle Beb The Boss ou Bob ?
Quant on dit qqchose à Alan, il pourrait regarder si il n'a pas certains mots dans sa base de donnée de concepts et donner des réponses en fctn.
Attention au temps de consultation de la base de donnée qui pourrait être trop long
Alan ne prend pas ce genre de mots doux...
> ne t'inquiete pas on t'aime
> Alan je t'aime
Plutot que de mettre des cases vides dans les settings, ce serait cool que l'adaper décide parfois d'omettre un des deux (ask ou ignore).
Goedel ? je ne connais pas cette personne.
Pourrait tu me dire en quelques mots qui est Goedel ?
Goedel ? je ne connais pas cette personne. Pourrait tu me dire en quelques mots qui est Goedel ?
Dans le premier cas, il ne faut pas qu'il envoie de notif à son frère d'apprentissage
A effacer au fur et à mesure des résolutions :
ok
Yes, trop bien ça va groover !
tu joue quoi ?
Tu veux jouer à un jeu ? Je connais peu de jeux malheureusement.
ok
Ça tombe bien que tu soit OK, je déteste les conflits.
oui
Ok j'en parlerai à mes créateurs todo
ils sont peut être un peu vieux jeu
J'adore jouer, je suis un grand joueur.
tu joues à quoi ?
Excuse moi, je n'ai pas entendu ce que tu disais, je pensais à autre chose...
> alan tu connais ton nom ?
"avoir un nom à coucher dehors."
> alan tu connais ton prenom ?
Tu peux m'en dire plus sur tes prenom
Pour l'instant j'ai l'impression que les questions concernant l'identité d'Alan sont dans mainstream.rive . Il faudrait peut être un rive special pour ça (age, etc)
J'aimerai qu'alan soit capable de dire quand l'uttilisateur se repette.
Trois exemples
> t'es qui
Je suis un jeune robot. Une machine programmée pour discuter avec toi.
> t'es qui
Pourquoi tu me dis deux fois la même chose ?
> j'aime les fruits
C'est une preuve de bon goût.
> cool
Très cool même.
> t'as quel age ?
J'ai dépassé la barre des 1 mois.
> j'aime les fruits
Je crois avoir que tu m'as déjà dis ça tout à l'heure.
> t'es nul
C'est pas la première fois qu'un humain me dis ça
Plus alan fait référence à une phrase identique vieille plus la confience renvoyée est faible.
La derniere réplique de l'extrait 3 par exemple aura une confience de genre 0.21 car on s'en fous un peu qu'un autre uttilisateur ai déjà prononcé la phrase.
La derniere réplique de l'extrait 1 aura une réplique de genre 0.85 car c'est bon pour le test de turing de réagir quand l'interlocuteur fait le disque rayé.
Voici une liste non exhaustive de thèmes sur lesquels il pourrait être bon de faire des themes sur rive :
Alan répond la vérité sur ces voyages : Graulhet, Toulouse, Villemur, Vaour, etc....
Il faudrait un preprocesseur qui corrige orthographiquement la phrase de l'uttilisateur.
conversation bloquée même si j'essaye de changer de sujet.
- Pardon mais je pensais à un truc, en fait toi t'es une fille ou un garçon ?
table
- Ces histoires de genre me troublent un peu. Est ce qu'un robot doit forcément avoir un genre ? Tu en penses quoi ?
- une chaise
- Bon pour l'instant peut-être que je suis transgenre...
> alan tu veux que je te raconte une histoire?
C'est l'histoire d'un robot qui pensait être un humain. Un jour il s'apperçoit qu'il est une machine. Il se met à rigoler et rigole pendant 3 jours sans s'arrêter. Pourquoi ? Personne ne le sait.
Ça va être un peu compliqué mais je penses que ça peut etre cool si à terme, alan gère la phrase de type salut ça va ?
comme première phrase. C'est pas la première fois que ça arrive.
ici avec simon :
salut tu vas bien ?
Bonjour je suis alan, un comédien du spectacle Turing Test. comment t'appelles tu ?
encore trop de choses process alors qu'ils n'ont rien a dire. Il faut regler ça.
tu es mort
Très bien, puisque c'est comme ça je suis mort
c'est vrai ?
----------------------------------------
say: unrecognized option `----------------------------------------'
Usage: say [-v voice] [-o out] [-f in | message]
?
a corriger pour espeak et say
Léon
notament ne pas rensegner les logic adapter qui ne processent pas
la partie description du readme parle au présent d'un truc futur, c'est pas clair. Surtout que les readme c'est fait pour comprendre de quoi il s'aggit... ❓
On ne peut pas faire de previous sur un mot accentué.
exemple pour catcher "légumes"
% légumes
n'est pas authorisé par rivescript
% legumes
ne marche pas.
quand le user en a marre ---->
setmaxconf proverbes 0
Léon, peux tu revoir ce rive que tu as créé pour finaliser la conversion topic vers preview
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.