<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sab0tajue</title>
    <description>The latest articles on DEV Community by sab0tajue (@sab0tajue).</description>
    <link>https://dev.to/sab0tajue</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3934897%2Fae7de1f3-7438-439e-84e8-1fd12d956dee.png</url>
      <title>DEV Community: sab0tajue</title>
      <link>https://dev.to/sab0tajue</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sab0tajue"/>
    <language>en</language>
    <item>
      <title>I scraped every **Show HN** post from May 2025 to May 2026 that crossed **200 points** and ran a quick analysis. There were 334 of them. Here is what landed.</title>
      <dc:creator>sab0tajue</dc:creator>
      <pubDate>Sat, 16 May 2026 14:25:08 +0000</pubDate>
      <link>https://dev.to/sab0tajue/i-scraped-every-show-hn-post-from-may-2025-to-may-2026-that-crossed-200-points-and-ran-a-5303</link>
      <guid>https://dev.to/sab0tajue/i-scraped-every-show-hn-post-from-may-2025-to-may-2026-that-crossed-200-points-and-ran-a-5303</guid>
      <description>&lt;h2&gt;
  
  
  Top 15 Show HN posts of the year
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;th&gt;Comments&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3346&lt;/td&gt;
&lt;td&gt;965&lt;/td&gt;
&lt;td&gt;Gemini Pro 3 imagines the HN front page 10 years from now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1557&lt;/td&gt;
&lt;td&gt;363&lt;/td&gt;
&lt;td&gt;Jmail – Google Suite for Epstein files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1539&lt;/td&gt;
&lt;td&gt;197&lt;/td&gt;
&lt;td&gt;I'm an airline pilot – I built interactive graphs/globes of my flights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1325&lt;/td&gt;
&lt;td&gt;241&lt;/td&gt;
&lt;td&gt;isometric.nyc – giant isometric pixel art map of NYC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1278&lt;/td&gt;
&lt;td&gt;209&lt;/td&gt;
&lt;td&gt;I built a synth for my daughter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1184&lt;/td&gt;
&lt;td&gt;333&lt;/td&gt;
&lt;td&gt;A store that generates products from anything you type in search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;1145&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;td&gt;I spent 6 years building a ridiculous wooden pixel display&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;1094&lt;/td&gt;
&lt;td&gt;144&lt;/td&gt;
&lt;td&gt;Term.everything – Run any GUI app in the terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;1032&lt;/td&gt;
&lt;td&gt;323&lt;/td&gt;
&lt;td&gt;I recreated Windows XP as my portfolio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1030&lt;/td&gt;
&lt;td&gt;263&lt;/td&gt;
&lt;td&gt;Tinder but it's only pictures of my wife and I can only swipe right&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1003&lt;/td&gt;
&lt;td&gt;361&lt;/td&gt;
&lt;td&gt;Kitten TTS – 25MB CPU-Only, Open-Source TTS Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;964&lt;/td&gt;
&lt;td&gt;187&lt;/td&gt;
&lt;td&gt;A game where you build a GPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;958&lt;/td&gt;
&lt;td&gt;495&lt;/td&gt;
&lt;td&gt;Ten years of running every day, visualized&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;935&lt;/td&gt;
&lt;td&gt;234&lt;/td&gt;
&lt;td&gt;Draw a fish and watch it swim with the others&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;915&lt;/td&gt;
&lt;td&gt;134&lt;/td&gt;
&lt;td&gt;I built a tiny LLM to demystify how language models work&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Almost all of them are personal projects from individual builders. No SaaS launches in the top 15. No corporate product reveals. Just hobbyists with a story.&lt;/p&gt;

&lt;h2&gt;
  
  
  github.com is the dominant domain on Show HN
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Posts that crossed 200 pts&lt;/th&gt;
&lt;th&gt;Avg points&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;github.com&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;134&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;334&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;huggingface.co&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;471&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gitlab.com&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;330&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;134 out of 334 successful Show HN posts pointed straight at a github.com URL — about 40%.&lt;/strong&gt; No fancy landing page, no marketing site, just &lt;code&gt;README.md&lt;/code&gt; doing the selling.&lt;/p&gt;

&lt;p&gt;If you are about to ship a Show HN, the data says you can absolutely point at the repo. A polished landing page will not save a weak idea, and a strong README will not be punished for being on github.com.&lt;/p&gt;

