Twitter publiceert 'groot deel' van zijn broncode op GitHub

Twitter heeft op vrijdag 'een groot deel' van zijn broncode publiek beschikbaar gemaakt op GitHub. Onder de openbare code valt onder meer Twitters aanbevelingsalgoritme voor de For You-tijdlijn. De code voor de advertentieaanbevelingen ontbreekt.

Twitter schrijft in een blogpost dat het twee repository's op GitHub heeft gepubliceerd. De main repo en ml-repo bevatten de broncode voor 'veel onderdelen van Twitter'. Daaronder valt bijvoorbeeld het aanbevelingsalgoritme voor Twitters For You-pagina, waarover het bedrijf op vrijdag ook een technische blogpost publiceerde. Op die tijdlijn verschijnen aanbevolen tweets voor gebruikers, die niet per se gepubliceerd zijn door accounts die de gebruiker volgt.

Dat algoritme werkt door 'de beste tweets uit verschillende aanbevelingsbronnen' op te halen, meldt Twitter. Deze worden vervolgens gerangschikt met een machinelearningmodel. Tot slot worden heuristics en filters toegepast, zodat bijvoorbeeld tweets van geblokkeerde gebruikers of met nsfw-content desgewenst niet in de For You-pagina verschijnen. De exacte code van het algoritme is vanaf nu dus te vinden op GitHub.

Twitter heeft niet alle code achter het platform gepubliceerd. Het bedrijf zegt bepaalde onderdelen te hebben uitgesloten om de privacy en veiligheid van gebruikers te beschermen. Zo zijn geen details gedeeld over hoe het platform kindermisbruik en -manipulatie tegengaat. Ook de code achter het aanbevelingsalgoritme voor advertenties is niet gepubliceeerd. Twitter zegt ook dat het momenteel geen trainingsgegevens of modelgewichten met betrekking tot het Twitter-algoritme vrijgeeft. Eigenaar Elon Musk meldt op Twitter dat 'de rest [van de broncode] volgt'. Wanneer die delen precies openbaar worden gemaakt, is niet bekend.

Musk beloofde vorig jaar al dat de broncode van Twitter openbaar gemaakt zou worden nadat hij de overname van het platform afrondde. Dat deed hij nadat hij een poll hield op Twitter, waarin hij gebruikers vroeg of hij de broncode van het platform openbaar moest maken. Ongeveer 83 procent van de respondenten antwoordde met 'ja'. Musk zei eind februari dat de code binnen een week zou verschijnen, maar stelde dat later uit naar eind maart. De topman zegt dat Twitter eventuele problemen zal oplossen in het geval dat die worden ontdekt.

Twitter-tijdlijnalgoritme
De opbouw van het algoritme achter een Twitter-tijdlijn. Bron: Twitter

Door Daan van Monsjou

Nieuwsredacteur

31-03-2023 • 21:20

130

Submitter: WokeBroke

Lees meer

Reacties (130)

130
110
62
1
0
19
Wijzig sortering
Nu live een Q&A met Elon Musk op Twitter Spaces over het algoritme en de source code (kunt vragen stellen).

Enkele citaten:
(paraphrasing) "The goal with open sourcing the code is to generate trust through transparency."
"What will be open source today will be pretty embarrassing...lots of mistakes will be found, and some people will try to exploit the algorithm. We will identify and fix them."
"By open-sourcing it, the whole community gets to look at it and make it better. It will be the most trustworthy, the most robust, the best outcome..."
(paraphrasing) "We are aiming not for most users active or maximising user-minutes, but we try to maximise 'cumulative unregretted user-minutes'. We don't want it to be short dopamine rushes, but maximising truth".
edit: inmiddels voorbij - maar Q&A is terug te luisteren

[Reactie gewijzigd door Gulpen op 22 juli 2024 13:42]

Dit zit dus daadwerkelijk in de broncode.
:|
Dit zit in *deze* code. We hebben geen commit history, dus dat zegt niets over *wanneer* het toegevoegd is. (als dit er daadwerkelijk in productie in zit durf ik te wedden dat "author_is_elon" post overname is)

Edit:
https://github.com/twitte...FeatureHydrator.scala#L65

En wie is "vits"?

[Reactie gewijzigd door Shamalamadindon op 22 juli 2024 13:42]

