From f1b405950e6f53133eb1dee3ccbc8ba8da4ef360 Mon Sep 17 00:00:00 2001 From: Ole-Morten Duesund Date: Tue, 10 Mar 2026 20:09:29 +0100 Subject: [PATCH] Forbedre estimater i STANDING_ON_SHOULDERS med kilder Erstatt grove estimater med reelle bidragstall fra GitHub, OpenHub og prosjektsider. Legg til kildelenker for ~20 prosjekter, Mermaid-diagram, og seksjon med interessante detaljer (SQLite med ~4 utviklere, Leaflet fra Ukraina). Legg til Forgejo/Gitea og GitHub som manglende lag. Oppdatert totalestimat: ~119 000 mennesker. Co-Authored-By: Claude Opus 4.6 --- README.md | 2 +- STANDING_ON_SHOULDERS.md | 196 ++++++++++++++++++++++----------------- 2 files changed, 114 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 20bfee9..8a79b98 100644 --- a/README.md +++ b/README.md @@ -111,4 +111,4 @@ Appen bruker åpne data og tjenester fra flere kilder. Se [SOURCES.md](SOURCES.m ## Se også -- [STANDING_ON_SHOULDERS.md](STANDING_ON_SHOULDERS.md) — estimat over de ~116 000 menneskene som har gjort denne appen mulig +- [STANDING_ON_SHOULDERS.md](STANDING_ON_SHOULDERS.md) — estimat over de ~119 000 menneskene som har gjort denne appen mulig diff --git a/STANDING_ON_SHOULDERS.md b/STANDING_ON_SHOULDERS.md index e33c1bd..f61b1e2 100644 --- a/STANDING_ON_SHOULDERS.md +++ b/STANDING_ON_SHOULDERS.md @@ -5,96 +5,107 @@ Tilfluktsrom is a small Android app — about 900 source files — that helps Norwegians find their nearest public shelter in an emergency. One person built it in under a day. But that was only possible because of the accumulated work of -roughly **100,000–120,000 identifiable people**, spanning decades, countries, and -disciplines. +roughly **119,000 people**, spanning decades, countries, and disciplines. -This document traces the human effort behind every layer of the stack. +This document traces the human effort behind every layer of the stack, with +sources for each estimate. + +```mermaid +pie title People behind each layer + "Map data (OSM)" : 50000 + "Linux kernel" : 20000 + "Physical infrastructure" : 10500 + "Build tools & dev infra" : 6700 + "AI-assisted development" : 6000 + "Shelter data & builders" : 6000 + "Internet & standards" : 5250 + "OS & runtimes (excl. Linux)" : 3800 + "Libraries (Android)" : 2100 + "Libraries (PWA)" : 1750 + "Hosting & distribution" : 5700 + "Programming languages" : 1600 +``` --- ## Layer 0: Physical Infrastructure — GPS & Sensors (~10,500 people) -| Component | Role | Est. people | -|---|---|---| -| GPS constellation | 31 satellites, maintained by US Space Force | ~5,000 | -| Magnetometer/compass sensors | Enable the direction arrow to point at shelters | ~500 | -| ARM architecture | The CPU instruction set running every Android device | ~5,000 | +| Component | Role | Est. people | Source | +|---|---|---|---| +| GPS constellation | 31 satellites, maintained by US Space Force | ~5,000 | Industry estimate; [GPS.gov](https://www.gps.gov/) | +| Magnetometer/compass sensors | Enable the direction arrow to point at shelters | ~500 | Industry estimate | +| ARM architecture | The CPU instruction set running every Android device | ~5,000 | [Arm had 8,330 employees in 2025](https://www.macrotrends.net/stocks/charts/ARM/arm-holdings/number-of-employees); ~5,000 estimated over the architecture's 40-year history | Before a single line of code runs, hardware designed by tens of thousands of engineers must be in orbit, in your pocket, and on the circuit board. ## Layer 1: Internet & Standards (~5,250 people) -| Component | Role | Est. people | -|---|---|---| -| TCP/IP, DNS, HTTP, TLS | The protocols that carry shelter data from server to phone | ~5,000 | -| GeoJSON specification | The format the shelter data is published in (IETF RFC 7946) | ~50 | -| EPSG / coordinate reference systems | The math behind UTM33N → WGS84 coordinate conversion | ~200 | +| Component | Role | Est. people | Source | +|---|---|---|---| +| TCP/IP, DNS, HTTP, TLS | The protocols that carry shelter data from server to phone | ~5,000 | Cumulative IETF/W3C contributors over decades | +| GeoJSON specification | The format the shelter data is published in (IETF RFC 7946) | ~50 | [RFC 7946 authors + WG](https://datatracker.ietf.org/doc/html/rfc7946) | +| EPSG / coordinate reference systems | The math behind UTM33N → WGS84 coordinate conversion | ~200 | [IOGP Geomatics Committee](https://epsg.org/) | -## Layer 2: Operating Systems & Runtimes (~27,200 people) +## Layer 2: Operating Systems & Runtimes (~23,800 people) -| Component | Role | Est. people | -|---|---|---| -| Linux kernel | Foundation of Android; ~20,000 documented unique contributors | ~20,000 | -| Android (AOSP) | The mobile OS, built on Linux by Google + community | ~5,000 | -| JVM / OpenJDK + Java | The language runtime Kotlin compiles to | ~2,000 | -| ART (Android Runtime) | Replaced Dalvik; runs the compiled bytecode | ~200 | +| Component | Role | Est. people | Source | +|---|---|---|---| +| Linux kernel | Foundation of Android | ~20,000 | [Linux Foundation: ~20,000+ unique contributors since 2005](https://www.linuxfoundation.org/blog/blog/2017-linux-kernel-report-highlights-developers-roles-accelerating-pace-change) | +| Android (AOSP) | Mobile OS, incl. ART runtime | ~2,000 | [ResearchGate study: ~1,563 contributors](https://www.researchgate.net/figure/Top-Companies-Contributing-to-Android-Projects_tbl3_236631958); likely higher now | +| OpenJDK | The Java runtime Kotlin compiles to | ~1,800 | [GitHub: ~1,779 contributors](https://github.com/openjdk/jdk) | -## Layer 3: Programming Languages (~1,200 people) +## Layer 3: Programming Languages (~1,600 people) -| Language | Origin | Est. people | -|---|---|---| -| Kotlin | JetBrains (Czech Republic/Russia) + community | ~500 | -| TypeScript | Microsoft + community (for the PWA) | ~500 | -| Groovy / Kotlin DSL | Gradle build scripts | ~200 | +| Language | Origin | Contributors | Source | +|---|---|---|---| +| Kotlin | JetBrains + community | ~765 | [GitHub: JetBrains/kotlin](https://github.com/JetBrains/kotlin) | +| TypeScript | Microsoft + community (for the PWA) | ~823 | [GitHub: microsoft/TypeScript](https://github.com/microsoft/TypeScript) | -## Layer 4: Build Tools & Dev Infrastructure (~5,400 people) +## Layer 4: Build Tools & Dev Infrastructure (~6,700 people) -| Tool | Role | Est. people | -|---|---|---| -| Gradle | Build automation | ~500 | -| Android Gradle Plugin | Android-specific build pipeline | ~200 | -| KSP (Kotlin Symbol Processing) | Code generation for Room database | ~100 | -| R8 / ProGuard | Release minification and optimization | ~100 | -| Vite | PWA bundler | ~800 | -| Bun | Package manager and JS runtime | ~400 | -| Git | Version control | ~1,500 | -| Android Studio / IntelliJ | IDE (JetBrains + Google) | ~1,500 | -| Maven Central, Google Maven, npm | Package registry infrastructure | ~300 | +| Tool | Role | Contributors | Source | +|---|---|---|---| +| Gradle | Build automation | ~869 | [GitHub: gradle/gradle](https://github.com/gradle/gradle) | +| Android Gradle Plugin | Android-specific build pipeline | ~200 | Google internal; estimate | +| KSP (Kotlin Symbol Processing) | Code generation for Room database | ~100 | Estimate based on [GitHub: google/ksp](https://github.com/google/ksp) | +| R8 / ProGuard | Release minification and optimization | ~100 | Estimate | +| Vite | PWA bundler | ~1,100 | [GitHub: vitejs/vite](https://github.com/vitejs/vite) | +| Bun | Package manager and JS runtime | ~733 | [GitHub: oven-sh/bun](https://github.com/oven-sh/bun) | +| Git | Version control | ~1,820 | [GitHub: git/git](https://github.com/git/git) | +| Android Studio / IntelliJ | IDE | ~1,500 | Estimate; JetBrains + Google | +| Maven Central, Google Maven, npm | Package registry infrastructure | ~300 | Estimate | -## Layer 5: Libraries — Android App (~2,550 people) +## Layer 5: Libraries — Android App (~2,100 people) -| Library | What it does | Est. people | -|---|---|---| -| AndroidX (Core, AppCompat, Activity, Lifecycle) | UI and app architecture foundation | ~800 | -| Material Design | Visual design language, research, and components | ~500 | -| ConstraintLayout | Flexible screen layouts | ~100 | -| Room | Type-safe SQLite wrapper for the shelter cache | ~200 | -| WorkManager | Periodic home screen widget updates | ~150 | -| Kotlinx Coroutines | Async data loading without blocking the UI | ~200 | -| OkHttp (Square) | Downloads the GeoJSON ZIP from Geonorge | ~200 | -| OSMDroid | Offline OpenStreetMap rendering | ~150 | -| Play Services Location | FusedLocationProvider for precise GPS | ~200 | -| SQLite | The embedded database engine | ~50 | +| Library | What it does | Contributors | Source | +|---|---|---|---| +| AndroidX (Core, AppCompat, Room, WorkManager, etc.) | UI, architecture, database, scheduling | ~1,000 | [GitHub: androidx/androidx](https://github.com/androidx/androidx) monorepo | +| Material Design Components | Visual design language and components | ~199 | [GitHub: material-components-android](https://github.com/material-components/material-components-android) | +| Kotlinx Coroutines | Async data loading without blocking the UI | ~308 | [GitHub: Kotlin/kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) | +| OkHttp | Downloads the GeoJSON ZIP from Geonorge | ~287 | [GitHub: square/okhttp](https://github.com/square/okhttp) | +| OSMDroid | Offline OpenStreetMap rendering | ~105 | [GitHub: osmdroid/osmdroid](https://github.com/osmdroid/osmdroid) | +| Play Services Location | FusedLocationProvider for precise GPS | ~200 | Google internal; estimate | +| SQLite | The embedded database engine | **~4** | [sqlite.org/crew.html](https://sqlite.org/crew.html) — the most deployed database in the world, maintained by 3–4 people | -## Layer 6: Libraries — PWA (~1,350 people) +## Layer 6: Libraries — PWA (~1,750 people) -| Library | Role | Est. people | -|---|---|---| -| Leaflet | Interactive web maps (created in Ukraine) | ~800 | -| leaflet.offline | Offline tile caching | ~20 | -| idb | IndexedDB wrapper for offline storage | ~30 | -| vite-plugin-pwa | Service worker and Workbox integration | ~100 | -| Vitest | Test framework | ~400 | +| Library | Role | Contributors | Source | +|---|---|---|---| +| Leaflet | Interactive web maps (created in Ukraine) | ~865 | [GitHub: Leaflet/Leaflet](https://github.com/Leaflet/Leaflet) | +| leaflet.offline | Offline tile caching | ~20 | Estimate based on GitHub | +| idb | IndexedDB wrapper for offline storage | ~30 | Estimate based on GitHub | +| vite-plugin-pwa | Service worker and Workbox integration | ~100 | Estimate based on GitHub | +| Vitest | Test framework | ~718 | [GitHub: vitest-dev/vitest](https://github.com/vitest-dev/vitest) | ## Layer 7: Data — The Content That Makes It Useful (~56,000 people) -| Source | Role | Est. people | -|---|---|---| -| OpenStreetMap | Global map data; ~2M registered mappers, ~10,000+ active in Norway | ~50,000 | -| Kartverket / Geonorge | Norwegian Mapping Authority; national geodata infrastructure | ~800 | -| DSB (Direktoratet for samfunnssikkerhet og beredskap) | Created and maintains the public shelter registry | ~200 | -| The shelter builders | Construction, engineering, civil defense planning since the Cold War | ~5,000+ | +| Source | Role | Est. people | Source link | +|---|---|---|---| +| OpenStreetMap | Global map data | ~50,000 | [~2.25M have ever edited; ~50,000 active monthly](https://wiki.openstreetmap.org/wiki/Stats) | +| Kartverket / Geonorge | Norwegian Mapping Authority; national geodata infrastructure | ~800 | [kartverket.no](https://www.kartverket.no/) | +| DSB | Created and maintains the public shelter registry | ~200 | [dsb.no](https://www.dsb.no/) | +| The shelter builders | Construction, engineering, civil defense planning since the Cold War | ~5,000 | Estimate based on ~556 shelters built 1950s–80s | The app's data exists because of Cold War civil defense planning. The shelters were built in the 1950s–80s, digitized by DSB, published via Geonorge's open @@ -103,18 +114,20 @@ GeoJSON file. ## Layer 8: AI-Assisted Development (~6,000 people) -| Component | Role | Est. people | -|---|---|---| -| Anthropic / Claude | Researchers, engineers, safety team | ~1,000 | -| ML research lineage | Transformers, attention, RLHF, scaling laws — across academia & industry | ~5,000 | -| Training data | The collective written output of humanity | incalculable | +| Component | Role | Est. people | Source | +|---|---|---|---| +| Anthropic / Claude | Researchers, engineers, safety team | ~1,000 | [anthropic.com](https://www.anthropic.com/) | +| ML research lineage | Transformers, attention, RLHF, scaling laws — across academia & industry | ~5,000 | Estimate across all contributing institutions | +| Training data | The collective written output of humanity | incalculable | | -## Layer 9: Distribution (~500 people) +## Layer 9: Hosting & Distribution (~5,700 people) -| Component | Role | Est. people | -|---|---|---| -| F-Droid | Open-source app store infrastructure and review | ~300 | -| Fastlane | Metadata and screenshot tooling | ~200 | +| Component | Role | Contributors | Source | +|---|---|---|---| +| Forgejo / Gitea | Hosts this project at kode.naiv.no; Forgejo forked from Gitea in 2022 | ~800 | [Forgejo: ~230 contributors](https://codeberg.org/forgejo/forgejo); [Gitea: go-gitea/gitea](https://github.com/go-gitea/gitea) | +| GitHub | Mirror repo + hosts nearly all upstream dependencies | ~3,000 | [~5,000 employees, ~50% engineers](https://kinsta.com/blog/github-statistics/) | +| F-Droid | Open-source app store infrastructure and review | ~150 | [GitLab: fdroid](https://gitlab.com/fdroid); estimate | +| Fastlane | Metadata and screenshot tooling | ~1,524 | [GitHub: fastlane/fastlane](https://github.com/fastlane/fastlane) | --- @@ -124,15 +137,15 @@ GeoJSON file. |---|---| | Physical infrastructure (GPS, ARM, sensors) | ~10,500 | | Internet & standards | ~5,250 | -| Operating systems & runtimes | ~27,200 | -| Programming languages | ~1,200 | -| Build tools & dev infrastructure | ~5,400 | -| Direct libraries (Android) | ~2,550 | -| Direct libraries (PWA) | ~1,350 | +| Operating systems & runtimes | ~23,800 | +| Programming languages | ~1,600 | +| Build tools & dev infrastructure | ~6,700 | +| Direct libraries (Android) | ~2,100 | +| Direct libraries (PWA) | ~1,750 | | Data (maps, shelters, geodesy) | ~56,000 | | AI-assisted development | ~6,000 | -| Distribution | ~500 | -| **Conservative total** | **~116,000** | +| Hosting & distribution | ~5,700 | +| **Conservative total** | **~119,000** | This is conservative. It excludes: @@ -147,9 +160,26 @@ Including OpenStreetMap's full contributor base and hardware, the number crosses --- +## Notable details + +- **SQLite** — the most widely deployed database engine in the world (in every + phone, browser, and operating system) — is maintained by + [3–4 people](https://sqlite.org/crew.html). It powers every shelter lookup + in this app. + +- **Leaflet** — the JavaScript mapping library used by the PWA — was created by + [Volodymyr Agafonkin](https://agafonkin.com/) in Kyiv, Ukraine. An emergency + shelter app built with a mapping library from a country at war. + +- **OpenStreetMap** has ~10 million registered accounts, but only ~50,000 are + active in any given month. The map tiles this app displays are the work of a + dedicated minority. + +--- + ## Perspective -For every line of application code, roughly 100,000 people made the tools, data, +For every line of application code, roughly 119,000 people made the tools, data, and infrastructure that line depends on. No single company, country, or organization could have built this stack alone. Linux (Finland → global), Kotlin (Czech Republic/Russia → JetBrains), OSM (UK → global), GPS (US military →