From 58e0977d828d2e068d0bad978a23927398433648 Mon Sep 17 00:00:00 2001 From: David Silva Date: Thu, 27 Aug 2026 22:43:57 +0200 Subject: [PATCH 1/2] Publish SlashData Ruby developer numbers for 28 August SlashData's series had 1.3 million people using Ruby in Q4 2019 and 4.9 million by the 30th edition in late 2025. The post lays out the years in between, what the count actually includes, the 2024-2025 jump they put down to AI tools, and the independent clocks (Stack Overflow, Rails World, job postings, live sites). Includes a 1200x630 Open Graph card in the August notebook style and the HTML template it was rendered from. --- ...-08-28-slashdata-ruby-developer-numbers.md | 109 ++++++++++++++++++ img/og-slashdata-ruby-developer-numbers.png | Bin 0 -> 60421 bytes .../og-slashdata-ruby-developer-numbers.html | 86 ++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 _posts/2026-08-28-slashdata-ruby-developer-numbers.md create mode 100644 img/og-slashdata-ruby-developer-numbers.png create mode 100644 scripts/og-slashdata-ruby-developer-numbers.html diff --git a/_posts/2026-08-28-slashdata-ruby-developer-numbers.md b/_posts/2026-08-28-slashdata-ruby-developer-numbers.md new file mode 100644 index 0000000..f548bf1 --- /dev/null +++ b/_posts/2026-08-28-slashdata-ruby-developer-numbers.md @@ -0,0 +1,109 @@ +--- +layout: post +title: "SlashData counted 4.9 million Ruby developers in 2025" +date: 2026-08-28 +description: "SlashData's series had 1.3 million people using Ruby in 2019 and 4.9 million in late 2025. The count is anyone who used the language. The 2024–2025 jump is the one they put down to AI tools." +image: /img/og-slashdata-ruby-developer-numbers.png +--- + +SlashData's 30th Developer Nation language paper, published in October 2025, put Ruby at **4.9 million** active developers. The same series, in the Q4 2019 edition, had **1.3 million**. + +I wanted the years in between, and what the number actually counts. + +## What the number is + +SlashData does not count "professional Rails developers". Twice a year they run the Developer Nation survey, lately about 10,000 to 12,000 respondents, and they ask which languages each person used across 13 areas of development: web, backend, mobile, games, embedded, industrial IoT, and the rest. They scale those shares against their own estimate of every active software developer on earth, which they build from the survey plus GitHub, Stack Overflow, and employment statistics. + +A person who touched Ruby this year counts as one, whether they maintain GitHub or ran a script once. The same person also counts in JavaScript if they used that too. Language totals therefore overlap. They add up to more than the global population. + +Students and hobbyists are in the figure. Rails is not split out from Ruby. "Used" is not "primary language". + +## The series + +| Wave | Edition | Global developers | Ruby | Ruby as a share of the global total | +|---|---|---|---|---| +| Q4 2019 | 18th | 20.4 million | **1.3 million** | 6.4% | +| Q1 2022 | 22nd | about 31 million | not printed in the public write-up | n/a | +| Q1 2024 | 26th | about 43–45 million | **2.5 million** in the contemporary write-up, restated as **2.7 million** a year later | about 6% | +| Q1 2025 | 29th | **47 million** (36.5 million of them professional) | **4.3 million** | 9.1% | +| Q3 2025 | 30th | **48.4 million** | **4.9 million** | about 10% | +| Q1 2026 | 31st | not fully public | **not in the public summary** | n/a | + +Sources for each cell sit at the end. + +The Q1 2022 paper named Ruby as a backend language that grew slower than Go. It printed Go at 3.3 million and did not print a Ruby headcount. + +The Q1 2024 cell disagrees with itself by 200,000. [The New Stack](https://thenewstack.io/rust-growing-fastest-but-javascript-reigns-supreme/), writing up the 26th edition at the time, printed 2.5 million. SlashData's own Q1 2025 paper, looking back, restated Q1 2024 as 2.7 million. I have kept both. + +The 31st edition is out. The 22 May 2026 announcement quoted JavaScript at 27.3 million, Python at 26.3 million, Java at 24 million, and C# at 13.9 million. It did not quote Ruby. That number is in the gated PDF. Wave 32 is in the field as of August 2026. + +## The jump from 2024 to 2025 + +From Q1 2024 to Q1 2025, Ruby added **1.6 million** people in twelve months. SlashData's sentence in the May 2025 paper: + +> Ruby's developer population surged from 2.7M in Q1 2024 to 4.3M in Q1 2025. + +They put that down to AI coding assistants lowering the entry barrier. In that wave, **45% of the Ruby community used AI tools**. They also report small increases in consumer electronics, industrial IoT, and embedded, so some of the new people are not web developers. + +By the 30th edition they say Ruby **doubled in two years**, plus 2.8 million, to 4.9 million, "broader expansion rather than a single niche." That implies about 2.1 million two years earlier, which sits next to the 2.5–2.7 million print from Q1 2024. + +## The rest of the pie grew too + +Language totals rise when the global total rises, even if share is flat. + +| Date | Global developers | Of whom professional | +|---|---|---| +| End of 2019 | 20.4 million | n/a | +| Q1 2022 | about 31 million | 21.8 million | +| Q1 2025 | 47 million | 36.5 million | +| Q3 2025 | 48.4 million | n/a | + +Professionals grew 70% from early 2022 to early 2025. SlashData says the amateur segment shrank. Ruby's share of their world still moved from about 6% to about 10%. That is a real change in the series. It is also the part that should not be read as two million new people maintaining a Rails monolith. + +## Other clocks + +SlashData is an absolute headcount of "used this language". TIOBE, RedMonk, GitHub Octoverse, and Stack Overflow are relative. They do not have to agree. + +Stack Overflow asks about "extensive development work in the past year". A February 2026 round-up of the [2025 Developer Survey](https://survey.stackoverflow.co/2025/technology#most-popular-technologies-language) put Ruby at **6.4% of all respondents and 6.9% of professional developers**. Apply 6.9% to SlashData's 36.5 million professionals and you get about **2.5 million** working Ruby users. That is the same order as SlashData's pre-spike print, not the 4.9 million. + +Other floors that do not depend on SlashData: + +- **814** people at [Rails World 2025](https://rubyonrails.org/2025/9/15/rails-world-2025-recap) in Amsterdam. +- **2,479** job postings mentioning Ruby on Rails in the 90 days to 24 August 2026, [indexed by Skillenai](https://skillenai.com/data/skill/ruby-on-rails). +- **413,156** live websites with a detectable Ruby signature in a July 2026 crawl, [reported by ruby-doc.org](https://ruby-doc.org/blog/websites-made-with-ruby-what-the-data-shows-in-2026/). Backend languages hide, so that is a floor. +- RedMonk's Q1 2025 ranking, which uses GitHub and Stack Overflow activity, had Ruby at **#9**. TIOBE, which uses search-engine mentions, had it at **#24** in the same period. + +## What the free papers also cover + +Besides the bar chart of millions, the language papers talk about: + +- the domain where each language is most and least used +- adoption by years of experience (they say mid-career developers, three to ten years, "carry the stack") +- adoption by earnings (JavaScript and PHP lowest among high earners; C and Rust higher) +- professional versus amateur + +The useful cuts, Rails versus Ruby, web-only Ruby, country, company size, sit on paid dashboards. The free PDF is the ranking and the AI paragraph. + +## What they have not printed + +They have not printed a Rails-only number. They have not printed a "primary language" number. They have not printed the Q1 2026 Ruby headcount in public. + +The durable working population in this series is the **2.5 million** band from 2024. That is the figure that lines up with Stack Overflow's professional share applied to SlashData's own professional population. The extra bodies in 2025 are the ones SlashData explains with AI assistants and a few non-web domains. + +## Sources + +1. SlashData, *Sizing programming language communities*, Q1 2025 (29th edition, May 2025). Ruby 4.3 million, restated Q1 2024 as 2.7 million, 45% of Ruby developers using AI tools, 47 million developers globally, survey of 10,500+ respondents. [PDF](https://developer-economics.cdn.prismic.io/developer-economics/aCSH3SdWJ-7kSFQo_DN29SoN-Programminglanguagecommunities.pdf). +2. SlashData, *State of the Developer Nation*, Q4 2019 (18th edition). Ruby 1.3 million, 20.4 million developers globally. [PDF](https://s3-eu-west-1.amazonaws.com/vm-blog/uploads/2020/04/DE18-SoN-Digital-.pdf). +3. SlashData, 26th edition, Q1 2024, as reported by The New Stack, 7 June 2024. Ruby 2.5 million, JavaScript 25.2 million. [Article](https://thenewstack.io/rust-growing-fastest-but-javascript-reigns-supreme/). +4. SlashData, *From Hype to Data in Q4 2025*, 22 October 2025. 30th edition (DN30). Ruby 4.9 million, doubled in two years. [Blog](https://www.slashdata.co/post/from-hype-to-data-in-q4-2025-6-developer-signals-on-agentic-ai-cloud-finops-and-language-communit). +5. SlashData, 6 November 2025. Ruby 4.9 million, plus 2.8 million over two years. [X](https://x.com/SlashDataHQ/status/1986459957739282456). +6. SlashData, *Developer Population Sizing*, updated Q3 2025. 48.4 million developers globally. [Page](https://www.slashdata.co/research/developer-population). +7. SlashData, professional population 21.8 million in early 2022 to 36.5 million in early 2025, 70% growth, amateurs contracting. Population webinar, 24 April 2025. [Recording](https://www.youtube.com/live/fnaDQV07LD0). +8. SlashData, 22nd edition, Q1 2022, as reported by InfoWorld, 19 May 2022. Go 3.3 million. Ruby named, no headcount printed. [Article](https://www.infoworld.com/article/2335421/developer-survey-javascript-and-python-reign-but-rust-is-rising.html). +9. SlashData, 31st edition, Q1 2026. Survey of 11,500+ respondents in 95 countries. Public summary 22 May 2026: JavaScript 27.3 million, Python 26.3 million, Java 24 million, C# 13.9 million. Ruby not quoted. [X](https://x.com/SlashDataHQ/status/2057846589914222710). [Report page](https://www.slashdata.co/free-industry-reports/sizing-programming-language-communities). +10. SlashData, [methodology](https://www.slashdata.co/company/methodology). +11. @IT, 11 June 2025, recap of the 29th edition. Ruby plus 1.6 million year on year. [Article](https://atmarkit.itmedia.co.jp/ait/spv/2506/11/news020.html). +12. Stack Overflow Developer Survey 2025, language section. [Results](https://survey.stackoverflow.co/2025/technology#most-popular-technologies-language). Ruby at 6.4% of all respondents and 6.9% of professionals, plus RedMonk Q1 2025 at #9 and TIOBE at #24, quoted via *State of Ruby 2026*, The Dev Newsletter, 9 February 2026. [Round-up](https://devnewsletter.com/p/state-of-ruby-2026/). +13. Ruby on Rails, *Rails World 2025 Recap*, 15 September 2025. 814 attendees. [Post](https://rubyonrails.org/2025/9/15/rails-world-2025-recap). +14. Skillenai, Ruby on Rails jobs, 90 days ending 24 August 2026. 2,479 postings. [Page](https://skillenai.com/data/skill/ruby-on-rails). +15. ruby-doc.org, *Websites Made With Ruby*, July 2026 crawl. 413,156 live sites. [Post](https://ruby-doc.org/blog/websites-made-with-ruby-what-the-data-shows-in-2026/). diff --git a/img/og-slashdata-ruby-developer-numbers.png b/img/og-slashdata-ruby-developer-numbers.png new file mode 100644 index 0000000000000000000000000000000000000000..e2951f4105d86b138e584ae3cb208c26f401eefd GIT binary patch literal 60421 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

FxOegf<0HD|G!DJ_X@T7 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 literal 0 HcmV?d00001 diff --git a/scripts/og-slashdata-ruby-developer-numbers.html b/scripts/og-slashdata-ruby-developer-numbers.html new file mode 100644 index 0000000..64d0c68 --- /dev/null +++ b/scripts/og-slashdata-ruby-developer-numbers.html @@ -0,0 +1,86 @@ + + + + + OG: SlashData counted 4.9 million Ruby developers in 2025 + + + +

+
+

28 August 2026

+

SlashData counted 4.9 million Ruby developers in 2025

+
Q4 2019 1.3 million +Q3 2025 4.9 million
+
+ The count is anyone who used the language. Students included. + davidslv.uk +
+
+ + From f1ef70749fb7edc5e3bfbddedbbd9e054130fe65 Mon Sep 17 00:00:00 2001 From: David Silva Date: Thu, 27 Aug 2026 22:46:33 +0200 Subject: [PATCH 2/2] Add Hacker Trends as a mention clock next to SlashData Hacker Trends counts Ruby in 45 million Hacker News items from 2007 to 2026: 150,378 mentions, peak February 2013. Rails is a smaller query (28,509, peak January 2013). The same index has Rust's peak in November 2025. SlashData's headcount rose after 2019; HN conversation volume for Ruby peaked thirteen years earlier. Those are different clocks. --- ...-08-28-slashdata-ruby-developer-numbers.md | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/_posts/2026-08-28-slashdata-ruby-developer-numbers.md b/_posts/2026-08-28-slashdata-ruby-developer-numbers.md index f548bf1..d23235a 100644 --- a/_posts/2026-08-28-slashdata-ruby-developer-numbers.md +++ b/_posts/2026-08-28-slashdata-ruby-developer-numbers.md @@ -73,6 +73,28 @@ Other floors that do not depend on SlashData: - **413,156** live websites with a detectable Ruby signature in a July 2026 crawl, [reported by ruby-doc.org](https://ruby-doc.org/blog/websites-made-with-ruby-what-the-data-shows-in-2026/). Backend languages hide, so that is a floor. - RedMonk's Q1 2025 ranking, which uses GitHub and Stack Overflow activity, had Ruby at **#9**. TIOBE, which uses search-engine mentions, had it at **#24** in the same period. +## Hacker News as a mention clock + +[Hacker Trends](https://hackernewstrends.com/?q=ruby) indexes about 45 million Hacker News stories and comments from 2007 to 2026 and counts how often a term appears in the title or the body. That is conversation volume, not a headcount of developers. A quiet year of people shipping Rails apps does not show up. A loud month of comments does. + +[Ruby](https://hackernewstrends.com/trends/ruby) was mentioned **150,378** times. The busiest month was **February 2013**, with 1,431 mentions. The phrase [ruby on rails](https://hackernewstrends.com/trends/ruby-on-rails) is a smaller, cleaner query: **28,509** mentions, peak January 2013 (245 that month). + +| Term | Mentions, 2007–2026 | Peak month | +|---|---|---| +| python | 454,657 | Dec 2022 (4,088) | +| javascript | 308,658 | May 2020 (2,332) | +| java | 285,899 | Apr 2021 (2,247) | +| rust | 270,801 | Nov 2025 (3,725) | +| php | 174,334 | Jun 2012 (1,962) | +| ruby | 150,378 | **Feb 2013 (1,431)** | +| golang | 36,913 | Feb 2021 (358) | + +Go is searched as `golang` because `go` matches too much else. `ruby` has the same problem in the other direction: gems, names, incidental uses. The top stories behind the Ruby line are still the language: Ruby 3.0, Sorbet, RubyLLM, the 2025 RubyGems fight. + +The framework comparison on the same site: [django 60,330](https://hackernewstrends.com/compare/django-vs-ruby-on-rails-vs-laravel) (peak Feb 2013), ruby on rails 28,509 (peak Jan 2013), laravel 12,685 (peak Jan 2022). Django and Rails shared an HN peak in early 2013. Laravel's peak is nine years later. + +SlashData's Ruby headcount rose from 2019 to 2025. Hacker News talked about Ruby most in February 2013. Those clocks are not measuring the same thing. Rust's busiest month on this index is November 2025. Ruby's is thirteen years earlier. + ## What the free papers also cover Besides the bar chart of millions, the language papers talk about: @@ -88,7 +110,7 @@ The useful cuts, Rails versus Ruby, web-only Ruby, country, company size, sit on They have not printed a Rails-only number. They have not printed a "primary language" number. They have not printed the Q1 2026 Ruby headcount in public. -The durable working population in this series is the **2.5 million** band from 2024. That is the figure that lines up with Stack Overflow's professional share applied to SlashData's own professional population. The extra bodies in 2025 are the ones SlashData explains with AI assistants and a few non-web domains. +The durable working population in this series is the **2.5 million** band from 2024. That is the figure that lines up with Stack Overflow's professional share applied to SlashData's own professional population. The extra bodies in 2025 are the ones SlashData explains with AI assistants and a few non-web domains. On Hacker News, the loudest Ruby month was already February 2013. ## Sources @@ -107,3 +129,6 @@ The durable working population in this series is the **2.5 million** band from 2 13. Ruby on Rails, *Rails World 2025 Recap*, 15 September 2025. 814 attendees. [Post](https://rubyonrails.org/2025/9/15/rails-world-2025-recap). 14. Skillenai, Ruby on Rails jobs, 90 days ending 24 August 2026. 2,479 postings. [Page](https://skillenai.com/data/skill/ruby-on-rails). 15. ruby-doc.org, *Websites Made With Ruby*, July 2026 crawl. 413,156 live sites. [Post](https://ruby-doc.org/blog/websites-made-with-ruby-what-the-data-shows-in-2026/). +16. Hacker Trends (Upstash), [Ruby](https://hackernewstrends.com/trends/ruby): 150,378 mentions, peak February 2013 (1,431). Interactive search: [hackernewstrends.com/?q=ruby](https://hackernewstrends.com/?q=ruby). Method: [How it works](https://hackernewstrends.com/how-it-works). About 45 million Hacker News items, 2007–2026, stories and comments, exact mention count per month. +17. Hacker Trends, [ruby on rails](https://hackernewstrends.com/trends/ruby-on-rails): 28,509 mentions, peak January 2013 (245). Comparison [django vs ruby on rails vs laravel](https://hackernewstrends.com/compare/django-vs-ruby-on-rails-vs-laravel): django 60,330, laravel 12,685. +18. Hacker Trends language pages used for the comparison table: [python](https://hackernewstrends.com/trends/python), [javascript](https://hackernewstrends.com/trends/javascript), [java](https://hackernewstrends.com/trends/java), [rust](https://hackernewstrends.com/trends/rust), [php](https://hackernewstrends.com/trends/php), [golang](https://hackernewstrends.com/trends/golang). Totals retrieved 27 August 2026.