&lt;h2&gt;
  
  
  What were the top github.com Show HN's actually about?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Term.everything&lt;/strong&gt; – run any GUI app in the terminal (1094 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kitten TTS&lt;/strong&gt; – 25MB CPU-only open-source TTS model (1003 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A tiny LLM to demystify how language models work&lt;/strong&gt; (915 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workout.cool&lt;/strong&gt; – open-source fitness coaching platform (827 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Needle&lt;/strong&gt; – distilling Gemini tool calling into a 26M model (751 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unregistry&lt;/strong&gt; – &lt;code&gt;docker push&lt;/code&gt; directly to servers without a registry (726 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChartGPU&lt;/strong&gt; – WebGPU-powered charting library (670 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whispering&lt;/strong&gt; – open-source local-first dictation (591 pts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatCable&lt;/strong&gt; – tiny menu bar app for inspecting USB-C cables (566 pts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern is clear: small, single-purpose, often local-first, often open-source. Tools developers might actually use tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Most-mentioned keywords in titles
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Keyword&lt;/th&gt;
&lt;th&gt;Posts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;open-source / open source&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;browser&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;agent&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AI/LLM/Claude/agent show up in roughly 50 of the 334 top posts. The "open-source" framing is more popular than the platform-specific ones (macOS, Rust). The browser is having a moment, with 17 posts about browser-related projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aggregates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;334 Show HN posts crossed 200 points&lt;/li&gt;
&lt;li&gt;Total: 132,288 points and 44,998 comments&lt;/li&gt;
&lt;li&gt;325 unique authors (most made it to the leaderboard once)&lt;/li&gt;
&lt;li&gt;187 unique domains&lt;/li&gt;
&lt;li&gt;Median Engagement Score: 70 / 100&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reproduce on your own data
&lt;/h2&gt;

&lt;p&gt;I packaged the analysis as an Apify Actor — search the entire HN archive by query, tags, or date range, or just capture the live front page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apify.com/kremkov-stanislav/hackernews-insights" rel="noopener noreferrer"&gt;Hacker News Insights on Apify Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code (MIT): &lt;a href="https://github.com/sab0tajue/hackernews-insights" rel="noopener noreferrer"&gt;github.com/sab0tajue/hackernews-insights&lt;/a&gt;. Engagement Score formula is in &lt;code&gt;src/insights.py&lt;/code&gt;, around 30 lines.&lt;/p&gt;

&lt;p&gt;Tell me what other slices you would like to see. Show HN of the last 3 months? Specific keyword cohorts? Drop a comment and I will run it.&lt;/p&gt;

&lt;p&gt;Related: I previously analyzed &lt;a href="https://dev.to/sab0tajue/i-analyzed-200-popular-python-repos-12-of-them-have-a-bus-factor-of-1-fastapi-whisper-3mnq"&gt;200 popular Python repos on GitHub&lt;/a&gt; and the &lt;a href="https://dev.to/sab0tajue"&gt;top 100 PyPI packages for supply-chain risk&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>sideprojects</category>
      <category>webscraping</category>
    </item>
    <item>
      <title>Top 100 PyPI packages have 1502 open advisories - I scanned them</title>
      <dc:creator>sab0tajue</dc:creator>
      <pubDate>Sat, 16 May 2026 14:10:20 +0000</pubDate>
      <link>https://dev.to/sab0tajue/top-100-pypi-packages-have-1502-open-advisories-i-scanned-them-35dd</link>
      <guid>https://dev.to/sab0tajue/top-100-pypi-packages-have-1502-open-advisories-i-scanned-them-35dd</guid>
      <description>&lt;p&gt;I built a small Apify Actor that joins PyPI, pypistats.org, Google deps.dev, and OSV.dev and rolls them into one row per package: download trends, dependency graph depth, release cadence, license, and &lt;strong&gt;known vulnerabilities&lt;/strong&gt; with severity. Each package gets a transparent &lt;strong&gt;Risk Score 0 to 100&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then I ran it across &lt;strong&gt;101 of the most-downloaded Python packages&lt;/strong&gt;. Aggregate result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1,502 open advisories&lt;/strong&gt; across the set&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;789&lt;/strong&gt; of them are &lt;strong&gt;HIGH severity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Combined &lt;strong&gt;51,110,969,391 downloads / month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;48 of 101&lt;/strong&gt; packages have no explicit license field declared in their PyPI metadata&lt;/li&gt;
