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 <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-03-10 20:09:29 +01:00
commit f1b405950e
2 changed files with 125 additions and 95 deletions

View file

@ -111,4 +111,4 @@ Appen bruker åpne data og tjenester fra flere kilder. Se [SOURCES.md](SOURCES.m
## Se også ## 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

View file

@ -5,96 +5,107 @@
Tilfluktsrom is a small Android app — about 900 source files — that helps Tilfluktsrom is a small Android app — about 900 source files — that helps
Norwegians find their nearest public shelter in an emergency. One person built 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 it in under a day. But that was only possible because of the accumulated work of
roughly **100,000120,000 identifiable people**, spanning decades, countries, and roughly **119,000 people**, spanning decades, countries, and disciplines.
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) ## Layer 0: Physical Infrastructure — GPS & Sensors (~10,500 people)
| Component | Role | Est. people | | Component | Role | Est. people | Source |
|---|---|---| |---|---|---|---|
| GPS constellation | 31 satellites, maintained by US Space Force | ~5,000 | | 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 | | 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 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 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. engineers must be in orbit, in your pocket, and on the circuit board.
## Layer 1: Internet & Standards (~5,250 people) ## Layer 1: Internet & Standards (~5,250 people)
| Component | Role | Est. people | | Component | Role | Est. people | Source |
|---|---|---| |---|---|---|---|
| TCP/IP, DNS, HTTP, TLS | The protocols that carry shelter data from server to phone | ~5,000 | | 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 | | 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 | | 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 | | Component | Role | Est. people | Source |
|---|---|---| |---|---|---|---|
| Linux kernel | Foundation of Android; ~20,000 documented unique contributors | ~20,000 | | 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) | The mobile OS, built on Linux by Google + community | ~5,000 | | 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 |
| JVM / OpenJDK + Java | The language runtime Kotlin compiles to | ~2,000 | | OpenJDK | The Java runtime Kotlin compiles to | ~1,800 | [GitHub: ~1,779 contributors](https://github.com/openjdk/jdk) |
| ART (Android Runtime) | Replaced Dalvik; runs the compiled bytecode | ~200 |
## Layer 3: Programming Languages (~1,200 people) ## Layer 3: Programming Languages (~1,600 people)
| Language | Origin | Est. people | | Language | Origin | Contributors | Source |
|---|---|---| |---|---|---|---|
| Kotlin | JetBrains (Czech Republic/Russia) + community | ~500 | | Kotlin | JetBrains + community | ~765 | [GitHub: JetBrains/kotlin](https://github.com/JetBrains/kotlin) |
| TypeScript | Microsoft + community (for the PWA) | ~500 | | TypeScript | Microsoft + community (for the PWA) | ~823 | [GitHub: microsoft/TypeScript](https://github.com/microsoft/TypeScript) |
| Groovy / Kotlin DSL | Gradle build scripts | ~200 |
## Layer 4: Build Tools & Dev Infrastructure (~5,400 people) ## Layer 4: Build Tools & Dev Infrastructure (~6,700 people)
| Tool | Role | Est. people | | Tool | Role | Contributors | Source |
|---|---|---| |---|---|---|---|
| Gradle | Build automation | ~500 | | Gradle | Build automation | ~869 | [GitHub: gradle/gradle](https://github.com/gradle/gradle) |
| Android Gradle Plugin | Android-specific build pipeline | ~200 | | Android Gradle Plugin | Android-specific build pipeline | ~200 | Google internal; estimate |
| KSP (Kotlin Symbol Processing) | Code generation for Room database | ~100 | | 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 | | R8 / ProGuard | Release minification and optimization | ~100 | Estimate |
| Vite | PWA bundler | ~800 | | Vite | PWA bundler | ~1,100 | [GitHub: vitejs/vite](https://github.com/vitejs/vite) |
| Bun | Package manager and JS runtime | ~400 | | Bun | Package manager and JS runtime | ~733 | [GitHub: oven-sh/bun](https://github.com/oven-sh/bun) |
| Git | Version control | ~1,500 | | Git | Version control | ~1,820 | [GitHub: git/git](https://github.com/git/git) |
| Android Studio / IntelliJ | IDE (JetBrains + Google) | ~1,500 | | Android Studio / IntelliJ | IDE | ~1,500 | Estimate; JetBrains + Google |
| Maven Central, Google Maven, npm | Package registry infrastructure | ~300 | | 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 | | Library | What it does | Contributors | Source |
|---|---|---| |---|---|---|---|
| AndroidX (Core, AppCompat, Activity, Lifecycle) | UI and app architecture foundation | ~800 | | AndroidX (Core, AppCompat, Room, WorkManager, etc.) | UI, architecture, database, scheduling | ~1,000 | [GitHub: androidx/androidx](https://github.com/androidx/androidx) monorepo |
| Material Design | Visual design language, research, and components | ~500 | | Material Design Components | Visual design language and components | ~199 | [GitHub: material-components-android](https://github.com/material-components/material-components-android) |
| ConstraintLayout | Flexible screen layouts | ~100 | | Kotlinx Coroutines | Async data loading without blocking the UI | ~308 | [GitHub: Kotlin/kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) |
| Room | Type-safe SQLite wrapper for the shelter cache | ~200 | | OkHttp | Downloads the GeoJSON ZIP from Geonorge | ~287 | [GitHub: square/okhttp](https://github.com/square/okhttp) |
| WorkManager | Periodic home screen widget updates | ~150 | | OSMDroid | Offline OpenStreetMap rendering | ~105 | [GitHub: osmdroid/osmdroid](https://github.com/osmdroid/osmdroid) |
| Kotlinx Coroutines | Async data loading without blocking the UI | ~200 | | Play Services Location | FusedLocationProvider for precise GPS | ~200 | Google internal; estimate |
| OkHttp (Square) | Downloads the GeoJSON ZIP from Geonorge | ~200 | | SQLite | The embedded database engine | **~4** | [sqlite.org/crew.html](https://sqlite.org/crew.html) — the most deployed database in the world, maintained by 34 people |
| OSMDroid | Offline OpenStreetMap rendering | ~150 |
| Play Services Location | FusedLocationProvider for precise GPS | ~200 |
| SQLite | The embedded database engine | ~50 |
## Layer 6: Libraries — PWA (~1,350 people) ## Layer 6: Libraries — PWA (~1,750 people)
| Library | Role | Est. people | | Library | Role | Contributors | Source |
|---|---|---| |---|---|---|---|
| Leaflet | Interactive web maps (created in Ukraine) | ~800 | | Leaflet | Interactive web maps (created in Ukraine) | ~865 | [GitHub: Leaflet/Leaflet](https://github.com/Leaflet/Leaflet) |
| leaflet.offline | Offline tile caching | ~20 | | leaflet.offline | Offline tile caching | ~20 | Estimate based on GitHub |
| idb | IndexedDB wrapper for offline storage | ~30 | | idb | IndexedDB wrapper for offline storage | ~30 | Estimate based on GitHub |
| vite-plugin-pwa | Service worker and Workbox integration | ~100 | | vite-plugin-pwa | Service worker and Workbox integration | ~100 | Estimate based on GitHub |
| Vitest | Test framework | ~400 | | 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) ## Layer 7: Data — The Content That Makes It Useful (~56,000 people)
| Source | Role | Est. people | | Source | Role | Est. people | Source link |
|---|---|---| |---|---|---|---|
| OpenStreetMap | Global map data; ~2M registered mappers, ~10,000+ active in Norway | ~50,000 | | 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 / Geonorge | Norwegian Mapping Authority; national geodata infrastructure | ~800 | [kartverket.no](https://www.kartverket.no/) |
| DSB (Direktoratet for samfunnssikkerhet og beredskap) | Created and maintains the public shelter registry | ~200 | | 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+ | | The shelter builders | Construction, engineering, civil defense planning since the Cold War | ~5,000 | Estimate based on ~556 shelters built 1950s80s |
The app's data exists because of Cold War civil defense planning. The shelters The app's data exists because of Cold War civil defense planning. The shelters
were built in the 1950s80s, digitized by DSB, published via Geonorge's open were built in the 1950s80s, digitized by DSB, published via Geonorge's open
@ -103,18 +114,20 @@ GeoJSON file.
## Layer 8: AI-Assisted Development (~6,000 people) ## Layer 8: AI-Assisted Development (~6,000 people)
| Component | Role | Est. people | | Component | Role | Est. people | Source |
|---|---|---| |---|---|---|---|
| Anthropic / Claude | Researchers, engineers, safety team | ~1,000 | | 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 | | 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 | | 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 | | Component | Role | Contributors | Source |
|---|---|---| |---|---|---|---|
| F-Droid | Open-source app store infrastructure and review | ~300 | | 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) |
| Fastlane | Metadata and screenshot tooling | ~200 | | 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 | | Physical infrastructure (GPS, ARM, sensors) | ~10,500 |
| Internet & standards | ~5,250 | | Internet & standards | ~5,250 |
| Operating systems & runtimes | ~27,200 | | Operating systems & runtimes | ~23,800 |
| Programming languages | ~1,200 | | Programming languages | ~1,600 |
| Build tools & dev infrastructure | ~5,400 | | Build tools & dev infrastructure | ~6,700 |
| Direct libraries (Android) | ~2,550 | | Direct libraries (Android) | ~2,100 |
| Direct libraries (PWA) | ~1,350 | | Direct libraries (PWA) | ~1,750 |
| Data (maps, shelters, geodesy) | ~56,000 | | Data (maps, shelters, geodesy) | ~56,000 |
| AI-assisted development | ~6,000 | | AI-assisted development | ~6,000 |
| Distribution | ~500 | | Hosting & distribution | ~5,700 |
| **Conservative total** | **~116,000** | | **Conservative total** | **~119,000** |
This is conservative. It excludes: 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
[34 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 ## 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 and infrastructure that line depends on. No single company, country, or
organization could have built this stack alone. Linux (Finland → global), Kotlin organization could have built this stack alone. Linux (Finland → global), Kotlin
(Czech Republic/Russia → JetBrains), OSM (UK → global), GPS (US military → (Czech Republic/Russia → JetBrains), OSM (UK → global), GPS (US military →