[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-linux-kernel-history-release-logic-zh":3,"article-related-linux-kernel-history-release-logic-zh":30,"series-tools-a7d61cd3-7d74-46ce-9249-5ba556a03ccc":83},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"a7d61cd3-7d74-46ce-9249-5ba556a03ccc","linux-kernel-history-release-logic-zh","Linux 核心版本史教你讀發布邏輯","\u003Cp data-speakable=\"summary\">我把 Linux 核心版本史拆成一份可直接套用的發布\u003Ca href=\"\u002Fnews\u002Fvance-war-warning-turns-ai-into-policy-zh\">政策\u003C\u002Fa>模板。\u003C\u002Fp>\u003Cp>我看 Linux kernel 版本史看了好一陣子，越看越火大。大家老愛把它講成「版本越大，變化越大」的直線故事，彷彿 6.x、7.x 一換，整個核心就翻桌重寫。實際上完全不是這樣。數字只是標記，真正重要的是支援窗口、維護節奏、還有這個版本到底是在告訴你「能不能上」還是「能撐多久」。我最受不了的是，很多團隊自己也在做版本號，卻把版本號當成面子工程，最後讓使用者自己猜政策。\u003Cp>\u003Cp>我後來才明白，Linux 的版本史之所以值得學，不是因為它很熱鬧，而是因為它把「怎麼發、怎麼維護、怎麼讓人判斷風險」這三件事綁在一起。這比一堆花俏 release note 有用多了。你如果也在做 SDK、平台、服務或內部基礎設施，我覺得這套思路真的可以直接抄。\u003C\u002Fp>\u003Cp>我這篇的起點是 \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLinux_kernel_version_history\">Wikipedia 的 Linux kernel version history\u003C\u002Fa>，我拿它當骨架，再去對照 \u003Ca href=\"https:\u002F\u002Fwww.kernel.org\u002F\">kernel.org\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fwww.linuxfoundation.org\u002F\">Linux Foundation\u003C\u002Fa>，以及 \u003Ca href=\"https:\u002F\u002Fcip-project.org\u002F\">Civil Infrastructure Platform\u003C\u002Fa> 的支援脈絡。這不是新聞整理，我是把它拆成你可以拿去改自己發布頁的做法。\u003C\u002Fp>\u003Ch2>版本號不是風險等級，別自己腦補\u003C\u002Fh2>\u003Cblockquote>Linux kernel 的 major version 並沒有像一般語意化版本那樣，天然代表破壞性或重大升級；它更像一條 release line 的標記。\u003C\u002Fblockquote>\u003Cp>白話講就是：Linux 核心的數字，不是在跟你說「這版很危險」或「這版很小」。它只是告訴你這是一條哪個分支的發布線。很多人看到 6.x 跳到 7.x，就先腦補成大改版，然後在會議上開始瞎緊張。這種讀法很常見，但真的很蠢。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780290212928-t3bd.png\" alt=\"Linux 核心版本史教你讀發布邏輯\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我以前在平台團隊也踩過類似坑。有人看到 major bump 就以為一定有 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> 地震，結果文件、測試、上線流程全部被帶歪。後來才發現，真正該問的不是「數字大不大」，而是「這條線對相容性、支援期、回補策略的承諾是\u003Ca href=\"\u002Fnews\u002Fmistral-industrial-push-challenge-openai-zh\">什麼\u003C\u002Fa>」。Linux 早就把這件事講得很清楚，只是很多人懶得聽。\u003C\u002Fp>\u003Cp>實操寫法很簡單：你自己的版本號要先定義語義。它到底是 release train、相容性承諾、還是純粹行銷標籤？三選一先講清楚，別混著用。\u003C\u002Fp>\u003Cul>\u003Cli>版本號只負責辨識發布線，不負責替你背書風險。\u003C\u002Fli>\u003Cli>相容性承諾要另外寫，不要藏在數字裡。\u003C\u002Fli>\u003Cli>如果使用者會拿版本號猜安全性，你的命名規則就有問題。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>支援窗口比版本名更值錢\u003C\u002Fh2>\u003Cp>Linux 版本史真正有用的地方，不是新版叫什麼，而是每條線到底支援多久。Wikipedia 這頁把版本分成幾種支援型態：跟著下一版穩定版走、長期支援版，以及由 \u003Ca href=\"https:\u002F\u002Fcip-project.org\u002F\">CIP\u003C\u002Fa> 維護的超長期支援。這才是實際營運會看的東西。\u003C\u002Fp>\u003Cp>也就是說，你如果在管基礎設施，重點根本不是 6.18 還是 6.19，而是你能不能安心撐到明年、後年，甚至更久。很多團隊很愛發新版，卻不敢講支援到哪一天。結果半年後大家才發現，自己 pin 的 branch 已經沒人修了。這種事我看太多次了，真的很煩。\u003C\u002Fp>\u003Cp>我之前幫團隊選過要跟 distro kernel 還是更貼 upstream。最後不是 feature 表贏了，而是支援政策贏了。因為你一旦把問題換成「多久能拿到修補」而不是「有什麼新東西」，答案就會變得很現實。\u003C\u002Fp>\u003Cp>實操寫法：把支援窗口直接寫在版本頁上，不要只寫 release date。使用者可以接受慢一點，但不能接受你講不清楚。\u003C\u002Fp>\u003Cul>\u003Cli>版本名旁邊直接放 support end date。\u003C\u002Fli>\u003Cli>把 latest stable、LTS、SLTS 分開列。\u003C\u002Fli>\u003Cli>先講維護多久，再講功能多炫。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>3.x 的改名，不是技術重寫，是在修正誤讀\u003C\u002Fh2>\u003Cp>Wikipedia 提到，從 3.x 開始，minor version 被刻意壓在 20 左右，目的不是技術限制，而是避免大家誤以為大數字變化代表更小的改動。這種做法很老實：既然版本號會誤導人，那就把容易誤導的地方修掉。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780290212808-87ze.png\" alt=\"Linux 核心版本史教你讀發布邏輯\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>翻譯一下就是，Linux 團隊早就知道版本號本身會製造錯覺。你如果讓 3.1 到 3.2 看起來像大改，讓 3.30 到 3.31 看起來像小改，那使用者讀版本的\u003Ca href=\"\u002Fnews\u002F4-ways-ai-is-changing-us-military-war-games-zh\">方式\u003C\u002Fa>就會反過來。這不是技術問題，是溝通問題。\u003C\u002Fp>\u003Cp>我很喜歡這個決策，因為它承認一件很多工程團隊不想承認的事：版本號是溝通工具，不是帳務系統。你如果讓它誤導使用者，那就是設計失敗，不是使用者太笨。\u003C\u002Fp>\u003Cp>實操寫法：檢查你自己的版本規則有沒有在暗示不存在的風險或規模差異。如果有，就調整命名、補文件，必要時直接重設版本策略。\u003C\u002Fp>\u003Cul>\u003Cli>別讓數字大小暗示改動大小。\u003C\u002Fli>\u003Cli>如果版本號會誤導，就改規則，不要只改簡報。\u003C\u002Fli>\u003Cli>把相容性說明放在版本頁主體，不要藏 FAQ。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>功能列表其實是在透露維護重心\u003C\u002Fh2>\u003Cp>Linux kernel 的 release history 裡，每條線都會列出一堆功能：像是 fsnotify、io_uring、Clang capability analysis、新 syscall、檔案系統與排程調整。表面上看起來像「這版加了什麼酷東西」，但我覺得那是最淺的讀法。\u003C\u002Fp>\u003Cp>更準確的讀法是：這些功能在告訴你，維護者把力氣花在哪些地方。某個版本一直在補檔案系統，代表那塊還在收斂；某個版本在補 async I\u002FO，代表那條 API 還在磨；某個版本新增 syscall，代表行為正在被正式化。這些都不是單純功能清單，而是維護方向。\u003C\u002Fp>\u003Cp>我之前看某個平台 release note 也是一樣，大家只會寫「新增某某功能」，但完全沒說這是穩定化、效能、清理、還是安全硬化。結果使用者根本無法判斷這個版本該不該上。Linux 的做法比較乾脆：功能就是信號，信號要能讀。\u003C\u002Fp>\u003Cp>實操寫法：每個變更都標分類，不要只列名稱。你要讓讀者一眼看出這次是在做什麼。\u003C\u002Fp>\u003Cul>\u003Cli>把變更分成 API 穩定、效能、安全、清理、相容性。\u003C\u002Fli>\u003Cli>移除項目要獨立列，不要混在新增裡。\u003C\u002Fli>\u003Cli>同一子系統反覆被改，通常代表設計還沒站穩。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>真正的產品是長支援分支，不是首頁上的最新號\u003C\u002Fh2>\u003Cp>Linux 版本史最有意思的地方，是它同時照顧多種時間尺度。mainline 在跑，stable 在撐，LTS 和 SLTS 則是很多實際系統真正依賴的生命線。你如果只看最新版本，會錯過整個專案最像產品的那一面。\u003C\u002Fp>\u003Cp>像 Debian、RHEL、Ubuntu、嵌入式系統、各種基礎設施，很多時候要的不是最新，而是「我可以放心撐三年、五年、甚至更久」。這跟一般 app 的節奏完全不同。最新版本很爽，但不一定適合上線；能長期維護的分支，才是大家真的拿來活的東西。\u003C\u002Fp>\u003Cp>我碰過不少團隊一直迷信 latest，覺得新就是好。結果一碰到 driver、認證、供應商支援，整個方案就卡死。你如果部署情境需要穩定，那你要找的是支援故事，不是版本號本身。\u003C\u002Fp>\u003Cp>實操寫法：至少拆兩條線，一條快、一條穩。快線給開發跟試驗，穩線給真正要活下去的使用者。\u003C\u002Fp>\u003Cul>\u003Cli>快線負責新功能驗證。\u003C\u002Fli>\u003Cli>穩線負責可預期的維護。\u003C\u002Fli>\u003Cli>如果你只有一條線，就老實說明你要大家承擔你的節奏。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>版本史其實是維護史，不是發表會\u003C\u002Fh2>\u003Cp>我讀到最後，得到的結論很直接：Linux kernel version history 不是在展示「每版多厲害」，而是在展示「這個專案怎麼被照顧」。維護者、支援日期、支援類型、功能主題，這些東西放在一起，才構成真正有用的版本史。\u003C\u002Fp>\u003Cp>Linux 核心從 1991 年一路長到現在，0.11 時期就已經能 self-host，1.0.0 在 1994 年出現，當時已經有超過 170,000 行原始碼。這些數字不是拿來炫耀的，是在說：一個大型專案可以長大，但不能失去自己定義發布節奏的能力。\u003C\u002Fp>\u003Cp>我最想偷學的是這個結構，不是它的程式碼。版本頁如果只是在列 changelog，那只是讓維護者看起來很忙；如果它能讓使用者判斷能不能上、能撐多久、誰在維護，那才是真的有用。\u003C\u002Fp>\u003Cp>實操寫法：你的版本頁要直接回答三件事：誰維護、維護多久、這條線主要在做什麼。少一個，使用者就得自己猜。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Release history template inspired by Linux kernel version history\n\n## What this page is for\nThis release history documents version lines, maintenance windows, and the kind of change each line is expected to carry.\n\n## Versioning policy\n- Major version: identifies a release line, not a compatibility promise by itself.\n- Minor version: used for release sequencing within a line.\n- Patch version: used for fixes and backports.\n- Version numbers do not replace compatibility documentation.\n\n## Support levels\n- Latest stable: maintained until the next stable release plus a defined grace period.\n- LTS: maintained for a multi-year window.\n- SLTS: maintained for extended infrastructure use cases.\n\n## Release table\n| Version | Release date | Maintainer | Support end | Status | Main themes |\n|---|---:|---|---:|---|---|\n| X.Y | YYYY-MM-DD | Name or team | YYYY-MM-DD | Stable \u002F LTS \u002F SLTS | Short list of theme areas |\n| X.Y.Z | YYYY-MM-DD | Name or team | YYYY-MM-DD | Patch line | Fixes, backports, security updates |\n\n## How to read this page\n- If you need the newest features, use the latest stable line.\n- If you need predictable maintenance, use LTS.\n- If you need long infrastructure support, use SLTS.\n- Do not infer risk from the size of the number alone.\n\n## Release note format\n### Version X.Y\n- Release date:\n- Maintainer:\n- Support window:\n- Notable additions:\n- Notable removals:\n- Compatibility notes:\n- Operational notes:\n\n## Example feature tagging\n- API stabilization\n- Performance\n- Security hardening\n- Cleanup \u002F removal\n- Hardware support\n- Filesystem \u002F storage\n- Scheduling \u002F runtime behavior\n\n## Example deprecation policy\n- Announce deprecations at least one release line before removal.\n- Document replacement paths.\n- Keep removal notes visible in the release table.\n\n## Example support statement\nThis release line is supported until the next stable line plus 3 months.\nLTS lines are maintained for multiple years.\nSLTS lines are maintained for infrastructure deployments that need longer horizons.\n\n## Copy this into your own project\nReplace the placeholders with your own version lines, support dates, and maintainer names.\nKeep the policy visible on the same page as the history.\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這段模板是我根據 \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLinux_kernel_version_history\">Wikipedia 的 Linux kernel version history\u003C\u002Fa> 重寫出來的，不是原文照抄。原始事實脈絡來自那頁，延伸的整理方式則是我自己整理成比較適合工程團隊直接用的格式。\u003C\u002Fp>\u003Cp>如果你要查原始資料，我會先看 Wikipedia，再對照 \u003Ca href=\"https:\u002F\u002Fwww.kernel.org\u002F\">kernel.org\u003C\u002Fa> 的發布資訊，補上 \u003Ca href=\"https:\u002F\u002Fwww.linuxfoundation.org\u002F\">Linux Foundation\u003C\u002Fa> 與 \u003Ca href=\"https:\u002F\u002Fcip-project.org\u002F\">CIP\u003C\u002Fa> 的支援脈絡。這幾個來源加起來，夠你把自己的 release policy 寫得像回事。\u003C\u002Fp>","把 Linux 核心版本史讀成發布政策、支援窗口與版本號真正含義的可抄模板。","en.wikipedia.org","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLinux_kernel_version_history",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780290212928-t3bd.png","tools","zh","34df0f30-deea-45fb-bd27-b045f435df46",[17,18,19,20,21],"Linux kernel","release policy","LTS","version history","support window",[23,24,25],"版本號本身不是風險指標，支援窗口才是。","Linux 的版本史重點是維護政策，不是功能清單。","你可以直接套用模板，把自己的發布頁改成可判斷、可維護的格式。",2,"2026-06-01T05:03:03.970687+00:00","2026-06-01T05:03:03.946+00:00","13637d9f-b9a5-40ff-9d37-af2ab7a697f1",{"tags":31,"relatedLang":42,"relatedPosts":46},[32,34,36,38,40],{"name":20,"slug":33},"version-history",{"name":18,"slug":35},"release-policy",{"name":17,"slug":37},"linux-kernel",{"name":19,"slug":39},"lts",{"name":21,"slug":41},"support-window",{"id":15,"slug":43,"title":44,"language":45},"linux-kernel-history-release-logic-en","Linux kernel history lets you read release logic","en",[47,53,59,65,71,77],{"id":48,"slug":49,"title":50,"cover_image":51,"image_url":51,"created_at":52,"category":13},"63d8b456-ad6b-475e-86e9-d4677ca226aa","magenta-realtime-2-score-inside-daw-zh","Magenta RealTime 2 讓你在 DAW 裡即時改曲","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781046204038-8tox.png","2026-06-09T23:02:55.9651+00:00",{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":13},"f60261ff-a42e-4cfb-9f90-97785e633289","open-source-ai-tools-beat-claude-paid-tiers-zh","開源 AI 工具在價值上已經贏過 Claude 付費方案","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781045266035-on7t.png","2026-06-09T22:47:20.195939+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":13},"8520cd4f-2531-4808-a95d-26f590239d7a","500-ai-agent-projects-show-where-agents-work-now-zh","500 個 AI agent 專案，現在能做什麼","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781033591132-c0nh.png","2026-06-09T19:32:37.03924+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":13},"c557ef1c-7fde-4c86-918e-4fb9680ee9df","chocolatey-go-package-policy-installs-zh","Chocolatey 的 Go 安裝變成政策","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781029110289-xkbh.png","2026-06-09T18:18:05.078435+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":13},"90b2df54-df6e-417d-9e16-91e9ad2f53d7","go-support-policy-turns-releases-into-a-checklist-zh","Go 支援政策把發版變清單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781028200122-3m4u.png","2026-06-09T18:02:49.50176+00:00",{"id":78,"slug":79,"title":80,"cover_image":81,"image_url":81,"created_at":82,"category":13},"119c23c6-8ae7-4c4e-820e-1eba0730d702","rustdesk-self-hosting-secure-remote-access-zh","RustDesk 自架遠端存取部署指南","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781017373324-g7et.png","2026-06-09T15:02:24.118819+00:00",[84,89,94,99,104,109,114,119,124,129],{"id":85,"slug":86,"title":87,"created_at":88},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":95,"slug":96,"title":97,"created_at":98},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":100,"slug":101,"title":102,"created_at":103},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":115,"slug":116,"title":117,"created_at":118},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":120,"slug":121,"title":122,"created_at":123},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":125,"slug":126,"title":127,"created_at":128},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":130,"slug":131,"title":132,"created_at":133},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]