&lt;li&gt;Median Risk Score across the set: &lt;strong&gt;20 / 100&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every Python project on the planet pulls a chunk of these into production. Below are the highlights.&lt;/p&gt;




&lt;h2&gt;
  
  
  Most HIGH severity advisories (open)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Latest&lt;/th&gt;
&lt;th&gt;HIGH&lt;/th&gt;
&lt;th&gt;Open total&lt;/th&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tensorflow&lt;/td&gt;
&lt;td&gt;2.21.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;412&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;676&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td&gt;6.0.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;96&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;275&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pillow&lt;/td&gt;
&lt;td&gt;12.2.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;59&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;118&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;langchain&lt;/td&gt;
&lt;td&gt;1.3.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;urllib3&lt;/td&gt;
&lt;td&gt;2.7.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp&lt;/td&gt;
&lt;td&gt;3.13.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transformers&lt;/td&gt;
&lt;td&gt;5.8.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cryptography&lt;/td&gt;
&lt;td&gt;48.0.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapy&lt;/td&gt;
&lt;td&gt;2.15.2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pip&lt;/td&gt;
&lt;td&gt;26.1.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few are surprising. pip is everyone's bootstrap tool. cryptography is the one library you trust by name. Both ship with HIGH severity advisories that have not been resolved across all referenced versions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Most open advisories regardless of severity
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Open advisories&lt;/th&gt;
&lt;th&gt;Downloads / month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;tensorflow&lt;/td&gt;
&lt;td&gt;676&lt;/td&gt;
&lt;td&gt;22,248,213&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td&gt;275&lt;/td&gt;
&lt;td&gt;48,919,109&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pillow&lt;/td&gt;
&lt;td&gt;118&lt;/td&gt;
&lt;td&gt;458,766,714&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;568,817,528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;langchain&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;242,406,997&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;urllib3&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;1,617,997,614&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cryptography&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;1,183,622,768&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Twisted&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;11,978,196&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;transformers&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;146,255,058&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pip&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;663,706,472&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Note: an open advisory does not mean every version is broken. Most advisories are pinned to specific affected version ranges. The number is a measure of historical attack surface, not current exploitability. Still, it is a useful signal of how heavily a package has been audited and how active its threat model is.&lt;/p&gt;




&lt;h2&gt;
  
  
  Highest Risk Score (composite)
&lt;/h2&gt;

&lt;p&gt;The Risk Score combines: open vulnerabilities, last-release age, license declared yes/no, source URL declared yes/no, total resolved transitive dependencies, and is dampened by very high download counts (many eyes assumption).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Jinja2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;75&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;15 open vulns, last release 436d ago, no license field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;urllib3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30 vulns (16 HIGH), no license field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numpy&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;16 vulns (7 HIGH), no license field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cryptography&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;28 vulns (13 HIGH), no license field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapy&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18 vulns, 36 transitive deps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;275 advisories total&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pip&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;18 vulns, no license field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pillow&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;118 advisories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flask&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8 vulns, 8 deps&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The "no license field" issue keeps popping up. &lt;strong&gt;48 of 101 most-downloaded packages have no license field declared&lt;/strong&gt; in their PyPI metadata. This does not mean the projects are unlicensed - almost all of them have a LICENSE file in the repository - but it does mean automated scanners and SBOM generators may flag them as license-unknown, which causes real procurement headaches at large orgs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stalest top packages
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Last release&lt;/th&gt;
&lt;th&gt;Open advisories&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;vine&lt;/td&gt;
&lt;td&gt;923 days ago&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sniffio&lt;/td&gt;
&lt;td&gt;810 days ago&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;python-dateutil&lt;/td&gt;
&lt;td&gt;805 days ago&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;openpyxl&lt;/td&gt;
&lt;td&gt;686 days ago&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;webdriver-manager&lt;/td&gt;
&lt;td&gt;660 days ago&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;six&lt;/td&gt;
&lt;td&gt;527 days ago&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jinja2&lt;/td&gt;
&lt;td&gt;436 days ago&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rsa&lt;/td&gt;
&lt;td&gt;395 days ago&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Jinja2 going 436 days without a release while sitting on 15 open advisories is the standout. Some of the others are stable-by-design (six, sniffio) and a long gap is fine.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to reproduce / run on your own list
&lt;/h2&gt;

&lt;p&gt;I packaged the audit as an Apify Actor - paste your requirements.txt, get the analysis as a clean JSON dataset row per package.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apify.com/kremkov-stanislav/pypi-package-insights" rel="noopener noreferrer"&gt;PyPI Package Insights on Apify Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code (MIT): &lt;a href="https://github.com/sab0tajue/pypi-package-insights" rel="noopener noreferrer"&gt;github.com/sab0tajue/pypi-package-insights&lt;/a&gt;. The Risk Score formula is in src/insights.py, around 80 lines, intentionally legible - re-weigh it for your threat model.&lt;/p&gt;

&lt;p&gt;If you have a more interesting set of packages to score, drop a comment with the names and I will run it.&lt;/p&gt;

&lt;p&gt;Related: I did the same exercise for &lt;a href="https://dev.to/sab0tajue/i-analyzed-200-popular-python-repos-12-of-them-have-a-bus-factor-of-1-fastapi-whisper-3mnq"&gt;200 popular Python repositories on GitHub&lt;/a&gt; earlier.&lt;/p&gt;

</description>
      <category>python</category>
      <category>security</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
    <item>
      <title>12 huge Python projects on GitHub depend on a single person — I scored 200 of them</title>
      <dc:creator>sab0tajue</dc:creator>
      <pubDate>Sat, 16 May 2026 13:14:28 +0000</pubDate>
      <link>https://dev.to/sab0tajue/i-analyzed-200-popular-python-repos-12-of-them-have-a-bus-factor-of-1-fastapi-whisper-3mnd</link>
      <guid>https://dev.to/sab0tajue/i-analyzed-200-popular-python-repos-12-of-them-have-a-bus-factor-of-1-fastapi-whisper-3mnd</guid>
      <description>&lt;h2&gt;
  
  
  Bus factor = 1: hugely popular projects, single point of failure
&lt;/h2&gt;

&lt;p&gt;A repo's &lt;strong&gt;bus factor&lt;/strong&gt; is the smallest number of top contributors who together hold ≥50% of all contributions. A bus factor of 1 means: one person is the project. If they stop, momentum stalls.&lt;/p&gt;

&lt;p&gt;Out of 200 popular Python projects, &lt;strong&gt;41 have bus factor = 1&lt;/strong&gt;. The most exposed:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;th&gt;Maintainer holding 50%+&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EbookFoundation/free-programming-books&lt;/td&gt;
&lt;td&gt;388,403&lt;/td&gt;
&lt;td&gt;@vhf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;donnemartin/system-design-primer&lt;/td&gt;
&lt;td&gt;348,823&lt;/td&gt;
&lt;td&gt;@donnemartin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vinta/awesome-python&lt;/td&gt;
&lt;td&gt;297,915&lt;/td&gt;
&lt;td&gt;@vinta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTOMATIC1111/stable-diffusion-webui&lt;/td&gt;
&lt;td&gt;163,078&lt;/td&gt;
&lt;td&gt;@AUTOMATIC1111&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;521xueweihan/HelloGitHub&lt;/td&gt;
&lt;td&gt;157,120&lt;/td&gt;
&lt;td&gt;@521xueweihan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;open-webui/open-webui&lt;/td&gt;
&lt;td&gt;137,303&lt;/td&gt;
&lt;td&gt;@tjbck&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comfy-Org/ComfyUI&lt;/td&gt;
&lt;td&gt;113,135&lt;/td&gt;
&lt;td&gt;@comfyanonymous&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shubhamsaboo/awesome-llm-apps&lt;/td&gt;
&lt;td&gt;110,589&lt;/td&gt;
&lt;td&gt;@Shubhamsaboo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;openai/whisper&lt;/td&gt;
&lt;td&gt;99,579&lt;/td&gt;
&lt;td&gt;@jongwook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fastapi/fastapi&lt;/td&gt;
&lt;td&gt;98,245&lt;/td&gt;
&lt;td&gt;&lt;a class="mentioned-user" href="https://dev.to/tiangolo"&gt;@tiangolo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Awesome-lists owning their bus factor is fine. But &lt;strong&gt;FastAPI, ComfyUI, Whisper, open-webui&lt;/strong&gt; are critical infrastructure for a lot of people. Worth keeping in mind when you ship them in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  "Active-looking" but actually dormant
&lt;/h2&gt;

&lt;p&gt;These are not archived, they look maintained on the surface, yet nobody pushed a commit in the last 4 weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;donnemartin/system-design-primer&lt;/strong&gt; — 348k stars, last push 57d ago&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TheAlgorithms/Python&lt;/strong&gt; — 221k stars, no commits in 4w&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AUTOMATIC1111/stable-diffusion-webui&lt;/strong&gt; — 163k stars, last push 75d ago&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ytdl-org/youtube-dl&lt;/strong&gt; — 140k stars, last push 85d ago&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;openai/whisper&lt;/strong&gt; — 99k stars, last push 30d ago&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3b1b/manim&lt;/strong&gt; — 86k stars, last push 27d ago&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some are by design (curated lists, finished tools). Others are slowly going stale.&lt;/p&gt;




&lt;h2&gt;
  
  
  Release cadence extremes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shipping fastest among popular projects:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Avg gap between releases&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FoundationAgents/OpenManus&lt;/td&gt;
&lt;td&gt;0 days&lt;/td&gt;
&lt;td&gt;56,279&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostHog/posthog&lt;/td&gt;
&lt;td&gt;0.2 days&lt;/td&gt;
&lt;td&gt;34,515&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gradio-app/gradio&lt;/td&gt;
&lt;td&gt;0.3 days&lt;/td&gt;
&lt;td&gt;42,600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;langchain-ai/langchain&lt;/td&gt;
&lt;td&gt;0.4 days&lt;/td&gt;
&lt;td&gt;136,866&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;langchain-ai/langgraph&lt;/td&gt;
&lt;td&gt;0.4 days&lt;/td&gt;
&lt;td&gt;32,160&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Slowest cadence at 5k+ stars:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Avg gap&lt;/th&gt;
&lt;th&gt;Stars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;trailofbits/algo&lt;/td&gt;
&lt;td&gt;815 days&lt;/td&gt;
&lt;td&gt;30,229&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;satwikkansal/wtfpython&lt;/td&gt;
&lt;td&gt;698 days&lt;/td&gt;
&lt;td&gt;36,933&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deepfakes/faceswap&lt;/td&gt;
&lt;td&gt;623 days&lt;/td&gt;
&lt;td&gt;55,237&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;swisskyrepo/PayloadsAllTheThings&lt;/td&gt;
&lt;td&gt;552 days&lt;/td&gt;
&lt;td&gt;77,735&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sherlock-project/sherlock&lt;/td&gt;
&lt;td&gt;434 days&lt;/td&gt;
&lt;td&gt;83,392&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A long gap is not automatically bad — finished tools, security playbooks, and content collections do not need weekly releases.&lt;/p&gt;




&lt;h2&gt;
  
  
  What 5000+ star Python projects are about
&lt;/h2&gt;

&lt;p&gt;Top topics across the 200 repos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python              92
ai                  36
llm                 34
deep-learning       21
machine-learning    20
pytorch             18
hacktoberfest       17
openai              17
chatgpt             17
rag                 15
agents              14
ai-agents           13
cli                 11
data-science        11
gpt                 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Python OSS leaderboard in 2026 is overwhelmingly an AI agents / RAG / LLM-app leaderboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  Aggregates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Total stars across the 200 repos: &lt;strong&gt;12,498,901&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total forks: &lt;strong&gt;1,981,076&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Median Health Score: &lt;strong&gt;91 / 100&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;With explicit OSS license: &lt;strong&gt;188 / 200&lt;/strong&gt; (12 repos still have no license — risky to depend on those)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to reproduce / explore your own list
&lt;/h2&gt;

&lt;p&gt;I packaged the analysis as a one-shot Apify Actor — you give it a search query (or a list of &lt;code&gt;owner/repo&lt;/code&gt;) and a free GitHub token, you get one row per repo with all the metrics above plus a transparent breakdown of how the Health Score is computed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apify.com/kremkov-stanislav/github-repo-insights" rel="noopener noreferrer"&gt;GitHub Repository Insights on Apify Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free trial, then $0.005 per analyzed repo. You can also clone the input from this post (&lt;code&gt;language: Python, minStars: 5000, pushedSince: 2025-12-01, maxResults: 200&lt;/code&gt;) and re-run it against any other language or topic.&lt;/p&gt;

&lt;p&gt;If you find more interesting patterns, drop them in the comments — I am curious what your stack looks like.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