En wie is "vits"?
VITs: Very Important Tweeters
Very Important Tweakers ;)
Ik moest het even opzoeken, maar blijkbaar bestaan er Very Important Tweeters
VITs, or Very Important Tweeters, are individuals who have a significant following on Twitter and have the ability to influence conversations and trends on the platform. VITs can include celebrities, athletes, journalists, musicians, and other prominent figures who engage with their fans through Twitter. Entertainment publishers often work with VITs through editorial content, events, campaigns, or collaborations to promote their products or generate buzz and conversation. VITs can leverage Twitter's features such as conversation settings and Voice Tweets to authentically connect with their audience, share joy and experiences, own the narrative, and add new dimensions of personality and intimacy to their messages.
We kijken niet naar de broncode van pre-Musk. We kijken wat het huidige management de wereld wil laten zien. Aangezien de woordvoerder een politieke agenda lijkt te hebben in zijn tweets, is het niet uit te sluiten dat dat nu ook gebeurt. Waarbij werkelijkheid en propaganda niet te onderscheiden zijn…
En vlak daaronder ‘author_is_republican’ en ‘author_is_democrat’.

Zeer vreemd… :|
In de Q&A (waar ik hierboven naar linkte) werd dit ook ingebracht. De verklaring van Twitter was dat het puur is ingebracht om statistisch te kijken of de ene of andere groep (republikeins of democraat) meer bevoordeeld wordt dan de ander. Waarom Elon Musk zelf een categorie was was onduidelijk - aangegeven werd dat deze code hoe dan ook geheel verwijderd zou worden.
https://github.com/twitte...FeatureHydrator.scala#L83
/**
* These author ID lists are used purely for metrics collection. We track how often we are
* serving Tweets from these authors and how often their tweets are being impressed by users.
* This helps us validate in our A/B experimentation platform that we do not ship changes
* that negatively impacts one group over others.
*/
Zolang je het model en trainingsgegevens niet kan inkijken kun je er eigenlijk weinig van zeggen. Het is goed mogelijk dat labels zoals deze aan het model aangeven welke dingen meer of minder gefilterd worden (dus als label == elon_musk, filter = 0%)
Kan ook gewoon testcode zijn natuurlijk. Ofwel bedoelt om te laten zien dat het werkt (soort prototype) ofwel om hun E2E tests ermee te laten werken.

[Reactie gewijzigd door Martinspire op 22 juli 2024 13:42]

Staat er al niet meer tussen zo te zien.
Force push op de main branch is niet heel erg fijn/netjes
https://github.com/twitte...9444d75ed04b3625a0a645eb9

[Reactie gewijzigd door aaahaaap op 22 juli 2024 13:42]

Dat is erg afhankelijk hoe ze het verder ingericht hebben. Het zou mij niks verbazen als de volledige Git repo nog intern gehost is, en de GitHub repo een mirror van hun interne main branch is, zonder history van hun interne branches

Je ziet bijvoorbeeld ook dat er verder geen tags gepubliceerd zijn en de history ook ontbreekt. Op deze manier scherm je ook individuele interne developers af voor potentiële "embarrassing commits"; nergens voor nodig dat de hele wereld retrospectief kan zien wie/wanneer welke fout gemaakt heeft.

Ook zet je je release procedures niet heel snel om, van alles releasen vanuit je interne repo's, naar deels gebruiken van de publieke repositories.

Als dit waar is , zou het mij niks verbazen als PRs vanuit GitHub semi-handmatig weer terug gestort naar hun interne Git repositories worden, en ze de main terug force-pushen naar GitHub - de meest makkelijke manier om het altijd in sync te houden op de manier waar je intern de controle houdt.

