← Nieuwste papers
💻 computer science

Deforking the World of Code: A Project-Provenance Map that Recovers Cross-Forge Fork Families that Platform Graphs Cannot See

Dit artikel introduceert een gecureerde "deforking"-kaart voor de World of Code die cross-forge projectfamilies reconstrueert door gedeelde git-historieën samen te voegen tot verenigde clusters, waardoor populariteitsinflatie wordt gecorrigeerd en duizenden fork-relaties worden onthuld—inclusief multi-forge families en niet-GitHub wortels—die onzichtbaar zijn voor platformspecifieke grafieken.

Oorspronkelijke auteurs: Audris Mockus

Gepubliceerd 2026-06-30
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Audris Mockus

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je de hele geschiedenis van softwareontwikkeling voor als een enorme, chaotische bibliotheek. In deze bibliotheek bevinden zich miljoenen boeken (repositories). Maar hier komt de adder onder het gras: veel boeken zijn slechts fotokopieën van hetzelfde originele verhaal.

In de wereld van coderen wordt dit forking genoemd. Een ontwikkelaar neemt een bestaand project, maakt er een kopie van en start zijn eigen versie. Ze passen misschien hier en daar een paar regels aan, maar de kern van de geschiedenis is identiek.

Het probleem dat het artikel aanpakt, is dat als je probeert te tellen hoe "populair" een stuk code is door simpelweg elk boek in de bibliotheek te tellen, je een enorm opgeblazen aantal krijgt. Als één populair verhaal 10.000 keer is gekopieerd, lijkt het alsof er 10.000 verschillende verhalen worden gelezen, terwijl het in werkelijkheid slechts één verhaal is dat op 10.000 verschillende plaatsen wordt gelezen.

Dit artikel introduceert een nieuwe kaart (een hulpmiddel) die deze bibliotheek opruimt. Het groepeert alle fotokopieën weer bij hun oorspronkelijke bron, zodat onderzoekers het echte verhaal kunnen zien, en niet de ruis van de kopieën.

Zo hebben ze het gedaan, met behulp van eenvoudige analogieën:

1. De "Gedeelde Pagina" Detective

De auteurs realiseerden zich dat je in de digitale wereld de geschiedenis niet gemakkelijk kunt vervalsen. Als twee boeken exact dezelfde pagina delen (een specifieke "commit" of wijziging in de code), moeten ze aan elkaar verwant zijn.

  • De Oude Manier: Ze probeerden elk boek te koppelen dat een pagina deelde. Maar dit was alsof zeggen: "Als twee boeken beide een pagina hebben met 'Copyright 2024', dan zijn ze hetzelfde verhaal." Dat is fout! Veel ongerelateerde boeken hebben dezelfde copyrightpagina. Dit zorgde ervoor dat de kaart volledig verschillende verhalen aan elkaar plakte tot één grote, rommelige brij.
  • De Nieuwe Manier: Ze bouwden een slimmere kaart. Ze keken naar veel gedeelde pagina's, niet slechts één. Als twee boeken een heel hoofdstuk delen, zijn ze zeker aan elkaar verwant.

2. De "Groottebeperking" Filter (De Cap)

Zelfs met de slimmere kaart waren sommige enorme, saaie pagina's (zoals standaard licentieovereenkomsten of lege starter-templates) nog steeds bezig als bruggen die ongerelateerde verhalen met elkaar verbonden.

  • De Oplossing: De auteurs voegden een groottebeperking toe aan deze bruggen. Als een gedeelde pagina in meer dan 250 boeken voorkomt, gaan ze ervan uit dat het een generieke template is (zoals een standaard "Algemene Voorwaarden"-pagina) en negeren ze deze.
  • Het Resultaat: Dit brak de grote, rommelige brijen uit elkaar. Plotseling toonde de kaart duidelijke families van verhalen in plaats van één grote, verwarrende super-cluster. Het brak geen echte families af; het verwijderde alleen de lijm die ongerelateerde dingen aan elkaar plakte.

3. De "Echte Geschiedenis" Check

De auteurs maakten zich zorgen dat ze door deze grote brijen door te snijden, per ongeluk een echt, complex verhaal hadden doorgehakt dat van nature uit veel delen bestond (zoals een verhaal dat in veel talen is vertaald en daarna weer is samengevoegd).

  • De Test: Ze keken naar de grootste resterende groep op hun kaart. Ze ontdekten dat dit geen fout was; het was een echt, complex verhaal waarbij één groot project daadwerkelijk delen van andere beroemde projecten had geabsorbeerd (zoals een groot besturingssysteem dat code van een webbrowser incorporeerde).
  • De Beslissing: Omdat deze "residuele" groep bestond uit echte, diepe geschiedenis en niet uit goedkope lijm, besloten ze niet verder te snijden. Ze lieten het intact omdat het een ware, complexe relatie in de softwarewereld vertegenwoordigt.

4. Controleren tegen de "Officiële Lijst"

Om er zeker van te zijn dat hun kaart accuraat was, vergeleken ze deze met de officiële "Fork List" van GitHub (een lijst waar gebruikers handmatig op een "Fork"-knop klikken).

  • De Match: Wanneer ze naar projecten keken die zowel op hun kaart als op de lijst van GitHub stonden, kwamen ze in 99% van de gevallen overeen.
  • De Verrassing: Hun kaart vond dingen die de lijst van GitHub miste!
    • Cross-Forge Families: Ze vonden families van projecten die op GitHub begonnen maar werden gekopieerd naar GitLab, Bitbitket en andere sites. De lijst van GitHub ziet alleen de GitHub-kant; deze kaart ziet de hele familieboom over het hele internet.
    • Detached Forks: Ze vonden projecten die als kopieën begonnen maar daarna hun geschiedenis volledig hadden herschreven, waardoor ze niet langer verbonden zijn met het origineel. De kaart identificeerde deze correct als aparte entiteiten, terwijl de officiële lijst misschien nog steeds denkt dat ze verbonden zijn.

5. Waarom dit ertoe doet

Voordat deze kaart bestond, als je wilde weten hoeveel verschillende projecten een enkele programmeur heeft gewerkt, kreeg je misschien een vals aantal zoals "5.000 projecten", simpelweg omdat diegene aan één populair project heeft gewerkt dat 5.000 kopieën heeft.

  • De Correctie: Deze kaart herstelt dat. Het vertelt je dat de programmeur eigenlijk aan 5 verschillende projecten heeft gewerkt, en niet aan 5.000.
  • De Uitkomst: Het biedt een schoon, accuraat beeld van de softwarewereld, waarbij de originele verhalen worden gescheiden van de fotokopieën, en zelfs projecten opspoort die over verschillende websites heen reiken.

Kortom: De auteurs hebben een hulpmiddel gebouwd dat het rommelige web van gekopieerde code ontwarrt. Ze gebruikten een "groottebeperking" om te voorkomen dat ongerelateerde projecten aan elkaar bleven plakken, verifieerden hun werk tegen officiële registers, en ontdekten dat de softwarewereld nog veel meer verbonden is over verschillende websites dan ze voorheen wisten. Ze hebben deze kaart vrijgegeven voor iedereen om te gebruiken, om ervoor te zorgen dat toekomstige studies van de softwaregeschiedenis niet worden misleid door de enorme hoeveelheid kopieën.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →