Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

一百张旋度图

Posted on 2026-03-16

2020 年春季,我决定着手解决 curl 项目在开发方面缺乏可视化的问题。

代码行数的增长情况如何?随着时间的推移,我们增加了多少命令行选项?随着时间的推移,有多少人每年提交的代码超过 10 次?

我想要一个能从不同角度、视角和探测方式直观地展示项目进展情况的工具。我设想它就像一个复杂的医疗设备,用来监测病人,经验丰富的医生只需看一眼就能评估病人的健康状况。这个病人就是 curl,而医生就是像我一样的开发者。

GitHub 提供了一些基本的图表,但我发现(现在仍然觉得)它们的功能非常有限。我们也对仓库运行了gitstats 命令,所以也得到了一些基本的图表供我们参考。

自己做

我四处搜寻,看看有哪些现成的框架和方案可以作为我这个项目的基础,因为我确信自己需要做大量的定制工作。但我找到的方案都不太符合我的需求。所以我决定自己做一个,至少先从这个开始。

我决定为此生成静态图片,而不是在网站上添加我不熟悉的 JavaScript 框架。静态每日图片对于提升加载速度和 CDN 缓存都非常有利。由于我们已经禁止在网站上运行 JavaScript,这让我省去了与 JavaScript 对抗的麻烦。SVG 图片仍然是基于矢量的,应该可以很好地缩放。

从下载大小的角度来看,SVG 也是一种更好的格式,因为 PNG 对于这类图像几乎总是会生成更大的图像。

最初,我设想的只是少量图表,主要展示时间线,曲线从左下角向右上角延伸。后来证明,我的想法有点天真。

gnuplot

我之前看过别人用 gnuplot 生成的图像和图表,所以对它有一些基本的了解。既然 gitstats 已经用到了 gnuplot,我就决定深入学习一下。

gnuplot是一个已有 40 年历史的命令行工具,可以生成高级图表和数据可视化。它功能强大,但也意味着并非所有功能都简单易懂,但几乎所有图表、绘图和曲线它都能以某种方式处理。

我碰巧在网上遇到了 Lee Phillips,他慷慨地给了我一本他的书的 PDF 版本,书名恰如其分地叫做gnuplot 。这真的很有帮助!

生成用于 gnuplot 的数据

我决定,对于要生成的每个图表,我先用一个脚本收集并格式化数据,然后再用 gnuplot 在另一个独立的步骤中渲染图像。这样便于分步骤处理,也便于后续单独调整,而且如果我觉得某个图表有问题,也很容易查看其背后的数据等等。

我断断续续地在后台工作了大约两周,才得到了第一组可视化 curl 开发状态的图表。

然后,我编写了必要的粘合脚本,将第一个包含现有图表的仪表盘添加到 curl 网站上。该仪表盘为静态 HTML,显示静态 SVG 图像。

2020年3月20日,仪表盘的第一个版本显示了不少于20个独立的图表。我所说的“图表”指的是单独的图像,其中可能包含多个绘图/线条/曲线。第一个版本的仪表盘使用了23个独立的绘图,共计20个图表。

从那时起,我们每天都会在那里展示更新后的图表。

数据

用于绘制图表的所有数据都是公开可用的,我很乐意使用任何可用的数据:

  • git 仓库(源代码、标签等)
  • GitHub 问题
  • 邮件列表存档
  • curl漏洞数据
  • HackerOne 报告
  • 冰壶运动的历史细节

一如既往地公开透明。

然后它长大了

从那以后,我时不时会想到项目中的其他一些内容,比如代码、开发、Git 历史记录、社区、邮件等等,这些内容或许可以可视化,然后我就会往仪表盘里添加一两张图表。六年过去了,最初的二十张图已经扩展到一百张,其中包括近三百个独立的图表。

其中大部分内容都与主题相关,而少数则比较滑稽有趣。可谓良莠不齐。

图表 100

第100张图表于2026年3月15日添加,当时我重新启用了“漏洞版本”图表(该图表于3月16日首次出现在网站上)。它显示了每个历史版本已知的漏洞数量。我之前移除了这张图表,因为它变得难以阅读,但在新版本中,我只显示了每四个版本中的标签,这使得图表看起来比之前更加简洁。

发布版本中的漏洞

今天我们还推出了一种新的 8 列显示模式。

可定制但可用

当然,很多图表都是内部使用的,而且专门针对 curl。这些图表以及整个仪表盘的脚本仍然是专门为 curl 及其特定环境和数据编写的。如果要让它们适用于其他环境,则需要进行一些调整和修改。

所有剧本当然都是公开的,任何人都可以查阅。

我以前也提供网站上所有用于渲染图表的 CSV 文件,方便用户访问,但后来发现这项工作几乎无人问津,所以我又把它删掉了。如果你知道怎么操作,把 .svg 扩展名换成 .csv,仍然可以获取大部分数据。

数据即知识

这些图表和插图不仅有趣,还能帮助我们从不同的角度和视角看待发展,并帮助我们得出结论,或者至少尝试得出结论。作为一个成熟且致力于做好本职工作的项目,我们从这些 curl 数据中学到的一些经验或许可以借鉴并应用到其他项目中。甚至可以作为我们决定下一步行动的依据。

我个人在无数篇博客文章、Mastodon 论坛帖子和公开的 curl 演示文稿中都使用过这些图表。它们有助于展示 curl 的开发进度。

笑话

在 Mastodon 上,我一直开玩笑说自己是个图表狂,而且每当我展示又一个添加到集合中的图表时,总会有人问一个几乎是必问的问题:仪表板上的图表数量图表怎么样?

早期我也编写了类似的脚本,以便立即满足该需求。2026年3月14日,我决定将其作为永久图表添加到仪表板上。

curl 控制面板中的图表

更进一步的玩笑(虽然有些人会觉得这已经不好笑了)是问我要一张图表,显示图表的数量。为了满足大家的需求,我也有这张图表。不过,这张图表并没有显示在仪表盘上:

仪表盘上的图表数量,显示仪表盘上的图表数量

更多图表

我确信随着时间的推移,我会(我们?)添加更多图表。如果您对我们应该展示哪些源代码或开发细节有任何好的想法,请告诉我。

链接

Git 仓库: https://github.com/curl/stats/

每日更新的 curl 控制面板: https://curl.se/dashboard.html

curl gitstats: https://curl.se/gitstats/

原文: https://daniel.haxx.se/blog/2026/03/15/one-hundred-curl-graphs/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Alin Panaitiu
  • Anil Dash
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Big Technology
  • Bits about Money
  • Brandon Skerritt
  • Brent Simmons
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • HeardThat Blog
  • Henrique Dias
  • Herman Martinus
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Li Haoyi
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Maggie Appleton
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mind Matters
  • Mostly metrics
  • Naval Ravikant
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • PostHog
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Slava Akhmechet
  • Small Good Things
  • Steph Ango
  • Stephen Wolfram
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2026 搞英语 → 看世界 | Design: Newspaperly WordPress Theme