Natuurlijk is dit allemaal speculatie. Ik heb de Q&A niet bekeken, maar ook het decentrale model van Git kan op erg creatieve manieren gebruikt worden; helaas zelf ook ervaring mee bij bedrijven...
Zal wel vergelijkbaar zijn met "has_toxicity_score_above_threshold" :P
Hoeft niets te betekenen. Zal wel een debug variabele zijn rond die soap dat hij bij iedereen in de for you kwam omdat ze iets probeerden op te lossen.
has_ancestor_authored_by_viewer
Is het niet gepubliceerd als 1 april grap?
Niet heel gek om te denken dat een CEO zichzelf op het platform extra weging geeft, helemaal in de tijd van overname.
Ik denk dat iedereen hier die software maakt of heeft gemaakt ook wel eens persoonlijke dingetjes heeft ingebouwd in z'n code. Ik heb het regelmatig gedaan om specifieke details te.kunnen monitoren waar geen requirements voor waren opgesteld. Maar die toch handig konden zijn, m.n. in pilots.
Voor de zekerheid! mocht je vergeten van wie ook alweer de author was. :P
En wat is het nut hiervan? Dat stukje mis ik.
Ik vind je antwoord niet offtopic. Ik denk dat er zeker gehoopt wordt op waardevolle PRs, die de SW verbeteren. Dat zie je nml ook gebeuren bij andere grote organisaties die de sources open hebben gemaakt (bijv Microsoft).
Gratis publiciteit.
Klopt, maar het bedrijf heeft nog steeds wel aandelen en die hebben een waarde. Stel Elon verkoopt Twitter morgen, dan kun je nog steeds zeggen dat als iemand X biedt de aandeelwaarde Y is.
Transparantie? Feedback ontvangen of nieuwe ideeën/inzichten? Talent aantrekken? Imago verbeteren?
Gratis reclame. Dat is de grote kracht van Musk. Vrijwel alles dat hij doet levert hem vrachten gratis publiciteit op. 'onze brilliante engineer zal er wel een diepere bedoeling mee hebben'. Zonder zijn superlatieven 'volgend jaar een volledig zelfrijdende Tesla' had het merk het mogelijk niet gered.
De volledig zelfrijdende Tesla last nog minstens tien jaar op zich wachten, maar het imago van Musk van de brillante engineer die de zelfrijdende auto heeft uitgevonden blijft overeind.
maar het imago van Musk van de brillante engineer die de zelfrijdende auto heeft uitgevonden blijft overeind
Vooropgesteld dat ik nooit die visie had, komen er heel veel mensen van terug de laatste jaren en zien we dat Musk niet meer is dan een schreeuwer.
Anoniem: 1322 @Marve791 april 2023 10:58
Musk wil van Twitter zijn ’project X’ maken. Een platform waarop alles kan draaien zoals bijvoorbeeld identiteit, betalingen en andere diensten. Dat is wat je ziet in Azië met WeChat. Hij wil de westerse tegenhanger bouwen.

De enige manier om dat te bereiken is door transparant te werken en dus ook het platform (en belangrijker de de algoritmes) als open-source vrij te geven. Dat is open-source als in voor iedereen leesbaar, niet zozeer bewerkbaar.

Dat is de verklaring van Musk voor zover ik deze meekrijg. Doe ermee wat je wilt, deze reactie zal wel weggemoffeld worden gezien alles Musk alleen maar haat krijgt hier.
Het aandeel Twitter nog verder laten kelderen I guess
Weet niet of je reactie serieus was maar Twitter is niet meer beursgenoteerd sinds de overname.
Dat betekent niet dat er geen aandelen meer zijn. De door de markt gegenereerde prijs daarvan is alleen niet meer zo makkelijk te zien.
Haha, als iets closed source is is het uit den boze voor tweakers, nu publiceert een groot bedrijf z'n code en is het weer onzin. Het lijkt wel of je teleurgesteld bent dat een groot bedrijf doet wat hier altijd gevraagd wordt. Het is natuurlijk veel makkelijker om tegen een griot bedrijf te kunnen zijn omdat ze alles gedloten houden. Vergelijkbare reacties zagen we ook toen Microsoft opener werd.
Huh? Ik vroeg enkel naar de reden meer niet. Die wordt niet vernoemd in het artikel.
Als je software open source maakt wil dat niet zeggen dat de code ineens goed en mooi is. Het wil alleen zeggen dat je kunt controleren of het goed en mooi is. In dit geval was dat niet zo!
Genoeg coderaars die vrijwillig een dag of een week willen uitpluizen.
Anoniem: 718943 @lighting_31 maart 2023 22:29
Nou, ik heb de repos uitgechecked en even doorgenomen, maar dit is geen codebase waar ik met plezier in ga zitten wroeten.
Heb je zelf naar de code gekeken? en wat vind je ervan?
wat ik tot zover lees wilt vrijwel geen enkel persoon met ook maar iets van programeerkennis eraan zitten. dus ja, hij/zij/het is een maatstaaf.
zon beetje alle comments onder elk artikel over dit onderwerp waar progammeurs hun "ongerief" uiten over de kwaliteit van de twitter code.
en jij doet aan doorgedreven postmodernistisch gezwets.

