<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tony Bai &#187; Opensource</title>
	<atom:link href="http://tonybai.com/tag/opensource/feed/" rel="self" type="application/rss+xml" />
	<link>https://tonybai.com</link>
	<description>一个程序员的心路历程</description>
	<lastBuildDate>Sun, 12 Apr 2026 22:30:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>拒绝 AI 署名！Go 核心团队在 AIGC 时代划下的“工程红线”</title>
		<link>https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship/</link>
		<comments>https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship/#comments</comments>
		<pubDate>Sun, 15 Feb 2026 00:00:22 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AIAssistedProgramming]]></category>
		<category><![CDATA[AIAuthorship]]></category>
		<category><![CDATA[AIGC]]></category>
		<category><![CDATA[AIGeneratedProgramming]]></category>
		<category><![CDATA[AI生成编程]]></category>
		<category><![CDATA[AI署名]]></category>
		<category><![CDATA[AI辅助编程]]></category>
		<category><![CDATA[BrandolinisLaw]]></category>
		<category><![CDATA[CoAuthoredBy]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[ContributorLicenseAgreement]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[EngineeringRedLine]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Gocoreteam]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Go核心团队]]></category>
		<category><![CDATA[Hallucination]]></category>
		<category><![CDATA[IanLanceTaylor]]></category>
		<category><![CDATA[LegalRisk]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[ResponsibilityBoundary]]></category>
		<category><![CDATA[ReverseBrandolinisLaw]]></category>
		<category><![CDATA[RobPike]]></category>
		<category><![CDATA[RussCox]]></category>
		<category><![CDATA[SoftwareEngineering]]></category>
		<category><![CDATA[SpiralOfMediocrity]]></category>
		<category><![CDATA[代码审查]]></category>
		<category><![CDATA[共同作者]]></category>
		<category><![CDATA[工程红线]]></category>
		<category><![CDATA[布兰多里尼定律]]></category>
		<category><![CDATA[平庸的螺旋]]></category>
		<category><![CDATA[幻觉]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[法律风险]]></category>
		<category><![CDATA[版权]]></category>
		<category><![CDATA[许可证]]></category>
		<category><![CDATA[贡献者许可协议]]></category>
		<category><![CDATA[责任边界]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[逆向布兰多里尼定律]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5892</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship 大家好，我是Tony Bai。 在生成式 AI 狂飙突进的 2026 年，编程似乎变得前所未有的容易。Claude Code、Gemini Cli、Codex等 已经成为开发者的标配。然而，技术便利的背后，模糊的责任边界正在侵蚀软件工程的根基。 近日，在 Go 语言这个以“简单、可靠、高效”著称的开源圣殿里，核心团队被迫画下了一道红线。 起因是一个特殊的 CL（Change List 741504），提交者在描述中赫然写道：“Co-Authored-By: Claude Opus 4.5 &#110;&#111;&#114;&#101;p&#x6c;&#x79;&#x40;&#x61;&#x6e;&#x74;&#104;&#114;&#111;&#112;&#105;c&#x2e;&#x63;&#x6f;&#x6d;”。这行看似“诚实”的署名，瞬间触动了 Go 语言之父 Rob Pike、Ian Lance Taylor 以及 Russ Cox 等大佬的神经。 这不仅仅是一个关于署名权的争论，这是整个开源世界在 AI 时代必须面对的“立宪时刻”：我们该如何划定人类与 AI 在代码创作中的界限？ 本文将深度复盘这场发生在 Go 核心圈的讨论，并解读 Russ Cox 最终定调背后的深意。 触碰红线——潘多拉魔盒的开启 事情的起因简单而诡异。开发者 John S 提交了一个修复 cgo 文档的 CL，并在描述中注明了 Claude Opus [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/go-core-team-rejects-ai-authorship-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship">本文永久链接</a> &#8211; https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship</p>
<p>大家好，我是Tony Bai。</p>
<p>在生成式 AI 狂飙突进的 2026 年，编程似乎变得前所未有的容易。Claude Code、Gemini Cli、Codex等 已经成为开发者的标配。然而，技术便利的背后，模糊的责任边界正在侵蚀软件工程的根基。</p>
<p>近日，在 Go 语言这个以“简单、可靠、高效”著称的开源圣殿里，核心团队被迫画下了一道<strong>红线</strong>。</p>
<p>起因是一个<a href="https://go-review.googlesource.com/c/go/+/741504">特殊的 CL（Change List 741504）</a>，提交者在描述中赫然写道：“Co-Authored-By: Claude Opus 4.5 <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#111;&#58;&#110;&#111;&#114;&#101;p&#x6c;&#x79;&#x40;&#x61;&#x6e;&#x74;&#104;&#114;&#111;&#112;&#105;c&#x2e;&#x63;&#x6f;&#x6d;">&#110;&#111;&#114;&#101;p&#x6c;&#x79;&#x40;&#x61;&#x6e;&#x74;&#104;&#114;&#111;&#112;&#105;c&#x2e;&#x63;&#x6f;&#x6d;</a>”。这行看似“诚实”的署名，瞬间触动了 Go 语言之父 Rob Pike、Ian Lance Taylor 以及 Russ Cox 等大佬的神经。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-core-team-rejects-ai-authorship-2.png" alt="" /></p>
<p>这不仅仅是一个关于署名权的争论，这是整个开源世界在 AI 时代必须面对的“立宪时刻”：我们该如何划定人类与 AI 在代码创作中的界限？</p>
<p>本文将深度复盘<a href="https://groups.google.com/g/golang-dev/c/4Li4Ovd_ehE/m/8L9s_jq4BAAJ">这场发生在 Go 核心圈的讨论</a>，并解读 Russ Cox 最终定调背后的深意。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>触碰红线——潘多拉魔盒的开启</h2>
<p>事情的起因简单而诡异。开发者 John S 提交了一个修复 cgo 文档的 CL，并在描述中注明了 Claude Opus 4.5 是共同作者。</p>
<p>Ian Lance Taylor（Go 泛型的主要设计者之一）率先发难，敏锐地指出了这行字背后潜藏的两个致命法律风险：</p>
<ol>
<li>版权归属：Anthropic（Claude 的母公司）是否对其模型生成的代码拥有版权？</li>
<li>许可证传染：如果 AI 模型是基于非开源或与 Go 不兼容协议的代码训练的，那么它生成的代码是否会污染 Go 的代码库？</li>
</ol>
<p>Robert Griesemer（Go 创始三巨头之一）则从工程角度表达了担忧：</p>
<blockquote>
<p>“如果代码描述是 AI 写的，我们可以删掉那行字。但如果是 Claude 写的代码，我们就有大麻烦了。”</p>
</blockquote>
<p>Griesemer 的担忧直指 AIGC 的核心痛点：幻觉与平庸。他将 AI 现在的状态比作拼写检查器——它可以修正拼写，但它真的懂“修辞”吗？更重要的是，它懂“正确性”吗？</p>
<p>而 Rob Pike（Go 语言之父）的回复依然是那样简洁有力，且带有强烈的不容置疑：</p>
<blockquote>
<p>“这是一个非常危险的滑坡（slippery slope）。我建议第一步简单点：<strong>说不（NO）。</strong>”</p>
</blockquote>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-core-team-rejects-ai-authorship-3.png" alt="" /></p>
<p>Rob Pike 意识到，一旦模糊了这条线，开源社区将面临“人的缺位”。谁来维护这些代码？谁来为 Bug 负责？是一个在那一刻运行的概率模型，还是那个按下 Enter 键的人？</p>
<h2>工程哲学——红线之内的质量守卫</h2>
<p>在长达数日的讨论后，Russ Cox (rsc) 发表了一篇极具分量的总结性邮件，在这封邮件中，他代表 Go 核心团队给出了AI 时代Go项目的AI 政策宣示，并说明了划定这条红线的工程学必要性。</p>
<h3>对抗“逆向布兰多里尼定律”</h3>
<p>互联网上有一条著名的“布兰多里尼定律”（Brandolini&#8217;s law）：反驳胡扯所需要的能量，比产生胡扯所需要的能量大一个数量级。</p>
<p>在编程领域，AI 正在制造同样的困境。Russ 指出：</p>
<blockquote>
<p>“AI 工具诱使许多人陷入一种虚假的信念……人们以前所未有的速度生成大量的代码……就像看着会跳舞的大象，虽然令人惊叹，但通常既慢又笨拙，且难以维护。”</p>
</blockquote>
<p>写代码变容易了，但代码审查（Code Review）变难了。</p>
<p>Go 的设计哲学是“代码被阅读的次数远多于被编写的次数”。而 AIGC 工具颠倒了这一关系。AI 可以在几秒钟内生成数百行看似完美、实则包含微妙 Bug 的代码。如果不划定红线，Go 项目将被机器生成的、无人真正理解的代码淹没。</p>
<h3>拒绝“关闭大脑”的提交</h3>
<p>工具的便捷性往往会让人关闭大脑。当 Claude Code 或 Copilot 给出一段代码时，开发者最自然的反应是“它看起来能跑”，然后直接提交。</p>
<p>这种“关闭大脑（Turn off your brain）”的行为，是工程质量的大敌。</p>
<p>Go 团队划定红线的目的，是强迫开发者回归理性：你必须理解你提交的每一行代码。如果连提交者自己都无法解释代码为什么这么写，那么这段代码就是项目的负资产。</p>
<h2>法律博弈——红线之外的版权黑洞</h2>
<p>除了工程哲学，Russ Cox 明确指出，法律风险是划定这条红线的硬性约束。</p>
<h3>“非人类”没有版权</h3>
<p>根据美国版权局（US Copyright Office）的指导意见，非人类创作的作品不受版权法保护。</p>
<p>这意味着，如果一段代码被认定为完全由 AI 生成，它可能直接进入公有领域（Public Domain），或者其版权归属处于薛定谔状态。</p>
<p>Go 项目要求所有贡献者签署 CLA（贡献者许可协议）。CLA 的核心前提是：贡献者拥有其提交代码的版权，并将其授权给 Google/Go 项目。</p>
<p>如果允许 AI 署名：</p>
<ul>
<li>贡献者没有版权，因此签了 CLA 也没用。</li>
<li>Google 无法获得有效的版权授权。</li>
<li>Go 的代码库中将出现版权状态不明的“黑洞”。</li>
</ul>
<h3>训练数据的原罪</h3>
<p>这是 Robert Engels 在讨论中反复强调的点：AI 是在什么数据上训练的？</p>
<p>如果 Gemini 或 Claude 记住了某段 GPL 或 AGPL 协议的代码，并在微调后将其“吐”了出来，而这段代码被合入了使用 BSD 协议的 Go 项目中，这就构成了严重的侵权风险。</p>
<p>作为顶级开源项目，Go 团队必须规避任何潜在的法律诉讼。“拒绝 AI 署名”是法律上的防火墙。</p>
<h2>最终裁决——Go 团队的“三不”原则</h2>
<p>基于上述工程和法律的双重考量，Russ Cox 代表 Go 团队划定了极其清晰的政策红线。这份裁决不仅适用于 Go，也值得所有技术团队参考。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/go-core-team-rejects-ai-authorship-4.png" alt="" /></p>
<h3>不接受 Co-Authored-By: AI</h3>
<p>Go 项目<strong>不接受</strong>任何由 AI 模型作为共同作者的提交。</p>
<p>这不仅在法律上是无稽之谈（AI 没有法律主体资格），在工程责任上也是一种逃避。</p>
<h3>不接受“无人负责”的代码</h3>
<p>提交者必须对代码负全责。</p>
<p>无论你用了什么工具——是 Vim、IDE 的自动补全，还是 Claude Code——当你提交代码时，你就是在声明：“这是我的作品，我理解它，我为它负责。”</p>
<p>Russ Cox 提出了一个极其严苛的标准：</p>
<blockquote>
<p>“如果你用 AI 生成了代码，你必须像审查同事的代码一样，甚至更加严格地审查它。如果你不能自信地声称‘这是我写的’（即便你用了工具），那么就不要提交它。”</p>
</blockquote>
<h3>作者列表只属于人类</h3>
<p>Go 的贡献者列表（AUTHORS 文件）只包含人类。</p>
<p>开源是人类智慧的结晶。AI 只是工具，是像编译器、Linter 一样的高级工具，但工具不能成为作者。</p>
<h2>前瞻——AI 时代的开发者生存指南</h2>
<p>Go 团队划定的这条红线，实际上厘清了 AI 辅助编程（AI-Assisted）与 AI 生成编程（AI-Generated）的本质区别。</p>
<h3>从“编写者”到“验证者”</h3>
<p>在红线之内，开发者的核心竞争力正在发生转移。</p>
<ul>
<li>过去：熟练掌握语法，快速编写代码。</li>
<li>未来：拥有深厚的系统知识，能够<strong>验证</strong> AI 生成代码的正确性、安全性和性能。</li>
</ul>
<p>正如 Russ 所言：“审查代码比编写代码更难。”未来的高级工程师，本质上都是高级 Code Reviewer。</p>
<h3>警惕“平庸的螺旋”</h3>
<p>LLM 的训练基于海量的互联网数据，这意味着它生成的代码往往是“平均水平”的。但 Go 标准库追求的是“极致的工程化”。</p>
<p>如果过度依赖 AI，代码库的质量将不可避免地滑向平庸。这条红线，是为了保护代码库中人类工程师的审美和坚持。</p>
<h2>小结</h2>
<p>2026 年初的这次讨论，为开源社区树立了一块重要的界碑。</p>
<p>面对 AI 的诱惑，Go 团队选择了一条更为艰难、保守，但也更为负责任的道路。他们划定红线，拒绝了“看起来很快”的捷径，坚守了“简单、可维护、人类可理解”的初心。</p>
<p>这条红线告诉我们：AI 是你的副驾驶，但永远不要让它接管方向盘。因为当车毁人亡时，坐牢的永远是你，而不是那个大语言模型。</p>
<p>资料链接：</p>
<ul>
<li>https://groups.google.com/g/golang-dev/c/4Li4Ovd_ehE/m/8L9s_jq4BAAJ</li>
<li>https://go-review.googlesource.com/c/go/+/741504</li>
</ul>
<hr />
<p><strong>你愿意为 AI 代码负全责吗？</strong></p>
<p>Go 团队要求：如果你不能自信地声称“这是我写的”，就不要提交。在你的日常开发中，你会对 AI 生成的代码进行逐行 Review 吗？你认为“不准 AI 署名”是开源精神的回归，还是对技术进步的保守？</p>
<p>欢迎在评论区分享你的“红线”！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/02/15/go-core-team-rejects-ai-authorship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“退休”大佬的 AI 复出战：为了“好玩”，他写出了火遍全网的 Moltbot</title>
		<link>https://tonybai.com/2026/01/30/clawdbot-author-peter-steinberger-full-interview/</link>
		<comments>https://tonybai.com/2026/01/30/clawdbot-author-peter-steinberger-full-interview/#comments</comments>
		<pubDate>Fri, 30 Jan 2026 00:23:38 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AgenticCommerce]]></category>
		<category><![CDATA[AIAgent]]></category>
		<category><![CDATA[Autonomy]]></category>
		<category><![CDATA[Burnout]]></category>
		<category><![CDATA[ClaudeCode]]></category>
		<category><![CDATA[ClawdBot]]></category>
		<category><![CDATA[CLIFirst]]></category>
		<category><![CDATA[DataLiberation]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[FirstPrinciples]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[LocalFirst]]></category>
		<category><![CDATA[MacMini]]></category>
		<category><![CDATA[MacStudio]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Moltbot]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[PersonalDeveloper]]></category>
		<category><![CDATA[PeterSteinberger]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[RPA]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[WalledGardens]]></category>
		<category><![CDATA[WhatsApp]]></category>
		<category><![CDATA[whisper]]></category>
		<category><![CDATA[个人开发者]]></category>
		<category><![CDATA[命令行优先]]></category>
		<category><![CDATA[围墙花园]]></category>
		<category><![CDATA[图形界面]]></category>
		<category><![CDATA[基金会]]></category>
		<category><![CDATA[工具使用能力]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[数据解放]]></category>
		<category><![CDATA[智能体商业]]></category>
		<category><![CDATA[本地优先]]></category>
		<category><![CDATA[第一性原理]]></category>
		<category><![CDATA[职业倦怠]]></category>
		<category><![CDATA[自主性]]></category>
		<category><![CDATA[自动化流程]]></category>
		<category><![CDATA[长期记忆]]></category>
		<category><![CDATA[隐私]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5792</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/mm/dd/clawdbot-author-peter-steinberger-full-interview 大家好，我是Tony Bai。 在硅谷，每天都有无数个 AI 项目诞生，它们大多有着精美的 Landing Page，有着宏大的融资计划，PPT 里写满了“颠覆行业”。 但最近，一个名为 Clawdbot（现已因商标原因更名为 Moltbot）的项目，却以一种完全不同的姿态闯入了大众视野。没有融资，没有团队，甚至没有商业计划书。它仅仅是一个“退休(财务自由)”的软件大佬，为了给自己“找乐子”而写的一堆代码。 然而，就是这样一个项目，在 GitHub 上一夜之间狂揽 3.2w+ Star，甚至让很多非技术圈的人都跑去 Apple Store 抢购 Mac Mini 来运行它。 它的作者是 Peter Steinberger，著名的 PDF SDK 提供商 PSPDFKit 的创始人。在卖掉公司退休四年后，他因为 AI 找回了当年的热血。 在最近的一次深度访谈中，Peter 毫无保留地分享了他开发 Moltbot 的全过程。这不仅是一个关于工具的故事，更是一份关于“在 AI 时代，个人开发者如何打破大厂垄断，重塑人机交互”的珍贵启示录。 从 Burnout 到 Addiction：找回失去的 Mojo 故事的开始并不美好。 四年前，Peter 卖掉了自己经营了 13 年的公司。长期的创业压力让他彻底 Burnout（职业倦怠）。 “那感觉就像有人把我的 Mojo（魔力/精力）吸干了一样。” 他回忆道。在那之后的三年里，他对编程完全提不起兴趣，哪怕只是坐在电脑前都觉得是一种折磨。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/clawdbot-author-peter-steinberger-full-interview-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/30/clawdbot-author-peter-steinberger-full-interview">本文永久链接</a> &#8211; https://tonybai.com/2026/mm/dd/clawdbot-author-peter-steinberger-full-interview</p>
<p>大家好，我是Tony Bai。</p>
<p>在硅谷，每天都有无数个 AI 项目诞生，它们大多有着精美的 Landing Page，有着宏大的融资计划，PPT 里写满了“颠覆行业”。</p>
<p>但最近，一个名为 <strong>Clawdbot</strong>（现已因商标原因更名为 <strong>Moltbot</strong>）的项目，却以一种完全不同的姿态闯入了大众视野。没有融资，没有团队，甚至没有商业计划书。它仅仅是一个“退休(财务自由)”的软件大佬，为了给自己“找乐子”而写的一堆代码。</p>
<p>然而，就是这样一个项目，在 GitHub 上一夜之间狂揽 <strong>3.2w+ Star</strong>，甚至让很多非技术圈的人都跑去 Apple Store 抢购 Mac Mini 来运行它。</p>
<p>它的作者是 <strong>Peter Steinberger</strong>，著名的 PDF SDK 提供商 PSPDFKit 的创始人。在卖掉公司退休四年后，他因为 AI 找回了当年的热血。</p>
<p>在最近的<a href="https://www.youtube.com/watch?v=qyjTpzIAEkA">一次深度访谈</a>中，Peter 毫无保留地分享了他开发 Moltbot 的全过程。这不仅是一个关于工具的故事，更是一份关于<strong>“在 AI 时代，个人开发者如何打破大厂垄断，重塑人机交互”</strong>的珍贵启示录。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>从 Burnout 到 Addiction：找回失去的 Mojo</h2>
<p>故事的开始并不美好。</p>
<p>四年前，Peter 卖掉了自己经营了 13 年的公司。长期的创业压力让他彻底 <strong>Burnout（职业倦怠）</strong>。</p>
<p>“那感觉就像有人把我的 Mojo（魔力/精力）吸干了一样。” 他回忆道。在那之后的三年里，他对编程完全提不起兴趣，哪怕只是坐在电脑前都觉得是一种折磨。</p>
<p>直到 2025 年 4 月，一切改变了。</p>
<p>Peter 开始接触早期的 AI 工具，特别是 Claude Code 的 Beta 版。那一刻，他感到了久违的兴奋。</p>
<p>“如果你错过了前几年 AI 比较‘智障’的阶段，直接上手现在的工具，你会觉得——<strong>这简直太棒了（Pretty Awesome）！</strong>”</p>
<p>这种兴奋迅速转化为了一种“成瘾（Addiction）”。</p>
<p>但这是一种积极的成瘾。他开始熬夜写代码，甚至会在凌晨 4 点给朋友发消息讨论 AI 的新发现。为了给自己找点乐子，他甚至搞了一些极其荒谬的实验：</p>
<p>比如，他做了一个<strong>“全球最贵的闹钟”</strong>。</p>
<p>他让运行在伦敦服务器上的 AI Agent，通过 SSH 远程登录到他家里的 MacBook，然后自动调大音量来叫醒他。</p>
<p>“这听起来很疯狂，甚至有点杀鸡用牛刀，但这就是我的初衷——<strong>Have Fun（玩得开心）</strong>。”</p>
<p>Peter 认为，学习新技术的最好方式，就是把它当成玩具。当你不再为了 KPI 或融资而写代码，而是为了让 AI 帮你订一份外卖、回一条消息而折腾时，创造力才会真正涌现。</p>
<h2>技术哲学：CLI 是 Agent 的母语</h2>
<p>Moltbot 之所以能打败众多商业化的 AI 助理，核心在于 Peter 对软件架构有着极其深刻的第一性原理认知：</p>
<p><strong>“Don&#8217;t build for humans, build for models.”（别为人构建，为模型构建。）</strong></p>
<p>如果你仔细观察现在的软件世界，你会发现所有的 GUI（图形界面）、按钮、下拉菜单，本质上都是为了适应人类极其有限的带宽（Bandwidth）和注意力而设计的。我们需要视觉引导，因为我们记不住命令。</p>
<p>但 AI 不需要这些。</p>
<p>AI 读得懂 Unix 手册，AI 记得住所有参数。</p>
<p>因此，Moltbot 采用了极其激进的 <strong>CLI-First（命令行优先）</strong> 策略。</p>
<p>Peter 解释道：“你知道什么东西最能 Scale（扩展）吗？是 CLI。你可以写 1000 个小工具，只要它们都有 &#8211;help 文档，Agent 就能瞬间学会如何使用它们。”</p>
<p>在 Moltbot 的架构里，所有的能力都被封装成了原子化的 CLI 工具：</p>
<ul>
<li>想控制 Sonos 音箱？写个 CLI。</li>
<li>想看家里的摄像头？写个 CLI。</li>
<li>想查 Google 地图？写个 CLI。</li>
</ul>
<p>Agent 就像一个万能的系统管理员，它通过组合这些 CLI，获得了在数字世界和物理世界中“行动”的能力。这比那些试图用鼠标点击模拟人类操作的 RPA（自动化流程）要高效、稳定一万倍。</p>
<h2>打破围墙：数据的解放运动</h2>
<p>Moltbot 最让极客们热血沸腾的，是它对 <strong>Big Tech Walled Gardens（大厂围墙花园）</strong> 的宣战。</p>
<p>现在的互联网巨头，都希望把你锁在他们的 App 里。WhatsApp 不开放 API，Spotify 不让你导出数据，外卖软件不让你自动化下单。</p>
<p>但在 Peter 看来，<strong>AI 是打破这些围墙的终极武器。</strong></p>
<p>以 WhatsApp 为例。官方没有给个人开发者提供 API，如果你用商业 API 发太多消息，还会被封号。</p>
<p>Peter 的做法是：<strong>Hack Everything。</strong></p>
<p>他直接通过 Hack 桌面端协议，让 Moltbot 能够接管他的 WhatsApp。当他在旅途中收到朋友的语音消息（比如推荐餐厅）时，Moltbot 会自动：</p>
<ol>
<li>下载语音文件（哪怕它是 Opus 格式）。</li>
<li>调用 ffmpeg 转码。</li>
<li>调用 Whisper 识别文字。</li>
<li>调用 OpenAI 提取餐厅名字和地址。</li>
<li>自动添加到他的 Google Maps 待去清单中。</li>
</ol>
<p>这一切都在后台静默发生。当 Peter 打开地图时，餐厅已经在那了。</p>
<p><strong>“App 终将消亡（Melt away）。”</strong> Peter 在访谈中抛出了这个震聋发聩的观点。</p>
<p>“为什么我还需要一个专门的 Fitness Pal 来记录卡路里？我只需要拍一张汉堡的照片发给我的 Agent。它知道我在麦当劳，它知道汉堡的热量，它会自动更新我的健康数据库，并建议我晚上多跑 2 公里。”</p>
<p>在 <a href="https://tonybai.com/2026/01/14/google-ucp-agentic-commerce-architecture-revolution">Agentic Commerce 时代</a>，用户不再需要在一个个孤立的 App 之间跳来跳去。<strong>所有的 App 都将退化为 Agent 可调用的 API（或被 Hack 成 API）。</strong></p>
<h2>本地优先：隐私与红利的博弈</h2>
<p>Moltbot 的另一个标签是 <strong>Local-first（本地优先）</strong>。</p>
<p>虽然 Peter 自己也用 OpenAI 和 Anthropic 的模型（因为它们目前确实最聪明），但他花了大量精力去适配本地模型（如 MiniMax 2.1）。</p>
<p>为此，他甚至给自己的 Mac Studio 拉满了 512GB 的内存。</p>
<p>为什么要这么折腾？</p>
<p>除了“好玩”，还有一个现实的考量：<strong>Red Tape（繁文缛节）</strong>。</p>
<p>“如果你是一个公司，你想让 AI 访问你的 Gmail，你需要经过极其漫长的合规审核，甚至需要收购一家有牌照的公司。这太荒谬了。”</p>
<p>但如果你在<strong>本地</strong>运行 Agent，这一切都不复存在。</p>
<ul>
<li>数据在你的硬盘里。</li>
<li>模型在你的显卡里。</li>
<li>操作在你的系统里。</li>
</ul>
<p>没有人能阻止你读取自己的邮件，没有人能禁止你分析自己的聊天记录。</p>
<p>Peter 甚至预言，AI Agent 的普及将直接带动高性能硬件（如 Mac Mini）的销量。<strong>“This is the liberation of data.（这是数据的解放。）”</strong></p>
<h2>商业与开源：为爱发电，拒绝收编</h2>
<p>随着 Moltbot 的爆火，无数 VC 挥舞着支票找上门，甚至有大厂想直接收购整个项目（或者招安 Peter）。</p>
<p>对此，Peter 的态度非常潇洒：<strong>“I built this for me.（我是为我自己造的。）”</strong></p>
<p>他已经财务自由，不需要再为了融资去写 PPT，不需要为了增长去牺牲用户体验。</p>
<p>“代码本身已经不值钱了（Code is not worth that much anymore）。在这个 AI 时代，你完全可以把我的代码删了，让 AI 几个月再写一个新的。”</p>
<p>真正值钱的，是<strong>Idea（想法）</strong>，是<strong>Community（社区）</strong>，是<strong>Brand（品牌）</strong>。</p>
<p>他更倾向于将 Moltbot 运作成为一个非营利基金会（Foundation）。他希望这成为一个属于所有人的、开放的、可 hack 的游乐场，而不是某个大厂封闭生态的一部分。</p>
<h2>小结：去构建你的 Loop</h2>
<p>在访谈的最后，Peter 对所有开发者发出了呼吁：</p>
<p><strong>“Don&#8217;t just watch. Build your own agentic loop.”</strong><br />
（别只是看，去构建你自己的智能体闭环。）</p>
<p>Moltbot 只是一个开始。它证明了，一个拥有<strong>长期记忆（Memory）</strong>、<strong>工具使用能力（Tools）</strong>和<strong>自主性（Autonomy）</strong>的个人 Agent，能爆发多么惊人的能量。</p>
<p>在这个时代，限制你的不再是技术门槛，而是你的<strong>想象力</strong>。</p>
<p>去写几个 CLI，去 Hack 几个 API，去给你的 AI 装上“手脚”和“记忆”。</p>
<p>未来，属于那些敢于用 AI 重塑生活的人！</p>
<p>资料链接：https://www.youtube.com/watch?v=qyjTpzIAEkA</p>
<hr />
<p><strong>你的“好玩”项目</strong></p>
<p>Peter 的故事告诉我们，技术最原本的动力是乐趣。如果给你无限的时间和算力，你最想用 AI 为自己做一个什么“好玩”的工具？是全自动点餐助<br />
手，还是你的专属游戏陪练？</p>
<p>欢迎在评论区分享你的脑洞！别管它有没有商业价值，有趣就够了。</p>
<p>如果这篇文章点燃了你久违的代码热血，别忘了点个【赞】和【在看】，并转发给你的极客朋友，一起搞点事情！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/30/clawdbot-author-peter-steinberger-full-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20 年 Java 老店的“背叛”：WSO2 为何高呼“Goodbye Java, Hello Go”？</title>
		<link>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/</link>
		<comments>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/#comments</comments>
		<pubDate>Wed, 28 Jan 2026 23:15:10 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AOT]]></category>
		<category><![CDATA[APIManagement]]></category>
		<category><![CDATA[API管理]]></category>
		<category><![CDATA[ArchitectureShift]]></category>
		<category><![CDATA[BackendDevelopment]]></category>
		<category><![CDATA[Ballerina]]></category>
		<category><![CDATA[BFF]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[CNCF]]></category>
		<category><![CDATA[ConcurrencyPrimitives]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[GarbageCollection]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoLanguage]]></category>
		<category><![CDATA[Go语言]]></category>
		<category><![CDATA[GraalVM]]></category>
		<category><![CDATA[IdentityAuthentication]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[MemoryBloat]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[middleware]]></category>
		<category><![CDATA[OpenChoreo]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[ProjectLoom]]></category>
		<category><![CDATA[serverless]]></category>
		<category><![CDATA[SoftwareServer]]></category>
		<category><![CDATA[StartupSpeed]]></category>
		<category><![CDATA[StaticBinary]]></category>
		<category><![CDATA[VirtualThreads]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[中间件]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[内存膨胀]]></category>
		<category><![CDATA[后端开发]]></category>
		<category><![CDATA[启动速度]]></category>
		<category><![CDATA[垃圾回收]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[容器化]]></category>
		<category><![CDATA[并发原语]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[微服务]]></category>
		<category><![CDATA[提前编译]]></category>
		<category><![CDATA[架构变迁]]></category>
		<category><![CDATA[虚拟线程]]></category>
		<category><![CDATA[身份认证]]></category>
		<category><![CDATA[软件服务器]]></category>
		<category><![CDATA[静态二进制]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5785</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift 大家好，我是Tony Bai。 “当我们 2005 年创办 WSO2 时，开发服务端企业级基础设施的正确语言毫无疑问是：Java。然而，当我们走过第 20 个年头并展望未来时，情况已经变了。” 近日，全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《Goodbye Java, Hello Go!》。 这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者，WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天，他们会做出如此激进的转向？Java 真的不适合未来了吗？Go 到底赢在哪里？ 让我们深入剖析这背后的技术逻辑、架构变迁与社区的激烈争议。 时代的变迁——从“服务器”到“函数” WSO2 的转向并非一时冲动，而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁： “服务器”概念的消亡 在 2010 年代之前，中间件是以独立“服务器”（Server）的形式交付的。 应用服务器 (App Servers)：如 WebLogic, WebSphere, Tomcat。 企业服务总线 (ESB)：集成了各种协议适配器的庞然大物。 业务流程服务器 (Process Servers)：管理长周期的业务状态。 那是一个“重量级”的时代。你部署一个服务器，然后把你的业务逻辑（WAR 包、JAR 包）扔进去运行。这正是 Java 和 JVM [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/wso2-goodbye-java-hello-go-tech-stack-shift-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift">本文永久链接</a> &#8211; https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift</p>
<p>大家好，我是Tony Bai。</p>
<p>“当我们 2005 年创办 WSO2 时，开发服务端企业级基础设施的正确语言毫无疑问是：Java。然而，当我们走过第 20 个年头并展望未来时，情况已经变了。”</p>
<p>近日，全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《<a href="https://wso2.com/library/blogs/goodbye-java-hello-go">Goodbye Java, Hello Go!</a>》。</p>
<p>这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者，WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天，他们会做出如此激进的转向？Java 真的不适合未来了吗？Go 到底赢在哪里？</p>
<p>让我们深入剖析这背后的技术逻辑、架构变迁与<a href="https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/">社区的激烈争议</a>。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>时代的变迁——从“服务器”到“函数”</h2>
<p>WSO2 的转向并非一时冲动，而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁：</p>
<h3>“服务器”概念的消亡</h3>
<p>在 2010 年代之前，中间件是以独立“服务器”（Server）的形式交付的。</p>
<ul>
<li>应用服务器 (App Servers)：如 WebLogic, WebSphere, Tomcat。</li>
<li>企业服务总线 (ESB)：集成了各种协议适配器的庞然大物。</li>
<li>业务流程服务器 (Process Servers)：管理长周期的业务状态。</li>
</ul>
<p>那是一个“重量级”的时代。你部署一个服务器，然后把你的业务逻辑（WAR 包、JAR 包）扔进去运行。这正是 Java 和 JVM 的黄金时代——JVM 作为一个强大的运行时环境，提供了热加载、动态管理、JIT 优化等一系列高级功能，完美匹配了这种“长时间运行、多应用共享”的服务器模式。</p>
<p>然而，容器化时代终结了这一切。</p>
<p>现在的“服务器”不再是一个独立的实体，而变成了一个<strong>库 (Library)</strong>。</p>
<ul>
<li>你的业务逻辑不再是“寄生”在服务器里，而是包含了服务器。</li>
<li>整个应用打包成一个 Docker 镜像，作为一个独立的进程运行。</li>
<li>任务完成后，容器销毁，进程结束。</li>
</ul>
<p>在 WSO2 看来，“独立软件服务器的时代已经结束了”。这对于 Java 来说，是一个底层逻辑的打击。</p>
<h3>生命周期：从“月”到“毫秒”</h3>
<p>在过去，一个服务器启动慢点没关系，因为它一旦启动，可能会运行数月甚至数年。JVM 的 JIT（即时编译）机制通过预热来换取长期运行的高性能，这是一种非常合理的权衡。</p>
<p>但在 Kubernetes 和 Serverless 主导的今天，服务器变得极度短暂 (Ephemeral)。</p>
<ul>
<li>容器根据负载自动扩缩容，新实例必须瞬间就绪。</li>
<li>Serverless 函数可能只存活几秒钟。</li>
</ul>
<p>在这种场景下，启动时间就是服务质量 (SLA)。</p>
<p>WSO2 指出：“容器应该在毫秒级内准备好起舞，而不是秒级。” Java 庞大的生态依赖（Spring 初始化、类加载、注解扫描）和 JVM 的启动开销，在云原生环境下显得格格不入。内存膨胀（Memory Bloat）也直接推高了云厂商的账单。</p>
<h3>生态位的错位：修补 vs. 原生</h3>
<p>面对挑战，Java 社区并非无动于衷。<strong>GraalVM Native Image</strong> 试图通过 AOT（提前编译）解决启动速度问题；<strong>Project Loom</strong> 试图通过虚拟线程解决并发资源消耗问题。</p>
<p>但在 WSO2 的架构师们看来，这些努力更像是一种<strong>“追赶式的修补”</strong>。</p>
<blockquote>
<p>“这些解决方案感觉就像是在为一个不同时代设计的语言和运行时进行翻新。”</p>
</blockquote>
<p>GraalVM 虽然强大，但带来了构建时间的剧增、反射的限制以及调试的复杂性。相比之下，Go 语言在设计之初就<strong>原生 (Native)</strong> 地考虑了这些问题：编译即二进制，启动即巅峰，并发即协程。这是一种“原生契合”与“后天适配”的本质区别。</p>
<h2>WSO2 的架构重构——前端不动，后端大换血</h2>
<p>WSO2 并没有盲目地全盘推翻，他们对企业级软件的三层架构（前端、中间层、后端）进行了冷静的评估：</p>
<h3>前端 (Frontend)：维持现状</h3>
<ul>
<li><strong>现状</strong>：Web (JS/TS), iOS (Swift/Flutter), Android (Kotlin/Java)。</li>
<li><strong>未来</strong>：<strong>No Change</strong>。</li>
<li><strong>理由</strong>：前端技术栈受限于终端设备（浏览器、手机 OS），且更新换代极快（“fad-driven”，时尚驱动）。目前没有改变的必要。</li>
</ul>
<h3>中间层 (Middle Tier)：Ballerina 的独角戏</h3>
<ul>
<li><strong>现状</strong>：Java, Ballerina。</li>
<li><strong>未来</strong>：<strong>Ballerina</strong>。</li>
<li><strong>核心逻辑</strong>：这一层通常被称为 BFF (Backend for Frontend)，负责 API 聚合、编排。WSO2 自研的 <strong>Ballerina</strong> 语言正是为此而生，它将网络原语（Network Primitives）作为语言的一等公民，极其适合做集成工作。</li>
</ul>
<h3>后端 (Backend)：Go 与 Python 的双雄会</h3>
<ul>
<li><strong>现状</strong>：Java, Go, NodeJS, Python。</li>
<li><strong>未来</strong>：<strong>Go, Python</strong>。</li>
<li><strong>核心逻辑</strong>：这是基础设施逻辑的核心。Python 将继续统治 AI/ML 领域，而 Go 将彻底接管原本属于 Java 的领地，成为构建高性能、高并发基础设施的首选。</li>
</ul>
<h2>为什么是 Go，而不是 Rust？</h2>
<p>这是一个每个技术决策者都会面临的灵魂拷问：既然要追求性能和原生编译，为什么不选 Rust？它不是更快、更安全吗？</p>
<p>WSO2 的回答展现了极高的工程务实精神。他们确实评估了 Rust，但最终选择了 Go。理由如下：</p>
<h3>抽象层级的匹配</h3>
<ul>
<li><strong>Rust 的战场</strong>：操作系统内核、浏览器引擎、嵌入式设备。这些场景需要对内存布局、生命周期做极致的微操，且进程几乎永不重启。</li>
<li><strong>Go 的战场</strong>：中间件、API 网关、编排系统。</li>
</ul>
<p>WSO2 构建的是<strong>中间件基础设施</strong>（如 API Gateway, Identity Server）。在这个层级，“我们总是比裸金属 (Bare Metal) 高那么一点点”。Go 提供的自动垃圾回收 (GC) 和高效的并发原语，恰好处于这个“甜点”位置。</p>
<h3>避免“过度杀伤” (Overkill)</h3>
<p>Rust 的所有权模型 (Ownership) 和借用检查器 (Borrow Checker) 虽然保证了内存安全，但也带来了极高的学习曲线和开发摩擦。对于大多数企业级业务逻辑来说，Rust 提供的控制力是多余的，而为此付出的开发效率代价是昂贵的。</p>
<h3>云原生生态的引力</h3>
<p>这是一个无法忽视的因素。Go 是云原生的“普通话”。</p>
<p>Kubernetes、Docker、Prometheus、etcd、Terraform…… 几乎所有现代基础设施的基石都是用 Go 构建的。选择 Go，意味着：</p>
<ul>
<li><strong>库的复用</strong>：可以直接调用 K8s 的库，而不是通过 API。</li>
<li><strong>人才的复用</strong>：DevOps 工程师和 SRE 通常都懂 Go，可以无缝参与开发。</li>
<li><strong>社区的共鸣</strong>：更容易融入 CNCF 生态，获得社区贡献。</li>
</ul>
<h2>实战验证——WSO2 的 Go 之旅</h2>
<p>WSO2 并非纸上谈兵，他们在过去十年中已经在多个关键项目中验证了 Go 的能力：</p>
<h3>OpenChoreo (CNCF Sandbox Project)</h3>
<p>这是 WSO2 最具野心的项目之一，一个面向 Kubernetes 的开发者平台（IDP）。</p>
<ul>
<li><strong>挑战</strong>：需要深度集成 K8s，处理复杂的 GitOps 流程，且自身必须轻量、快速。</li>
<li><strong>Go 的价值</strong>：作为 K8s 原生语言，Go 让 OpenChoreo 能够像原生组件一样运行在集群中，资源占用极低。</li>
</ul>
<h3>Ballerina 编译器的彻底重写</h3>
<p>这是一个惊人的决定。Ballerina 语言最初是基于 Java 实现的（运行在 JVM 上）。现在，WSO2 正在用 Go 完全重写 Ballerina 编译器。</p>
<ul>
<li><strong>目标</strong>：摆脱 JVM 的束缚，实现瞬间启动。</li>
<li><strong>新架构</strong>：前端编译器用 Go 编写，直接生成基于 Go 的中间表示 (BIR)，这让 CLI 工具的体验得到了质的飞跃。</li>
</ul>
<h3>Thunder：下一代身份认证平台</h3>
<p>身份认证（IAM）通常处于请求链路的关键路径上，对延迟极其敏感。Thunder 利用 Go 的高并发处理能力，实现了在高负载下的低延迟认证，且在容器化环境中具备极快的冷启动能力。</p>
<h2>社区激辩——理性的探讨与情绪的宣泄</h2>
<p>这篇博文在 Reddit 的 r/golang 板块引发了数百条评论的激烈讨论。这不仅仅是语言之争，更是两种工程文化的碰撞。</p>
<h3>反方阵营：Java 依然是王者</h3>
<ol>
<li>
<p><strong>“这是管理层的愚蠢决定”</strong>：<br />
一位愤怒的网友评论道：“计算资源是廉价的，开发人员的时间才是昂贵的。” 他认为，虽然 Go 节省了内存，但在业务逻辑极其复杂的企业级应用中，Java 强大的 IDE 支持、成熟的设计模式和庞大的生态库能显著降低开发成本。强行切换到 Go，可能会导致开发效率的崩塌。</p>
</li>
<li>
<p><strong>“Java 并没有停滞不前”</strong>：<br />
很多 Java 支持者指出，WSO2 对 Java 的印象似乎还停留在 Java 8 时代。现代 Java (21+) 引入了 <strong>Virtual Threads (Project Loom)</strong>，在并发模型上已经可以与 Go 的 Goroutine 媲美；而 <strong>GraalVM</strong> 的成熟也让 Java 能够编译成原生镜像，启动速度不再是短板。</p>
</li>
<li>
<p><strong>“生态位的不可替代性”</strong>：<br />
在处理遗留系统（如 SOAP, XML, 复杂的事务处理）方面，Java 积累了 20 年的库是 Go 无法比拟的。用 Go 去重写这些复杂的业务逻辑，无异于“重新发明轮子”，且容易引入新的 Bug。</p>
</li>
</ol>
<h3>正方阵营：Go 是未来的选择</h3>
<ol>
<li>
<p><strong>“运维友好才是真的友好”</strong>：<br />
一位 DevOps 工程师反驳道：“在微服务架构下，运维成本是巨大的。” Go 生成的静态二进制文件（Static Binary）是运维的梦想——没有依赖地狱，没有 JVM 版本冲突，所有东西都打包在一个几 MB 的文件里。这种部署的便捷性，是 Java 永远无法达到的。</p>
</li>
<li>
<p><strong>“简洁是一种防御机制”</strong>：<br />
Java 项目容易陷入“过度设计”的泥潭——层层叠叠的抽象、复杂的继承关系、魔法般的注解。Go 的强制简洁性（没有继承、显式错误处理）虽然写起来啰嗦，但读起来轻松。在人员流动频繁的大型团队中，Go 代码的可维护性往往优于 Java。</p>
</li>
<li>
<p><strong>“云原生的网络效应”</strong>：<br />
正如 WSO2 所言，如果你在写 K8s Controller，如果你在写 Sidecar，如果你在写网关，Go 就是默认语言。这不仅仅是语言特性的问题，这是生态引力的问题。逆流而上使用 Java 编写这些组件，会让你失去整个社区的支持。</p>
</li>
</ol>
<h2>小结：没有终极语言，只有最适合的工具</h2>
<p>WSO2 的声明并非要“杀死” Java。他们明确表示，现有的 Java 产品线将继续得到长期支持。但在新一代的云原生基础设施平台上，他们坚定地选择了 Go。</p>
<p>这一选择揭示了软件行业的一个趋势：通用编程语言的时代似乎正在结束，“领域专用语言”的时代正在到来。</p>
<ul>
<li>做前端？选 TS/JS。</li>
<li>做 AI 模型训练？选 Python。</li>
<li>做操作系统、浏览器或者嵌入式系统？选 C/Rust/C++。</li>
<li>做企业级业务逻辑（尤其是遗留系统）？Java 依然稳健。</li>
<li>做云原生基础设施、中间件、高并发服务？Go 是当之无愧的王者。</li>
</ul>
<p>对于 Gopher 而言，WSO2 的转型是一个强有力的信号：你们选对了赛道。Go 不仅是 Google 的语言，它正在成为定义未来十年企业级基础设施的通用语。</p>
<p>资料链接：</p>
<ul>
<li>https://wso2.com/library/blogs/goodbye-java-hello-go</li>
<li>https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/</li>
</ul>
<hr />
<p><strong>你的技术栈“保卫战”</strong></p>
<p>WSO2 的转身，是时代的缩影，也是个体的写照。在你的团队中，是否也发生过类似的“去 Java 化”或“拥抱 Go”的讨论？你认为在云原生时代，Java 还能守住它的江山吗？</p>
<p>欢迎在评论区分享你的观点或经历，无论是坚守者还是转型者，我们都想听听你的声音！</p>
<p>如果这篇文章引发了你的思考，别忘了点个【赞】和【在看】，并转发给你的架构师朋友，看看他们怎么选！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kelsey Hightower 退休后的冷思考：为什么 10 年过去了，我们还在谈论容器？</title>
		<link>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/</link>
		<comments>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/#comments</comments>
		<pubDate>Thu, 22 Jan 2026 00:23:51 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[apple/container]]></category>
		<category><![CDATA[ChasingHype]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[container]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[FinishingWork]]></category>
		<category><![CDATA[FreeBSDServiceJails]]></category>
		<category><![CDATA[InvisibleTechnology]]></category>
		<category><![CDATA[KelseyHightower]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[LargeLanguageModel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[MichaelCrosby]]></category>
		<category><![CDATA[NativeIntegration]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[PromptEngineer]]></category>
		<category><![CDATA[Standardization]]></category>
		<category><![CDATA[TsunamiCycle]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[上下文]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[原生集成]]></category>
		<category><![CDATA[完成工作]]></category>
		<category><![CDATA[容器]]></category>
		<category><![CDATA[工匠精神]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[提示词工程师]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[标准化]]></category>
		<category><![CDATA[海啸循环]]></category>
		<category><![CDATA[烂尾工程]]></category>
		<category><![CDATA[追逐热点]]></category>
		<category><![CDATA[隐形化]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5760</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age 大家好，我是Tony Bai。 “如果你在 2014 年告诉我，十年后我们还在讨论容器，我会觉得你疯了。但现在是 2025 年，我们依然在这里，谈论着同一个话题。” 在去年中旬举行的 ContainerDays Hamburg 2025 上，早已宣布“退休”的云原生传奇人物 Kelsey Hightower 发表了一场发人深省的主题演讲。在这个 AI 狂热席卷全球的时刻，他没有随波逐流地去谈论大模型，而是回过头来，向所有技术人抛出了一个灵魂拷问： 为什么我们总是在追逐下一个热点，却从来没有真正完成过手头的工作？ 烂尾工程的诅咒——技术圈的“海啸”循环 Kelsey 首先回顾了他职业生涯中经历的三次技术浪潮：Linux 取代 Unix(AIX、Solaris等)、DevOps 的兴起、以及 Docker/Kubernetes 的容器革命。 他敏锐地指出，技术圈似乎陷入了一个无休止的“海啸循环”： 热点爆发：一个新的技术（如 Docker）出现，VC 资金涌入，所有人都在谈论它。 疯狂追逐：为了抢占市场，大家都只做“足够发布”的工作，追求速度而非完美。 未竟而散：还没等这项技术真正成熟、稳定、标准化，下一个热点（如 AI）就来了。于是，半数工程师跳船去追新热点，留下一地鸡毛。 “我们就像一群踢足球的孩子，看到球滚到哪里，所有人就一窝蜂地冲过去，连守门员都离开了球门。结果是，球门大开，后方空虚。” 这就是为什么 10 年过去了，我们还在谈论容器。因为我们当年并没有真正“完成”它。我们留下了无数的复杂性、不兼容和“企业级发行版”，却忘了初衷。 Apple 的“非性感”工作——这才是未来 在演讲中，Kelsey 分享了他最近的一个惊人发现：Apple 正在 macOS 中原生集成容器运行时。 这不是 Docker Desktop，也不是虚拟机套娃，而是操作系统级别的原生支持。这就是 GitHub 上的一个名为 apple/container 的 Apple [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age">本文永久链接</a> &#8211; https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age</p>
<p>大家好，我是Tony Bai。</p>
<p>“如果你在 2014 年告诉我，十年后我们还在讨论容器，我会觉得你疯了。但现在是 2025 年，我们依然在这里，谈论着同一个话题。”</p>
<p>在去年中旬举行的 ContainerDays Hamburg 2025 上，早已宣布“退休”的云原生传奇人物 <strong>Kelsey Hightower</strong> 发表了<a href="https://www.youtube.com/watch?v=x1t2GPChhX8">一场发人深省的主题演讲</a>。在这个 AI 狂热席卷全球的时刻，他没有随波逐流地去谈论大模型，而是回过头来，向所有技术人抛出了一个灵魂拷问：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-2.png" alt="" /></p>
<p><strong>为什么我们总是在追逐下一个热点，却从来没有真正完成过手头的工作？</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/distributed-system-guide-qr.png" alt="" /></p>
<h2>烂尾工程的诅咒——技术圈的“海啸”循环</h2>
<p>Kelsey 首先回顾了他职业生涯中经历的三次技术浪潮：Linux 取代 Unix(AIX、Solaris等)、DevOps 的兴起、以及 Docker/Kubernetes 的容器革命。</p>
<p>他敏锐地指出，技术圈似乎陷入了一个无休止的“海啸循环”：</p>
<ol>
<li><strong>热点爆发</strong>：一个新的技术（如 Docker）出现，VC 资金涌入，所有人都在谈论它。</li>
<li><strong>疯狂追逐</strong>：为了抢占市场，大家都只做“足够发布”的工作，追求速度而非完美。</li>
<li><strong>未竟而散</strong>：还没等这项技术真正成熟、稳定、标准化，下一个热点（如 AI）就来了。于是，半数工程师跳船去追新热点，留下一地鸡毛。</li>
</ol>
<blockquote>
<p>“我们就像一群踢足球的孩子，看到球滚到哪里，所有人就一窝蜂地冲过去，连守门员都离开了球门。结果是，球门大开，后方空虚。”</p>
</blockquote>
<p>这就是为什么 10 年过去了，我们还在谈论容器。因为我们当年并没有真正“完成”它。我们留下了无数的复杂性、不兼容和“企业级发行版”，却忘了初衷。</p>
<h2>Apple 的“非性感”工作——这才是未来</h2>
<p>在演讲中，Kelsey 分享了他最近的一个惊人发现：<strong>Apple 正在 macOS 中原生集成容器运行时。</strong></p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-3.png" alt="" /></p>
<p>这不是 Docker Desktop，也不是虚拟机套娃，而是操作系统级别的原生支持。这就是 GitHub 上的一个名为 <strong>apple/container</strong> 的 Apple 开源项目：</p>
<p><img src="https://tonybai.com/wp-content/uploads/2026/why-are-we-still-talking-about-containers-in-ai-age-4.png" alt="" /></p>
<p>Kelsey 提到 contributors 中有 Docker 元老 Michael Crosby ，Michael Crosby 正在 Apple 做着这件“不性感”但极其重要的事情。</p>
<p>Kelsey 认为，这才是容器技术的<strong>终局</strong>：</p>
<ul>
<li><strong>标准化</strong>：容器运行时将成为像 TCP/IP 协议栈一样的操作系统标配，无论你是 Linux、macOS 还是 Windows。</li>
<li><strong>隐形化</strong>：你不再需要安装 Docker，不再需要关心运行时。它就在那里，像水和电一样自然。</li>
<li><strong>应用商店的重构</strong>：未来，App Store 分发的可能就是容器镜像，彻底解决依赖冲突和安全沙箱问题。</li>
</ul>
<p>这正是那些没有去追逐 AI 热点，而是选择留在“球门”前的人，正在默默完成的伟大工程。</p>
<h2>关于 AI——不要做“盲目的复制者”</h2>
<p>作为 Google 前员工，Kelsey 对 AI 并不陌生。但他对当前的 LLM 热潮保持着清醒的警惕。</p>
<p>他现场演示了一个有趣的实验：询问一个本地运行的 LLM “FreeBSD Service Jails 需要什么版本？”<br />
*   <strong>AI 的回答</strong>：FreeBSD 13（一本正经的胡说八道）。<br />
*   <strong>真相</strong>：FreeBSD 15（尚未发布）。</p>
<p>Kelsey 指出，现在的 AI 就像一个热心但糊涂的路人，它不懂装懂，只想取悦你。</p>
<p><strong>他的建议是</strong>：</p>
<ol>
<li><strong>不要迷信生成</strong>：不要因为 AI 生成了代码就直接用，就像你不会盲目复制 Stack Overflow 的代码一样。</li>
<li><strong>上下文为王</strong>：AI 不是魔法，它只是一个强大的搜索引擎。如果你想得到正确答案，你必须先给它提供正确的<strong>上下文（Context）</strong>。</li>
<li><strong>先训练自己，再训练模型</strong>：在成为“提示词工程师”之前，先成为一名合格的工程师。只有当你自己深刻理解了问题，你才能判断 AI 的回答是天才还是垃圾。</li>
</ol>
<h2>给技术人的最后忠告</h2>
<p>演讲的最后，Kelsey 回答了关于开源、职业发展和未来的提问。他的几条忠告，值得每一位技术人铭记：</p>
<ul>
<li><strong>关于职业</strong>：“你的职业生涯不应该是一场马拉松，而应该是一场<strong>接力赛</strong>。当你到达巅峰时，想的应该是如何把接力棒交给下一个人，而不是霸占着位置直到倒下。”</li>
<li><strong>关于开源</strong>：“不要被商业公司的许可证游戏迷惑。如果代码是公开的，你可以 fork，可以学习。真正的开源精神在于分享和协作，而不在于谁拥有控制权。”</li>
<li><strong>关于专注</strong>：像那家只做钳子的德国公司（Knipex）一样，专注做好一件事。技术圈不缺追风者，缺的是能够沉下心来，把一项技术打磨到极致、直到它变得“无聊”和“隐形”的工匠。</li>
</ul>
<h2>小结</h2>
<p>Kelsey Hightower 的这场演讲，是对当前浮躁技术圈的一剂清醒剂。</p>
<p>他提醒我们，技术的真正价值，不在于它有多新、多热，而在于它是否真正解决了问题，是否被<strong>完整地</strong>交付了。在所有人都在谈论 AI 的今天，或许我们更应该关注那些被遗忘的“球门”，去完成那些尚未完成的伟大工程。</p>
<p>资料链接：https://www.youtube.com/watch?v=x1t2GPChhX8</p>
<hr />
<p><strong>你的“烂尾”故事</strong></p>
<p>Kelsey 的“海啸循环”论断让人深思。在你的职业生涯中，是否也经历过这种“还没做完旧技术，就被迫去追新热点”的无奈？你认为在这个 AI 时代，我们该如何保持“工匠精神”？</p>
<p>欢迎在评论区分享你的经历或思考！让我们一起在喧嚣中寻找内心的宁静。</p>
<p>如果这篇文章让你停下来思考了片刻，别忘了点个【赞】和【在看】，并转发给那些还在焦虑中奔跑的同行！</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2026, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2026/01/22/why-are-we-still-talking-about-containers-in-ai-age/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>“我曾想付钱给 Google 去工作”—— Russ Cox 深度访谈：Go 的诞生、演进与未来</title>
		<link>https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future/</link>
		<comments>https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future/#comments</comments>
		<pubDate>Wed, 10 Dec 2025 00:10:55 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[ACMByteCast]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AustinClements]]></category>
		<category><![CDATA[BellLabs]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cloudnative]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[KenThompson]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[plan9]]></category>
		<category><![CDATA[programminglanguage]]></category>
		<category><![CDATA[RobertGriesemer]]></category>
		<category><![CDATA[RobPike]]></category>
		<category><![CDATA[RussCox]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[SocialEndeavor]]></category>
		<category><![CDATA[Stability]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[云原生]]></category>
		<category><![CDATA[人工智能]]></category>
		<category><![CDATA[开源社区]]></category>
		<category><![CDATA[抽象层次]]></category>
		<category><![CDATA[样板代码]]></category>
		<category><![CDATA[演进哲学]]></category>
		<category><![CDATA[稳定性]]></category>
		<category><![CDATA[简单性]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[解释器]]></category>
		<category><![CDATA[贝尔实验室]]></category>
		<category><![CDATA[长期价值]]></category>
		<category><![CDATA[领导力传承]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5508</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future 大家好，我是Tony Bai。 他是 Go 语言的第二代掌门人，在长达十余年的时间里，引领着 Go 从一个内部实验项目，成长为云原生时代的霸主。他也是 Plan 9 的资深黑客，贝尔实验室精神的传承者。如今，他已将 Go 的帅印交给了下一代，转身投入到 AI 模型编码能力的研究中。 他就是 Russ Cox。 在 ACM ByteCast 的一场罕见的深度访谈中，Russ Cox 系统性地回顾了他从贝尔实验室的青葱岁月，到创立 Go 语言的初心，再到对 AI 时代编程语言未来的深刻思考。这既是一段个人回忆录，也是一部关于“如何构建持久的技术”的生动史诗，充满了值得每一位 Gopher 细细品味的智慧。 Go 的“前传”——源自贝尔实验室的“简单”基因 Go 语言对“简单”的极致追求，并非凭空而来，它的种子早已在贝尔实验室和 Plan 9 操作系统的沃土中埋下。 Russ Cox 的编程之旅，始于上世纪 90 年代末的贝尔实验室。作为一个高中生，他有幸在那个创造了 Unix 的传奇之地“厮混”，与 Brian Kernighan, Rob Pike, Ken Thompson, Dennis Ritchie 这些“上古巨神”一同午餐、交流。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/russ-cox-interview-go-birth-evolution-future-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future">本文永久链接</a> &#8211; https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future</p>
<p>大家好，我是Tony Bai。</p>
<p>他是 Go 语言的第二代掌门人，在长达十余年的时间里，引领着 Go 从一个内部实验项目，成长为云原生时代的霸主。他也是 Plan 9 的资深黑客，贝尔实验室精神的传承者。如今，他已<a href="https://tonybai.com/2024/10/10/pass-torch-to-go-new-leadership-team">将 Go 的帅印交给了下一代</a>，转身投入到 AI 模型编码能力的研究中。</p>
<p>他就是 Russ Cox。</p>
<p>在 <a href="https://learning.acm.org/bytecast/ep78-russ-cox">ACM ByteCast 的一场罕见的深度访谈</a>中，Russ Cox 系统性地回顾了他从贝尔实验室的青葱岁月，到创立 Go 语言的初心，再到对 AI 时代编程语言未来的深刻思考。这既是一段个人回忆录，也是一部关于“如何构建持久的技术”的生动史诗，充满了值得每一位 Gopher 细细品味的智慧。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/api-design-pattern-and-implementation-qr.png" alt="" /></p>
<h2>Go 的“前传”——源自贝尔实验室的“简单”基因</h2>
<p>Go 语言对“简单”的极致追求，并非凭空而来，它的种子早已在贝尔实验室和 Plan 9 操作系统的沃土中埋下。</p>
<p>Russ Cox 的编程之旅，始于上世纪 90 年代末的贝尔实验室。作为一个高中生，他有幸在那个创造了 Unix 的传奇之地“厮混”，与 Brian Kernighan, Rob Pike, Ken Thompson, Dennis Ritchie 这些“上古巨神”一同午餐、交流。</p>
<blockquote>
<p>“贝尔实验室和 Plan 9 给我最深刻的印记，就是对构建<strong>真正简单</strong>的事物的执着。那里的人们，那是一个小团队，他们在做着雄心勃勃的事情，而完成它们的最好方式，就是从简单的事情开始，构建那些真正坚固可靠的简单事物。”</p>
</blockquote>
<p>这段经历，为他注入了“简单”的 DNA。然而，当他进入 MIT 读研时，他第一次遭遇了“现代 C++”的“恐怖与复杂”。他被当时的业界现状所震惊：多线程不可靠、异步回调横行…… 这让他深信：“一定有更好的方式。”</p>
<h2>Go 的“创世纪”——“让我们做点让自己开心的事”</h2>
<p>2008 年春天，当 Russ Cox 结束学业，准备进入工业界时，已经先行加入 Google 的 Rob Pike, Robert Griesemer 和 Ken Thompson 向他发出了邀请，他们正准备全职启动一个新语言项目。</p>
<p>这个项目的初心，极其纯粹和个人化。</p>
<blockquote>
<p>“我们都曾在 Google 写过大量的 C++ 程序……我们只是再也不想写那种代码了。我们受够了。我们知道有更好的方式，并且我们确信能把它带给 Google 的工程师们。”</p>
<p>“我们想解决的问题是，我们想构建一个能让我们<strong>在 Google 开心地编写程序</strong>的系统。”</p>
</blockquote>
<p><a href="https://tonybai.com/2025/07/03/meet-the-go-team-2012">Go 语言的诞生</a>，并非一次自上而下的战略规划，而是一场由几位顶尖工程师发起的、旨在解决自身痛苦的“自救运动”。他们见识过更好的开发环境（Plan 9, Modula-3, Smalltalk），他们无法忍受现代 C++ 的复杂性。Russ Cox 甚至坦言：“说实话，我当时愿意付钱换取和他们一起工作的机会，而 Google 反而付钱给我。这对我来说是双赢。”</p>
<h2>Go 的“演进哲学”——稳定压倒一切</h2>
<p>从 Plan 9 的“无人问津”，到 Go 的巨大成功，Russ Cox 对开源社区的建设和语言的演进，有着极其深刻的理解。他认为，Go 的成功，很大程度上源于其对<strong>“稳定”</strong>的执着。</p>
<blockquote>
<p>“进步可以有多种形式，一种是不稳定的进步，一种是稳定的进步。我们竭尽全力去寻找稳定的形式，而这通常意味着<strong>做得比人们要求的更少</strong>，但同时又能让他们解决自己的问题。”</p>
</blockquote>
<p>他举了 go test 与 JUnit XML 格式集成的例子。社区曾强烈要求 go test 直接输出 JUnit 格式的 XML。但 Go 团队拒绝了，因为他们不想成为一个复杂 XML 格式的“专家”和“维护者”。</p>
<p><strong>Go 团队的解决方案是</strong>：</p>
<ol>
<li>定义一个极其简单的、稳定的、机器可读的 <strong>JSON 输出格式</strong>。Go 团队只承诺维护这个简单格式的稳定性。</li>
<li>告诉社区：“然后，你们可以自己写一个从这个 JSON 到你们所需 XML 的转换器。现在，<strong>你们可以自己解决自己的问题，而无需等待我们来解决。</strong>”</li>
</ol>
<p>这种“授人以渔”而非“授人以鱼”的哲学，通过提供稳定、正交的底层构建块(build block)，赋能社区在其上构建自己的“进步”，这正是 Go 生态能够健康、蓬勃发展的核心秘诀。</p>
<h2>AI 时代的“灵魂拷问”——我们还需要 Go 吗？</h2>
<p>如今，Russ Cox 的工作重心已转向“理解和提升 AI 模型的编码能力”。对于 AI 是否会取代程序员这个终极问题，他给出了一个充满历史纵深感的、冷静的回答。</p>
<h3>AI 只是进化的又一级台阶</h3>
<p>他认为，AI 与编程语言的关系，是计算机发展史上“抽象层次不断提升”这一宏大叙事的延续。</p>
<ul>
<li><strong>40年代</strong>：我们通过手动连接电线来编程。后来，我们发明了解释器，用“数据”代替了“电线”。</li>
<li><strong>50年代</strong>：我们有了 FORTRAN，用 ax² + bx + c 这样的公式，代替了手写机器指令。</li>
<li><strong>今天</strong>：AI 正在将一些我们曾认为“只有人能做”的工作自动化，比如编写样板代码、调试简单问题。</li>
</ul>
<blockquote>
<p>“我认为 AI 将融入同样的模式……我们会将一些关注点交接出去，然后我们会找到更新、更大的事情来专注。每当我们的能力增长，或者我们将一些工作卸载给机器时，我们的雄心也会随之增长。”</p>
</blockquote>
<p>AI 不会让我们失业，它只会让我们站到更高的起点，去挑战更宏大的问题。</p>
<h3>编程语言不会消亡，清晰性永恒</h3>
<p>Russ Cox 坚信，无论 AI 如何发展，<strong>人类可读、行为确定的编程语言都不会消亡。</strong></p>
<blockquote>
<p>“英语不会成为编程语言，因为它的歧义性太高了……最终，我们描述的依然是一门编程语言。”</p>
<p>“拥有一门人类可以阅读、理解的编程语言，这一点仍然至关重要。这样，当计算机行为不端时，你可以看着代码说：‘哦，我明白了为什么在这些指令下，它没有做正确的事。’”</p>
</blockquote>
<p>AI 可能会帮助我们编写代码，但<strong>代码本身</strong>，作为人与机器之间那个最基础、最可靠的契约，其地位无可替代。</p>
<h3>Go 在 AI 时代的定位</h3>
<p>Go 诞生的初衷，是为了解决 20 年前兴起的“多核网络系统”这一巨大挑战。Russ Cox 认为，AI 很有可能在未来提出另一个同等级别的挑战，催生一门全新的语言。</p>
<blockquote>
<p>“也许会有一门专为训练模型而生的新语言。Python 目前表现出色，但很容易相信你可以用一门定制语言做得更好。但整个世界并不会都在训练模型。”</p>
</blockquote>
<p>他认为，世界上有大约 300 万 Go 开发者，但需要编写模型训练代码的人远少于此。这意味着，Go 作为一门为<strong>构建大规模、高并发网络服务</strong>而生的语言，其核心价值主张在 AI 时代不仅没有过时，反而<strong>愈发重要</strong>——因为所有的 AI 模型，最终都需要通过稳定、高效的服务来提供价值。</p>
<h2>给后辈的忠告——如何构建持久的事业？</h2>
<p>在访谈中，Russ Cox 还给所有有志于创造持久价值的年轻工程师，分享了两条极其宝贵的建议：</p>
<ol>
<li>
<p><strong>花时间去真正理解问题</strong>：“很多时候，人们很容易满足于第一个能工作的方案。而我做过的大部分有价值的事，都来自于回头审视一个问题，然后感觉：‘实际上，我还没有完全理解它，我应该再试一次。’” 深入挖掘，直到你发现一个更简单、更根本的解决方案。</p>
</li>
<li>
<p><strong>找到让你兴奋的环境</strong>：“如果你对一件事感到兴奋，你早上醒来就想继续做它，那么你最终能完成的工作，将远超那些只为完成 8 小时任务的人……去找到那些能真正激励你的事情。”</p>
</li>
</ol>
<h2>领导力的传承 —— “最重要的期末考试，是退到一旁”</h2>
<p>在访谈的最后，Russ Cox 分享了他对领导力，特别是开源项目领导力传承的深刻见解。这或许是整场对话中最具智慧和温度的部分。</p>
<p>他认为，开源社区的领导力，本质上是一种<strong>“社会性事业” (social endeavor)</strong>，沟通、协作、建立共识的能力，远比纯粹的编程能力更重要。而一个领导者最终极的考验，并非是他能做出多少贡献，而在于他能否以及何时选择<strong>“退到一旁”</strong>。</p>
<blockquote>
<p>“最终，对领导者来说最重要的期末考试，就是退到一旁，然后说：‘好吧，我甚至不需要再在这里了。现在你可以领导这个了。’ 而这很难。”</p>
</blockquote>
<p>Russ Cox 坦言，做自己擅长的事情是舒适和安全的，但他清醒地认识到，<strong>“项目需要新的想法和新的视角”</strong>。他回顾了 Go 领导权的两次交接：</p>
<ol>
<li><strong>从 Rob Pike 到 Russ Cox</strong>：一次非正式的、渐进的交接。Rob Pike 邀请他加入，并在某个时刻悄然地“把项目交给了我，我突然就负责了”。</li>
<li><strong>从 Russ Cox 到 Austin Clements</strong>：一次更正式的交接。在领导 Go 长达十年之后，Russ Cox 在 2023 年正式将帅印交给了 Austin Clements。</li>
</ol>
<p>他强调，这种传承的意义在于：</p>
<blockquote>
<p>“确保项目能超越某个特定的人而存在，并且也能获得它们所需要的新视角和新想法。”</p>
</blockquote>
<p>这不仅仅是一次权力的交接，更是一位卓越领导者对项目未来的深谋远虑和无私奉献。它确保了 Go 这艘大船，能够在新船长的引领下，继续朝着更广阔的海域航行。</p>
<hr />
<h2>结语</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/russ-cox-interview-go-birth-evolution-future-2.png" alt="" /></p>
<p>从贝尔实验室的“简单”初心，到 Go 语言的“稳定”哲学，再到对 AI 时代的冷静远见，Russ Cox 的这场访谈，为我们描绘了一位顶尖工程师和技术领袖的心路历程。</p>
<p>他的故事告诉我们，构建持久的技术，其秘诀不在于追逐一时的潮流，而在于<strong>深刻地理解问题，坚守核心的原则，并始终保持对创造的热情</strong>。这或许也是 Go 语言之所以能穿越喧嚣，成为今天这个样子的根本原因。</p>
<p>资料链接：https://learning.acm.org/bytecast/ep78-russ-cox</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/10/russ-cox-interview-go-birth-evolution-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MinIO 开源版突发“安乐死”：维护模式开启，社区愤怒，你的数据还安全吗？</title>
		<link>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/</link>
		<comments>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/#comments</comments>
		<pubDate>Thu, 04 Dec 2025 09:40:44 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AGPL]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AIStor]]></category>
		<category><![CDATA[Ceph]]></category>
		<category><![CDATA[CLA]]></category>
		<category><![CDATA[CloudVendors]]></category>
		<category><![CDATA[Garage]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[MaintenanceMode]]></category>
		<category><![CDATA[minio]]></category>
		<category><![CDATA[ObjectStorage]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[RustFS]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SeaweedFS]]></category>
		<category><![CDATA[SSPL]]></category>
		<category><![CDATA[Valkey]]></category>
		<category><![CDATA[VersityGateway]]></category>
		<category><![CDATA[云厂商]]></category>
		<category><![CDATA[商业化]]></category>
		<category><![CDATA[基础设施]]></category>
		<category><![CDATA[对象存储]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[数据安全]]></category>
		<category><![CDATA[替代品]]></category>
		<category><![CDATA[治理模式]]></category>
		<category><![CDATA[社区]]></category>
		<category><![CDATA[维护模式]]></category>
		<category><![CDATA[贡献者许可协议]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5476</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/12/04/minio-enter-maintenance-mode 大家好，我是Tony Bai。 “这个项目目前处于维护状态，不接受新的更改。” 近日，GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO，悄然修改了其 README。这一行看似平淡的声明，标志着 MinIO 开源版实际上已经被宣判了“死刑”。 曾经，MinIO 是自建 S3 兼容存储的首选，是开源界的宠儿。如今，它转身拥抱了企业级市场和 AI 浪潮，留下了一脸错愕的社区用户和无数依赖它的开源项目。这究竟是一场无奈的求生，还是一次蓄谋已久的“收割”？ 突如其来的“维护模式” MinIO 官方在没有任何预警的情况下，将其开源仓库置于“维护模式”。这意味着： 功能冻结：不再接受任何新功能或改进。 社区关门：不再接受 Pull Request，现有的 Issue 和 PR 也不会被积极审查。 安全补丁随缘：关键的安全修复“可能”会根据具体情况进行评估，不再有保证。 官方建议很明确：“对于企业支持和积极维护的版本，请参阅MinIO AIStor。”，而AIStor则是MinIO的企业版对象存储产品。 这一举动在 Hacker News 上引发了轩然大波。用户感到被背叛，一位评论者愤怒地写道：“太恶心了。构建一个产品，通过开源获得动力，等你做完了就完全抛弃它。我为曾经推广这个项目感到羞耻。” 为何“背叛”？—— 商业化的必然与 AI 的诱惑 MinIO 的转向并非无迹可寻。从更换为更严格的 AGPL 协议，到此次事实上的闭源，其背后的逻辑清晰而冷酷： 开源无法变现的困境 MinIO 作为一个高性能、单二进制文件的存储服务，太容易“被集成”了。云厂商、集成商可以轻松地将其打包进自己的产品中获利，而 MinIO 公司却难以从中分一杯羹。AGPL 协议虽然意在限制云厂商的“白嫖”，但也未能从根本上解决其商业化难题。 AI 浪潮的巨大诱惑 MinIO [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/minio-enter-maintenance-mode-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/12/04/minio-enter-maintenance-mode">本文永久链接</a> &#8211; https://tonybai.com/2025/12/04/minio-enter-maintenance-mode</p>
<p>大家好，我是Tony Bai。</p>
<p>“这个项目目前处于维护状态，不接受新的更改。”</p>
<p>近日，GitHub 上拥有近 60k Star、Go 语言生态中最著名的开源对象存储项目——MinIO，<a href="https://github.com/minio/minio/commit/27742d469462e1561c776f88ca7a1f26816d69e2">悄然修改了其 README</a>。这一行看似平淡的声明，标志着 MinIO 开源版实际上已经被宣判了“死刑”。</p>
<p>曾经，MinIO 是自建 S3 兼容存储的首选，是开源界的宠儿。如今，它转身拥抱了企业级市场和 AI 浪潮，留下了一脸错愕的社区用户和无数依赖它的开源项目。这究竟是一场无奈的求生，还是一次蓄谋已久的“收割”？</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/google-adk-in-action-qr.png" alt="" /></p>
<h2>突如其来的“维护模式”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/minio-enter-maintenance-mode-2.png" alt="" /></p>
<p>MinIO 官方在没有任何预警的情况下，将其开源仓库置于“维护模式”。这意味着：</p>
<ul>
<li><strong>功能冻结</strong>：不再接受任何新功能或改进。</li>
<li><strong>社区关门</strong>：不再接受 Pull Request，现有的 Issue 和 PR 也不会被积极审查。</li>
<li><strong>安全补丁随缘</strong>：关键的安全修复“可能”会根据具体情况进行评估，不再有保证。</li>
</ul>
<p>官方建议很明确：<strong>“对于企业支持和积极维护的版本，请参阅<a href="https://github.com/minio/aistor">MinIO AIStor</a>。”</strong>，而AIStor则是MinIO的企业版对象存储产品。</p>
<p>这一举动<a href="https://news.ycombinator.com/item?id=46136023">在 Hacker News 上引发了轩然大波</a>。用户感到被背叛，一位评论者愤怒地写道：“太恶心了。构建一个产品，通过开源获得动力，等你做完了就完全抛弃它。我为曾经推广这个项目感到羞耻。”</p>
<h2>为何“背叛”？—— 商业化的必然与 AI 的诱惑</h2>
<p>MinIO 的转向并非无迹可寻。从更换为更严格的 AGPL 协议，到此次事实上的闭源，其背后的逻辑清晰而冷酷：</p>
<h3>开源无法变现的困境</h3>
<p>MinIO 作为一个高性能、单二进制文件的存储服务，太容易“被集成”了。云厂商、集成商可以轻松地将其打包进自己的产品中获利，而 MinIO 公司却难以从中分一杯羹。AGPL 协议虽然意在限制云厂商的“白嫖”，但也未能从根本上解决其商业化难题。</p>
<h3>AI 浪潮的巨大诱惑</h3>
<p>MinIO 的新产品名为 <strong>AIStor</strong>。这不仅仅是一个改名，更是一次战略转型。在 AI 时代，数据存储是基础设施的核心。MinIO 试图通过重新包装，将自己定位为 AI 基础设施的关键组件，从而向更有付费能力的企业客户（尤其是 AI 公司）靠拢。</p>
<p>正如一位 HN 用户指出的：“他们在上一轮融资中估值 10 亿美元，要想成功退出，必须有深口袋的买家（如 Nvidia, Dell 等）。现在的开源版本只会拖累他们的财报。”</p>
<h2>社区的反击与法律迷局</h2>
<p>MinIO 的做法也引发了法律层面的争议。</p>
<ul>
<li><strong>贡献者的权利</strong>：MinIO 曾要求贡献者签署 CLA（贡献者许可协议）。这意味着 MinIO 公司拥有代码的版权，他们确实有权改变许可证或停止开源。</li>
<li><strong>AGPL 的约束</strong>：但对于那些没有签署 CLA 的早期贡献者，或者包含在代码库中的第三方 AGPL 代码，MinIO 是否有权单方面“私有化”？这是一个复杂的法律问题。</li>
</ul>
<p>更有趣的是，MinIO 过去曾因 AGPL 许可问题积极“维权”，甚至公开指责其他公司违反协议。如今，它自己却试图摆脱开源的束缚，这种双重标准让社区感到讽刺。</p>
<h2>历史的镜像 —— Redis 与 Valkey 的启示</h2>
<p>MinIO 的剧变，让人不由得想起了 2024 年初震动开源界的另一场“地震”——<strong>Redis 修改开源协议事件</strong>。</p>
<p>当时，Redis Inc. 宣布不再遵循开源定义，转而采用限制性更强的 SSPL 协议。这一举动激怒了整个社区和云厂商，Linux 基金会迅速集结了 AWS、Google、Oracle 等巨头，基于 Redis 旧版本 fork 出了 <strong>Valkey</strong>。如今，Valkey 已经展现出取代 Redis 的蓬勃生命力。</p>
<p><strong>MinIO 与 Redis 的异同：</strong></p>
<ul>
<li><strong>相同点</strong>：两者都面临“云厂商困境”。AWS 直接拿 Redis 做 ElastiCache，拿 MinIO 做兼容 S3 的服务，却无需向原厂付费。原厂为了生存，不得不通过协议（AGPL/SSPL）或停止维护来“筑墙”。</li>
<li><strong>不同点</strong>：Redis 选择了<strong>“掀桌子”</strong>（改协议），引发了激烈的对抗和即时的 Fork（Valkey）；而 MinIO 选择了<strong>“冷处理”</strong>（维护模式），这更像是一种温水煮青蛙式的告别。</li>
</ul>
<p><strong>MinIO 会迎来它的“Valkey 时刻”吗？</strong></p>
<p>目前来看，难。对象存储的复杂度和维护成本远高于内存缓存，且市场上已经存在成熟的替代品（如 SeaweedFS, Ceph, Garage）。MinIO 社区或许不会像 Redis 那样迅速集结出一个统一的 Fork，而是会走向<strong>分裂和迁徙</strong>。</p>
<p>对于开发者而言，Redis 和 MinIO 的连续“暴雷”是一个明确的信号：<strong>在基础设施选型时，除了关注技术指标，更要评估其背后的治理模式。由单一商业公司绝对控制的“开源”项目，始终悬着一把达摩克利斯之剑。</strong></p>
<h2>自救指南 —— 寻找 MinIO 的替代品</h2>
<p>对于现有的 MinIO 用户来说，现在是时候寻找备胎了。社区推荐了几个值得关注的替代方案：</p>
<h3>SeaweedFS (Go)</h3>
<ul>
<li><strong>特点</strong>：基于 Haystack 论文实现，擅长处理海量小文件，自带 File 和 S3 接口。</li>
<li><strong>适用场景</strong>：需要高性能小文件存储的场景。</li>
<li><strong>评价</strong>：功能丰富，甚至有点“过度”，但性能强悍。</li>
</ul>
<h3>Ceph (C++)</h3>
<ul>
<li><strong>特点</strong>：存储界的瑞士军刀，功能极其强大，但也极其复杂。</li>
<li><strong>适用场景</strong>：大规模、生产级、需要块存储和文件存储的场景。</li>
<li><strong>评价</strong>：如果你有运维团队，Ceph 是永远不会错的选择。</li>
</ul>
<h3><a href="https://github.com/versity/versitygw/">Versity Gateway (Go)</a></h3>
<ul>
<li><strong>特点</strong>：基于文件的 S3 网关，可以在开发测试环境作为 MinIO 的直接替代品，后端直接对接文件系统。</li>
</ul>
<h3>RustFS (Rust)</h3>
<ul>
<li><strong>特点</strong>：野心勃勃的新晋选手，试图在性能和易用性上直接对标甚至超越 MinIO。</li>
<li><strong>适用场景</strong>：极客尝鲜、非生产环境的测试与评估。</li>
<li><strong>评价</strong>：社区评价两极分化。一方面，它展现了强大的潜力；另一方面，用户反馈其目前<strong>稳定性欠佳</strong>，且项目要求签署 CLA（贡献者许可协议），这让不少刚被 MinIO 伤过心的开发者担心它未来会重演“养肥再杀”的剧本。<strong>“潜力巨大，但需谨慎观望。”</strong></li>
</ul>
<h3><a href="https://github.com/deuxfleurs-org/garage">Garage</a> (Rust)</h3>
<ul>
<li><strong>特点</strong>：轻量级、自包含、专注于在异构硬件和地理分布的网络上运行。</li>
<li><strong>适用场景</strong>：自托管、家庭实验室、中小规模集群。</li>
<li><strong>评价</strong>：“非常稳固，简单可靠，没有风险投资背景。”</li>
</ul>
<h2>小结：开源的尽头是商业，还是背叛？</h2>
<p>MinIO 的故事，是开源软件商业化困境的又一个注脚。它提醒我们：</p>
<ul>
<li><strong>没有免费的午餐</strong>：由 VC 支持的开源项目，最终都要面临盈利的压力。当增长遇到瓶颈，社区往往是被牺牲的第一个对象。</li>
<li><strong>选择开源项目需谨慎</strong>：除了代码质量，项目的治理结构、CLA 协议、背后的商业模式，都是选型时必须考虑的风险因素。</li>
</ul>
<p>MinIO 虽已“离去”，但开源精神不死。也许下一个更好的 MinIO，正在某个 GitHub 的角落里悄然生长。</p>
<p>资料链接：https://news.ycombinator.com/item?id=46136023</p>
<hr />
<p>还在为“复制粘贴喂AI”而烦恼？我的新专栏 <strong>《<a href="http://gk.link/a/12EPd">AI原生开发工作流实战</a>》</strong> 将带你：</p>
<ul>
<li>告别低效，重塑开发范式</li>
<li>驾驭AI Agent(Claude Code)，实现工作流自动化</li>
<li>从“AI使用者”进化为规范驱动开发的“工作流指挥家”</li>
</ul>
<p>扫描下方二维码，开启你的AI原生开发之旅。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/ai-native-dev-workflow-qr.png" alt="" /></p>
<hr />
<p>你的Go技能，是否也卡在了“熟练”到“精通”的瓶颈期？</p>
<ul>
<li>想写出更地道、更健壮的Go代码，却总在细节上踩坑？</li>
<li>渴望提升软件设计能力，驾驭复杂Go项目却缺乏章法？</li>
<li>想打造生产级的Go服务，却在工程化实践中屡屡受挫？</li>
</ul>
<p>继《<a href="http://gk.link/a/10AVZ">Go语言第一课</a>》后，我的《<a href="http://gk.link/a/12yGY">Go语言进阶课</a>》终于在极客时间与大家见面了！</p>
<p>我的全新极客时间专栏 《<a href="http://gk.link/a/12yGY">Tony Bai·Go语言进阶课</a>》就是为这样的你量身打造！30+讲硬核内容，带你夯实语法认知，提升设计思维，锻造工程实践能力，更有实战项目串讲。</p>
<p>目标只有一个：助你完成从“Go熟练工”到“Go专家”的蜕变！ 现在就加入，让你的Go技能再上一个新台阶！</p>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/12/04/minio-enter-maintenance-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从《凡人修仙传》看程序员境界：道友，你修炼到哪一层了？</title>
		<link>https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels/</link>
		<comments>https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels/#comments</comments>
		<pubDate>Mon, 08 Sep 2025 00:07:54 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Architect]]></category>
		<category><![CDATA[Ascension]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[CareerDevelopment]]></category>
		<category><![CDATA[Coder]]></category>
		<category><![CDATA[Codereview]]></category>
		<category><![CDATA[CoreFormation]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[CTO]]></category>
		<category><![CDATA[Cultivation]]></category>
		<category><![CDATA[DatabaseOptimization]]></category>
		<category><![CDATA[DistributedSystems]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[FoundationEstablishment]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[HighConcurrency]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JuniorEngineer]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[LeetCode]]></category>
		<category><![CDATA[LevelDivision]]></category>
		<category><![CDATA[mapreduce]]></category>
		<category><![CDATA[MidlevelEngineer]]></category>
		<category><![CDATA[NascentSoul]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[PrincipalEngineer]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[ProgrammerLevels]]></category>
		<category><![CDATA[programminglanguage]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[QiRefining]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[SeniorEngineer]]></category>
		<category><![CDATA[SoftwareEngineer]]></category>
		<category><![CDATA[SpiritTransformation]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Stackoverflow]]></category>
		<category><![CDATA[SystemArchitecture]]></category>
		<category><![CDATA[TechLead]]></category>
		<category><![CDATA[TechnicalDebt]]></category>
		<category><![CDATA[TechnicalStandard]]></category>
		<category><![CDATA[TechSharing]]></category>
		<category><![CDATA[TensorFlow]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[修仙]]></category>
		<category><![CDATA[元婴]]></category>
		<category><![CDATA[凡人修仙传]]></category>
		<category><![CDATA[分布式]]></category>
		<category><![CDATA[化神]]></category>
		<category><![CDATA[境界划分]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[技术债务]]></category>
		<category><![CDATA[技术分享]]></category>
		<category><![CDATA[技术大牛]]></category>
		<category><![CDATA[技术规范]]></category>
		<category><![CDATA[数据库优化]]></category>
		<category><![CDATA[架构师]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[炼气]]></category>
		<category><![CDATA[码农]]></category>
		<category><![CDATA[神识]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[程序员境界]]></category>
		<category><![CDATA[筑基]]></category>
		<category><![CDATA[系统架构]]></category>
		<category><![CDATA[结丹]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[职业发展]]></category>
		<category><![CDATA[走火入魔]]></category>
		<category><![CDATA[软件工程师]]></category>
		<category><![CDATA[造轮子]]></category>
		<category><![CDATA[韩立]]></category>
		<category><![CDATA[飞升]]></category>
		<category><![CDATA[首席工程师]]></category>
		<category><![CDATA[高并发]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=5131</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels 大家好，我是Tony Bai。 最近《凡人修仙传》的电视剧大火，想必各位道友都有耳闻。鄙人也没忍住，不仅刷完了杨洋主演的网剧，还趁着这股热乎劲儿，一口气在微信读书连读再听地补完了小说的人界篇。 当看到韩立资质平平，相貌普通，却凭着“小绿瓶”、远超常人的心智和不懈的努力，在残酷的修仙界中，历经炼气、筑基、结丹、元婴，终至化神时，我猛然拍案： 这不就是我们程序员升级打怪的真实写照吗？！ 仔细一想，还真是如此。在这“码农”修仙界，人人皆望飞升，脱离 CRUD 的苦海，证得架构大道。韩天尊从一介凡人，在人界一步步逆天修行；我们则从一行“Hello World”开始，在代码的世界里摸爬滚打。从初窥门径到执掌乾坤，其间的艰辛与突破，又何尝不是一场惊心动魄的修行？ 今日，不妨让我们借韩天尊的人界飞升之路，一同探寻这程序员的修仙境界。看看你我，如今身在何处，又该如何“破境”飞升。 第一境：炼气期 &#8211; 程序员学徒 炼气期 此境界的修士初入仙门，刚刚感应到“天地灵气”（编程语言），开始学习吐纳之法（基础语法）。灵力微薄，法术生疏，面对浩如烟海的功法秘籍（API文档），常常感到力不从心，一不小心就可能“走火入魔”（写出 Bug）。 境界特征： 初窥门径，灵力微薄： 刚掌握一门或多门“功法”（Java/Python/Go），但理解不深。能写出基础的业务逻辑，但对底层原理一知半解，如同只会念咒却不知其所以然。 修炼功法，打牢根基： 每日勤修不辍，疯狂“吸收灵石”（看文档、刷 LeetCode、学习框架）。主要任务是完成导师（Mentor）分配的“宗门任务”（小功能、Bug修复），以此换取修炼资源。 依赖法器，难离其身： 严重依赖各种“低阶法器”，如 Stack Overflow、CSDN 和各类 AI 代码助手。一旦“法器”失灵（断网），便束手无策，战力大减。 心魔与瓶颈： 最大的心魔是“我是不是不适合写代码”的自我怀疑。常常会遇到“瓶颈”，一个简单的 Bug 可能要耗费数日才能解决，此时急需一颗“筑基丹”（高人指点）方能突破。 第二境：筑基期 &#8211; 合格的工程师 筑基期 经历无数次“走火入魔”后，终于炼化灵气，开辟丹田，成功“筑基”，体内的“灵力”（知识体系）凝聚成形。从此，你不再是修仙界的炮灰，而是一名真正的修士，可以独立执行任务，在宗门（团队）中有了一席之地。 境界特征： 筑基成功，道途有望： 能够独立负责一个模块或一条业务线。对团队的技术栈了如指掌，是项目的中坚力量，道基稳固。 拥有本命法器： 不再是见什么用什么，而是有了自己得心应手的“本命法器”（精通的框架或工具链），如 Spring 全家桶、Vue/React 生态。使用起来得心应手，威力倍增。 神识初成，洞察秋毫： 开始具备一定的“神识”（Code Review 能力和设计嗅觉），能发现炼气期修士代码中的明显问题，并预见一些潜在的风险，如同神识外放，探查四周。 独立执行宗门任务： 可以独立外出执行有一定难度的“宗门任务”（负责一个完整需求），并能顺利归来，不再需要师兄寸步不离地看护。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels">本文永久链接</a> &#8211; https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels</p>
<p>大家好，我是Tony Bai。</p>
<p>最近《凡人修仙传》的电视剧大火，想必各位道友都有耳闻。鄙人也没忍住，不仅刷完了杨洋主演的网剧，还趁着这股热乎劲儿，一口气在微信读书连读再听地补完了小说的人界篇。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-0.png" alt="" /></p>
<p>当看到韩立资质平平，相貌普通，却凭着“小绿瓶”、远超常人的心智和不懈的努力，在残酷的修仙界中，历经<strong>炼气、筑基、结丹、元婴，终至化神</strong>时，我猛然拍案：</p>
<p><strong>这不就是我们程序员升级打怪的真实写照吗？！</strong></p>
<p>仔细一想，还真是如此。在这“码农”修仙界，人人皆望飞升，脱离 CRUD 的苦海，证得<a href="https://tonybai.com/2025/08/25/documents-the-architects-programming-language/">架构大道</a>。韩天尊从一介凡人，在人界一步步逆天修行；我们则从一行“Hello World”开始，在代码的世界里摸爬滚打。从初窥门径到执掌乾坤，其间的艰辛与突破，又何尝不是一场惊心动魄的修行？</p>
<p>今日，不妨让我们借韩天尊的人界飞升之路，一同探寻这程序员的修仙境界。看看你我，如今身在何处，又该如何“破境”飞升。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/paid/go-micro-column-2025-pr.png" alt="" /></p>
<h2>第一境：炼气期 &#8211; 程序员学徒</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-2.png" alt="" /><br />
<center>炼气期</center></p>
<p>此境界的修士初入仙门，刚刚感应到“天地灵气”（<a href="https://tonybai.com/2024/10/24/cognitive-load-impact-on-programming-language-choice-and-study">编程语言</a>），开始学习吐纳之法（<a href="https://tonybai.com/2024/08/27/a-new-syntax-quiz-after-go-1-18/">基础语法</a>）。灵力微薄，法术生疏，面对浩如烟海的功法秘籍（<a href="https://tonybai.com/2025/07/14/writing-style-guide">API文档</a>），常常感到力不从心，一不小心就可能“走火入魔”（写出 Bug）。</p>
<ul>
<li><strong>境界特征：</strong>
<ul>
<li><strong>初窥门径，灵力微薄：</strong> 刚掌握一门或多门“功法”（Java/Python/Go），但理解不深。能写出基础的业务逻辑，但对底层原理一知半解，如同只会念咒却不知其所以然。</li>
<li><strong>修炼功法，打牢根基：</strong> 每日勤修不辍，疯狂“吸收灵石”（看文档、刷 LeetCode、学习框架）。主要任务是完成导师（Mentor）分配的“宗门任务”（小功能、Bug修复），以此换取修炼资源。</li>
<li><strong>依赖法器，难离其身：</strong> 严重依赖各种“低阶法器”，如 Stack Overflow、CSDN 和各类 AI 代码助手。一旦“法器”失灵（断网），便束手无策，战力大减。</li>
<li><strong>心魔与瓶颈：</strong> 最大的心魔是“我是不是不适合写代码”的自我怀疑。常常会遇到“瓶颈”，一个简单的 Bug 可能要耗费数日才能解决，此时急需一颗“筑基丹”（高人指点）方能突破。</li>
</ul>
</li>
</ul>
<h2>第二境：筑基期 &#8211; 合格的工程师</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-3.png" alt="" /><br />
<center>筑基期</center></p>
<p>经历无数次“走火入魔”后，终于炼化灵气，开辟丹田，成功“筑基”，体内的“灵力”（知识体系）凝聚成形。从此，你不再是修仙界的炮灰，而是一名真正的修士，可以独立执行任务，在宗门（团队）中有了一席之地。</p>
<ul>
<li><strong>境界特征：</strong>
<ul>
<li><strong>筑基成功，道途有望：</strong> 能够独立负责一个模块或一条业务线。对团队的技术栈了如指掌，是项目的中坚力量，道基稳固。</li>
<li><strong>拥有本命法器：</strong> 不再是见什么用什么，而是有了自己得心应手的“本命法器”（精通的框架或工具链），如 Spring 全家桶、Vue/React 生态。使用起来得心应手，威力倍增。</li>
<li><strong>神识初成，洞察秋毫：</strong> 开始具备一定的“神识”（Code Review 能力和设计嗅觉），能发现炼气期修士代码中的明显问题，并预见一些潜在的风险，如同神识外放，探查四周。</li>
<li><strong>独立执行宗门任务：</strong> 可以独立外出执行有一定难度的“宗门任务”（负责一个完整需求），并能顺利归来，不再需要师兄寸步不离地看护。</li>
</ul>
</li>
</ul>
<h2>第三境：结丹期 &#8211; 资深工程师 / 技术骨干</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-4.png" alt="" /><br />
<center>结丹期</center></p>
<p>此乃修行路上的巨大分水岭。修士将全身修为压缩、凝练，在丹田内结成一颗“金丹”（核心技术壁垒）。从此，寿元大增（职业生涯更稳定），神通广大，成为宗门里受人敬仰的长老级人物。</p>
<ul>
<li><strong>境界特征：</strong>
<ul>
<li><strong>凝结金丹，质的飞跃：</strong> 在某一领域（如高并发、分布式、数据库优化）形成了自己深厚的知识体系和方法论，这便是你的“金丹”。你是这个领域的 Go-to Person，是众人眼中可靠的“X哥”、“X姐”。</li>
<li><strong>本命法宝，威力大增：</strong> 不再满足于使用“法器”，开始炼制自己的“法宝”（轮子、工具库、脚手架），供宗门内弟子使用，极大提升了整个团队的战斗力。</li>
<li><strong>开辟洞府，传道授业：</strong> 开始承担起“长老”的职责，为宗门“开辟洞府”（搭建技术分享平台），“传道授业”（指导新人、进行技术培训），培养后辈力量，扩大自己的影响力。</li>
<li><strong>阵法大师，布局为先：</strong> 对小型系统的架构设计信手拈来，如同布置“阵法”，懂得权衡取舍，让系统在未来一段时间内稳固运行，易于扩展。</li>
</ul>
</li>
</ul>
<p><img src="https://tonybai.com/wp-content/uploads/course-card/iamtonybai-banner-2.gif" alt="" /></p>
<h2>第四境：元婴期 &#8211; 架构师 / 首席工程师</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-5.png" alt="" /><br />
<center>元婴期</center></p>
<p>碎丹成婴，道行进入全新天地。修士的“元婴”可以出窍，神游天外，对“天地法则”（系统规律）的理解远超常人。他们是宗门的守护神，轻易不出手，但一言一行都足以影响宗门的兴衰。</p>
<ul>
<li><strong>境界特征：</strong>
<ul>
<li><strong>元婴出窍，神游天外：</strong> 视角早已超越某个具体项目或业务线。他们的“元婴”（思想和影响力）可以“出窍”，俯瞰整个公司的技术体系，思考跨团队、跨领域的平台级问题。</li>
<li><strong>参悟天地法则：</strong> 深入理解分布式、高可用、可扩展性等“天地法则”。他们关注的不再是“术”（具体实现），而是“道”（设计哲学与原则），能在纷繁复杂的需求中，找到最核心的技术模型。</li>
<li><strong>开宗立派，影响一方：</strong> 他们设计的“护山大阵”（核心技术架构、平台），能支撑公司未来数年的发展。他们制定的“门规”（技术规范、研发流程），被众多弟子遵守，深刻影响着整个技术团队的文化和效率。</li>
<li><strong>趋吉避凶，未卜先知：</strong> 具备强大的技术预判能力，能洞察技术趋势，规避未来的技术债务和架构风险，带领宗门走在正确的“修行”道路上，避免误入歧途。</li>
</ul>
</li>
</ul>
<h2>第五境：化神期 &#8211; 技术大牛 / 领域开拓者</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/fanren-xiuxian-programmer-levels-6.png" alt="" /><br />
<center>化神期</center></p>
<p>此境界已是人界的传说，神龙见首不见尾。他们对“道”的理解已返璞归真，能够洞悉本源，甚至创造规则。他们的存在，本身就是一座无法逾越的高山，是无数修士仰望的目标。</p>
<ul>
<li><strong>境界特征：</strong>
<ul>
<li><strong>返璞归真，大道至简：</strong> 他们的言论和代码往往看起来平平无奇，却蕴含着对技术最深刻的理解。能用最简单的语言解释最复杂的原理，如同“大道至简”，一言一行皆是道法自然。</li>
<li><strong>言出法随，创造规则：</strong> 他们不再是规则的遵守者，而是规则的创造者。他们创造的某个开源框架（如 K8s, TensorFlow）、某篇论文（如 MapReduce, DynamoDB），可能开创一个时代，成为无数修士修行的“根本大法”。</li>
<li><strong>破碎虚空，飞升上界：</strong> 他们的影响力早已超越一家公司，成为整个行业的灯塔。他们可能在顶级技术会议上“讲道”，也可能在某个开源社区中“点化”众生。对他们而言，换个公司已不是“跳槽”，而是“破碎虚空”，去往另一个更广阔的世界（灵界）。</li>
</ul>
</li>
</ul>
<h2>小结：路漫漫其修远兮</h2>
<p>修仙之路，道阻且长，行则将至。</p>
<p>从炼气期的迷茫，到筑基期的坚定；从结丹期的突破，到元婴期的洞察，乃至化神期的传说。每一个境界，都离不开日复一日的“打坐”（学习）、一次又一次的“渡劫”（攻克难题），以及那么一点点“机缘”（好的项目和团队以及赛道）。</p>
<p>韩立资质平平，却凭着“勤奋”与“谨慎”二字，终成大道。我辈程序员，或许没有逆天资质，但只要心向大道，勤勉不怠，终有一日，也能突破瓶颈，得见真我。</p>
<p>那么，各位道友，你现在修炼到哪个境界了？在修行路上又遇到了哪些瓶颈或趣事？欢迎在评论区留下你的“道号”和境界，我们一同论道！</p>
<hr />
<p><strong>想系统学习Go，构建扎实的知识体系？</strong></p>
<p>我的新书《<a href="https://book.douban.com/subject/37499496/">Go语言第一课</a>》是你的首选。源自2.4万人好评的极客时间专栏，内容全面升级，同步至Go 1.24。首发期有专属五折优惠，不到40元即可入手，扫码即可拥有这本300页的Go语言入门宝典，即刻开启你的Go语言高效学习之旅！</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/go-primer-published-4.png" alt="" /></p>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/09/08/fanren-xiuxian-programmer-levels/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rob Pike的“抱怨”与Go的“解药”：直面软件膨胀的四大根源</title>
		<link>https://tonybai.com/2025/04/27/rob-pike-on-bloat/</link>
		<comments>https://tonybai.com/2025/04/27/rob-pike-on-bloat/#comments</comments>
		<pubDate>Sat, 26 Apr 2025 22:57:00 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[Bazaar]]></category>
		<category><![CDATA[Bloat]]></category>
		<category><![CDATA[Cathedral]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[deps.dev]]></category>
		<category><![CDATA[FIPS]]></category>
		<category><![CDATA[FIPS-140]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[GDPR]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[go.mod]]></category>
		<category><![CDATA[go.sum]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[gomodule]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[HackerNews]]></category>
		<category><![CDATA[HN]]></category>
		<category><![CDATA[k8s]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[NIH]]></category>
		<category><![CDATA[npm]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[RobPike]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[依赖]]></category>
		<category><![CDATA[内核]]></category>
		<category><![CDATA[分层]]></category>
		<category><![CDATA[加解密]]></category>
		<category><![CDATA[包装]]></category>
		<category><![CDATA[可预测性]]></category>
		<category><![CDATA[复杂性]]></category>
		<category><![CDATA[工具链]]></category>
		<category><![CDATA[工程效率]]></category>
		<category><![CDATA[并发]]></category>
		<category><![CDATA[应用]]></category>
		<category><![CDATA[开发文化]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[抽象]]></category>
		<category><![CDATA[标准库]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[硬件]]></category>
		<category><![CDATA[社区]]></category>
		<category><![CDATA[纪律]]></category>
		<category><![CDATA[组合]]></category>
		<category><![CDATA[继承]]></category>
		<category><![CDATA[维护成本]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[脆弱性]]></category>
		<category><![CDATA[设计哲学]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[过度抽象]]></category>
		<category><![CDATA[运行时]]></category>
		<category><![CDATA[错误处理]]></category>
		<category><![CDATA[集市与大教堂]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=4626</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/04/27/rob-pike-on-bloat 大家好，我是Tony Bai。 今年年初，Go语言之父、UTF-8编码的发明者Rob Pike的一篇题为”On Bloat”（关于膨胀）的演讲幻灯片(在2024年下旬做的)在技术圈，尤其是在Hacker News(以下简称HN)上，引发了相当热烈的讨论。Pike作为业界泰斗，其对当前软件开发中普遍存在的“膨胀”现象的犀利批评，以及对依赖管理、软件分层等问题的深刻担忧，无疑戳中了许多开发者的痛点。 HN上的讨论更是五花八门，开发者们纷纷从自身经历出发，探讨“膨胀”的定义、成因和后果。有人认为膨胀是“层层叠加的间接性”导致简单修改寸步难行；有人认为是“不必要的功能堆砌”；还有人归咎于“失控的依赖树”和“缺乏纪律的开发文化”。 那么，Rob Pike究竟在“抱怨”什么？他指出的软件膨胀根源有哪些？而作为我们Gopher，Go语言的设计哲学和工具链，能否为我们从纯技术层面提供对抗膨胀的“解药”呢？今天，我们就结合Pike的演讲精髓和HN的热议，深入聊聊软件膨胀的四大根源，并从Go的视角尝试寻找一下应对之道。 “膨胀”的真相：远不止代码大小和运行速度 在深入探讨根源之前，我们需要认识到，“膨胀”并不止是字面意义上我们理解的最终编译产物的大小或者应用的运行速度慢，Pike的观点和HN讨论中的“软件膨胀”体现在多个维度： 复杂性失控： 过度的抽象层次、复杂的依赖关系、难以理解的代码路径，使得维护和迭代变得异常困难。 维护成本剧增： 添加新功能的长期维护成本（包括理解、测试、修复Bug、处理兼容性）远超初次实现的成本，但往往被低估。 不可预测性与脆弱性： 庞大且快速变化的依赖树使得我们几乎无法完全理解和掌控软件的实际构成和行为，任何更新都可能引入未知风险。 下面我们具体看看Pike指出的“膨胀”几个核心根源： 根源一：特性 (Features) —— “有用”不等于“值得” Pike 指出，我们不断地为产品添加特性，以使其“更好”。但所有特性都会增加复杂性和成本，而维护成本是最大的那部分，远超初次实现。他警示我们要注意“有用谬论” —— 并非所有“有用”的功能都值得我们付出长期的维护代价。 HN讨论也印证了这一点：功能冗余、为了匹配竞品或满足某个高层“拍脑袋”的想法而添加功能、甚至开发者为了个人晋升而开发复杂功能的现象屡见不鲜。 技术层面：Go的“解药”在哪？ 简洁哲学： Go从设计之初就强调“少即是多”，鼓励用简单的原语组合解决问题，天然地抵制不必要的复杂性。 强大的标准库： Go 提供了功能丰富且高质量的标准库，覆盖了网络、并发、加解密、I/O 等众多领域，减少了对外部特性库的依赖。很多时候，“自己动手，丰衣足食”（使用标准库）比引入一个庞大的外部框架更符合Go的风格。 关注工程效率： Go的设计目标之一是提高软件开发（尤其是大型项目）的工程效率和可维护性，这促使Go社区更关注代码的清晰度和长期成本。 注：技术层面包括语言、工具以及设计思路和方法。 根源二：分层 (Layering) —— 在错误的层级“打补丁” Pike 认为，现代软件层层叠加（硬件 -> 内核 -> 运行时 -> 框架 -> 应用代码），当出现问题时，我们太容易在更高的层级通过包装（wrap）来“修复”问题，而不是深入底层真正解决它。这导致了层层叠叠的“创可贴”，增加了复杂性和维护难度。他列举了ChromeOS文件App的例子，并强调要在正确的层级实现功能和修复。 在HN的讨论中，有开发者描述的修改按钮颜色需要穿透17个文件和多个抽象层的例子，正是这种“错误分层”或“过度抽象”的生动体现。 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-1.jpg" alt="" /></p>
<p><a href="https://tonybai.com/2025/04/27/rob-pike-on-bloat">本文永久链接</a> &#8211; https://tonybai.com/2025/04/27/rob-pike-on-bloat</p>
<p>大家好，我是Tony Bai。</p>
<p>今年年初，Go语言之父、UTF-8编码的发明者Rob Pike的一篇题为”On Bloat”（关于膨胀）的演讲幻灯片(在2024年下旬做的)在技术圈，尤其是在Hacker News(以下简称HN)上，引发了相当热烈的讨论。Pike作为业界泰斗，其对当前软件开发中普遍存在的“膨胀”现象的犀利批评，以及对依赖管理、软件分层等问题的深刻担忧，无疑戳中了许多开发者的痛点。</p>
<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-2.png" alt="" /></p>
<p>HN上的讨论更是五花八门，开发者们纷纷从自身经历出发，探讨“膨胀”的定义、成因和后果。有人认为膨胀是“层层叠加的间接性”导致简单修改寸步难行；有人认为是“不必要的功能堆砌”；还有人归咎于“失控的依赖树”和“缺乏纪律的开发文化”。</p>
<p>那么，Rob Pike究竟在“抱怨”什么？他指出的软件膨胀根源有哪些？而作为我们Gopher，Go语言的设计哲学和工具链，能否为我们从纯技术层面提供对抗膨胀的“解药”呢？今天，我们就结合Pike的演讲精髓和HN的热议，深入聊聊软件膨胀的四大根源，并从Go的视角尝试寻找一下应对之道。</p>
<h2>“膨胀”的真相：远不止代码大小和运行速度</h2>
<p>在深入探讨根源之前，我们需要认识到，“膨胀”并不止是字面意义上我们理解的最终编译产物的大小或者应用的运行速度慢，Pike的观点和HN讨论中的“软件膨胀”体现在多个维度：</p>
<ul>
<li><strong>复杂性失控：</strong> 过度的抽象层次、复杂的依赖关系、难以理解的代码路径，使得维护和迭代变得异常困难。</li>
<li><strong>维护成本剧增：</strong> 添加新功能的长期维护成本（包括理解、测试、修复Bug、处理兼容性）远超初次实现的成本，但往往被低估。</li>
<li><strong>不可预测性与脆弱性：</strong> 庞大且快速变化的依赖树使得我们几乎无法完全理解和掌控软件的实际构成和行为，任何更新都可能引入未知风险。</li>
</ul>
<p>下面我们具体看看Pike指出的“膨胀”几个核心根源：</p>
<h2>根源一：特性 (Features) —— “有用”不等于“值得”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-3.png" alt="" /></p>
<p>Pike 指出，我们不断地为产品添加特性，以使其“更好”。但<strong>所有特性都会增加复杂性和成本</strong>，而<strong>维护成本是最大的那部分</strong>，远超初次实现。他警示我们要注意“有用谬论” —— 并非所有“有用”的功能都值得我们付出长期的维护代价。</p>
<p>HN讨论也印证了这一点：功能冗余、为了匹配竞品或满足某个高层“拍脑袋”的想法而添加功能、甚至开发者为了个人晋升而开发复杂功能的现象屡见不鲜。</p>
<p><strong>技术层面：Go的“解药”在哪？</strong></p>
<ul>
<li><strong>简洁哲学：</strong> Go从设计之初就强调“少即是多”，鼓励用简单的原语组合解决问题，天然地抵制不必要的复杂性。</li>
<li><strong>强大的标准库：</strong> Go 提供了功能丰富且高质量的标准库，覆盖了网络、并发、加解密、I/O 等众多领域，<strong>减少了对外部特性库的依赖</strong>。很多时候，“自己动手，丰衣足食”（使用标准库）比引入一个庞大的外部框架更符合Go的风格。</li>
<li><strong>关注工程效率：</strong> Go的设计目标之一是提高软件开发（尤其是大型项目）的工程效率和可维护性，这促使Go社区更关注代码的清晰度和长期成本。</li>
</ul>
<blockquote>
<p>注：技术层面包括语言、工具以及设计思路和方法。</p>
</blockquote>
<h2>根源二：分层 (Layering) —— 在错误的层级“打补丁”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-4.png" alt="" /></p>
<p>Pike 认为，现代软件层层叠加（硬件 -> 内核 -> 运行时 -> 框架 -> 应用代码），当出现问题时，我们<strong>太容易在更高的层级通过包装（wrap）来“修复”问题，而不是深入底层真正解决它</strong>。这导致了层层叠叠的“创可贴”，增加了复杂性和维护难度。他列举了ChromeOS文件App的例子，并强调要<strong>在正确的层级实现功能和修复</strong>。</p>
<p>在HN的讨论中，有开发者描述的修改按钮颜色需要穿透17个文件和多个抽象层的例子，正是这种“错误分层”或“过度抽象”的生动体现。</p>
<p><strong>技术层面：Go的“解药”在哪？</strong></p>
<ul>
<li><strong>小接口哲学：</strong> Go 鼓励定义小而专注的接口，这使得组件之间的依赖更清晰、更松耦合。当问题出现时，更容易定位到具体的接口实现层去修复，而不是在外部层层包装。</li>
<li><strong>组合优于继承：</strong> Go 通过组合（struct embedding）而非继承来实现代码复用，避免了深度继承带来的复杂性和脆弱性，使得在“正确层级”修改代码更易操作。</li>
<li><strong>显式错误处理：</strong> if err != nil 的模式强制开发者在调用点处理错误，使得问题更难被“隐藏”到上层去统一“包装”处理，鼓励在错误发生的源头附近解决或添加上下文。</li>
</ul>
<h2>根源三：依赖 (Dependencies) —— 看不见的“冰山”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-5.png" alt="" /></p>
<p>这是Pike演讲中着墨最多、也最为忧虑的一点。他用数据（NPM 包平均依赖 115 个其他包，每天 1/4 的依赖解析发生变化）和实例（Kubernetes 的复杂依赖图）强调：</p>
<ul>
<li>现代软件依赖数量惊人且变化极快。</li>
<li>我们几乎<strong>不可能完全理解</strong>自己项目的所有直接和间接依赖。</li>
<li>依赖中隐藏着巨大的<strong>维护成本、Bug 和安全风险</strong>。</li>
<li>简单的 npm update 或 audit <strong>无法解决根本问题</strong>。</li>
</ul>
<p>他强烈建议要<strong>理解依赖的成本</strong>，<strong>严格、定期地审视依赖树</strong>，并推荐了 deps.dev 这样的工具。</p>
<p>HN 社区对此深有同感，纷纷吐槽“为了一个函数引入整个库”、“脆弱的传递性依赖”、“供应链安全”等问题，并呼唤更好的依赖分析工具。</p>
<p><strong>技术层面：Go的“解药”在哪？</strong></p>
<ul>
<li><strong>Go Modules：</strong> 相比 NPM 等包管理器，Go Modules 提供了<strong>相对更好</strong>的依赖管理机制，包括语义化版本控制、go.sum 校验和、最小版本选择 (MVS) 等，提高了依赖的可预测性和安全性，但也要注意<strong>Go module并非完美</strong>。</li>
<li><strong>强大的标准库：</strong> 这是 Go 对抗依赖泛滥的最有力武器。很多功能可以直接使用标准库，避免引入外部依赖。</li>
<li><strong>社区文化：</strong> Go 社区相对而言更推崇<strong>稳定性和较少的依赖</strong>。引入一个大型框架或过多的外部库在 Go 社区通常需要更充分的理由。</li>
<li><strong>工具支持：</strong> Go 提供了 go mod graph, go mod why 等命令，可以帮助开发者理解依赖关系。结合 deps.dev，可以在一定程度上实践 Pike 的建议。</li>
</ul>
<h2>根源四：开源模式 (Open Source Development) —— “大门敞开” vs “严格把关”</h2>
<p><img src="https://tonybai.com/wp-content/uploads/2025/rob-pike-on-bloat-6.png" alt="" /></p>
<p>Pike 对比了两种开源开发模式：</p>
<ul>
<li><strong>“真正的开源方式” (The true open source way):</strong> 接受一切贡献 (Accept everything that comes)。他认为这是<strong>膨胀和 Bug 的巨大来源</strong>。</li>
<li><strong>更好的方式：</strong> 设立严格的代码质量、标准、评审、测试、贡献者审查等“门槛”，对允许合入的内容有标准。这种方式维护成本低得多。</li>
</ul>
<p>他暗示 Go 项目本身更倾向于后者，强调“先做好再提交”（make it good before checking it in）。可能很多Gopher也感受到了这一点，Go项目本身对代码质量的review非常严格，这一定程度上也“延缓”了一些新特性进入Go的时间点。</p>
<p>HN 的讨论中也涉及了类似 “Bazaar vs Cathedral” 的模式对比，但观点更加复杂，认为现实中的项目往往处于两者之间的某个位置，并且“完全不接受外部贡献”也并非良策。</p>
<p><strong>技术层面：Go的“解药”在哪？</strong></p>
<ul>
<li><strong>Go 自身的开发模式：</strong> Go 语言本身（由 Google 主导）的开发流程相对严谨，对代码质量和向后兼容性有较高要求，可以看作是“严格把关”模式的体现。</li>
<li><strong>标准库的设计：</strong> Go 标准库的设计精良、接口稳定，为开发者提供了一个高质量的基础平台，减少了对外部“随意贡献”的依赖。</li>
<li><strong>社区项目实践：</strong> 观察 Go 社区一些知名的开源项目，其贡献流程和代码标准通常也比较严格。</li>
</ul>
<h2>反思与现实：Go 也非万能，“警惕与纪律”仍是关键</h2>
<p>虽然 Go 的设计哲学和工具链在对抗软件膨胀方面提供了许多“天然优势”和“解药”，但我们必须清醒地认识到，<strong>Go 语言本身并不能完全免疫膨胀</strong>。</p>
<p>正如 Pike 在其“建议”(Advice) 中反复强调的，以及 HN 讨论中部分开发者指出的，最终软件的质量很大程度上取决于<strong>开发者和团队的“警惕与纪律” (vigilance and discipline)</strong>：</p>
<ul>
<li>我们是否真正理解并<strong>避免了增加不相称成本的特性</strong>？</li>
<li>我们是否努力<strong>在正确的层级解决问题</strong>？</li>
<li>我们是否<strong>审慎地评估和管理了每一个依赖</strong>？</li>
<li>我们是否坚持了<strong>高标准的开发和评审流程</strong>？</li>
</ul>
<p>如果缺乏这些，即使使用 Go，项目同样可能变得臃肿、复杂和难以维护。同时，HN 讨论也提醒我们，软件膨胀背后还有更深层次的<strong>组织、文化和经济因素</strong>，这些往往超出了单纯的技术和开发者纪律所能解决的范畴。</p>
<h2>小结：拥抱 Go 的简洁，但需务实前行</h2>
<p>Rob Pike 的“抱怨”为我们敲响了警钟，Hacker News 的热议则展现了软件膨胀问题的复杂性和普遍性。它确实是我们在工程实践中需要持续对抗的“熵增”现象。</p>
<p>Go 语言以其<strong>简洁、显式、组合</strong>的设计哲学，以及<strong>强大的标准库和相对稳健的依赖管理</strong>，在技术层面上，为我们提供了对抗膨胀的有力武器。理解并拥抱这些 Go 的“基因”，无疑能在一定程度上帮助我们构建更健康、更可持续的软件系统。</p>
<p>当然，Pike 的观点也并非金科玉律。有批评者指出，他的视角可能带有一定的“NIH（非我发明）倾向”，并且存在两个关键的“盲点”：</p>
<ol>
<li><strong>忽视了“不使用依赖”同样是巨大的技术债。</strong> 每一行自写的代码都需要永远维护。</li>
<li><strong>现实中的选择往往不是“使用依赖 vs 自己实现”，而是“使用依赖 vs 根本不做这个功能”。</strong> 面对复杂的合规要求（如 ADA、GDPR）、第三方集成或 FIPS 认证等，从零开始构建的成本（可能需要数百人年）往往让“自己实现”变得不切实际。为了让产品能够及时上线并满足用户（哪怕是 Pike 本人可能也在使用的“缓慢”网站）的需求，引入依赖和一定的“膨胀”有时是<strong>必要且务实</strong>的选择。</li>
</ol>
<blockquote>
<p>注：“NIH（非我发明）倾向”是一种心理现象，指的是人们对他人提出的想法或创新持有偏见，通常因为这些想法不是自己发明的。这种倾向使得人们倾向于低估或拒绝其他人的创意，尽管这些创意可能是有价值的。</p>
</blockquote>
<p>这种批评也提醒了我们，虽然 Pike 对简洁和纪律的呼吁值得我们高度重视，但在真实的商业环境和复杂的工程约束下，我们必须做出<strong>务实的权衡</strong>。纯粹的技术理想有时需要向现实妥协。</p>
<p><strong>最终，我们每一位 Gopher 都需要在理解 Go 简洁之道的同时，保持批判性思维和务实态度。</strong> 在日常的每一个决策中，审慎地权衡简单与复杂、理想与现实、引入依赖与自主掌控，才能在这场与“膨胀”的持久战中，找到最适合我们项目和团队的平衡点，交付真正有价值且可持续的软件。</p>
<p><strong>你如何看待 Rob Pike 对软件膨胀的观点？你认为他的批评切中要害，还是忽视了现实的复杂性？欢迎在评论区分享你的思考与实践！</strong></p>
<h2>参考资料</h2>
<ul>
<li><a href="https://docs.google.com/presentation/d/e/2PACX-1vSmIbSwh1_DXKEMU5YKgYpt5_b4yfOfpfEOKS5_cvtLdiHsX6zt-gNeisamRuCtDtCb2SbTafTI8V47/pub?slide=id.p">Rob Pike &#8211; On Bloat</a> &#8211; https://docs.google.com/presentation/d/e/2PACX-1vSmIbSwh1_DXKEMU5YKgYpt5_b4yfOfpfEOKS5_cvtLdiHsX6zt-gNeisamRuCtDtCb2SbTafTI8V47/pub?slide=id.p</li>
<li><a href="https://news.ycombinator.com/item?id=43045713">HN：On Bloat</a> &#8211; https://news.ycombinator.com/item?id=43045713 </li>
<li><a href="https://blog.habets.se/2025/02/Pike-is-wrong-on-bloat.html">Pike is wrong on bloat</a></li>
<li><a href="https://commandcenter.blogspot.com/2025/02/on-bloat-these-are-slides-from-talk-i.html">On Bloat</a> &#8211; https://commandcenter.blogspot.com/2025/02/on-bloat-these-are-slides-from-talk-i.html</li>
</ul>
<hr />
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求，请扫描下方公众号二维码，与我私信联系。</p>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/04/27/rob-pike-on-bloat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go安全版图再添利器：OpenPubkey SSH开源，用SSO彻底改变SSH认证</title>
		<link>https://tonybai.com/2025/03/31/openpubkey-ssh-open-source/</link>
		<comments>https://tonybai.com/2025/03/31/openpubkey-ssh-open-source/#comments</comments>
		<pubDate>Sun, 30 Mar 2025 22:05:08 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[AuthorizedKeysCommand]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[bastionzero]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[IdP]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OIDC]]></category>
		<category><![CDATA[OP]]></category>
		<category><![CDATA[OpenIDConnect]]></category>
		<category><![CDATA[openpubkey]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[opkssh]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[sshd]]></category>
		<category><![CDATA[sshd_config]]></category>
		<category><![CDATA[SSO]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[公钥]]></category>
		<category><![CDATA[密钥]]></category>
		<category><![CDATA[开源]]></category>
		<category><![CDATA[私钥]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=4532</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/03/31/openpubkey-ssh-open-source 对于许多开发者和运维工程师而言，管理SSH密钥是一项繁琐且易出错的任务。正如SSH发明者、芬兰计算机科学家Tatu Ylonen所指出的，许多组织中过时授权密钥的数量甚至远超员工人数，这带来了巨大的安全隐患。现在，一个基于Go语言生态的创新项目——OpenPubkey SSH (OPKSSH)，旨在彻底改变这一现状。近日，随着Cloudflare将OPKSSH代码捐赠给Linux基金会下的OpenPubkey项目并将其开源，开发者们终于可以拥抱一种更便捷、更安全的SSH认证方式：使用熟悉的单点登录(SSO)系统。本文将简要介绍OPKSSH项目及其技术基石OpenPubkey技术。 1. 核心看点：OPKSSH 开源与价值解读 OPKSSH (OpenPubkey SSH) 是一个巧妙的工具，它将OpenID Connect (OIDC) 等现代SSO技术与SSH协议集成起来，其核心目标是消除手动管理和配置SSH公私钥的需求，同时不引入除身份提供商(IdP)之外的任何新的可信第三方。 此前，虽然底层的OpenPubkey协议已于2023年成为Linux基金会的开源项目，但OPKSSH作为BastionZero（现已被Cloudflare收购）的产品，一直是闭源的。Cloudflare的此次捐赠，使得整个OpenPubkey技术栈的关键应用层实现也完全开放，这对于Go社区和整个基础设施安全领域都是一个重要进展。 2. OPKSSH解决了什么痛点？ 通常，我们在进行远程服务器管理和运维操作时会使用SSH免密登录，即通过生成SSH密钥对并将公钥复制到远程服务器来实现。但这种传统方式的SSH密钥管理存在诸多问题： 密钥分发与轮换困难：需要手动将公钥部署到目标服务器，密钥泄露或员工离职后的吊销流程复杂。 长期密钥风险：长期存在的私钥增加了泄露风险，一旦泄露，影响范围广。 可见性差：难以清晰追踪谁拥有对哪些服务器的访问权限，公钥本身缺乏身份信息。 这些问题常常困扰企业的IT运维团队和安全管理人员，他们需要确保访问控制的安全性和可管理性，同时降低操作复杂性和人力成本。 那如何解决这些问题呢？OPKSSH带来了新的解决方案。 3. OPKSSH如何解决这些问题？ OPKSSH基于OpenPubkey协议，带来了革命性的改进： 使用临时性密钥(Ephemeral Keys)提升安全性 OPKSSH使用按需生成的临时SSH密钥对取代长期密钥。用户通过SSO登录后，OPKSSH自动生成有效期较短（默认为24小时，可配置）的密钥。这大大缩短了密钥泄露的风险窗口。 通过单点登录(SSO Login)增强易用性 用户只需运行opkssh login，通过熟悉的IdP (如Google, Azure AD等) 进行SSO认证，即可自动获取所需的SSH密钥。无需手动生成、复制或管理私钥文件，即可在任何安装了opkssh的机器上进行SSH连接。 通过Identity-based Auth提升可见性与简化管理 授权不再基于难以管理的公钥列表（比如~/.ssh/known_hosts），而是基于易于理解和审计的用户身份（如Email地址）。管理员只需在服务器配置中指定允许访问的电子邮件地址列表即可。 到这里你可能会问：这么好用的OPKSSH是如何工作的呢？别急，我们下面就来介绍一下OPKSSH的工作原理。 4. OPKSSH的工作原理 Cloudflare的文章中有一个很好的介绍Opkssh工作原理的例子和示意图，这里也借用过来： 如图所示，当用户alice@example.com使用OPKSSH登录服务器，这个过程大致如下： 用户本地执行命令opkssh login触发OIDC流程，用户向IdP认证。 OpenPubkey协议介入，在OIDC流程中巧妙地将用户临时生成的公钥与用户的身份信息绑定，生成一个PK Token(本质上是一个增强的ID Token，包含了公钥信息并由IdP签名)。 OPKSSH将此PK Token打包进一个临时的SSH [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/openpubkey-ssh-open-source-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/03/31/openpubkey-ssh-open-source">本文永久链接</a> &#8211; https://tonybai.com/2025/03/31/openpubkey-ssh-open-source</p>
<p>对于许多开发者和运维工程师而言，管理SSH密钥是一项繁琐且易出错的任务。正如<a href="https://ylonen.org/index.html">SSH发明者、芬兰计算机科学家Tatu Ylonen</a>所指出的，许多组织中过时授权密钥的数量甚至远超员工人数，这带来了巨大的安全隐患。现在，一个基于Go语言生态的创新项目——<a href="https://github.com/openpubkey/opkssh">OpenPubkey SSH (OPKSSH)</a>，旨在彻底改变这一现状。近日，随着Cloudflare将<a href="https://github.com/openpubkey/opkssh">OPKSSH代码</a>捐赠给Linux基金会下的<a href="https://github.com/openpubkey">OpenPubkey项目</a>并将其开源，开发者们终于可以拥抱一种更便捷、更安全的SSH认证方式：使用熟悉的单点登录(SSO)系统。本文将简要介绍OPKSSH项目及其技术基石OpenPubkey技术。</p>
<h2>1. 核心看点：OPKSSH 开源与价值解读</h2>
<p>OPKSSH (OpenPubkey SSH) 是一个巧妙的工具，它将<a href="https://tonybai.com/2023/12/22/understand-oidc-by-example/">OpenID Connect (OIDC)</a> 等现代SSO技术与<a href="https://www.ssh.com/academy/ssh">SSH协议</a>集成起来，其核心目标是<strong>消除手动管理和配置SSH公私钥的需求</strong>，同时<strong>不引入除身份提供商(IdP)之外的任何新的可信第三方</strong>。</p>
<p>此前，虽然底层的<a href="https://github.com/openpubkey/openpubkey">OpenPubkey协议已于2023年成为Linux基金会的开源项目</a>，但OPKSSH作为BastionZero（现已被Cloudflare收购）的产品，一直是闭源的。Cloudflare的此次捐赠，使得整个OpenPubkey技术栈的关键应用层实现也完全开放，这对于Go社区和整个基础设施安全领域都是一个重要进展。</p>
<p><img src="https://tonybai.com/wp-content/uploads/openpubkey-ssh-open-source-2.jpeg" alt="" /></p>
<h2>2. OPKSSH解决了什么痛点？</h2>
<p>通常，我们在进行远程服务器管理和运维操作时会使用SSH免密登录，即通过生成SSH密钥对并将公钥复制到远程服务器来实现。但这种传统方式的SSH密钥管理存在诸多问题：</p>
<ul>
<li><strong>密钥分发与轮换困难</strong>：需要手动将公钥部署到目标服务器，密钥泄露或员工离职后的吊销流程复杂。</li>
<li><strong>长期密钥风险</strong>：长期存在的私钥增加了泄露风险，一旦泄露，影响范围广。</li>
<li><strong>可见性差</strong>：难以清晰追踪谁拥有对哪些服务器的访问权限，公钥本身缺乏身份信息。</li>
</ul>
<p>这些问题常常困扰企业的IT运维团队和安全管理人员，他们需要确保访问控制的安全性和可管理性，同时降低操作复杂性和人力成本。</p>
<p>那如何解决这些问题呢？OPKSSH带来了新的解决方案。</p>
<h2>3. OPKSSH如何解决这些问题？</h2>
<p>OPKSSH基于<a href="https://www.bastionzero.com/openpubkey-faq">OpenPubkey协议</a>，带来了革命性的改进：</p>
<ul>
<li><strong>使用临时性密钥(Ephemeral Keys)提升安全性</strong></li>
</ul>
<p>OPKSSH使用<strong>按需生成的临时SSH密钥对</strong>取代长期密钥。用户通过SSO登录后，OPKSSH自动生成有效期较短（默认为24小时，可配置）的密钥。这大大缩短了密钥泄露的风险窗口。</p>
<ul>
<li><strong>通过单点登录(SSO Login)增强易用性</strong></li>
</ul>
<p>用户只需运行opkssh login，通过熟悉的IdP (如Google, Azure AD等) 进行SSO认证，即可自动获取所需的SSH密钥。无需手动生成、复制或管理私钥文件，即可在任何安装了opkssh的机器上进行SSH连接。</p>
<ul>
<li><strong>通过Identity-based Auth提升可见性与简化管理</strong></li>
</ul>
<p>授权不再基于难以管理的公钥列表（比如~/.ssh/known_hosts），而是基于易于理解和审计的用户身份（如Email地址）。管理员只需在服务器配置中指定允许访问的电子邮件地址列表即可。</p>
<p>到这里你可能会问：这么好用的OPKSSH是如何工作的呢？别急，我们下面就来介绍一下OPKSSH的工作原理。</p>
<h2>4. OPKSSH的工作原理</h2>
<p>Cloudflare的文章中有一个很好的介绍Opkssh工作原理的例子和示意图，这里也借用过来：</p>
<p><img src="https://tonybai.com/wp-content/uploads/openpubkey-ssh-open-source-5.png" alt="" /></p>
<p>如图所示，当用户alice@example.com使用OPKSSH登录服务器，这个过程大致如下：</p>
<ul>
<li>用户本地执行命令opkssh login触发OIDC流程，用户向IdP认证。</li>
<li>OpenPubkey协议介入，在OIDC流程中巧妙地将用户<strong>临时生成的公钥</strong>与用户的身份信息绑定，生成一个<strong>PK Token</strong>(本质上是一个增强的ID Token，包含了公钥信息并由IdP签名)。</li>
<li>OPKSSH将此PK Token打包进一个临时的SSH 公钥文件（利用SSH证书的扩展字段）。</li>
<li>当用户发起SSH连接时，这个特殊的公钥文件被发送到服务器。</li>
<li>服务器配置了AuthorizedKeysCommand指令，调用opkssh verify(OpenPubkey验证器)。</li>
<li>验证器检查PK Token的有效性（签名、有效期、颁发者），提取公钥和用户身份(Email)，并根据服务器配置判断该用户是否有权访问。</li>
</ul>
<p>关键在于，这一切<strong>无需修改现有的SSH客户端或服务器软件本身</strong>，仅需在服务器端sshd_config中添加两行配置即可启用，这个我们在本文后面会详细说明。</p>
<p>OPKSSH的魔力源于其底层的<strong>OpenPubkey</strong>协议。OpenPubkey本身是一个基于Go语言实现的Linux基金会项目 (<a href="https://github.com/openpubkey/openpubkey">github.com/openpubkey/openpubkey</a>)。</p>
<p>OpenPubkey的核心创新在于，它通过一种<strong>客户端修改</strong>的方式，将用户持有的公钥(PKu)与OIDC的ID Token进行了加密绑定，而<strong>无需 OIDC 提供商(OP)作任何修改</strong>。这是通过巧妙利用OIDC流程中的nonce参数实现的。客户端不再生成完全随机的nonce，而是生成一个包含其公钥等信息的<strong>客户端实例声明(cic)</strong>，并将cic的哈希值作为nonce发送给OP。OP在签发ID Token时会包含这个nonce。这样，最终得到的PK Token就同时承载了OP 对用户身份的认证以及用户对其公钥的所有权声明（通过客户端的额外签名防止身份误绑定攻击）。</p>
<p>这一机制将OIDC的认证模型从<strong>持有者认证(Bearer Authentication)</strong> 升级到了<strong>持有证明(Proof-of-Possession, PoP)</strong>。在Bearer模型下，任何窃取到ID Token的人都可以冒充用户；而在PoP模型下，用户需要证明自己持有与PK Token中公钥对应的私钥，从而有效抵御<strong>令牌重放(Token Replay)</strong> 和<strong>令牌泄露(Token Export)</strong> 攻击，安全性显著提高。</p>
<p>OpenPubkey的设计还考虑了可扩展性，例如引入MFA-Cosigner概念，可以进一步增强安全性，甚至在OP本身被攻陷的情况下也能提供保护。关于OpenPubkey协议设计的详细内容，可以参见参考资料中OpenPubkey的论文，这里就不赘述了。</p>
<p>了解了原理之后，下面我们来实际验证一下opkssh通过IdP实现SSO一键登录服务器的效果。</p>
<h2>5. 使用opkssh实现免密登录服务器</h2>
<p>这次验证的环境是这样的：</p>
<ul>
<li>客户端：macOS</li>
<li>服务端：Ubuntu 22.04.1 LTS </li>
<li>IdP：microsoft (注：国内访问microsoft的服务器成功率高)</li>
</ul>
<p>我们先来看看客户端的操作步骤：</p>
<h3>5.1 opkssh在客户端的操作</h3>
<p>首先在客户端安装opkssh，你可以选择直接下载编译好的opkssh二进制文件：</p>
<pre><code>$curl -L https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-osx-amd64 -o opkssh; chmod +x opkssh
</code></pre>
<p>由于opkssh是纯Go实现的，如果你本地有Go工具链，也可以选择通过源码安装(在国内，可能选择源码安装的速度更快)：</p>
<pre><code>$go install github.com/openpubkey/opkssh@latest
</code></pre>
<p>安装完成后，我们就来进行客户端的IdP认证。输入下面命令：</p>
<pre><code>$opkssh login
INFO[0000] Opening browser to http://127.0.0.1:59638/chooser
</code></pre>
<p>该命令会打开本地浏览器，并展示下面页面：</p>
<p><img src="https://tonybai.com/wp-content/uploads/openpubkey-ssh-open-source-3.png" alt="" /></p>
<p>截止到目前，opkssh支持选择Google、Microsoft或Gitlab作为IdP，这里我们选择<strong>Sign in with Microsoft</strong>。</p>
<p>之后浏览器将跳转到下面页面：</p>
<p><img src="https://tonybai.com/wp-content/uploads/openpubkey-ssh-open-source-4.png" alt="" /></p>
<p>这里使用我的Microsoft账号进行身份认证，点击“接受”，即完成认证，之后你可以关闭页面！</p>
<p>而命令行也会提示下面信息：</p>
<pre><code>INFO[0002] listening on http://127.0.0.1:3000/
INFO[0002] press ctrl+c to stop
Writing opk ssh public key to /Users/tonybai/.ssh/id_ed25519.pub and corresponding secret key to /Users/tonybai/.ssh/id_ed25519Keys generated for identity
Email, sub, issuer, audience:
bigwhite.cn@hotmail.com AAAAAAAAAAAAAAAAAAAAAP5YMhbf2Ufl_eI1PdK12VE https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0 096ce0a3-5e72-4da8-9c86-12924b294a01
</code></pre>
<p>接下来，我们再来看看服务端要进行的操作与配置。</p>
<h3>5.2 opkssh在服务端的操作</h3>
<p>在要登录的服务器端安装opkssh，由于安装后还要进行一些设置，我建议直接采用opkssh项目提供的安装脚本进行安装：</p>
<pre><code>$ wget -qO- "https://raw.githubusercontent.com/openpubkey/opkssh/main/scripts/install-linux.sh" | sudo bash
Detected OS is debian
Created group: opksshuser
Created user: opksshuser with group: opksshuser
Downloading version latest of opkssh from https://github.com/openpubkey/opkssh/releases/latest/download/opkssh-linux-amd64...
opkssh                           100%[========================================================&gt;]  16.01M  83.4MB/s    in 0.2s
Installed opkssh to /usr/local/bin/opkssh
Configuring opkssh:
  Creating sudoers file at /etc/sudoers.d/opkssh...
  Adding sudoers rule for opksshuser...
Installation successful! Run 'opkssh' to use it.
</code></pre>
<p>之后我们需要修改一下服务端的sshd server的配置。SSH服务器支持一个名为AuthorizedKeysCommand的配置参数，该参数允许我们使用自定义程序来确定SSH公钥是否被授权。因此，我们通过对/etc/ssh/sshd_config文件进行以下两行更改，将SSH服务器的配置文件更改为使用OpenPubkey验证程序而不是SSH默认的验证程序：</p>
<pre><code>AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t
AuthorizedKeysCommandUser opksshuser
</code></pre>
<p>然后通过opkssh添加授权的用户，这些用户登录后将具备root用户权限：</p>
<pre><code>$opkssh add root bigwhite.cn@hotmail.com microsoft
Successfully added new policy to /etc/opk/auth_id
</code></pre>
<p>最后重启一下sshd服务：</p>
<pre><code>$systemctl daemon-reload
$systemctl status sshd
</code></pre>
<h3>5.3 ssh登录验证</h3>
<blockquote>
<p>注：为了避免使用之前的ssh免密登录，可以在服务端将.ssh/authorized_keys中的公钥删除！</p>
</blockquote>
<p>服务端的opkssh命令行被sshd服务调用进行客户端验证时，会在/var/log/opkssh.log中打印相关日志，这也是opkssh起到作用的一个间接证明。</p>
<p>我在客户端依然以原先的ssh登录命令尝试登录服务器：</p>
<pre><code>$ssh root@&lt;your_server_ip&gt;
</code></pre>
<p>我们在服务端opkssh.log中可以看到下面一些输出：</p>
<pre><code>2025/03/29 02:57:43 /usr/local/bin/opkssh verify root AAAAKGVjZHNhLXNoYTItbDUQAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAAAaAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSXO9YZhMPnGkYfnwpFu/HeX29s7q0l4lK5qCgvaeaWh3zBSidDh49Nirsu5Iwh7YVRkKMa5q+hhnJEFAh7FL5LAAAAZAAAABNlY2RzYS1zaGEyLW5pc3RwMjU2AAAASQAAACEAqD5msj3BsQhlpszOJHBoIcmK3Ex/BwyNWKHgp6labScAAAAgULO5naYi9xOmzrShcGiVIprRbdSvdWltioSVKu63h6Y= ecdsa-sha2-nistp256-cert-v01@openssh.com
2025/03/29 02:57:43 Providers loaded:  https://accounts.google.com 206584157355-7cbe4s640tvm7naoludob4ut1emii7sf.apps.googleusercontent.com 24h
https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0 096ce0a3-5e72-4da8-9c86-12924b294a01 24h
https://gitlab.com 8d8b7024572c7fd501f64374dec6bba37096783dfcd792b3988104be08cb6923 24h

2025/03/29 02:57:44 warning: failed to load user policy: failed to read user policy file /root/.opk/auth_id: error reading root home policy using command /usr/bin/sudo -n /usr/local/bin/opkssh readhome root got output Failed to read user's home policy file: failed to open /root/.opk/auth_id, open /root/.opk/auth_id: no such file or directory
 and err exit status 1
2025/03/29 02:57:44 successfully verified
</code></pre>
<p>之后，我就成功登录到服务器上了！</p>
<h2>6.小结</h2>
<p>OPKSSH 的开源是 OpenPubkey 项目和 Go 安全生态的重要里程碑。它不仅提供了一个解决 SSH 密钥管理难题的实用方案，也展示了 Go 语言在构建安全、可靠的基础设施工具方面的强大能力。</p>
<p>我们鼓励对安全、身份认证和 Go 开发感兴趣的开发者们：</p>
<ul>
<li><strong>试用 OPKSSH</strong>: 在你的开发或测试环境中体验 SSO 登录 SSH 的便捷。</li>
<li><strong>关注 OpenPubkey 项目</strong>: Star GitHub 仓库，了解最新动态。</li>
<li><strong>参与社区贡献</strong>: 通过 Pull Request、Issue 反馈、参与讨论等方式为项目贡献力量。可以在 OpenSSF Slack 的 <code>#openpubkey</code> 频道找到社区成员，或参加每月一次的社区会议。</li>
</ul>
<p>随着 OPKSSH 的加入和持续发展，我们期待 OpenPubkey 能够在更多场景下发挥价值，例如代码签名 (Sigstore 集成)、端到端加密通信等，进一步丰富和巩固 Go 语言在云原生和安全领域的基础设施地位。</p>
<h2>7. 参考资料</h2>
<ul>
<li><a href="https://github.com/openpubkey/opkssh/">OPKSSH项目</a> &#8211; https://github.com/openpubkey/opkssh</li>
<li><a href="https://eprint.iacr.org/2023/296">Paper: OpenPubkey: Augmenting OpenID Connect with User held Signing Keys</a> &#8211; https://eprint.iacr.org/2023/296</li>
<li><a href="https://github.com/openpubkey/openpubkey/">OpenPubkey项目</a> &#8211; https://github.com/openpubkey/openpubkey/</li>
<li><a href="https://blog.cloudflare.com/open-sourcing-openpubkey-ssh-opkssh-integrating-single-sign-on-with-ssh">Open-sourcing OpenPubkey SSH (OPKSSH): integrating single sign-on with SSH</a> &#8211; https://blog.cloudflare.com/open-sourcing-openpubkey-ssh-opkssh-integrating-single-sign-on-with-ssh</li>
<li><a href="https://www.docker.com/blog/how-to-use-openpubkey-to-solve-key-management-via-sso">How to Use OpenPubkey to Solve Key Management via SSO</a> &#8211; https://www.docker.com/blog/how-to-use-openpubkey-to-solve-key-management-via-sso/</li>
<li><a href="https://www.bastionzero.com/openpubkey-faq">Open Pubkey Frequently Asked Questions</a> &#8211; https://www.bastionzero.com/openpubkey-faq</li>
</ul>
<hr />
<p><a href="https://public.zsxq.com/groups/51284458844544">Gopher部落知识星球</a>在2025年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。并且，2025年将在星球首发“Gopher的AI原生应用开发第一课”、“Go陷阱与缺陷”和“Go原理课”专栏！此外，我们还会加强星友之间的交流和互动。欢迎大家踊跃提问，分享心得，讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落，享受coding的快乐! 欢迎大家踊跃加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-tribe-zsxq-small-card.png" alt="img{512x368}" /><br />
<img src="http://image.tonybai.com/img/tonybai/go-programming-from-beginner-to-master-qr.png" alt="img{512x368}" /></p>
<p><img src="http://image.tonybai.com/img/tonybai/go-first-course-banner.png" alt="img{512x368}" /><br />
<img src="http://image.tonybai.com/img/tonybai/imooc-go-column-pgo-with-qr.jpg" alt="img{512x368}" /></p>
<p>著名云主机服务厂商DigitalOcean发布最新的主机计划，入门级Droplet配置升级为：1 core CPU、1G内存、25G高速SSD，价格6$/月。有使用DigitalOcean需求的朋友，可以打开这个<a href="https://m.do.co/c/bff6eed92687">链接地址</a>：https://m.do.co/c/bff6eed92687 开启你的DO主机之路。</p>
<p>Gopher Daily(Gopher每日新闻) &#8211; https://gopherdaily.tonybai.com</p>
<p>我的联系方式：</p>
<ul>
<li>微博(暂不可用)：https://weibo.com/bigwhite20xx</li>
<li>微博2：https://weibo.com/u/6484441286</li>
<li>博客：tonybai.com</li>
<li>github: https://github.com/bigwhite</li>
<li>Gopher Daily归档 &#8211; https://github.com/bigwhite/gopherdaily</li>
<li>Gopher Daily Feed订阅 &#8211; https://gopherdaily.tonybai.com/feed</li>
</ul>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。</p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/03/31/openpubkey-ssh-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>体验Gemini Deep Research：以Go语言未来演进方向分析为例</title>
		<link>https://tonybai.com/2025/03/16/gemini-deep-research-experience/</link>
		<comments>https://tonybai.com/2025/03/16/gemini-deep-research-experience/#comments</comments>
		<pubDate>Sun, 16 Mar 2025 07:10:54 +0000</pubDate>
		<dc:creator>bigwhite</dc:creator>
				<category><![CDATA[技术志]]></category>
		<category><![CDATA[adoption]]></category>
		<category><![CDATA[Agent]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI/ML]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[bytes]]></category>
		<category><![CDATA[challenges]]></category>
		<category><![CDATA[channels]]></category>
		<category><![CDATA[cloud-native]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[dataprocessing]]></category>
		<category><![CDATA[DeepResearch]]></category>
		<category><![CDATA[deepseek]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[digitalillustration]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[ecosystem]]></category>
		<category><![CDATA[edgecomputing]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[ErrorHandling]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[FIPS140-3]]></category>
		<category><![CDATA[gemini]]></category>
		<category><![CDATA[Gemini1.5Pro]]></category>
		<category><![CDATA[GeminiDeepResearch]]></category>
		<category><![CDATA[generics]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[go.mod]]></category>
		<category><![CDATA[go1.24]]></category>
		<category><![CDATA[go:wasmexport]]></category>
		<category><![CDATA[GoCommand]]></category>
		<category><![CDATA[Golang]]></category>
		<category><![CDATA[GoModules]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gopher]]></category>
		<category><![CDATA[goroutines]]></category>
		<category><![CDATA[govet]]></category>
		<category><![CDATA[IDEintegration]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[insights]]></category>
		<category><![CDATA[Iot]]></category>
		<category><![CDATA[iterators]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[machinelearning]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[math/rand/v2]]></category>
		<category><![CDATA[memoryallocation]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[ML]]></category>
		<category><![CDATA[modeldeployment]]></category>
		<category><![CDATA[Mutex]]></category>
		<category><![CDATA[neuralnetworks]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[os.Root]]></category>
		<category><![CDATA[packagemanagement]]></category>
		<category><![CDATA[parallelism]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[programminglanguage]]></category>
		<category><![CDATA[proposals]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[runtime.AddCleanup]]></category>
		<category><![CDATA[RussCox]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[simplicity]]></category>
		<category><![CDATA[standardlibrary]]></category>
		<category><![CDATA[strings]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[SwissTables]]></category>
		<category><![CDATA[testing/synctest]]></category>
		<category><![CDATA[trends]]></category>
		<category><![CDATA[typealiases]]></category>
		<category><![CDATA[wasi]]></category>
		<category><![CDATA[wasm]]></category>
		<category><![CDATA[WebAssembly]]></category>
		<category><![CDATA[人工智能]]></category>
		<category><![CDATA[大模型]]></category>
		<category><![CDATA[深度思考]]></category>
		<category><![CDATA[谷歌]]></category>

		<guid isPermaLink="false">https://tonybai.com/?p=4513</guid>
		<description><![CDATA[本文永久链接 &#8211; https://tonybai.com/2025/03/16/gemini-deep-research-experience 基于大模型的AI已进入深度思考时代，以DeepSeek R1模型为代表的开源模型给主流AI厂商带来了巨大压力。其实早在2024年12月份，Google就在一篇名为“Try Deep Research and our new experimental model in Gemini, your AI assistant”中发布了自己的Deep Research产品：Gemini Deep Research。 Gemini Deep Research不仅仅是一个简单的搜索引擎，而是一个智能研究助理。用户只需输入研究主题，Deep Research即可自动完成以下工作： 自动制定研究计划：根据主题的复杂性，Deep Research会生成一个多步骤的研究计划。 深度网络信息分析：Deep Research会像人类研究员一样，在网络上进行多轮搜索、分析、筛选，并根据已获取的信息不断调整搜索策略。 生成综合报告：最终，Deep Research会生成一份结构化的报告，包含关键发现、主要观点以及原始资料链接。 支持交互式提问：用户可以对报告内容进行追问，Deep Research会进一步解释或补充信息。 不过最初发布时，免费用户体验受到了限制。2025.3.13 Google更新了其AI产品gemini的功能特性，并宣布在Gemini 2.0 Flash Thinking等模型上增加Deep Research功能(并且相对于早期的功能又有了能力上的增强)。现在即便你是免费用户，只要打开Gemini应用的主页面，就能看到下面带有Deep Research功能选项的对话输入框： 并且，在Gemini app页面上免费用户可以使用的模型都支持Deep Research，虽然每月依然有使用次数限制： 作为Gemini AI助手的一项重要特性，基于大窗口增强后的Deep Research利用Gogle强大的信息搜索能力以及AI强大的信息处理能力，可为用户提供深度、全面的研究报告，大幅提高了研究效率。 在信息爆炸的时代，我们这些技术人员面临着持续学习和快速掌握新技术、新趋势的巨大挑战。传统的研究方法往往耗时费力，如何在海量信息中高效提取关键信息，已成为提升技术竞争力的关键要素。 本文将以”Go语言未来5-10年的演进方向及核心团队发力重点”这一主题为例，分享我对增强版Gemini Deep Research的抢先体验。 实战体验：Go语言未来演进方向研究 为了测试Deep Research的实际效果，我选择了一个对Go开发者非常关心的话题： “Go语言未来5-10年的演进方向以及Go核心团队的发力重点会在哪里？” 研究过程 启动研究 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-1.png" alt="" /></p>
<p><a href="https://tonybai.com/2025/03/16/gemini-deep-research-experience">本文永久链接</a> &#8211; https://tonybai.com/2025/03/16/gemini-deep-research-experience</p>
<p>基于大模型的AI已进入深度思考时代，以DeepSeek R1模型为代表的开源模型给主流AI厂商带来了巨大压力。其实早在2024年12月份，Google就在一篇名为“<a href="https://blog.google/products/gemini/google-gemini-deep-research/">Try Deep Research and our new experimental model in Gemini, your AI assistant</a>”中发布了自己的Deep Research产品：<a href="https://blog.google/products/gemini/google-gemini-deep-research/">Gemini Deep Research</a>。</p>
<p>Gemini Deep Research不仅仅是一个简单的搜索引擎，而是一个智能研究助理。用户只需输入研究主题，Deep Research即可自动完成以下工作：</p>
<ul>
<li><strong>自动制定研究计划</strong>：根据主题的复杂性，Deep Research会生成一个<strong>多步骤</strong>的研究计划。</li>
<li><strong>深度网络信息分析</strong>：Deep Research会像人类研究员一样，在网络上进行多轮搜索、分析、筛选，并根据已获取的信息不断调整搜索策略。</li>
<li><strong>生成综合报告</strong>：最终，Deep Research会生成一份结构化的报告，包含关键发现、主要观点以及原始资料链接。</li>
<li><strong>支持交互式提问</strong>：用户可以对报告内容进行追问，Deep Research会进一步解释或补充信息。</li>
</ul>
<p>不过最初发布时，免费用户体验受到了限制。<a href="https://blog.google/products/gemini/new-gemini-app-features-march-2025/">2025.3.13 Google更新了其AI产品gemini的功能特性</a>，并宣布在Gemini 2.0 Flash Thinking等模型上增加Deep Research功能(并且相对于早期的功能又有了能力上的增强)。现在即便你是免费用户，只要打开Gemini应用的主页面，就能看到下面带有Deep Research功能选项的对话输入框：</p>
<p><img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-2.png" alt="" /></p>
<p>并且，在<a href="https://gemini.google.com/app">Gemini app页面</a>上免费用户可以使用的模型都支持Deep Research，虽然每月依然有使用次数限制：</p>
<p><img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-3.png" alt="" /></p>
<p>作为Gemini AI助手的一项重要特性，基于大窗口增强后的Deep Research利用Gogle强大的信息搜索能力以及AI强大的信息处理能力，可为用户提供深度、全面的研究报告，大幅提高了研究效率。</p>
<p>在信息爆炸的时代，我们这些技术人员面临着持续学习和快速掌握新技术、新趋势的巨大挑战。传统的研究方法往往耗时费力，如何在海量信息中高效提取关键信息，已成为提升技术竞争力的关键要素。</p>
<p>本文将以”Go语言未来5-10年的演进方向及核心团队发力重点”这一主题为例，分享我对增强版Gemini Deep Research的抢先体验。</p>
<h2>实战体验：Go语言未来演进方向研究</h2>
<p>为了测试Deep Research的实际效果，我选择了一个对Go开发者非常关心的话题：</p>
<blockquote>
<p>“Go语言未来5-10年的演进方向以及Go核心团队的发力重点会在哪里？”</p>
</blockquote>
<h3>研究过程</h3>
<h4><strong>启动研究</strong></h4>
<p>在Gemini对话框中输入上述主题，并在左上角选择”Deep Research”模型，然后提交。</p>
<p>Gemini会首先会自动生成研究计划，如下图，并等待你的确认：</p>
<p><img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-4.png" alt="" /></p>
<h4><strong>确认方案，并等待研究完成</strong></h4>
<p>你可以修改方案，也可以点击“开始研究”，一旦选择后者，Deep Research就会自动开始进行研究(包括反复的数据搜索、分析结果等)。在研究过程中，Gemini会显示当前的研究进度，例如”正在分析相关信息”、”正在生成报告”等，下面是研究过程的一些截图：</p>
<p><img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-5.png" alt="" /><br />
<img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-6.png" alt="" /><br />
<img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-7.png" alt="" /><br />
<img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-8.png" alt="" /><br />
<img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-9.png" alt="" /><br />
&#8230; &#8230;<br />
<img src="https://tonybai.com/wp-content/uploads/gemini-deep-research-experience-10.png" alt="" /></p>
<p>整个过程大约持续了10-15分钟（具体时间取决于主题的复杂性）。</p>
<h4><strong>获取研究报告</strong></h4>
<p>研究完成后，Gemini生成了一份详细的报告，结构完整，内容丰富。Gemini支持将报告导出到Google Doc，之后你便可以基于Google Doc查看、编辑或下载这份研究报告了。Gemini为我生成的这份报告放在了<a href="https://docs.google.com/document/d/1xFjbaVUqaJhge_PXRkeVwzeiVStrXTuUBBrNvzhwjxI/edit">这里</a>。如果你访问不了，我在本文附录也放了一份报告结果，请参考。</p>
<p>下面我们再简单看一下报告质量。</p>
<h3>研究报告内容与质量分析</h3>
<p>这次Gemini针对我提出的题目生成的报告包含以下主要章节：</p>
<ul>
<li>Go语言的持久相关性与未来轨迹</li>
<li>近期重要进展分析（Go 1.24及未来）</li>
<li>核心团队的优先事项解读：解读发力重点</li>
<li>未来5-10年Go语言的演进方向</li>
<li>Go的应用：应对现代挑战</li>
<li>Go未来面临的挑战和考虑因素</li>
<li>结论：规划Go未来十年的发展方向</li>
<li>相关统计表格和参考文献</li>
</ul>
<p>从全面性来看，该报告涵盖了Go语言发展的多个维度，从技术细节（如泛型、性能优化、WebAssembly支持）到宏观趋势（如云计算、边缘计算、AI/ML集成），再到社区和生态系统的发展，内容全面而不失重点。</p>
<p>该报告不仅是信息的简单堆砌，而是对信息进行了深入的分析和整合，不乏一定的<strong>深度</strong>。例如，报告准确地指出了Go核心团队在性能优化、并发、WebAssembly等方面的持续投入，并分析了这些投入背后的战略意图。</p>
<p>报告还给出了引用的信息的确切来源，包括Go官方博客、技术文章、社区讨论等，初步看了一眼，信息来源相关性强，且地址可靠。比如：报告中提到的Go 1.24的新特性、核心团队的优先事项等，都与官方信息保持一致。</p>
<p>报告也提出了一些有价值的洞察，例如Go在边缘计算和物联网领域的潜力、在AI/ML领域可能的发展方向等，为读者提供了前瞻性的视角。</p>
<p>报告结构非常清晰，语言流畅，易于理解。即使是对Go语言不太熟悉的读者，也能通过报告快速了解Go语言的未来发展趋势。</p>
<p>该报告的撰写质量估计已经超过了许多有多年Go开发经验的资深工程师所能提供的分析。如果一个技术人员亲自去调研和总结这些内容，没有3-5天的时间投入是很难完成的。</p>
<h2>体验结论</h2>
<p>通过此次体验，我们可以深刻地感受到Gemini Deep Research的强大功能和巨大潜力：</p>
<ul>
<li><strong>效率提升</strong>：Deep Research将原本需要数小时甚至数天的研究工作缩短至几分钟，极大地提高了研究效率。</li>
<li><strong>信息全面性</strong>：Deep Research能够从多个来源获取信息，并进行综合分析，避免了人工研究可能存在的遗漏和偏见。</li>
<li><strong>深度洞察</strong>：Deep Research不仅是信息的搬运工，它能够对信息进行深入分析，提炼出有价值的洞察。</li>
<li><strong>持续学习</strong>：Deep Research处于不断进化中，未来将会变得越来越强大。</li>
</ul>
<p>Gemini Deep Research等深度研究工具的出现与演进，标志着AI驱动的研究新时代的到来。它将改变我们获取信息、分析信息、利用信息的方式，为各行各业带来巨大的变革。对于技术团队来说，Deep Research无疑是一个强大的工具，可以帮助我们更快地学习、更深入地思考、更高效地工作。</p>
<h2>附录</h2>
<h3><strong>Go语言未来5-10年的演进方向及核心团队发力重点</strong></h3>
<p><strong>1&#46; 引言：Go的持久相关性与未来轨迹</strong></p>
<p>自2009年公开宣布，并于2012年发布1.0版本以来，Go语言已在现代软件开发领域占据重要地位，尤其是在云基础设施和可扩展系统方面 1。其设计初衷是为了解决大规模软件开发的复杂性 6，强调简洁、高效和并发性 1。Go语言的用户群体显著增长，表明其采用率和相关性不断提高 10。这种增长凸显了理解其未来演进以及Go核心团队优先事项的必要性。本报告将分析近期发展、社区讨论以及Go项目关键人物的见解，以预测未来5到10年Go语言的发展轨迹，重点关注核心团队的努力方向。</p>
<p>Go语言最初的创建动机是为了解决Google在软件基础设施方面面临的实际问题，例如C++在构建现代服务器软件时遇到的构建缓慢、依赖管理失控和并发编程困难等挑战 1。这种以解决实际问题为导向的设计思路深深植根于Go语言的基因中，可以预见，未来Go核心团队将继续关注实际应用，并致力于满足开发人员的需求。</p>
<p>Go语言用户群体的持续增长以及主要科技公司的广泛采用，为Go语言的未来发展奠定了坚实的基础 10。来自各种调查的数据一致显示，越来越多的开发人员正在使用Go语言，并且有学习Go语言的意愿。诸如Google、Netflix、Uber和Dropbox等公司 3 在其关键基础设施中对Go语言的依赖，突显了Go语言的成熟性和适用于大规模项目的能力，这无疑将确保核心团队和社区对Go语言的持续投入和发展。</p>
<p><strong>2&#46; 近期重要进展分析：Go 1.24及未来</strong></p>
<p>2025年2月发布的Go 1.24版本是一个重要的里程碑，它揭示了Go核心团队当前的优先事项 17。此版本的主要特性包括：</p>
<ul>
<li>完全支持泛型类型别名，增强了代码的灵活性并减少了冗余 17。这解决了社区长期以来的一个需求 8。  </li>
<li>运行时性能得到提升，在一系列代表性基准测试中，CPU开销平均降低了2-3%。这些改进包括基于Swiss Tables的新map实现、更高效的小对象内存分配以及新的内部互斥锁实现 10。  </li>
<li>通过go:wasmexport指令将Go函数导出到Wasm，并支持构建为WASI反应器/库，增强了WebAssembly (Wasm) 的功能 17。这标志着Go语言正日益关注将其应用范围扩展到传统的服务器端应用之外 21。  </li>
<li>go.mod中新增了管理工具依赖的机制 18，并且go vet命令通过新的测试分析器得到了改进 18。这些变化旨在改善开发人员的体验和代码质量。  </li>
<li>标准库新增了FIPS 140-3合规性机制、用于目录限制文件系统访问的新os.Root类型以及比runtime.SetFinalizer更灵活的runtime.AddCleanup函数用于清理操作 1。这些新增功能增强了Go在安全性、系统编程和资源管理方面的能力。  </li>
<li>用于测试并发代码的实验性testing/synctest包 17。这突显了并发性在Go语言发展中的持续重要性。  </li>
<li>bytes和strings包中新增了基于迭代器的新函数，提高了常见数据处理任务的效率 18。</li>
</ul>
<p>Go 1.24中包含的诸如泛型等长期以来备受期待的功能，体现了核心团队对社区反馈的积极响应以及他们为满足现代编程需求而不断发展语言的意愿。Go社区对泛型的需求由来已久 8。Go 1.18开始引入泛型，并在1.24版本中进一步完善了对泛型类型别名的支持，这表明核心团队认真听取了开发者的意见，并准备在社区达成广泛共识且对生态系统有明显益处时，对语言进行重大改变。</p>
<p>Go 1.24中显著的性能改进，进一步巩固了Go语言在效率和速度方面的核心价值主张，预示着性能优化将继续成为核心团队未来的重点工作。关于使用Swiss Tables加速Go map以及其他运行时改进的详细博客文章 10 清晰地表明，核心团队正在持续努力使Go程序在现代硬件上运行得更快、更高效。这与Go最初为基础设施软件设定的设计目标相一致。</p>
<p>Go 1.24中对WebAssembly功能的增强，暗示着Go语言正在战略性地定位自己，使其成为一种能够在包括Web浏览器和基于云的Wasm运行时等多种环境中运行的多功能语言。go:wasmexport指令和WASI反应器支持的引入 17 不仅仅是增量式的变化，它们代表着核心团队有意使Go成为更具吸引力的WebAssembly开发选择。关于可扩展Wasm应用的博客文章 17 详细介绍了这些新增功能，表明核心团队期望Go在浏览器端和服务器端的Wasm应用中都发挥重要作用。</p>
<p><strong>3&#46; 核心团队的优先事项：解读发力重点</strong></p>
<p>基于近期发布的版本、Go团队的博客文章 10 以及社区讨论，可以识别出Go核心团队的几个关键优先事项：</p>
<ul>
<li><strong>持续强调性能和效率：</strong> 每个版本中持续的性能改进 10 表明，保持和提升Go的性能特性仍然是首要任务。这包括针对现代硬件优化运行时、标准库和编译器 10。对诸如新的map实现和内存分配改进等底层优化的关注，表明核心团队致力于从根本上提高Go的性能，从而使广泛的应用受益。关于Swiss Tables的博客文章 17 详细介绍了这些深层次的运行时修改，表明了对核心性能的长期投入。  </li>
<li><strong>并发和并行方面的进步：</strong> Go在并发方面的优势 1 仍然是关键的关注点，实验性testing/synctest包的引入 17 表明，核心团队正在不断努力改进并发编程的工具和支持。关于未来可能增强并发模型的讨论 25 也表明了其持续的重要性。开发专门用于测试并发代码的工具（如实验性的testing/synctest包 17）突显了核心团队致力于确保并发Go程序的可靠性和正确性，这对于许多目标用例（如云基础设施和分布式系统）至关重要。并发是Go语言的一个核心差异化优势，而对更好的测试框架的投入则体现了对其健壮性的承诺。介绍testing/synctest的博客文章 17 证实了这一重点。  </li>
<li><strong>对WebAssembly能力的战略投资：</strong> Go 1.24中对Wasm支持的显著增强 17 以及社区持续的兴趣 21 表明，使Go成为一种可行的WebAssembly语言是核心团队的战略重点。这为Go在前端开发和其他基于Wasm的环境中开辟了新的可能性 18。通过go:wasmexport将Go函数导出到Wasm宿主，并构建WASI反应器的双重关注，表明了核心团队对Wasm支持采取了全面的方法，旨在实现与各种Wasm生态系统（包括浏览器和服务器端环境）的互操作性。关于可扩展Wasm应用的博客文章 17 详细介绍了这种双重方法，表明核心团队设想Go在浏览器端和服务器端的Wasm应用中都将发挥重要作用。  </li>
<li><strong>加强语言和标准库的安全性：</strong> Go 1.24中包含的FIPS 140-3合规性机制 17 以及Go生态系统中关于安全性的持续讨论 8 突显了核心团队致力于使Go成为构建关键应用的安全语言。对内存安全的关注 1 也与这一优先事项相符。通过简单的环境变量 18 提供对FIPS认证加密的内置支持，体现了核心团队对安全性的积极态度，使得开发人员更容易构建符合安全规范的应用，而无需依赖外部库或复杂的配置。此功能直接解决了软件开发中日益增长的安全性重要性，尤其适用于需要遵守FIPS标准的企业和政府应用。  </li>
<li><strong>持续优化云原生架构：</strong> Go在云原生开发领域的强大影响力 2 是显而易见的，预计核心团队将继续为该领域优化语言和标准库。这包括与微服务、容器化 9 以及与云平台的集成 38 相关的改进。Docker和Kubernetes等主要的云基础设施工具都是用Go语言构建的 9，这使得Go的未来与云原生技术的演进紧密相连。这表明核心团队可能会优先考虑那些能够使该生态系统中的开发人员受益的功能和改进。Go在云生态系统中的基础性作用为核心团队提供了强大的动力，以确保它仍然非常适合这些工作负载，并保持其在该领域相对于其他语言的竞争优势。  </li>
<li><strong>探索Go在新兴领域的潜力（AI/ML，边缘计算）：</strong> 尽管Go在AI/ML领域尚未占据主导地位 8，但在该领域的使用潜力正在增长，尤其是在部署模型和构建基础设施方面 10。同样，Go的高效性和小巧的体积使其成为边缘计算和IoT应用的有力候选者 8。核心团队对支持这些领域的努力可能会在未来增加，正如关于Go在AI系统中的作用的讨论所表明的那样 10。Go在处理大型数据集方面的高效率及其在高性能AI应用开发方面的潜力 8 表明，即使Go的目标不是取代Python成为主要的模型开发语言，核心团队也可能正在探索增强Go在某些AI/ML工作负载（如高性能推理或构建AI基础设施）方面的适用性的方法。Go的性能优势可以在速度和效率至关重要的AI/ML领域（如推理或边缘部署，其中低延迟至关重要）得到利用。Go的轻量级特性和内置的并发性 26 与边缘计算和IoT的需求非常契合，在这些环境中，资源受限和需要处理大量并发连接是很常见的。这种天然的契合性表明核心团队可能会继续优化Go以适应这些环境。  </li>
<li><strong>提升开发者体验：工具和生态系统：</strong> 核心团队始终致力于通过增强工具 8（包括go命令、go vet和IDE集成 38）来改善开发者体验。错误处理 8 和包管理 5 的改进也是持续的优先事项。Go生态系统的健康发展 8 对于语言未来的成功至关重要。Go 1.24中引入的用于管理工具依赖的工具（使用go get &#45;tool和go tool 18）直接解决了Go开发人员常见的workflow挑战，简化了开发所需的外部实用程序的管理，体现了对实用性和改善Go程序员日常体验的关注。简化开发工具的依赖管理可以改善整体开发者体验，并减少Go项目中的摩擦。诸如go vet（带有新的测试分析器）等现有工具的持续改进以及对新工具和功能的不断探索 8 表明，核心团队致力于为Go程序员提供一个健壮高效的开发环境，帮助他们编写更好更可靠的代码。强大的工具链对于开发者生产力至关重要，核心团队对这方面的投入反映了其对于Go语言长期成功的意义。</li>
</ul>
<p><strong>4&#46; 不断演进的格局：未来5-10年的Go语言</strong></p>
<p>展望未来，可以预见Go语言的几个趋势和潜在发展方向：</p>
<ul>
<li><strong>预期的语言演进和潜在的新特性：</strong> 尽管Go 1.x一直秉持着对向后兼容性的坚定承诺 1，但泛型的引入 8 表明，Go愿意为了解决关键的局限性和满足社区的需求而进行演进。未来的演进可能包括进一步完善泛型、潜在地改进错误处理 8，以及基于社区反馈和不断发展的技术格局，谨慎地引入其他特性。关于“Go 2.0”的讨论 8 表明了对更重大变革的长期愿景，但核心团队强调将采取循序渐进的方式 35。正如Russ Cox 48 所阐述的，以及Go语言缓慢但稳步的发展历程 35 所反映的那样，核心团队对语言的改变采取谨慎的态度。这表明，虽然核心团队对演进持开放态度，但他们将继续优先考虑稳定性和向后兼容性，以避免破坏庞大的现有Go代码生态系统。这种谨慎的做法一直是Go语言发展的标志，并且很可能会继续下去，从而确保Go语言对于长期项目来说仍然是一个可靠的选择。  </li>
<li><strong>标准库的增长和成熟：</strong> 标准库是Go语言的一大优势 1，提供了广泛的开箱即用功能。预计未来的增长将包括新的包以及对现有包的改进，可能涉及网络、数据处理和对新兴技术的支持等领域。math/rand/v2包的引入 10 为未来的库演进和现代化提供了一个范例。正如Go语言15周年纪念 10 中提到的那样，引入带有版本控制的新标准库包（如math/rand/v2）表明了一种具有前瞻性的库演进方法。这使得在不破坏与旧版本兼容性的情况下实现重大改进和新功能成为可能，为在遵守Go 1兼容性承诺的同时实现现代化提供了一条途径。  </li>
<li><strong>Go Modules和依赖管理的作用：</strong> Go Modules 5 已成为Go语言依赖管理的标准，未来的发展可能会侧重于进一步简化和增强该系统。go.mod中工具指令的引入 18 是这种演进的最新例证。对Go Modules的持续改进，例如跟踪工具依赖的能力 18，表明核心团队致力于提供一个健壮且用户友好的依赖管理系统。这对于大型复杂的Go项目的可扩展性和可维护性至关重要，并反映了持续改进开发者体验的努力。  </li>
<li><strong>社区影响和开源贡献：</strong> Go的开源特性 1 意味着社区通过提案 49、贡献和反馈 16 在其发展中发挥着重要作用。核心团队通过调查 17 和讨论积极与社区互动，使得社区的意见成为塑造Go未来发展方向的关键因素。提案流程本身 56 确保了任何重大变更在被采纳之前都会在社区内得到仔细考虑和讨论。Go开发者调查 17 是核心团队收集广泛反馈并了解Go社区的使用模式、挑战和期望改进的关键机制。这种数据驱动的方法确保了语言的演进能够满足用户的实际需求。</li>
</ul>
<p><strong>5&#46; Go的应用：应对现代挑战</strong></p>
<p>Go语言的设计和近期发展使其能够很好地应对软件开发中的几个现代挑战：</p>
<ul>
<li><strong>云计算和微服务：巩固Go的地位：</strong> Go的高效性、并发性和小巧的二进制文件使其非常适合构建云原生应用和微服务 3。其持续的演进，包括性能的提升和并发测试工具的改进，可能会进一步加强其在该领域的地位。Go语言通过goroutine和channel实现的内置并发模型 1 为构建需要高效处理大量并发请求的分布式系统和微服务提供了显著的优势。与依赖外部库实现并发的语言相比，这种内置的并发模型简化了可扩展和响应迅速的云应用的开发。  </li>
<li><strong>边缘计算和物联网：发挥Go的效率优势：</strong> Go的性能和较小的资源占用使其成为边缘计算和物联网应用的绝佳选择 8。随着这些领域的持续增长，Go的作用预计将进一步扩大，尤其是在针对资源受限环境进行优化方面。Go语言生成的小巧且自包含的二进制文件 1 对于资源受限（如内存和处理能力）的边缘设备和物联网环境尤其有益。这使得Go应用能够在更广泛的硬件上高效运行。  </li>
<li><strong>WebAssembly：将Go的触角延伸到前端：</strong> 凭借Go 1.24中增强的Wasm支持和持续的开发 17，Go正成为构建高性能前端Web应用的可行选择，可能在某些领域挑战JavaScript的主导地位，尤其是在计算密集型任务或需要浏览器中实现类似原生性能的应用方面。即使编译为WebAssembly 24，Go的性能特性也为Web应用带来了相比传统基于JavaScript的解决方案的显著性能提升潜力，尤其是在涉及复杂计算或需要与系统资源紧密交互的应用方面。  </li>
<li><strong>人工智能和机器学习：探索新的领域：</strong> 尽管在库的可用性方面仍然存在挑战 15，但Go的性能和效率使其成为部署和提供AI/ML模型的有希望的语言 8。未来的发展可能会看到对基于Go的AI/ML库和框架的更多投入，可能侧重于Go的优势（如用于并行处理的并发性）特别有益的领域。Go强大的性能和并发能力使其非常适合构建支持AI/ML工作负载的基础设施，例如数据处理管道、模型服务平台和分布式训练系统，即使它不会成为所有AI/ML开发阶段的主要语言。</li>
</ul>
<p><strong>6&#46; Go未来面临的挑战和考虑因素</strong></p>
<p>尽管Go语言的发展前景良好，但也面临着一些挑战和需要考虑的因素：</p>
<ul>
<li><strong>在简洁性与特性扩展之间取得平衡：</strong> Go的简洁性是其核心优势之一 1，但诸如泛型等特性的加入也引入了复杂性。核心团队必须在对新特性的渴望与保持语言的简洁性和可读性之间仔细权衡 8。泛型的引入虽然解决了社区的一个主要需求，但也代表着Go最初极简主义设计理念的一次偏离。核心团队需要继续仔细评估未来的特性提案，以确保它们在提供实质性好处的同时，不会过度损害语言的可读性和易于理解的核心原则。  </li>
<li><strong>回应社区反馈和不断变化的需求：</strong> Go社区对某些限制和期望的特性提出了很多意见 8，核心团队需要继续与这些反馈互动，并在坚守其核心原则的同时，使语言适应不断变化的需求 10。核心团队通过调查、博客文章和提案流程 17 与Go社区的积极互动对于确保语言的演进符合用户的实际需求和更广泛的软件开发趋势至关重要。维持这种开放的沟通和反馈循环对于Go语言的长期健康和相关性至关重要。  </li>
<li><strong>来自其他编程语言的竞争：</strong> Go面临着来自其他现代编程语言（如Rust 5）以及其他也针对类似领域（如云原生开发和高性能计算）的语言的竞争。Go未来的成功将取决于其维持独特优势并继续响应竞争格局而发展自身的能力。尽管Go和Rust经常在相似的领域展开竞争，但它们提供了不同的权衡（例如，Go的简洁性与Rust对不使用垃圾回收的内存安全的关注）。Go的持续成功可能取决于强调其优势并解决其相对于竞争对手的劣势，例如错误处理的冗长 59 或其他语言中存在的某些高级语言特性的缺乏。</li>
</ul>
<p><strong>7&#46; 结论：规划Go未来十年的发展方向</strong></p>
<p>Go语言有望在未来5到10年内继续保持增长和发展。正如近期发布的版本和社区互动所表明的那样，核心团队的优先事项侧重于持续的性能改进、并发方面的进步、对WebAssembly的战略投资、加强安全性、持续优化云原生架构以及探索AI/ML和边缘计算等新兴领域。</p>
<p>尽管在简洁性与特性扩展之间取得平衡以及应对竞争格局将是关键的挑战，但Go语言强大的基础、活跃的社区以及核心团队致力于满足开发者需求的承诺，都预示着Go语言拥有光明的未来。其适应现代挑战的能力以及对实用解决方案的持续关注，可能会在未来几年内巩固其作为构建可靠、可扩展和高效软件系统的关键语言的地位。</p>
<p><strong>有价值的表格：</strong></p>
<ol>
<li><strong>表格：近期Go版本（Go 1.23和Go 1.24）的关键特性和关注领域</strong></li>
</ol>
<table>
<thead>
<tr>
<th align="left">版本</th>
<th align="left">关键语言特性</th>
<th align="left">显著性能提升</th>
<th align="left">工具增强</th>
<th align="left">标准库新增/变更</th>
<th align="left">版本体现的关注领域</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Go 1.23</td>
<td align="left">slices/maps中的迭代器函数</td>
<td align="left">配置文件引导优化 (PGO)</td>
<td align="left">改进的go命令</td>
<td align="left">新增iter包</td>
<td align="left">性能，泛型集成</td>
</tr>
<tr>
<td align="left">Go 1.24</td>
<td align="left">泛型类型别名</td>
<td align="left">更快的map (Swiss Tables), 内存分配, 互斥锁</td>
<td align="left">新的测试分析器，工具依赖管理</td>
<td align="left">FIPS 140-3, os.Root, runtime.AddCleanup, 弱指针</td>
<td align="left">性能，泛型，Wasm，安全，开发者体验</td>
</tr>
</tbody>
</table>
<ol>
<li><strong>表格：Go语言的采用统计数据和趋势</strong></li>
</ol>
<table>
<thead>
<tr>
<th align="left">年份</th>
<th align="left">统计来源</th>
<th align="left">指标</th>
<th align="left">主要发现/趋势</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">2024</td>
<td align="left">Stack Overflow 开发者调查</td>
<td align="left">最受喜爱的编程语言之一</td>
<td align="left">表明开发者满意度高。</td>
</tr>
<tr>
<td align="left">2024</td>
<td align="left">Talent.com</td>
<td align="left">美国Go开发者平均年薪约为$132,823</td>
<td align="left">显示出对Go开发者的强烈需求和高价值。</td>
</tr>
<tr>
<td align="left">2023</td>
<td align="left">Go开发者调查 H2</td>
<td align="left">&#62;90% 开发者满意度</td>
<td align="left">突显了Go社区内的积极体验。</td>
</tr>
<tr>
<td align="left">2021</td>
<td align="left">Stack Overflow 调查</td>
<td align="left">约9.55% 的开发者使用Go</td>
<td align="left">显示出相当一部分开发者正在积极使用Go。</td>
</tr>
<tr>
<td align="left">2020</td>
<td align="left">JetBrains 开发者生态系统</td>
<td align="left">约110万主要Go开发者，约270万包括第二语言</td>
<td align="left">表明全球拥有庞大且不断增长的Go开发者社区。</td>
</tr>
<tr>
<td align="left">2019</td>
<td align="left">Stack Overflow 调查</td>
<td align="left">Go是第三大最想学习的语言</td>
<td align="left">表明随着更多开发者希望获得Go技能，其采用率将持续增长。</td>
</tr>
<tr>
<td align="left">2024</td>
<td align="left">Okoone.com</td>
<td align="left">Go的用户群在过去五年内增长了两倍</td>
<td align="left">表明Go的受欢迎程度和采用率迅速增长。</td>
</tr>
<tr>
<td align="left">2024</td>
<td align="left">Developer Nation 调查</td>
<td align="left">11% 的后端开发者目前使用Go</td>
<td align="left">提供了Go在关键目标人群中的具体采用率。</td>
</tr>
</tbody>
</table>
<p><strong>Works cited</strong></p>
<p>// 数量太多，这里省略。</p>
<hr />
<p><a href="https://public.zsxq.com/groups/51284458844544">Gopher部落知识星球</a>在2025年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。并且，2025年将在星球首发“Go陷阱与缺陷”和“Go原理课”专栏！此外，我们还会加强星友之间的交流和互动。欢迎大家踊跃提问，分享心得，讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落，享受coding的快乐! 欢迎大家踊跃加入！</p>
<p><img src="http://image.tonybai.com/img/tonybai/gopher-tribe-zsxq-small-card.png" alt="img{512x368}" /><br />
<img src="http://image.tonybai.com/img/tonybai/go-programming-from-beginner-to-master-qr.png" alt="img{512x368}" /></p>
<p><img src="http://image.tonybai.com/img/tonybai/go-first-course-banner.png" alt="img{512x368}" /><br />
<img src="http://image.tonybai.com/img/tonybai/imooc-go-column-pgo-with-qr.jpg" alt="img{512x368}" /></p>
<p>著名云主机服务厂商DigitalOcean发布最新的主机计划，入门级Droplet配置升级为：1 core CPU、1G内存、25G高速SSD，价格6$/月。有使用DigitalOcean需求的朋友，可以打开这个<a href="https://m.do.co/c/bff6eed92687">链接地址</a>：https://m.do.co/c/bff6eed92687 开启你的DO主机之路。</p>
<p>Gopher Daily(Gopher每日新闻) &#8211; https://gopherdaily.tonybai.com</p>
<p>我的联系方式：</p>
<ul>
<li>微博(暂不可用)：https://weibo.com/bigwhite20xx</li>
<li>微博2：https://weibo.com/u/6484441286</li>
<li>博客：tonybai.com</li>
<li>github: https://github.com/bigwhite</li>
<li>Gopher Daily归档 &#8211; https://github.com/bigwhite/gopherdaily</li>
<li>Gopher Daily Feed订阅 &#8211; https://gopherdaily.tonybai.com/feed</li>
</ul>
<p><img src="http://image.tonybai.com/img/tonybai/iamtonybai-wechat-qr.png" alt="" /></p>
<p>商务合作方式：撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。</p>
<p style='text-align:left'>&copy; 2025, <a href='https://tonybai.com'>bigwhite</a>. 版权所有. </p>
]]></content:encoded>
			<wfw:commentRss>https://tonybai.com/2025/03/16/gemini-deep-research-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
