Garbage In, Garbage Out

Hvor meget programkildetekst er der egentlig involveret i en FireFox browser ?

Jeg tyer med vilje til en meget ulden formulering med ordet "involveret" for alene grænsedragningen af hvad der skal tælles er der skrevet hele bøger om[1].

Men vi er nødt til at starte et sted, så jeg tog en helt frisk FreeBSD-Current installation og lavede en "make patch" i alle de 288 ports som "make missing" siger www/firefox manglede.

Nogen tid senere er det en smal sag at se hvad der så er dukket op på maskinen: 1047884 filer.

Derefter tog jeg de filnavn-suffix jeg umiddelbart genkendte som kildetekster og optalte hvor mange linier der var af den type filer:

    .suf     files     lines  
    ------------------------  
    c       130235  74179467  
    h       107991  29882215  
    js       76692   8403700  
    cpp      54493  20242024  
    rs       42929   9240275  
    ri       29173    130275  
    py       17744   4108043  
    s        16447   4699134  
    xht      14569    571662  
    rb        9939   1527856  
    sh        6763   1960152  
    cc        6247   2832713  
    m4        5610   2188662  
    pl        4047   2305113  
    S         3981   1345954  
    java      1961    484445  
    tcl       1509    538610  
    hpp       1163    191427  
    cxx       1007    372144  
    hh         286    132170  
    sed        126      2678  
    awk        107     24428  
    bash        51      2613  
    hxx         25      3381  
    ------------------------  
    Total   533095 165369141  
    ========================

(De resterende 471860 filer er dokumentation, makefiles, test-cases osv. glem dem.)

Summen er naturligvis dybt problematisk på næsten alle tænkelige metoder, vi er næppe indenfor ±50% land her.

Til den ene side mangler hele det FreeBSD system som FireFox i mit tilfælde kører på (+ ca. 10%) og den X-server med "DRM" kode der laver det tunge grafiske arbejde (+ who knows?)

På den anden side vil man utvivlsomt hurtigt og sikkert kunne dømme en masse af filerne ude med gode og sunde argumenter.

Da de stabelafløb hangarskibet CVN-75, "Harry S. Truman" udbasunerede skibsværftets PR-afdeling at der var "over en million forskellige dele i skibet", det tal gravede jeg lidt i og i bund og grund holder det[2].

Men hangarskibe er seriebyggeri, CVN 75 var nominelt magen til de ni andre i "Nimitz-klassen", så selv inden for den træskolængde vi arbejder med her er FireFox formodentlig ti gange mere komplex end alle USAs hangarskibe tilsammen.

Uanset hvilken stor ingeniørbedrift jeg sammenligner med, blegner den ved sammenligning med FireFox.

CERN's LHC, ITER, Rumfærgen, Apollo, Den Trans-iranske Jernbane, Hoover Dam, Manhattan-Projektet, eller AT&T's (planlagte) WT4 mikrobølge rør tværs over USA - ingen af dem er indenfor en størrelsesorden af FireFox i komplexitet.

»Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher.«
(Antoine de Saint Exupéry)

/phk

PS: Hvis FireFox koden er af typisk kvalitet, er der er fejl for ca. hver 1000 linier kode[3].

[1] Men bare rolig: De er allesammen skrevet før 1990, så der er ingen fare for at nogen læser dem.

[2] AIrbus A380 er blevet tilsvarende udbasuneret som bestående af "over 4 mio individuelle dele", men rigtig mange af dem er helt identiske skruer, plastic-clips osv.

[3] Men jeg er i godt humør i dag, så I behøver kun finde halvtrestusinde.

Kommentarer (20)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Jesper S. Møller

Det er kun små 10 mio linjer, men du har vist talt Rust koden dobbelt?

Og ja, det er vildt - men en meget stor del af det handler om at få god performance. Det ville være en sund øvelse at lave den enkleste sikre, moderne browser.

P.S. Det er lille "f" i midten, Firefox.

  • 5
  • 0
#9 Ditlev Petersen