Een programmeur is trouwens best een goede bron als het over preferenties van programmeurs gaat.
Een bron die niet bewezen representatief is voor alle programmeurs, maar dat betekend niet dat deze bron niet het algemeen sentiment kan vertalen dat leeft bij programmeurs.

Meer zelfs, als die persoon zelf programmeur is, en spreekt over zijn preferenties als programmeur, dan spreken we hier van een directe- of eerste bron.

mijn bron: studies communicatiewetenschap (want ik voel je komen)

[Reactie gewijzigd door IskaRiot op 22 juli 2024 13:42]

De stijlvorm hyperbool/overdrijving zegt je allicht niets he?

Een bron is een bron, of deze nou de waarheid of leugens verkoopt. Een mening van een programmeur is een bron, alsook de comment secties onder artikels over twitter.

Wat jij vraagt is bewijs dat er geen enkele programmeur te wereld aan wil werken uit eigen interesse.

En dan zijn we weer aangekomen bij het gebruik van hyperbolen, wat een bron perfect mag doen overigens. Het is aan de journalist/lezer/toehoorder/... om hier een oordeel qua betrouwbaarheid aan toe te kennen.
Heb je zelf al gekeken naar de code en wat vind je er van?
Wat totaal ontbreekt is: de reden waarom.
Wel weer goed dat er niet gespeculeerd wordt.

Zelf zou ik dan denken dat dit hun legacy backend is en ze nu iets beters hebben wat dit heeft vervangen.
Het zal de OSS community wel enkele dagen kosten om dit te forken en georganiseerd in een community dit aan de praat te krijgen door trainingdata en misschien zelfs weights toe te voegen. To be continued lijkt mij.
Elon Musk (Twitter):
Our “algorithm” is overly complex & not fully understood internally. People will discover many silly things , but we’ll patch issues as soon as they’re found!

We’re developing a simplified approach to serve more compelling tweets, but it’s still a work in progress. That’ll also be open source.

Providing code transparency will be incredibly embarrassing at first, but it should lead to rapid improvement in recommendation quality. Most importantly, we hope to earn your trust.
"not fully understood internally"

Gek ook als je iedereen ontslaat 8)7
Blijkbaar heb je nooit zelf code gemaakt, ik weet zelf niet wat ik gisteren geschreven heb. Daarom dat de leesbaarheid van je code, en daarna de documentatie van de code heel belangrijk is.
Wat dat betreft zit hij met open source wel in de goede richting. Het moet alleen niet net zo "open" worden als Firefox of Xorg. Dan heeft het publiek er niet veel aan.
Waarom niet? Met de huidige staat van de politiek en invloed van overheidsdiensten in private bedrijven is een neutraal platform dat iedereen kan inkijken wel degelijk nodig, vooral vanwege de invloed overheden en activisten in de laatste 10 jaar hebben gehad over wat we wel en niet mogen zeggen online door deze gesloten platformen.
Totaal modulair en geen banden met hardware-, software- of reclame-industrie. Een 500MB browser die alleen maar modificeerbaar is via een extensie-systeem en voorzien van een overbodig advertising cookie framework is niet het meest ideaal. Zoiets hoort uit onafhankelijke onderdelen te bestaan en een concrete configuratie te bieden.

[Reactie gewijzigd door blorf op 22 juli 2024 13:42]

Het ergste is nog als je iets programmeert en het je bekend voorkomt. En je vlak voordat je het af hebt tot de conclusie komt dat je het een paar maanden geleden ook al had gemaakt 8)7

Ik werk aan teveel verschillende projecten en ik word oud.
"Blijkbaar heb je nooit zelf code gemaakt"
Wat is dit nou weer voor een reactie. Doe eens aardig.
Nee dat is native aan devops,

