Je peux faire un clone de Twitter en un week end


Il ne se passe pas un mois sans que je ne lise le commentaire d’un abruti qui annonce être capable de réécrire service X en quelques jours. Des projets et des projets de clones pour le prouver.

Twitter, Uber, Imgur, whatever.

Une variante est de juger la stack d’un service en prétendant qu’on pourrait faire beaucoup mieux avec moins.

Je ne sais pas si c’est de la bêtise, de l’ignorance ou de l’arrogance. Probablement des trois.

Prenons par exemple Twitter. Easy non ? Des messages de 140 caractères, quelques tags.

Mais, mais, mais les amis. Ca c’était Twitter le premier week-end de sa sortie aussi.

Maintenant Twitter c’est beaucoup plus que ça:

  • Suivi des messages en temps réel ou par historique complet.
  • Suivi par personne ou tag.
  • Possibilité de faire une recherche complexe sur des gens, tags ou du texte libre. Avec filtrage par settings comme la langue ou la date. Et obtenir les résultats en temps réel.
  • API complète pour accéder au service.
  • Analytics sur les tweets, personnes ou tags. Et l’auth, le bouton twitter, etc.
  • Auto-complétion partout.
  • UI responsive design, et compatible avec des dizaines de navigateurs.
  • Et une app mobile qui fonctionne sur 2 OS majeurs.
  • Upload de médias.
  • Minification d’URLs.
  • Instruments de modération et anti-spam.
  • Intégration de miniatures de contenus liés.
  • Intégrations avec services externes tels que Youtube, Slideshare, etc.
  • Comptes avec fonctionnalités professionnelles.

Bien entendu avec son succès Twitter doit maintenant scaler et assurer:

  • La connexion de centaines de millions d’utilisateurs chaque jour.
  • Qui postent et lisent des messages.
  • Qui peuvent être reçus par des millions d’utilisateurs. Et oui, c’est pas du chat. Un message ne va pas à une dizaine de destinataires.
  • Qui peuvent être reçus par des tags lus par des centaines de services en ligne. Et oui, en plus des abonnés, les messages sont aussi distribués par tag. Des millions de tags. Combinables arbitrairement.
  • L’historique de tous les tweets doit être accessible. Des milliards de tweet.
  • Gérer tout ce bordel alors que les messages sont un graphe. Et oui, entre les utilisateurs, les tags, les RT récursifs, les réponses et les likes, twitter n’est pas une timeline linéaire. C’est un graphe. Traité en quasi temps réel.
  • Se défendre contre les attaques, les abus du service, supporter le trending topics dûs à l’actualité.
  • Fournir le service dans des centaines de pays avec des langues, cultures, lois et situations politiques différentes.
  • Gérer la partie commerciale (faire de la thune) et marketing (préserver son image).
  • Gérer la boite : l’équipe, la thune, les locaux, les projets.
  • Gérer les incidents incongrus. Ben oui, si un truc à une chance de 0.0000000001% de se produire, sur un service qui a des centaines de millions de users qui s’activent comme les chimpanzés hystériques, ce truc arrive TOUS LES JOURS.

Aujourd’hui ce service, c’est des millions de lignes de code.

En prime, un service à succès n’est pas que du code, c’est aussi une énorme infra. Une logistique de dingue. Et un effort marketing colossal.

Personne ne peut reproduire ce que fait X actuellement en un an de travail. Je ne parle pas d’un week-end.

Les projets que l’on voit sont des “représentation du concept clé de X”.

Ca ne veut pas dire qu’il ne faut pas essayer de copier, concurrencer, proposer des alternatives, etc. Faut juste pas prendre les gens pour des cons.

Bref, à tous les prétendants au “c’est super simple” présents, passés et futurs :

