Removing Noise or Introducing Bias? The Hidden Cost of MSR Filtering
Deze studie analyseert 1,57 miljoen GitHub-repositories om aan te tonen dat veelvoorkomende filtercriteria in Mining Software Repositories (MSR)-onderzoek significante onderhouds-, ecosysteem- en relationele biases introduceren die de verlatingspercentages van projecten en de relaties tussen variabelen vertekenen, waarbij wordt gepleit voor een verschuiving naar gestratificeerde steekproeftrekking en verfijnde ruisdetectie.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je het internet voor als een gigantische, chaotische bibliotheek waar iedereen een boekenkast kan bouwen en het een bibliotheek kan noemen. Dit is de wereld van Open Source Software (OSS), een enorme digitale speeltuin waar miljoenen mensen—van studenten die nieuwe programmeerideeën testen tot professionele ontwikkelaars die de volgende grote app bouwen—hun projecten opslaan. Onderzoekers, die als detectives zijn die mysteries proberen op te lossen over hoe software werkt, houden ervan om deze bibliotheek te bezoeken. Ze graven door de planken en kijken naar hoeveel mensen een project hebben "geliked" (stars), hoe vaak mensen de boeken hebben aangepast (commits), en hoeveel mensen hebben geholpen ze te schrijven. Deze aanwijzingen helpen hen de geheimen van software engineering te begrijpen. Maar hier is de crux: de bibliotheek is zo groot dat hij vol staat met lege dozen, dummy-modellen en half afgemaakte krabbels. Om de "echte" boeken te vinden, gooien onderzoekers meestal alles weg wat er niet populair of druk genoeg uitziet. Ze gebruiken regels zoals: "Als een project minder dan 10 stars heeft, is het gewoon ruis, dus gooien we het weg."
Maar wat als die regels de meest interessante verhalen weggooien? Wat als we, in onze wanhopige poging om de bibliotheek op te schonen, per ongeluk de realiteit verbergen dat de meeste boeken eigenlijk verlaten zijn, of dat we alleen de boeken lezen die geschreven zijn door dezelfde paar beroemde auteurs? Dit is de grote vraag die onderzoekers Mohit Kaushik en Jyoti Bawa stellen. Ze maken zich zorgen dat de filters die wetenschappers gebruiken om hun data "schoon" te maken, hun bevindingen juist "vies" kunnen maken door de ware, rommelige realiteit van hoe softwareprojecten werkelijk leven en sterven te verbergen.
De Grote Filter: De Data Schonen of de Waarheid Verbergen?
In deze studie besloten de auteurs een spel van "Wat als?" te spelen met een enorme berg data. Ze keken naar 1,57 miljoen softwarerepositories van een platform genaamd SEART. Zie deze dataset als een enorme emmer met gemengde LEGO-steentjes. Sommige zijn enorme, kleurrijke kastelen; andere zijn piepkleine, enkele rode steentjes; en veel zijn gewoon kapotte stukjes die nooit door iemand zijn afgemaakt.
Normaal gesproken kijken onderzoekers naar deze emmer en zeggen: "Oké, we willen alleen de grote, afgewerkte kastelen. Laten we alles weggooien met minder dan 10 stars (likes) of minder dan 10 commits (wijzigingen)." De auteurs testten wat er gebeurt als ze deze strikte regels toepassen, alsof ze het volume van een filter opendraaien totdat het heel hard wordt.
De Verborgen Kosten van "Populariteit"
Toen de onderzoekers een "populariteitsfilter" toepasten (kijken naar alleen projecten met meer stars), ontdekten ze iets verrassends. Terwijl ze de drempel voor stars verhoogden van 10 naar 1.000, werd het "gemiddelde" project in hun steekproef niet alleen iets beter; het werd 7 keer groter. De projecten werden ouder, hadden meer mensen die eraan werkten en hadden veel meer kans op een formele licentie (zoals een regelboek).
Maar hier komt de twist: door de populaire projecten na te jagen, verloren ze volledig het zicht op de realiteit. In hun oorspronkelijke, ongefilterde emmer was 73,42% van de projecten feitelijk inactief of "verlaten". Echter, naarmate ze filterden op populariteit, daalde dit aantal. Tegen de tijd dat ze alleen nog naar de superpopulaire projecten keken (1.000+ stars), liet de data zien dat slechts 50,65% verlaten was. De filter verwijderde niet alleen de ruis; het verborg het feit dat de meeste projecten daadwerkelijk falen of worden achtergelaten. Het is alsof je alleen de meest succesvolle mensen in een stad vraagt naar hun baan, en dan concludeert dat "werkloosheid laag is" omdat je nooit met de mensen hebt gesproken die hun baan zijn kwijtgeraakt.
De "Activiteit" Valstrik
De auteurs testten ook "activiteitsfilters", die alleen projecten behouden met een hoog aantal commits (wijzigingen). Dit was nog extremer. Toen ze filterden voor hoge activiteit, groeide de gemiddelde projectomvang met 18 keer! Deze filters veranderden ook de "persoonlijkheid" van de software. Zo waren projecten die de taal C++ gebruikten gebruikelijk in de groepen met een lagere drempel, maar verdwenen ze uit de top 5 toen de filter strenger werd. Ondertussen werden TypeScript en Go veel gebruikelijker in de gefilterde lijsten.
De studie suggereert dat deze filters niet neutraal zijn. Ze werken als een zeef die alleen specifieke soorten projecten doorlaat: oudere, enorme, goed gefinancierde infrastructuurprojecten. Ze drukken de kleinere, nieuwere of meer experimentele projecten naar buiten, zelfs als die kleinere projecten echt en actief zijn.
De Relatie-Racket
Misschien wel de meest speelse (en gevaarlijke) bevinding gaat over hoe deze filters de relaties tussen verschillende zaken verstoren. Stel je voor dat je probeert uit te zoeken of "hard werken" (commits) leidt tot "populair zijn" (stars). In de echte, rommelige wereld (de basisdata) zijn deze twee dingen slechts zwak met elkaar verbonden. Maar wanneer de onderzoekers hun filters toepasten, leek de verbinding plotseling supersterk.
Bijvoorbeeld, de link tussen "commits" en "projectgrootte" sprong van een matige 0,466 naar een zeer sterke 0,808 in de groep met de activiteitsfilter. De auteurs leggen uit dat dit niet komt doordat de projecten daadwerkelijk veranderden; het komt omdat de filter hen dwong er zo uit te zien. Door alleen de grote, drukke projecten te behouden, liet de filter het lijken alsof "grote projecten altijd veel commits hebben", terwijl de relatie in werkelijkheid veel complexer is. Het is alsof je alleen de langste basketbalspelers bestudeert en concludeert dat "lengte het enige is dat ertoe doet in sporten", waarbij je iedereen anders negeert.
Het Verdict: Gooi de Ruis Niet Zomaar Weg
De auteurs concluderen dat hoewel we onze data moeten opschonen, we niet zomaar willekeurige regels zoals "10 stars" of "500 commits" kunnen gebruiken zonder erbij na te denken. Deze regels zijn als een botte hamer: ze verbrijzelen de "ruis", maar ze verbrijzelen ook de waarheid. Ze creëren een vertekend beeld waarbij softwareprojecten succesvoller, ouder en uniformer lijken dan ze in werkelijkheid zijn.
In plaats van blind te filteren, suggereren de auteurs dat onderzoekers gestratificeerde steekproeven moeten gebruiken. Stel je voor dat je een schep uit de LEGO-emmer neemt die een eerlijke mix bevat van grote kastelen, kleine huisjes en kapotte stukjes, in plaats van alleen de grootste kastelen eruit te pikken. Ze dringen er ook op aan dat wetenschappers heroverwegen wat als "ruis" wordt beschouwd. Misschien is een project met nul stars niet gewoon een mislukt experiment; misschien is het een verborgen parel die gewoon nog niet ontdekt is.
Kortom, dit artikel waarschuwt ons dat we, in onze haast om de "perfecte" data te vinden, misschien een kaartenhuis bouwen dat er aan de buitenkant perfect uitziet, maar instort zodigere we de echte, rommelige wereld proberen te begrijpen. De auteurs zeggen niet dat we helemaal moeten stoppen met filteren, maar ze suggeren sterk dat we moeten stoppen met deze "one-size-fits-all" regels en careteriger moeten zijn over wat we weggooien.
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.