Als 30 man in de code changes aan brengt ziet niemand de grote lijnen nog
Aka DevOps done wrong.
Dat heeft niets met DevOps te maken. DevOps is niets anders dan het inzicht dat doorontwikkeling en onderhoud van software applicaties elkaar niet in de weg zou moeten zitten, en dat je je organisatie en tooling moet inrichten op het kunnen verenigen en behartigen van belangen van beide.
Precies zeggen we hetzelfde.

Ops helpt dev dus meerdere mensen in de zelfde code
Nee, we zeggen niet hetzelfde. DevOps wil niet zeggen dat meer mensen in dezelfde code zitten. Het wil zeggen dat dezelfde mensen hun werk beter op elkaar afstemmen. DevOps helpt dus voorkomen dat mensen de grote lijnen niet zien.
Als ik jou nu vraag wat jij 3 jaar geleden exact hebt opgeschreven weet jij het dan direct? En als je de documentatie.hebt opgezocht weet je ook direct weer alle ins en outs?
Geen zorgen. Volgend jaar bestaat die code toch niet meer ;)
De nieuwe ontwikkelaars het hebben het dan herschreven vanwege hun NIH complex.
Het belangrijkste doel is dit: to achieve 'trust through transparency'.
Het kan toch niet zijn dat iemand deze grap serieus gelooft?
Zoals de open source code van Linux een grap is?
Linux en Twitter vergelijken is de grap.
Vertel? Heb ik wat gemist?
Musk hoopt op 2 dingen:
- Goede publiciteit omdat hij transparantie geeft.
- Gratis software verbeteringen, die hij nodig heeft omdat hij een groot deel van het personeel heeft ontslagen.
En wat is daar zo negatief aan?
Eerst een dijk volk ontslaan, voor enkel zijn gewin, en nu rekenen op gratis manpower om de negatieve impact, voor zijn gewin, uit te middelen.
Vertel eens, hoeveel winst maakt Twitter op dit moment? En hoeveel is Twitter in waarde gestegen sinds de overname?

Een paar "gratis" commits gaan Elon niet redden van de gigantische verliezen die hij maakt. Van enig gewin is voorlopig geen sprake.
Er staan hier hele volksstammen te schreeuwen om open source software. Patiëntendossier enzo, nu doet en bedrijf het eens, is het nog niet goed 8)7
Anoniem: 1849202 @brecht_vb1 april 2023 01:39
Ik vind het persoonlijk wel slim deze actie, de community is uiteindelijk dat Twitter gebruikt, als zij dan ook inbreng kunnen geven op de manier van recommendations die zij ontvangen in de tijdlijn en op andere onderdelen van de website ook feedback kunnen geven, kan ik enkel stellen dat dit positief is.

Daarnaast is het ook wel interessant/leuk om te zien hoe dit in elkaar steekt.
Niet alleen het broncode gepubliceerd, maar ook onder open source licenties...
GNU Affero General Public License v3.0 en een klein gedeelte onder BSD 3-Clause License.

Nu ben ik benieuwd wanneer iemand zijn eigen open source Twitter bouwd op basis van deze algoritme...
AGPL mag je niet hosten, dus dan zou je al een clean room remake moeten maken. Niet onmogelijk, maar op dat punt kan je al beter gewoon je eigen ding maken misschien?
AGPL mag je niet hosten, dus dan zou je al een clean room remake moeten maken.
Waar heb je het over?

Als ik dit lees dan begrijp ik jou statement niet:
https://www.gnu.org/licenses/agpl-3.0.en.html
https://github.com/twitter/the-algorithm/blob/main/COPYING
Sorry, ik bedoelde, je mag het niet op een server hosten zonder al je aanpassingen openbaar te maken.

Een beetje een GPL licentie voor server-side software.
Dat mag misschien niet, maar hoe kan een andere partij zien welke broncode jij draait?

[Reactie gewijzigd door veltnet op 22 juli 2024 13:42]

Er zijn zat manieren om dat te achterhalen bij zo'n ingewikkeld stuk software.
Anoniem: 718943 31 maart 2023 21:56
Wat een bende...

Edit:
tja, ik kan omlaag gemod worden, maar ik herken een troep repo als ik hem zie; Onleesbare lappen code zonder structuur, houtje-touwtje constructies, 0 test coverage (maar misschien dat dat niet in dit deel zit, maar ja, ga er maar aan zitten als je niet weet wat de verwachtte output is).

En dan nog niet te spreken over de issues en de PR's die er nu al zijn, een en al vervuiling.

