The Guardian
The source code of the world's leading liberal voice
GitHub 
1.2K
repositories
4.1M
lines of main code
51K files
4.1M
lines of other code
38K files
1.1M
main code touched
1 year (33%)
392K
new main code
1 year (+12%)
148
recent contributors
(past 30 days)
+9.4M
-3.3M
line churn
+1.5M
-453K
+1.2M
-372K
+948K
-441K
+1.1M
-308K
+742K
-233K
+733K
-264K
+887K
-274K
+536K
-177K
+739K
-287K
+951K
-458K
190K
commits

15177

17292

15817

13410

10983

10636

12041

10884

15033

13951

885
contributors

226

205

207

221

248

206

183

199

168

164

2026
10-07
2025 2024 2023 2022 2021 2020 2019 2018 2017


Contributors per file extensions (past 30 days)...
Contributors Per File Extension
past 30 days
extension dependencies...
flowchart TB
    n0["svelte (3)"]
    n1["mjs (11)"]
    n2["rs (1)"]
    n3["toml (8)"]
    n4["sc (1)"]
    n5["webmanifest (5)"]
    n6["css (20)"]
    n7["tsx (67)"]
    n8["graphqls (3)"]
    n9["xml (3)"]
    n10["kts (3)"]
    n11["js (40)"]
    n12["thrift (5)"]
    n13["py (2)"]
    n14["ts (96)"]
    n15["proto (5)"]
    n16["cjs (2)"]
    n17["yaml (89)"]
    n18["html (28)"]
    n19["kt (4)"]
    n20["graphql (2)"]
    n21["rb (3)"]
    n22["swift (9)"]
    n23["jsx (6)"]
    n24["prisma (2)"]
    n25["scala (67)"]
    n26["scss (6)"]
    n27["sql (10)"]
    n14 ---|"69"| n17
    n14 ---|"63"| n7
    n14 ---|"52"| n25
    n17 ---|"49"| n7
    n17 ---|"45"| n25
    n7 ---|"38"| n25
    n14 ---|"37"| n11
    n17 ---|"32"| n11
    n7 ---|"28"| n11
    n14 ---|"26"| n18
    n25 ---|"25"| n11
    n11 ---|"24"| n18
    n7 ---|"23"| n18
    n14 ---|"20"| n6
    n17 ---|"20"| n18
    n25 ---|"20"| n18
    n7 ---|"19"| n6
    n17 ---|"16"| n6
    n18 ---|"14"| n6
    n25 ---|"13"| n6
    n11 ---|"13"| n6
    n17 ---|"11"| n1
    n14 ---|"10"| n1
    n7 ---|"9"| n1
    n14 ---|"9"| n27
    n17 ---|"8"| n27
    n17 ---|"8"| n3
    n25 ---|"7"| n1
    n14 ---|"5"| n23
    n14 ---|"5"| n26
    n17 ---|"5"| n23
    n17 ---|"5"| n26
    n7 ---|"5"| n23
    n7 ---|"5"| n26
    n25 ---|"5"| n26
    n11 ---|"5"| n1
    n18 ---|"5"| n26
    n14 ---|"5"| n3
    n14 ---|"5"| n5
    n7 ---|"5"| n5
    n11 ---|"5"| n5
    n18 ---|"5"| n5
    n11 ---|"4"| n23
    n11 ---|"4"| n26
    n23 ---|"4"| n26
    n25 ---|"4"| n27
    n7 ---|"4"| n27
    n25 ---|"4"| n12
    n17 ---|"4"| n5
    n6 ---|"4"| n5
    n25 ---|"3"| n23
    n18 ---|"3"| n23
    n6 ---|"3"| n1
    n1 ---|"3"| n23
    n17 ---|"3"| n21
    n17 ---|"3"| n19
    n27 ---|"3"| n3
    n3 ---|"3"| n19
    n19 ---|"3"| n10
    n22 ---|"3"| n15
    n17 ---|"3"| n9
    n7 ---|"3"| n3
    n11 ---|"3"| n3
    n11 ---|"3"| n27
    n18 ---|"3"| n27
    n27 ---|"3"| n5
    n14 ---|"2"| n13
    n17 ---|"2"| n13
    n7 ---|"2"| n13
    n25 ---|"2"| n13
    n11 ---|"2"| n13
    n18 ---|"2"| n1
    n18 ---|"2"| n13
    n6 ---|"2"| n23
    n6 ---|"2"| n26
    n1 ---|"2"| n26
    n1 ---|"2"| n13
    n23 ---|"2"| n13
    n26 ---|"2"| n13
    n17 ---|"2"| n10
    n17 ---|"2"| n8
    n17 ---|"2"| n20
    n25 ---|"2"| n3
    n27 ---|"2"| n19
    n3 ---|"2"| n10
    n3 ---|"2"| n8
    n3 ---|"2"| n20
    n19 ---|"2"| n8
    n19 ---|"2"| n20
    n10 ---|"2"| n8
    n10 ---|"2"| n20
    n8 ---|"2"| n20
    n17 ---|"2"| n12
    n14 ---|"2"| n9
    n25 ---|"2"| n9
    n14 ---|"2"| n12
    n7 ---|"2"| n12
    n25 ---|"2"| n21
    n14 ---|"2"| n15
    n17 ---|"2"| n15
    classDef default fill:#00b2ee,stroke:#ffffff,color:#000000;
    classDef highlighted fill:#00b2ee,stroke:#ffffff,color:#000000;
    class n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19,n20,n21,n22,n23,n24,n25,n26,n27 highlighted;
    linkStyle 0 stroke:#00688bFF,stroke-width:10px
    linkStyle 1 stroke:#00688bED,stroke-width:9px
    linkStyle 2 stroke:#00688bC9,stroke-width:7px
    linkStyle 3 stroke:#00688bC9,stroke-width:7px
    linkStyle 4 stroke:#00688bB7,stroke-width:6px
    linkStyle 5 stroke:#00688bA5,stroke-width:5px
    linkStyle 6 stroke:#00688bA5,stroke-width:5px
    linkStyle 7 stroke:#00688b93,stroke-width:4px
    linkStyle 8 stroke:#00688b93,stroke-width:4px
    linkStyle 9 stroke:#00688b82,stroke-width:3px
    linkStyle 10 stroke:#00688b82,stroke-width:3px
    linkStyle 11 stroke:#00688b82,stroke-width:3px
    linkStyle 12 stroke:#00688b82,stroke-width:3px
    linkStyle 13 stroke:#00688b70,stroke-width:2px
    linkStyle 14 stroke:#00688b70,stroke-width:2px
    linkStyle 15 stroke:#00688b70,stroke-width:2px
    linkStyle 16 stroke:#00688b70,stroke-width:2px
    linkStyle 17 stroke:#00688b70,stroke-width:2px
    linkStyle 18 stroke:#00688b70,stroke-width:2px
    linkStyle 19 stroke:#00688b5E,stroke-width:1px
    linkStyle 20 stroke:#00688b5E,stroke-width:1px
    linkStyle 21 stroke:#00688b5E,stroke-width:1px
    linkStyle 22 stroke:#00688b5E,stroke-width:1px
    linkStyle 23 stroke:#00688b5E,stroke-width:1px
    linkStyle 24 stroke:#00688b5E,stroke-width:1px
    linkStyle 25 stroke:#00688b5E,stroke-width:1px
    linkStyle 26 stroke:#00688b5E,stroke-width:1px
    linkStyle 27 stroke:#00688b5E,stroke-width:1px
    linkStyle 28 stroke:#00688b4C,stroke-width:1px
    linkStyle 29 stroke:#00688b4C,stroke-width:1px
    linkStyle 30 stroke:#00688b4C,stroke-width:1px
    linkStyle 31 stroke:#00688b4C,stroke-width:1px
    linkStyle 32 stroke:#00688b4C,stroke-width:1px
    linkStyle 33 stroke:#00688b4C,stroke-width:1px
    linkStyle 34 stroke:#00688b4C,stroke-width:1px
    linkStyle 35 stroke:#00688b4C,stroke-width:1px
    linkStyle 36 stroke:#00688b4C,stroke-width:1px
    linkStyle 37 stroke:#00688b4C,stroke-width:1px
    linkStyle 38 stroke:#00688b4C,stroke-width:1px
    linkStyle 39 stroke:#00688b4C,stroke-width:1px
    linkStyle 40 stroke:#00688b4C,stroke-width:1px
    linkStyle 41 stroke:#00688b4C,stroke-width:1px
    linkStyle 42 stroke:#00688b4C,stroke-width:1px
    linkStyle 43 stroke:#00688b4C,stroke-width:1px
    linkStyle 44 stroke:#00688b4C,stroke-width:1px
    linkStyle 45 stroke:#00688b4C,stroke-width:1px
    linkStyle 46 stroke:#00688b4C,stroke-width:1px
    linkStyle 47 stroke:#00688b4C,stroke-width:1px
    linkStyle 48 stroke:#00688b4C,stroke-width:1px
    linkStyle 49 stroke:#00688b4C,stroke-width:1px
    linkStyle 50 stroke:#00688b4C,stroke-width:1px
    linkStyle 51 stroke:#00688b4C,stroke-width:1px
    linkStyle 52 stroke:#00688b4C,stroke-width:1px
    linkStyle 53 stroke:#00688b4C,stroke-width:1px
    linkStyle 54 stroke:#00688b4C,stroke-width:1px
    linkStyle 55 stroke:#00688b4C,stroke-width:1px
    linkStyle 56 stroke:#00688b4C,stroke-width:1px
    linkStyle 57 stroke:#00688b4C,stroke-width:1px
    linkStyle 58 stroke:#00688b4C,stroke-width:1px
    linkStyle 59 stroke:#00688b4C,stroke-width:1px
    linkStyle 60 stroke:#00688b4C,stroke-width:1px
    linkStyle 61 stroke:#00688b4C,stroke-width:1px
    linkStyle 62 stroke:#00688b4C,stroke-width:1px
    linkStyle 63 stroke:#00688b4C,stroke-width:1px
    linkStyle 64 stroke:#00688b4C,stroke-width:1px
    linkStyle 65 stroke:#00688b4C,stroke-width:1px
    linkStyle 66 stroke:#00688b4C,stroke-width:1px
    linkStyle 67 stroke:#00688b4C,stroke-width:1px
    linkStyle 68 stroke:#00688b4C,stroke-width:1px
    linkStyle 69 stroke:#00688b4C,stroke-width:1px
    linkStyle 70 stroke:#00688b4C,stroke-width:1px
    linkStyle 71 stroke:#00688b4C,stroke-width:1px
    linkStyle 72 stroke:#00688b4C,stroke-width:1px
    linkStyle 73 stroke:#00688b4C,stroke-width:1px
    linkStyle 74 stroke:#00688b4C,stroke-width:1px
    linkStyle 75 stroke:#00688b4C,stroke-width:1px
    linkStyle 76 stroke:#00688b4C,stroke-width:1px
    linkStyle 77 stroke:#00688b4C,stroke-width:1px
    linkStyle 78 stroke:#00688b4C,stroke-width:1px
    linkStyle 79 stroke:#00688b4C,stroke-width:1px
    linkStyle 80 stroke:#00688b4C,stroke-width:1px
    linkStyle 81 stroke:#00688b4C,stroke-width:1px
    linkStyle 82 stroke:#00688b4C,stroke-width:1px
    linkStyle 83 stroke:#00688b4C,stroke-width:1px
    linkStyle 84 stroke:#00688b4C,stroke-width:1px
    linkStyle 85 stroke:#00688b4C,stroke-width:1px
    linkStyle 86 stroke:#00688b4C,stroke-width:1px
    linkStyle 87 stroke:#00688b4C,stroke-width:1px
    linkStyle 88 stroke:#00688b4C,stroke-width:1px
    linkStyle 89 stroke:#00688b4C,stroke-width:1px
    linkStyle 90 stroke:#00688b4C,stroke-width:1px
    linkStyle 91 stroke:#00688b4C,stroke-width:1px
    linkStyle 92 stroke:#00688b4C,stroke-width:1px
    linkStyle 93 stroke:#00688b4C,stroke-width:1px
    linkStyle 94 stroke:#00688b4C,stroke-width:1px
    linkStyle 95 stroke:#00688b4C,stroke-width:1px
    linkStyle 96 stroke:#00688b4C,stroke-width:1px
    linkStyle 97 stroke:#00688b4C,stroke-width:1px
    linkStyle 98 stroke:#00688b4C,stroke-width:1px
    linkStyle 99 stroke:#00688b4C,stroke-width:1px


- show extension dependencies as 2D force graph  - show extension dependencies as 3D force graph 
Test code...
Other code...


File Age and Freshness
Lines of code in files first/last updated more than a year ago | 6 to 12 months ago | 3 to 6 months ago | 1 to 3 months ago | month or less ago
old
new
stale
fresh
no
history
Rule-of-thumb estimates

Rebuild value

to rebuild
rebuild value

Maintenance effort

per year to maintain
maintenance cost per year
Rules of thumb, not measurements: one man-year rebuilds about 10,000 lines of main code (design, testing and coordination included), and keeping a code base alive takes about 15% of its rebuild value per year (20 man-years of rebuild value need about 3 man-years of maintenance every year). Your changes are remembered in this browser for every report.