Et eller andet sted læste jeg for lang tid siden det bedrøvede udsagn, at hvis arkitekter byggede huse, ligesom programmører skrev programmer, ville hele civilisationen ikke overleve det første møde med en spætte.

Foreløbig har vi overlevet mødet med folk værre end spætter. Men jeg er da godt nok bekymret.

Også for længe siden blev det sagt (af sælgere), at hvis biler havde udviklet sig som computere, så ville en Folkevogn kunne være i en tændstikæske, kunne transportere 100 mennesker og køre 15.000 km på en liter benzin. Formuleringen varierede noget. Måske skulle man sige, at hvis flyvemaskinen havde udviklet sig som computerne, så ville den besidde enorm motorkraft. Men en kanalflyvning ville være en meget vovelig affære.

Hvad er det egentlig, der gør, at det ikke er gået værre? Venter det hele bare på den rigtige diabolske person, hackernes Fu Manchu? Eller falder det hele sammen af sig selv under vægten af uigennemskuelige fejlrettelser og forbedringer?

  • 8
  • 0
#15 Lasse Mølgaard

Godt spørgsmål... jeg tænker nej! Vi har bare ikke hørt om det (hele) endnu.

Var vi ikke derhen ad, da en udvikler fjerne hans bidrag fra NPM?

Ellers kan vi jo altid kigge i retning imod OpenSSL biblioteket, som har også haft nogle ret kritiske fejl.

Jeg gætter på at PHK stadigvæk vil gerne være fri for det bibliotek?

Hans artikel på ACM er i hvert fald værd at genlæse.

  • 0
  • 0
#16 Ole Kaas

Også for længe siden blev det sagt (af sælgere), at hvis biler havde udviklet sig som computere, så ville en Folkevogn kunne være i en tændstikæske, kunne transportere 100 mennesker og køre 15.000 km på en liter benzin. Formuleringen varierede noget. Måske skulle man sige, at hvis flyvemaskinen havde udviklet sig som computerne, så ville den besidde enorm motorkraft. Men en kanalflyvning ville være en meget vovelig affære.

Det var vist Bill Gates der fik kastet den første (dokumenterede) sten i dén fejde tilbage i '97:

http://web.archive.org/web/20090114203618/http://www.microsoft.com/press...

Han sammenlignede også med prisen på morgenmadsprodukter. Og så kan man jo fundere over om de ultra billige havregryn ville fryse eller eksplodere hvis de serveres i en ikke kompatibel skål - eller bliver blå og giftige (BSOD) hvis der drysses brunt rørsukker på istedet for hvidt roesukker.

  • 0
  • 1
#18 Hans Henrik Happe

Forestil Jer at arkitekter skulle designe en bygning der konstant ændrede form, var multidimentionel, og skulle overholde regler for at være rigtig... Tror ikke arkitekter kunne klare det problem. I dag har de også ingeniører til det komplekse,. Så laver de i det mindste ikke ulykker, mens de drømmer om at være kunstnere uden sans for funktionalitet og proportioner.

Er som søn af arkitekter fra den gamle skole lidt farvet, men jeg har mødt mange IT folk som får ticks når det gælder byggebranchen generelt. Tror det skyldes at IT folk er vandt til at håndtere højere kompleksitet.

  • 1
  • 0
#19 Sune Marcher

Har ud en idé om hvor stor en procentdel af source-filerne der er autogenererede? Det ville ikke undre mig hvis der er forskellige parsers eller OS-interfaces der er autogenererede, så de ikke følger standard "bugs per linje" metrics.

Men det er godt nok noget af en omgang, uanset!

  • 2
  • 0
#20 Chris Bagge

Og hvornår ser vi mon at nogen begynder at skære produkterne ned til det der er brug for. Hvorfor bliver et eksekverbart program pludseligt dobbelt så stort, uden at der er ændret en linje i source, bare fordi man bruger næse generation compiler? For at undgå for mange "tommel-ned", dette er set in Windows verden.

Hvornår begynder man at at dyrke "requirement scrubbing" ?

  • 1
  • 0
Log ind eller Opret konto for at kommentere