[Reactie gewijzigd door Anoniem: 718943 op 22 juli 2024 13:42]

Tjoh dat had Elon al gezegd he dat het embarrassing zou zijn.
Ik denk dat je gemod werd omdat je initiële comment niks toevoegde, terwijl je edit al wat meer inzicht geeft in je standpunt.
Wel interessant voor de mensen die zich met deze tak van sport bezig houden denk ik om eens te zien hoe er binnen een groot bedrijf code wordt geschreven.
Ik verwacht dat delen van deze code enorm legacy is uit een periode toen het bedrijf nog geen groot bedrijf was...

Wat ik interessanter zou vinden is de hele historie erbij, dus vanaf dag #1 tot nu. Wellicht dat men dan ook beter de code zou begrijpen (en waar het mis is gegaan).
Je kunt er ook je eigen PRs op posten. En de PRs die er nu al zijn hebben allemaal de verwachtte bedenkelijke kwaliteit...
Ik denk dat zal wel meevallen....

How wrong can someone be.

Holy moly, dit gaat echt totaal niet werken voor ze.
Ze zijn al met veel en veel minder mensen, no way dat je die zooi kan opruimen zonder een dedicated team te hebben.
Anoniem: 454358 @Hvdbnl31 maart 2023 21:45
Je doet alsof ,e nu met drie man ofzo zijn, er werken nog steeds bijna tweeduizend man, dat is nog steeds een klein dorp.
Maar hoeveel van deze 2.000 zijn developer op een dusdanig niveau dat ze dit kunnen en dan ook nog beschikbaar om dit te doen.

Code mag dan een rommeltje zijn, het zal voorlopig nog wel een rommeltje blijven (en dan is er altijd nog de vraag, in hoeverre wil een bedrijf investeren om de code op te ruimen?)
Misschien kunnen chatgpt gebruiken :+
2000 is echt niks.

Die moeten operations doen, bugfixes, nieuwe dingen maken

En dan ook dit ordenen.

Oh ja vergeet niet dat ze geen 24/7werken en ook nog eens vrij zijn.

Nee dit gaat nooit goedkomen.
Thanks @AJM94
ik zat steeds met Public Repo in hoofd.
Net wakker
Wel echt heel erg laag niveau die PRs, niet heel verrassend gezien veel van het niveau op twitter I guess

[Reactie gewijzigd door aaahaaap op 22 juli 2024 13:42]

Hier een PR die de politieke bias wil tegengaan: link
Altijd leuk om te weten uit welke programmeertalen de codebase is opgebouwd:
Scala 53.8%
Java 29.7%
Starlark 6.3%
Python 4.7%
C++ 2.4%
Rust 1.5%
Other 1.6%
Scala is een taal die op de Java Virtual Machine draait. Zo'n 83% is dus Java, of een Java afgeleide.
(Scala is wel wat geadvanceerder dan Java, en misschien wel één van de meest geadvanceerde programmeertalen.)

11 % is Python (Starlark is een Python afgeleide).
Ik had wel nog wat webtalen verwacht eigenlijk. Groot deel moet toch op 1 of andere manier wel javascript worden.
Da's logisch; de backend is doorgaans waar het gros van je code zit, dus als je alles (en als je ziet hoe disjointed en retired deze codebase is, dan betwijfel ik dat dit alles / recent is) bekijkt op 1 hoop, valt de frontend ratio in het niet.

Als je bijv. inzoomt op (retired) https://github.com/twitter/interactive, zie je dat die voornamelijk HTML/JS/CSS is. Ook zie ik dat ze hier en daar SSR & Mustache gebruiken (en Twitter is volgens Mustache zelf de grootste gebruiker van Mustache.java).

Maar voornamelijk: disjointed, retired: deze vrijgegeven code oogt incompleet en outdated.
Mja al zie ik ook nog wel dat het misschien gewoon een uit de hand gelopen prototype was welke ooit nog eens op de schop moest maar waar geen tijd of geen geld aan uitgegeven kon worden.
Starlark deel is waarschijnlijk van de Bazel build files (https://bazel.build/rules/language). Meta in de repo, Je zou ook Make mee kunnen rekenen als LoC met veel Makefiles, mja.

Op dit item kan niet meer gereageerd worden.