21 thoughts on “Je peux faire un clone de Twitter en un week end

  • lsga

    pff, mwa je te fais tout ça en 2 heures montre en main:

    1. Tu me passes les clés d’accès SSH aux serveur de twitter

    2. Je te fais un gros scp de porc

    Et voilà !

  • erdnaxeli

    Et dans l’infra il faut penser qu’ils ont leurs datacenters, ainsi que leur AS (autonomous system, c’est à dire que c’est un “opérateur internet”). C’est donc à eux de peerer avec d’autres AS, de louer / acheter des fibres, gérer des POPs, routeurs, etc. Rien que ça ça occupe des boites entières :p

  • David CHANIAL

    Un ami me disait : “ça va sans dire, mais ça va mieux en le disant”. C’est parfaitement le cas de cet article ; merci Sam.

  • Léon

    Je peux faire un clone de ton article en un week-end !

    Allez, fallait que ça sorte :p

  • cym13

    À quoi on rajoute que copier, même intelligement, ça n’est pas suffisant. Je ne compte plus tout les projets libres (allez voir framasoft c’est génial) qui copient des projets commerciaux déjà existant et n’arrivent pas à trouver leurs utilisateurs malgré les passionnés. Beaucoup d’entre eux ammènent pourtant des fonctionnalités innovantes et intéressantes. Un projet, surtout à ce niveau, ça ne repose plus que sur la technique, sans même parler de la programmation.

  • acieeed

    le niveau au-dessus serait de dire “je peux faire un clone rentable de twitter en un weekend”.

  • Sam Post author

    @enzo bricolo : “entre nous soit-dit bonnes gens, pour reconnaître, que l’on est pas intelligent, il faudrait l’être”.

  • e-jambon

    J’adore lire ce blog.

    A chaque fois, ça me regonfle le moral.

    Ça me rassure de voir qu’il y a des gens plus compétents qui ont le même sentiment que moi.

    Ceci étant, il m’arrive de juger d’interfaces et de grincer des dents.

    Quand dans un même programme je vois 15 écrans qui fonctionnent de 15 manières différentes pour faire exactement la même opération, ça me fait furieusement penser à la réalisation naïve d’un stagiaire.

    Et puis je me rappelle que j’ai été stagiaire…

  • ultra

    En fait, c’est plus compliqué que ça.

    ça dépend de qui parle à qui.

    Par exemple, un jeune dèv qui explique à son chef dèv qu’il peut faire un truc complexe en 5 min, son chef dèv le recadre vite fait.

    Mais si le jeune dèv discute avec un manager / chef de projet / patron de startup etc… qui comprend rien à la technique, qu’il peut le faire en 5 min, il y a 2 possibilités :

    – le manager / chef de projet / patron de startup un peu intelligent recadre le jeune

    – le manager / chef de projet / patron de startup un peu idiot croit le jeune et ça part vite en couille

    Parce qu’il ne faut pas se leurrer, il y a une guerre froide entre les techos et les managers, les managers croient que les techos les prennent pour des cons et qu’ils surestiment par 3 la difficulté de la tache. Et du coté des techos, ils méprisent les managers, alors surestimer pour qu’ils puissent être peinard, ça arrive très très souvent.

    Donc forcément, quand un manager se trouve devant un techos qui lui dit 5 min et un autre qui lui dit 1 semaine, le manager saute sur l’occasion pour foutre le merdier chez les techos.

    Pour moi, un dev qui t’explique qu’il peut recoder twitter en 5 min, il est forcément jeune, les dents qui rayent le parquet, veut dézinguer son chef dèv et foutre la merde dans l’équipe de dèv pour gagner des points chez le manager / chef de projet / patron de startup.

    Si le manager / chef de projet / patron de startup / etc… tombe dans le panneau, faut immédiatement changer de boite car elle est vouée à la faillite.

  • cocksucker

    Moi je peux faire un gosse en moins de 10 minutes alors le petit merdeux avec son Twitter il peut venir ;)

  • panda.dragon

    Une solution que j’ai retenue des méthodes agiles (y’a du bon, y’a du mauvais dans toute chose) c’est le poker planning. Ce n’est qu’une manière de formaliser les différents points de vue autour d’un sujet et cela devient intéressant – pour TOUT le monde – que lorsqu’il y a plusieurs personnes avec des expériences et des degrés de maturité différent. La différence entre les estimations qui peut apparaitre au cours d’un poker planning est toujours source de discussions et de transfers de connaissance et d’expérience. C’est là que l’on peut faire aussi un tri : il y a ceux qui écoutent et il y a ceux qui se ferment en considérant que les autres ne savent rien et ne comprennent rien à leur génie d’où les phrases “il n’y a qu’a”, “il suffit de”, etc

  • Sam Post author

    Lol, c’est exactement ça.

    Mais faut laisser sa chance au truc. D’ici un ou deux ans à essayer, ça peut déboucher sur une communauté et un projet sympas.

    Enfin si ils virent Google Firebase parce que là sinon ils sont baisés jusqu’à l’os.

  • Aphax

    Merci de rappeler ces quelques règles de bon sens… et pour cette chanson magnifique !

    • Sam Post author

      J’en ai envie mais j’ai pas la foi. C’est du boulot en plus. Ce qu’il me faudrait c’est un bon client, et qui poste tous les tweets sur mastodon également automatiquement.

  • Sam Post author

    1 mec en 1 we != 100 contributeurs sur plus d’un an

    https://github.com/tootsuite/mastodon/graphs/contributors

    Quand mastodon a commencé, ce n’était pas le 10eme de ce qu’il est maintenant.

    Et mastodon n’est toujours pas le 10eme de tweeter.

    Pas pour critiquer mastodon, qui je pense est un bon projet au succès mérité, mais c’est pas un guignol qui a codé ça en un WE.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.