Update Git4Rsearch Repo
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Gitconomy Research
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<svg width="800" height="430" viewBox="0 0 800 430" xmlns="http://www.w3.org/2000/svg" style="background-color: white;">
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead-main" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#2563EB" />
|
||||
</marker>
|
||||
<marker id="arrowhead-standard" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#34D399" />
|
||||
</marker>
|
||||
|
||||
<style>
|
||||
/* 字体与通用样式 */
|
||||
.diagram-text { font-family: "Noto Sans", sans-serif; text-anchor: middle; }
|
||||
|
||||
/* 差异化配色方案 */
|
||||
.container-compression { fill: #EFF6FF; stroke: #60A5FA; stroke-width: 2px; }
|
||||
.container-collapse { fill: #F0FDF4; stroke: #34D399; stroke-width: 2px; }
|
||||
.container-crystallization, .crystal { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; }
|
||||
|
||||
.knowledge-dot { fill: #6B7280; }
|
||||
.highlight-element { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; }
|
||||
|
||||
.connector-main { fill: none; stroke: #2563EB; stroke-width: 2px; }
|
||||
.connector-standard { fill: none; stroke: #34D399; stroke-width: 2px; }
|
||||
|
||||
/* 字体规范 */
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; }
|
||||
.title-text { font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.small-text { font-size: 11px; font-weight: normal; fill: #6B7280; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="45" class="diagram-text main-title-text">从“建造”到“生成”转变的内核</text>
|
||||
|
||||
<g id="stage-compression" transform="translate(50, 80)">
|
||||
<text class="diagram-text title-text" x="100" y="25">1. 压缩 (Compression)</text>
|
||||
<g id="knowledge-dots" transform="translate(100, 70)">
|
||||
<circle cx="-40" cy="-5" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="-20" cy="5" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="0" cy="-10" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="20" cy="0" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="40" cy="-15" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="-30" cy="10" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="10" cy="15" r="1.5" class="knowledge-dot"/>
|
||||
<circle cx="50" cy="5" r="1.5" class="knowledge-dot"/>
|
||||
</g>
|
||||
<path d="M 60 80 L 140 80 L 110 130 L 90 130 Z" class="container-compression" stroke-linejoin="round"/>
|
||||
<path d="M 70 140 C 70 160, 130 160, 130 140 L 130 200 C 130 220, 70 220, 70 200 Z" class="container-compression"/>
|
||||
<text class="diagram-text small-text" x="100" y="250">海量知识被压缩为“潜力溶液”</text>
|
||||
</g>
|
||||
|
||||
<g id="stage-collapse" transform="translate(300, 80)">
|
||||
<text class="diagram-text title-text" x="100" y="25">2. 坍缩 (Collapse)</text>
|
||||
<g transform="translate(20, 135)">
|
||||
<path d="M 25 0 L 50 25 L 25 50 L 0 25 Z" class="highlight-element" />
|
||||
<text class="diagram-text body-text" x="25" y="29">晶核</text>
|
||||
</g>
|
||||
<text class="diagram-text small-text" x="45" y="200">(意图 Prompt)</text>
|
||||
<path d="M 120 140 C 120 160, 180 160, 180 140 L 180 200 C 180 220, 120 220, 120 200 Z" class="container-collapse"/>
|
||||
<path class="connector-standard" d="M 75 160 L 115 160" marker-end="url(#arrowhead-standard)"/>
|
||||
<text class="diagram-text small-text" x="150" y="250">“晶核”的注入引发“坍缩”</text>
|
||||
</g>
|
||||
|
||||
<g id="stage-crystallization" transform="translate(550, 80)">
|
||||
<text class="diagram-text title-text" x="100" y="25">3. 结晶 (Crystallization)</text>
|
||||
<path d="M 70 140 C 70 160, 130 160, 130 140 L 130 200 C 130 220, 70 220, 70 200 Z" class="container-crystallization"/>
|
||||
<g transform="translate(100, 160)">
|
||||
<path class="crystal" d="M 0 -30 L 15 -15 L 0 0 L -15 -15 Z"/>
|
||||
<path class="crystal" d="M 0 30 L 15 15 L 0 0 L -15 15 Z"/>
|
||||
<path class="crystal" d="M -26 -15 L -15 -15 L -26 15 L -40 0 Z"/>
|
||||
<path class="crystal" d="M 26 -15 L 15 -15 L 26 15 L 40 0 Z"/>
|
||||
<path class="crystal" d="M -15 15 L 0 30 L 15 15 L 0 0 Z"/>
|
||||
</g>
|
||||
<text class="diagram-text small-text" x="100" y="250">凝结成“思维晶体”(显现)</text>
|
||||
</g>
|
||||
|
||||
<path class="connector-main" d="M 250 180 L 295 180" marker-end="url(#arrowhead-main)" />
|
||||
<path class="connector-standard" d="M 500 180 L 545 180" marker-end="url(#arrowhead-standard)" />
|
||||
|
||||
<text x="400" y="400" class="diagram-text license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
|
|
@ -0,0 +1,88 @@
|
|||
<svg width="800" height="570" viewBox="0 0 800 570" xmlns="http://www.w3.org/2000/svg" style="background-color: white;">
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead-maker" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#34D399" />
|
||||
</marker>
|
||||
<marker id="arrowhead-generator" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#FACC15" />
|
||||
</marker>
|
||||
|
||||
<g id="icon-bit" fill="#374151"><path d="M9 4V2.6C9 2.27 8.73 2 8.4 2H4.6C4.27 2 4 2.27 4 2.6V4H3V2.6C3 1.72 3.72 1 4.6 1h3.8C9.28 1 10 1.72 10 2.6V4h-1zM4.6 15h3.8c.88 0 1.6-.72 1.6-1.6V12h-1v2.4c0 .33-.27.6-.6.6H4.6c-.33 0-.6-.27-.6-.6V12H3v2.4C3 14.28 3.72 15 4.6 15zM12 5.4v5.2c0 .88-.72 1.6-1.6 1.6H5.6c-.88 0-1.6-.72-1.6-1.6V5.4C4 4.52 4.72 3.8 5.6 3.8h4.8c.88 0 1.6.72 1.6 1.6zm-1 0c0-.33-.27-.6-.6-.6H5.6c-.33 0-.6.27-.6.6v5.2c0 .33.27.6.6.6h4.8c.33 0 .6-.27.6-.6V5.4z"/><path d="M6.25 8.16l-1.5-1.5l.7-.7l.8.8l1.85-1.85l.7.7z"/></g>
|
||||
<g id="icon-physical" fill="#374151"><path d="M12.38 8.53L11.8 7.3a.5.5 0 00-.47-.3H4.67a.5.5 0 00-.47.3l-.58 1.23a.5.5 0 00.47.67h8.28a.5.5 0 00.47-.67zM8 1c3.86 0 7 3.14 7 7s-3.14 7-7 7s-7-3.14-7-7s3.14-7 7-7zm0 1.25a5.75 5.75 0 100 11.5a5.75 5.75 0 000-11.5z"/><path d="M8 4.75a.5.5 0 00-.5.5v1.5a.5.5 0 00.5.5h1.5a.5.5 0 000-1H8.5V5.25a.5.5 0 00-.5-.5z"/></g>
|
||||
<g id="icon-atom" fill="#374151"><path d="M14.5 3.5v9l-6 3.5l-6-3.5v-9l6-3.5l6 3.5zm-1 8.32V4.18l-5-2.92l-5 2.92v8.32l5 2.92l5-2.92z"/><path d="M2.5 3.5l6 3.5v10l-6-3.5v-10zM8 7.42L3 4.5V11l5 2.92V7.42z"/><path d="M8.5 7l6-3.5v9l-6 3.5V7zM14 4.5L9 7.42V14l5-2.92V4.5z"/></g>
|
||||
<g id="icon-prompt" fill="#374151"><path d="M8 1a4.5 4.5 0 00-4.5 4.5c0 1.77.94 3.42 2.5 4.19V11h-1a.5.5 0 000 1h5a.5.5 0 000-1h-1V9.69c1.56-.77 2.5-2.42 2.5-4.19A4.5 4.5 0 008 1zm3.5 4.5a3.5 3.5 0 01-7 0a3.5 3.5 0 017 0zM5 14.5a.5.5 0 000 1h6a.5.5 0 000-1H5z"/></g>
|
||||
<g id="icon-emergence" fill="#374151"><path d="M8 1C4.14 1 1 4.14 1 8s3.14 7 7 7s7-3.14 7-7c0-2.39-1.22-4.48-3.05-5.73A.5.5 0 0011.5 2H10a.5.5 0 00-.5.5v2c0 .28.22.5.5.5h2a.5.5 0 00.5-.5V3.34c.9.83 1.5 1.99 1.5 3.16c0 2.76-2.24 5-5 5s-5-2.24-5-5s2.24-5 5-5c1.17 0 2.23.4 3.05.95a.5.5 0 00.67-.17l.7-.7a.5.5 0 00-.17-.67A6.95 6.95 0 008 1z"/></g>
|
||||
<g id="icon-presence" fill="#374151"><path d="M8 1.75l1.25 3.51h3.63l-3 2.29l1.12 3.54L8 8.94l-3 2.15l1.12-3.54l-3-2.29h3.63L8 1.75z"/></g>
|
||||
|
||||
<style>
|
||||
/* 字体与通用样式 */
|
||||
.diagram-text { font-family: "Noto Sans", sans-serif; text-anchor: middle; }
|
||||
|
||||
/* 差异化配色方案 */
|
||||
.box-maker { fill: #F0FDF4; stroke: #34D399; stroke-width: 2px; rx: 4; ry: 4; }
|
||||
.box-generator { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; rx: 4; ry: 4; }
|
||||
.connector-maker { fill: none; stroke: #34D399; stroke-width: 2px; }
|
||||
.connector-generator { fill: none; stroke: #FACC15; stroke-width: 2px; }
|
||||
.title-maker, .title-generator { font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
|
||||
/* 字体规范 */
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.small-text { font-size: 11px; font-weight: normal; fill: #6B7280; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="45" class="diagram-text main-title-text">生成式物理学:两种创造范式</text>
|
||||
|
||||
<g id="maker-paradigm" transform="translate(0, 80)">
|
||||
<text class="diagram-text title-maker" x="200" y="40">Maker : 物理化过程</text>
|
||||
<g class="flow-element" transform="translate(120, 80)">
|
||||
<rect class="box-maker" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-bit" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="50">bit</text>
|
||||
<text class="diagram-text small-text" x="80" y="65">(蓝图)</text>
|
||||
</g>
|
||||
<g class="flow-element" transform="translate(120, 210)">
|
||||
<rect class="box-maker" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-physical" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="55">物理化</text>
|
||||
</g>
|
||||
<g class="flow-element" transform="translate(120, 340)">
|
||||
<rect class="box-maker" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-atom" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="50">atom</text>
|
||||
<text class="diagram-text small-text" x="80" y="65">(实体)</text>
|
||||
</g>
|
||||
<path class="connector-maker" d="M 200 160 L 200 205" marker-end="url(#arrowhead-maker)" />
|
||||
<path class="connector-maker" d="M 200 290 L 200 335" marker-end="url(#arrowhead-maker)" />
|
||||
</g>
|
||||
|
||||
<g id="generator-paradigm" transform="translate(400, 80)">
|
||||
<text class="diagram-text title-generator" x="200" y="40">Generator : 涌现过程</text>
|
||||
<g class="flow-element" transform="translate(120, 80)">
|
||||
<rect class="box-generator" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-prompt" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="50">prompt</text>
|
||||
<text class="diagram-text small-text" x="80" y="65">(意图)</text>
|
||||
</g>
|
||||
<g class="flow-element" transform="translate(120, 210)">
|
||||
<rect class="box-generator" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-emergence" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="55">涌现</text>
|
||||
</g>
|
||||
<g class="flow-element" transform="translate(120, 340)">
|
||||
<rect class="box-generator" x="0" y="0" width="160" height="80" />
|
||||
<use href="#icon-presence" x="68" y="12" width="24" height="24"/>
|
||||
<text class="diagram-text body-text" x="80" y="50">presence</text>
|
||||
<text class="diagram-text small-text" x="80" y="65">(显现)</text>
|
||||
</g>
|
||||
<path class="connector-generator" d="M 200 160 L 200 205" marker-end="url(#arrowhead-generator)" />
|
||||
<path class="connector-generator" d="M 200 290 L 200 335" marker-end="url(#arrowhead-generator)" />
|
||||
</g>
|
||||
|
||||
<text x="400" y="540" class="diagram-text license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.3 KiB |
|
|
@ -0,0 +1,73 @@
|
|||
<svg width="800" height="430" viewBox="0 0 800 430" xmlns="http://www.w3.org/2000/svg" style="background-color: white;">
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#2563EB" />
|
||||
</marker>
|
||||
|
||||
<g id="icon-fusion" fill="#3B82F6"><path d="M12,3 C12.55,3 13,3.45 13,4 L13,10 C13,10.55 12.55,11 12,11 L4,11 C3.45,11 3,10.55 3,10 L3,9 L1,9 L1,6 L3,6 L3,4 C3,3.45 3.45,3 4,3 L12,3 Z M12,1 C2.64,1 1,2.64 1,4 L1,4 L1,5 L0,5 L0,7 L1,7 L1,8 L1,8 C1,9.36 2.64,13 12,13 L12,13 C12.93,13 14,12.15 14,11.25 L14,3.75 C14,2.85 12.93,1 12,1 Z"/><path d="M5.5,5.5 C6.33,5.5 7,6.17 7,7 C7,7.83 6.33,8.5 5.5,8.5 C4.67,8.5 4,7.83 4,7 C4,6.17 4.67,5.5 5.5,5.5 Z M9,8 L11,8 L11,7 L9,7 L9,8 Z M9,6 L11,6 L11,5 L9,5 L9,6 Z"/></g>
|
||||
<g id="icon-treasure" fill="#34D399"><path d="M8,1 C4.13,1 1,4.13 1,8 C1,11.87 4.13,15 8,15 C11.87,15 15,11.87 15,8 C15,4.13 11.87,1 8,1 Z M8,13 C5.24,13 3,10.76 3,8 C3,5.24 5.24,3 8,3 C10.76,3 13,5.24 13,8 C13,10.76 10.76,13 8,13 Z"/><path d="M8.5,4 L7.5,4 L7.5,7.5 L4,7.5 L4,8.5 L7.5,8.5 L7.5,12 L8.5,12 L8.5,8.5 L12,8.5 L12,7.5 L8.5,7.5 L8.5,4 Z"/></g>
|
||||
<g id="icon-gift" fill="#FACC15"><path d="M8.5,1 L6.5,1 L3,4.5 L3,9.5 L6.5,13 L8.5,13 L12,9.5 L12,4.5 L8.5,1 Z M11,8.79 L8,11.79 L4,8.79 L4,5.21 L7,2.21 L8,2.21 L11,5.21 L11,8.79 Z"/><path d="M7.29,7 L5.03,4.74 L4.32,5.45 L6.58,7.71 L4.32,9.97 L5.03,10.68 L7.29,8.42 L9.55,10.68 L10.26,9.97 L8,7.71 L10.26,5.45 L9.55,4.74 L7.29,7 Z"/></g>
|
||||
|
||||
<style>
|
||||
/* 字体与通用样式 */
|
||||
.diagram-text { font-family: "Noto Sans", sans-serif; text-anchor: middle; }
|
||||
|
||||
/* 配色方案 */
|
||||
.box-main { fill: #EFF6FF; stroke: #60A5FA; stroke-width: 2px; rx: 8; ry: 8; }
|
||||
.box-standard { fill: #F0FDF4; stroke: #34D399; stroke-width: 2px; rx: 8; ry: 8; }
|
||||
.box-highlight { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; rx: 8; ry: 8; }
|
||||
.connector { fill: none; stroke: #2563EB; stroke-width: 2px; }
|
||||
.central-core { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; }
|
||||
|
||||
/* 字体规范 */
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; }
|
||||
.title-text { font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
.highlight-text { font-size: 12px; font-weight: bold; fill: #111827; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="45" class="diagram-text main-title-text">生成式思维的涌现</text>
|
||||
|
||||
<g id="central-core">
|
||||
<path class="central-core" d="M 400 90 L 420 110 L 400 130 L 380 110 Z" />
|
||||
<text class="diagram-text highlight-text" x="400" y="114">晶核 (Prompt)</text>
|
||||
</g>
|
||||
|
||||
<path class="connector" d="M 400 130 Q 400 150, 160 170" />
|
||||
<path class="connector" d="M 400 130 V 170" />
|
||||
<path class="connector" d="M 400 130 Q 400 150, 640 170" />
|
||||
|
||||
<g id="emergence-fusion" transform="translate(40, 170)">
|
||||
<rect class="box-main" x="0" y="0" width="240" height="180" />
|
||||
<use href="#icon-fusion" x="104" y="20" width="32" height="32" />
|
||||
<text class="diagram-text title-text" x="120" y="80">身份的融合</text>
|
||||
<line x1="40" y1="100" x2="200" y2="100" stroke="#60A5FA" stroke-width="1" />
|
||||
<text class="diagram-text highlight-text" x="120" y="125">对话者 & 策展人</text>
|
||||
<text class="diagram-text body-text" x="120" y="150">校准意图,定义价值</text>
|
||||
</g>
|
||||
|
||||
<g id="emergence-treasure" transform="translate(280, 170)">
|
||||
<rect class="box-standard" x="0" y="0" width="240" height="180" />
|
||||
<use href="#icon-treasure" x="104" y="20" width="32" height="32" />
|
||||
<text class="diagram-text title-text" x="120" y="80">过程的寻宝</text>
|
||||
<line x1="320" y1="100" x2="480" y2="100" stroke="#34D399" stroke-width="1" />
|
||||
<text class="diagram-text highlight-text" x="120" y="125">拥抱模糊 & 享受探索</text>
|
||||
<text class="diagram-text body-text" x="120" y="150">在不确定性中发现</text>
|
||||
</g>
|
||||
|
||||
<g id="emergence-gift" transform="translate(520, 170)">
|
||||
<rect class="box-highlight" x="0" y="0" width="240" height="180" />
|
||||
<use href="#icon-gift" x="104" y="20" width="32" height="32" />
|
||||
<text class="diagram-text title-text" x="120" y="80">素材的新生</text>
|
||||
<line x1="560" y1="100" x2="720" y2="100" stroke="#FACC15" stroke-width="1" />
|
||||
<text class="diagram-text highlight-text" x="120" y="125">意外为礼 & 重构成金</text>
|
||||
<text class="diagram-text body-text" x="120" y="150">化“失控”为创新机遇</text>
|
||||
</g>
|
||||
|
||||
<text x="400" y="400" class="diagram-text license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
|
|
@ -0,0 +1,113 @@
|
|||
# 生成者时代创造心法的一些思考——从Maker到Generator
|
||||
|
||||
## 1. 生成式的物理学
|
||||
|
||||
如果你最近也沉浸在使用AIGC工具进行创作,是否偶尔会感到一种奇特的“失重感”?
|
||||
|
||||
仿佛你手中那支用了多年的画笔,突然拥有了自己的生命。你依然是它的主人,引导着它的走向;但同时,你又成了一名观众,好奇地注视着它在画布上渲染出你从未预料到的色彩与纹理。你既在创造,又在见证。这种感觉,一半是掌控,一半是释放;一半是意图的延伸,一半是惊喜的降临。
|
||||
|
||||
我时常在这种失重感中思考,我们这一代创造者的身份,似乎正在经历一场安静而深刻的变迁。
|
||||
|
||||
<br>
|
||||
*图:Maker和Generator范式比较*
|
||||
|
||||
我们曾无比熟悉并赞美那个属于“创客”(Maker)的时代。它的信条如磐石般坚固:`bit (蓝图) -> (物理化) -> atom (实体)`。那是一个在坚实大地上建造庇护所的过程,每一步都清晰、可控、有迹可循。我们是建筑师,是工程师,我们的快乐源于将脑中的蓝图,精确无误地复刻到物理世界之中。
|
||||
|
||||
而今,我们似乎都成了“生成者”(Generator)。我们的新信条,`prompt` `(意图) -> (涌现) -> presence (显现)`,则更像是在一片充满可能性的流体中航行。
|
||||
|
||||
这种从“建造”到“生成”的转变,其底层逻辑究竟是什么?或许,我们可以用“**压缩与结晶**”的比喻,为这种“失重感”找到一个物理上的锚点。
|
||||
|
||||
<br>
|
||||
*图:从“建造”到“生成”转变的内核*
|
||||
|
||||
大模型对海量人类知识的训练,是一个极致的**压缩**过程。它的目标并非记忆,而是提炼出数据背后不可言说的“规律”与“感觉”。最终,它形成了一片蕴含了所有知识可能性的、高度过饱和的“**潜力溶液**”。
|
||||
|
||||
而我们的每一次提示(**`prompt`**),都像一颗投入这片溶液的**晶核**——一个带有明确意图的结构种子。
|
||||
|
||||
就在意图注入的瞬间,**坍缩**发生了。那片原本无序流动的、包罗万象的潜力溶液,会迅速响应“晶核”的召唤,围绕着它定向排列、固化,瞬间**“结晶”**出一座独一无二、结构精巧的“思维晶体”——即我们眼前生成的作品。
|
||||
|
||||
这个从**压缩**到**坍缩**,再到**结晶**的过程,完美地解释了为何我们既是创造者,又是见证者。我们提供了决定晶体结构和品类的那颗“晶核”(意图),而晶体生长所依托的庞大物质基础(潜力溶液)和其背后深邃的物理规律(模型算法),则超出了我们的直接掌控。理解了这一点,我们便明白,要想在这片溶液中结晶出伟大的作品,关键在于找到并守住那几个最核心的支点。
|
||||
|
||||
---
|
||||
|
||||
## 2. 寻找支点 —— 创造过程的四个“思想实验”
|
||||
|
||||
要在这片流动的海洋中航行,首先要找到几个不会漂移的“思想支点”。
|
||||
|
||||
### 追问一:在这场人机共创中,什么是“唯我所有”的?
|
||||
|
||||
这是一个关乎身份认同的根本问题。当我凝视着AI在数秒内生成一幅堪比专业画师的作品时,焦虑感难免会浮现。它的算力、它所“学习”过的海量数据、它背后的技术模型,都不是我所拥有的。那么,在这场共创中,我不可替代的价值究竟是什么?
|
||||
|
||||
思来想去,答案似乎有两个。第一,是**创作意图**。AI不知道“为什么”要创造,它没有愿望、没有梦想、没有需要被解决的痛点。那个最初的、想要“描绘一片赛博朋克雨夜的孤独感”或“设计一个体现环保理念的logo”的念头,完全且仅来自于我。我是那颗独一无二的“晶核”的提供者。第二,是**审美直觉**。面对AI生成的十座“晶体”,判断哪一座“成色”更好、哪一座“结构”更接近我想要的感觉,这个能力源于我过往所有的生命经验、文化积淀和个人品味。
|
||||
|
||||
算力、数据、技术都可以被商品化,但意图的设定和审美的裁决,是我们作为创造者最后的、也是最坚固的堡垒。这是我们的第一个支点。
|
||||
|
||||
### 追问二:我们说出的话(`prompt`),等于我们心中的画吗?
|
||||
|
||||
我时常为提示词的“词不达意”而苦恼。我明明在脑海中有了一个清晰的画面,但无论如何遣词造句,似乎都无法100%地将其转述给AI。这让我意识到一个基本事实:语言,是对思想的编码和压缩,而非思想本身。
|
||||
|
||||
一个高维度的、充满情感和模糊细节的内心“意图”,在被压缩成一串低维度的、线性的文字“提示词”时,信息必然会丢失和变形。因此,期待用一个完美的“晶核”去精确遥控“潜力溶液”的每一次反应,从一开始或许就是一种妄念。
|
||||
|
||||
这让我释然了。提示词的本质,或许不是“精确的工程指令”,而更像是**“不精确的诗意导航”**。它的魅力,恰恰在于它的模糊性为“结晶”过程留下了即兴发挥的空间。接受并善用这种“不精确性”,是我们的第二个支点。
|
||||
|
||||
### 追问三:AI的“思考”,是一条直线吗?
|
||||
|
||||
我们习惯了确定性的工具。按下一个按钮,就有一个确定的结果。但AIGC不同。它的“结晶”过程,并非一个按部就班的工匠在逐步搭建作品,它更像一个神秘的自然现象。微小的“晶核”形态差异,可能导致最终“晶体”结构的巨大变化。
|
||||
|
||||
这个过程充满了概率性。这意味着,惊喜和意外,是这个系统的**“常态”,而非“异常”**。试图完全消除意外,就像是命令过饱和溶液必须结晶出你预设的那个完美形状一样,违背了系统的本性。理解并拥抱这个概率性的过程,是我们的第三个支点。
|
||||
|
||||
### 追问四:我们得到的,是“答案”还是“回响”?
|
||||
|
||||
当AI终于生成了一幅令人惊艳的图像时,我最初的反应是:“我得到了答案!”但很快我便发现,如果我再次投入同一颗“晶核”,可能会得到另一座同样精彩、但细节迥异的“晶体”。
|
||||
|
||||
这说明,我得到的并非唯一的、最终的“正确答案”,它更像是我的意图——那颗投入溶液的晶核——所引发的**一次“结晶”尝试**。对于这颗晶核,有无数种可能的结晶方式,我看到的只是其中之一。
|
||||
|
||||
这个支点告诉我们,创造的终点,绝不在于“生成”的那一刻。那一刻,仅仅是对话的开始。
|
||||
|
||||
---
|
||||
|
||||
## 3. 航行心法 —— 基于支点的三个思维涌现
|
||||
|
||||
当我们内心有了这四个稳固的支点,我们与这片“潜力溶液”互动的方式,也将自然发生转变,涌现出全新的“水性”。
|
||||
|
||||
<br>
|
||||
*图:生成式思维的涌现*
|
||||
|
||||
### 思维涌现一:身份的融合——从“建造者”到“对话者”与“策展人”
|
||||
|
||||
既然我的核心价值是提供“晶核”(意图)和评判“晶体”的成色(审美),那么我的工作就不再是单向的指令。
|
||||
|
||||
我的身份,首先涌现为一名**“对话者”**。我将提示词视为与“潜力溶液”的对话,通过观察每一次“结晶”的产物,来校准我下一颗“晶核”的形态与纯度。这个过程充满了启发与互动,我的意图在与AI的对话中,变得越来越清晰。
|
||||
|
||||
随后,我的身份涌现为一名**“策展人”**。我会生成大量不同的“晶体”,然后运用我的审美,从中筛选、打磨、组合,最终呈现一场由我定义的“结晶艺术展”。这策展的“最后一公里”,定义了我的作者身份。
|
||||
|
||||
### 思维涌现二:过程的寻宝——拥抱“诗意的模糊”
|
||||
|
||||
既然“结晶”过程天然带有不确定性,那么最理性的做法,就是拥抱这种不确定性。
|
||||
|
||||
我的思维,从追求一个确定的结果,涌现为**享受一场“结晶实验”**。我的提示词是实验参数,每一次生成都是一次有趣的实验现象。创造的乐趣,不再仅仅是最终完成时的如释重负,更在于观察参数微调后,“晶体”形态和光泽那令人惊奇的演变。
|
||||
|
||||
### 思维涌现三:素材的新生——将“意外”视为礼物
|
||||
|
||||
在“结晶实验”中,必然会出现许多“瑕疵品”或“异形晶体”。我最初的反应是将其视为失败。
|
||||
|
||||
但后来,一种新的思维涌现了:**为什么不将这些“意外结晶”视为一种全新的“创作素材”呢?**
|
||||
|
||||
那块结构奇特的“晶体”,或许正开辟了一个全新的美学方向。我开始尝试围绕这些意外进行二次创作,追问:“如果这就是初始结构,它能生长成什么?”这是一种化“实验意外”为“科学发现”的高阶心法。它让我明白,AI带来的最大价值,或许不是更高效率地实现我的已知,而是不断地、慷慨地,将我认知之外的“未知”作为礼物,呈现在我的面前。
|
||||
|
||||
---
|
||||
|
||||
## 4. 一篇等待回应的“漂流瓶”
|
||||
|
||||
写到这里,我深知,以上所有的思考,都还处于一个非常早期的、个人化的阶段。它不是结论,更像是一个被我扔进思想海洋的“漂流瓶”,记录着我作为一个航行者当下的困惑、挣扎与感悟。
|
||||
|
||||
这些“心法”的有效性,无疑需要更多创作者的实践、更多认知科学的研究、甚至更多基于数据的案例分析来验证和迭代。但分享的意义,或许就在于此——让一个人的思考,成为激发更多人思考的涟漪。
|
||||
|
||||
在这片正在涌现的创造新大陆上,您,又发现了哪些属于自己的航行心法?
|
||||
|
||||
期待您的声音。
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
本文档采用[知识共享署名-相同方式共享4.0国际许可协议(CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Gitconomy 社区运营报告 (2025年10月)</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;800&family=Inter:wght@400;500;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
background-color: var(--bg);
|
||||
color: #111827;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.infographic-container {
|
||||
max-width: 800px;
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
padding: 2rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--color-main-box-fill: #EFF6FF;
|
||||
--color-box-fill: #F0FDF4;
|
||||
--color-card-background-fill: #DBEAFE;
|
||||
--color-highlight-box-fill: #FEF9C3;
|
||||
--color-background: white;
|
||||
--color-main-box-stroke: #60A5FA;
|
||||
--color-box-stroke: #34D399;
|
||||
--color-card-background-stroke: #3B82F6;
|
||||
--color-highlight-box-stroke: #FACC15;
|
||||
--color-connector-standard: #2563EB;
|
||||
--color-connector-highlight: #FACC15;
|
||||
--color-text-main-title: #111827;
|
||||
--color-text-section-title: #374151;
|
||||
--color-text-card-title: #1E40AF;
|
||||
--color-text-body: #374151;
|
||||
--color-text-small: #6B7280;
|
||||
--color-text-license: #64748B;
|
||||
--color-icon: #3B82F6;
|
||||
|
||||
--bg: #f8fafc;
|
||||
--ink: #0f172a;
|
||||
--muted: #64748b;
|
||||
--brand: #004AAD;
|
||||
--brand-light: #CDE6FF;
|
||||
|
||||
--font-family-sans: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
|
||||
--font-size-main-title: 24px;
|
||||
--font-size-section-title: 22px;
|
||||
--font-size-card-title: 14px;
|
||||
--font-size-body: 16px;
|
||||
--font-size-small: 14px;
|
||||
--font-size-license: 12px;
|
||||
|
||||
--font-weight-main-title: 800;
|
||||
--font-weight-bold: 700;
|
||||
--font-weight-medium: 500;
|
||||
--font-weight-normal: 400;
|
||||
}
|
||||
|
||||
.hero {
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 56px 16px 64px;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.hero h1 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 32px;
|
||||
line-height: 1.2;
|
||||
font-weight: 900;
|
||||
}
|
||||
@media (min-width:768px) {
|
||||
.hero h1 {
|
||||
font-size: 40px
|
||||
}
|
||||
}
|
||||
.hero .lead {
|
||||
color: var(--brand-light);
|
||||
font-size: 18px;
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
footer {
|
||||
background: var(--brand);
|
||||
text-align: center;
|
||||
padding: 1.5rem;
|
||||
margin-top: 4rem;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
footer p {
|
||||
font-size: 0.75rem;
|
||||
color: var(--brand-light);
|
||||
opacity: 0.8;
|
||||
margin-bottom: 0.25rem;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.section-title-text {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-section-title);
|
||||
font-weight: var(--font-weight-bold);
|
||||
fill: var(--color-text-section-title);
|
||||
text-anchor: middle;
|
||||
}
|
||||
|
||||
.data-card-box {
|
||||
fill: var(--color-main-box-fill);
|
||||
stroke: var(--color-main-box-stroke);
|
||||
stroke-width: 1.5px;
|
||||
}
|
||||
.data-card-number {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-main-title);
|
||||
font-weight: var(--font-weight-bold);
|
||||
fill: var(--color-text-card-title);
|
||||
text-anchor: middle;
|
||||
}
|
||||
.data-card-label {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-body);
|
||||
font-weight: var(--font-weight-medium);
|
||||
fill: var(--color-text-body);
|
||||
text-anchor: middle;
|
||||
}
|
||||
|
||||
.data-card-icon {
|
||||
fill: var(--color-icon);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.timeline-line {
|
||||
stroke: var(--color-connector-standard);
|
||||
stroke-width: 2px;
|
||||
}
|
||||
.timeline-dot {
|
||||
fill: var(--color-connector-standard);
|
||||
}
|
||||
|
||||
.card-background {
|
||||
fill: var(--color-card-background-fill);
|
||||
stroke: var(--color-card-background-stroke);
|
||||
stroke-width: 1.5px;
|
||||
}
|
||||
.card-title-text {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-card-title);
|
||||
font-weight: var(--font-weight-bold);
|
||||
fill: var(--color-text-card-title);
|
||||
}
|
||||
.body-text {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-body);
|
||||
font-weight: var(--font-weight-normal);
|
||||
fill: var(--color-text-body);
|
||||
}
|
||||
.small-body-text {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-small);
|
||||
font-weight: var(--font-weight-normal);
|
||||
fill: var(--color-text-small);
|
||||
}
|
||||
|
||||
.list-icon {
|
||||
fill: var(--color-icon);
|
||||
}
|
||||
|
||||
.conclusion-box {
|
||||
fill: var(--color-box-fill);
|
||||
stroke: var(--color-box-stroke);
|
||||
stroke-width: 1.5px;
|
||||
}
|
||||
.conclusion-text {
|
||||
font-family: var(--font-family-sans);
|
||||
font-size: var(--font-size-body);
|
||||
font-weight: var(--font-weight-normal);
|
||||
fill: var(--color-text-body);
|
||||
text-anchor: middle;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header class="hero">
|
||||
<h1>Gitconomy 社区运营报告 (2025年10月)</h1>
|
||||
<p class="lead">很高兴与大家分享我们社区正式运营的第一份月度报告。</p>
|
||||
</header>
|
||||
|
||||
<div class="infographic-container">
|
||||
|
||||
<main>
|
||||
<svg viewBox="0 0 800 1420" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="diagramTitle diagramDesc">
|
||||
|
||||
<title id="diagramTitle">Gitconomy 社区2025年10月运营报告信息图</title>
|
||||
<desc id="diagramDesc">此信息图表分为四个部分:社区数据概览,本月重要事件,下月计划,以及结语。</desc>
|
||||
|
||||
<!--
|
||||
=================================
|
||||
第 1 部分: 社区数据概览
|
||||
=================================
|
||||
-->
|
||||
<g id="data-overview-section" transform="translate(40, 0)">
|
||||
<text x="360" y="30" class="section-title-text">社区数据概览</text>
|
||||
|
||||
<!-- 数据卡片网格 (3列 x 2行) -->
|
||||
<g id="data-grid" transform="translate(0, 70)">
|
||||
<!-- Row 1 -->
|
||||
<g id="data-card-1" transform="translate(0, 0)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: 代码 -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M3.75 2.5a.75.75 0 00-1.5 0v11a.75.75 0 001.5 0v-11zM12.25 2.5a.75.75 0 00-1.5 0v11a.75.75 0 001.5 0v-11zM5.75 6.25a.75.75 0 01.75-.75h3.5a.75.75 0 010 1.5h-3.5a.75.75 0 01-.75-.75zm.75 3.25a.75.75 0 000 1.5h3.5a.75.75 0 000-1.5h-3.5z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">561</text>
|
||||
<text x="135" y="80" class="data-card-label">代码贡献 (次)</text>
|
||||
</g>
|
||||
<g id="data-card-2" transform="translate(250, 0)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: 贡献者 -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M8 8a3 3 0 100-6 3 3 0 000 6zM6 9.75A5.25 5.25 0 00.75 15v.75a.75.75 0 00.75.75h13.5a.75.75 0 00.75-.75V15A5.25 5.25 0 0010 9.75H6z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">10+</text>
|
||||
<text x="135" y="80" class="data-card-label">活跃贡献者</text>
|
||||
</g>
|
||||
<g id="data-card-3" transform="translate(500, 0)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: Issues -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M3 2.75A.75.75 0 013.75 2H13a1 1 0 011 1v11a1 1 0 01-1 1H3.75a.75.75 0 01-.75-.75V2.75zm1.5 1.5a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-6.5zm0 3a.75.75 0 000 1.5h6.5a.75.75 0 000-1.5h-6.5zm0 3a.75.75 0 000 1.5h4.5a.75.75 0 000-1.5h-4.5z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">16</text>
|
||||
<text x="135" y="80" class="data-card-label">Issues 总数</text>
|
||||
</g>
|
||||
|
||||
<!-- Row 2 -->
|
||||
<g id="data-card-4" transform="translate(0, 130)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: 讨论 -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 00-1.5 0v1.442c-1.04.22-1.99.64-2.836 1.205-.28.188-.53.393-.746.611l-.21.21-.197.195a.75.75 0 001.06 1.06l.197-.195.21-.21c.216-.218.466-.423.746-.61 1.638-1.093 3.606-1.4 5.423-.84l.904.271a.75.75 0 00.707-1.353l-.904-.271a5.002 5.002 0 00-2.912-1.01V2.5zM4 5.992a.75.75 0 00-1.06 1.06l.197.195.21.21c.216.218.466.423.746.61 1.638 1.093 3.606 1.4 5.423.84l.904-.271a.75.75 0 00-.707-1.353l-.904.271a5.002 5.002 0 00-2.912 1.01V6.942c-1.04-.22-1.99-.64-2.836-1.205-.28-.188-.53-.393-.746-.611l-.21-.21-.197-.195zM2.75 12a.75.75 0 01.75-.75h9.5a.75.75 0 010 1.5h-9.5a.75.75 0 01-.75-.75z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">25+</text>
|
||||
<text x="135" y="80" class="data-card-label">讨论参与 (人)</text>
|
||||
</g>
|
||||
<g id="data-card-5" transform="translate(250, 130)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: Star -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M8 1.75l1.63 3.3a.75.75 0 00.56.41l3.65.53a.75.75 0 01.42 1.28l-2.64 2.58a.75.75 0 00-.22.66l.62 3.64a.75.75 0 01-1.09.79L8 12.72a.75.75 0 00-.7 0l-3.27 1.72a.75.75 0 01-1.09-.79l.62-3.64a.75.75 0 00-.22-.66L.93 7.27a.75.75 0 01.42-1.28l3.65-.53a.75.75 0 00.56-.41L7.19 1.75a.75.75 0 011.62 0z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">42 / 9</text>
|
||||
<text x="135" y="80" class="data-card-label">Star / Fork</text>
|
||||
</g>
|
||||
<g id="data-card-6" transform="translate(500, 130)">
|
||||
<rect width="220" height="100" rx="8" class="data-card-box"/>
|
||||
<!-- 图标: 访问量 -->
|
||||
<g class="data-card-icon" transform="translate(35, 35) scale(1.8)">
|
||||
<path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM1.5 8c0-3.59 2.91-6.5 6.5-6.5s6.5 2.91 6.5 6.5c0 1.9-.84 3.6-2.19 4.81a.75.75 0 11-1.02-1.1a4.996 4.996 0 001.46-3.71c0-2.76-2.24-5-5-5S3 5.24 3 8c0 1.36.54 2.59 1.41 3.5H3.25a.75.75 0 010-1.5h.34a.75.75 0 110 1.5H3.25A.75.75 0 012.5 11c-.34 0-.67-.04-.99-.12a.75.75 0 01-.52-1.38C1.22 9.21 1.5 8.62 1.5 8z" clip-rule="evenodd" />
|
||||
</g>
|
||||
<text x="135" y="55" class="data-card-number">2,392</text>
|
||||
<text x="135" y="80" class="data-card-label">项目访问量</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!--
|
||||
=================================
|
||||
第 2 部分: 本月重要事件
|
||||
=================================
|
||||
-->
|
||||
<g id="key-events-section" transform="translate(40, 350)">
|
||||
<text x="360" y="30" class="section-title-text">本月重要事件</text>
|
||||
|
||||
<!-- 垂直时间线 -->
|
||||
<g id="timeline" transform="translate(0, 70)">
|
||||
<!-- 时间线 竖线 -->
|
||||
<line x1="80" y1="50" x2="80" y2="480" class="timeline-line" />
|
||||
|
||||
<!-- 事件 1: 线上会议 -->
|
||||
<g transform="translate(0, 0)">
|
||||
<circle cx="80" cy="50" r="8" class="timeline-dot" />
|
||||
<g transform="translate(120, 0)">
|
||||
<rect width="580" height="80" rx="8" class="card-background"/>
|
||||
<!-- 文本内容 -->
|
||||
<text x="25" y="30" class="card-title-text">3次线上社区会议</text>
|
||||
<text x="25" y="55" class="body-text">确立社区使命、愿景与核心支柱,以及“从讨论到议题”的工作模式。</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 事件 2: 行业会议 -->
|
||||
<g transform="translate(0, 110)">
|
||||
<circle cx="80" cy="50" r="8" class="timeline-dot" />
|
||||
<g transform="translate(120, 0)">
|
||||
<rect width="580" height="80" rx="8" class="card-background"/>
|
||||
<text x="25" y="30" class="card-title-text">参与行业会议 (10/21)</text>
|
||||
<text x="25" y="55" class="body-text">参加“开放原子紫金开源专区开源大会”,分享人机协作与多元贡献观点。</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 事件 3: 教育项目 -->
|
||||
<g transform="translate(0, 220)">
|
||||
<circle cx="80" cy="50" r="8" class="timeline-dot" />
|
||||
<g transform="translate(120, 0)">
|
||||
<rect width="580" height="80" rx="8" class="card-background"/>
|
||||
<text x="25" y="30" class="card-title-text">启动开放教育项目</text>
|
||||
<text x="25" y="55" class="body-text">正式启动《开源导论与数字素养》(32学时)课程的交付工作。</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 事件 4: 正式亮相 -->
|
||||
<g transform="translate(0, 330)">
|
||||
<!-- 高亮显示 -->
|
||||
<circle cx="80" cy="50" r="8" fill="var(--color-highlight-box-stroke)" />
|
||||
<g transform="translate(120, 0)">
|
||||
<!-- 使用高亮样式 -->
|
||||
<rect width="580" height="80" rx="8" fill="var(--color-highlight-box-fill)" stroke="var(--color-highlight-box-stroke)" stroke-width="1.5px"/>
|
||||
<text x="25" y="30" class="card-title-text" fill="#A16207">社区正式对外亮相 (10/31)</text>
|
||||
<text x="25" y="55" class="body-text" fill="#374151">在深圳市科技传播促进会的支持下,社区正式进入试运营阶段。</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!--
|
||||
=================================
|
||||
第 3 部分: 下月计划
|
||||
=================================
|
||||
-->
|
||||
<g id="next-month-plan-section" transform="translate(40, 880)">
|
||||
<text x="360" y="30" class="section-title-text">下月计划与展望</text>
|
||||
|
||||
<!-- 计划列表 -->
|
||||
<g transform="translate(120, 80)">
|
||||
<!-- 计划 1 -->
|
||||
<circle cx="15" cy="15" r="4" class="list-icon"/>
|
||||
<text x="35" y="20" class="card-title-text">社区治理:</text>
|
||||
<text x="115" y="20" class="body-text">发布社区章程讨论稿。</text>
|
||||
|
||||
<!-- 计划 2 -->
|
||||
<circle cx="15" cy="55" r="4" class="list-icon"/>
|
||||
<text x="35" y="60" class="card-title-text">教育项目:</text>
|
||||
<text x="115" y="60" class="body-text">继续推进《开源导论与数字素养》课程的内容共建和交付。</text>
|
||||
|
||||
<!-- 计划 3 -->
|
||||
<circle cx="15" cy="95" r="4" class="list-icon"/>
|
||||
<text x="35" y="100" class="card-title-text">社区活动:</text>
|
||||
<text x="115" y="100" class="body-text">组织第一次社区的读书会。</text>
|
||||
|
||||
<!-- 计划 4 -->
|
||||
<circle cx="15" cy="135" r="4" class="list-icon"/>
|
||||
<text x="35" y="140" class="card-title-text">企业走访:</text>
|
||||
<text x="115" y="140" class="body-text">配合深圳市科技传播促进会企业走访计划,提供AI和开源内容支持。</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!--
|
||||
=================================
|
||||
第 4 部分: 结语
|
||||
=================================
|
||||
-->
|
||||
<g id="conclusion-section" transform="translate(40, 1180)">
|
||||
<text x="360" y="30" class="section-title-text">结语</text>
|
||||
|
||||
<!-- 新增: 结语背景框 -->
|
||||
<rect x="100" y="60" width="520" height="140" rx="8" class="conclusion-box"/>
|
||||
|
||||
<text x="360" y="100" class="conclusion-text">
|
||||
Gitconomy Research 社区处于起步阶段,
|
||||
<tspan x="360" dy="1.8em">感谢每一位早期支持者的参与、贡献以及所有合作伙伴的支持。</tspan>
|
||||
<tspan x="360" dy="1.8em">你们是社区成长最宝贵的力量。</tspan>
|
||||
<tspan x="360" dy="1.8em">让我们共同努力,探索生成式时代的无限可能!</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可, © 2025 Gitconomy Research社区
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<svg width="800" height="750" xmlns="http://www.w3.org/2000/svg" style="background-color: white;">
|
||||
<defs>
|
||||
<style>
|
||||
/* 字体规范 - 根据规范统一调整 */
|
||||
.main-title-text { font-family: sans-serif; font-size: 22px; font-weight: 800; fill: #111827; text-anchor: middle; }
|
||||
.title-text { font-family: sans-serif; font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
.body-text { font-family: sans-serif; font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.small-text { font-family: sans-serif; font-size: 11px; font-weight: normal; fill: #6B7280; } /* 使用规范中的 #6B7280 */
|
||||
.license-text { font-family: sans-serif; font-size: 12px; font-weight: normal; fill: #64748B; text-anchor: middle; }
|
||||
.swatch-text-sample { font-family: sans-serif; font-size: 48px; font-weight: bold; text-anchor: middle; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="50" class="main-title-text">Gitconomy社区图形即代码标准配色方案</text>
|
||||
|
||||
<g transform="translate(50, 100)">
|
||||
<rect width="100" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<text x="120" y="25" class="title-text">主概念框 (.main-box)</text>
|
||||
<text x="120" y="50" class="body-text">填充 (Fill): #EFF6FF</text>
|
||||
<text x="300" y="50" class="body-text">描边 (Stroke): #60A5FA 边框宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 180)">
|
||||
<rect width="100" height="60" rx="5" ry="5" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<text x="120" y="25" class="title-text">标准信息框 (.box)</text>
|
||||
<text x="120" y="50" class="body-text">填充 (Fill): #F0FDF4</text>
|
||||
<text x="300" y="50" class="body-text">描边 (Stroke): #34D399 边框宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 260)">
|
||||
<rect width="100" height="60" rx="5" ry="5" fill="#DBEAFE" stroke="#3B82F6" stroke-width="2"/>
|
||||
<text x="120" y="25" class="title-text">分组卡片背景 (.card-background)</text>
|
||||
<text x="120" y="50" class="body-text">填充 (Fill): #DBEAFE</text>
|
||||
<text x="300" y="50" class="body-text">描边 (Stroke): #3B82F6 边框宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 340)">
|
||||
<rect width="100" height="60" rx="5" ry="5" fill="#FEF9C3" stroke="#FACC15" stroke-width="2"/>
|
||||
<text x="120" y="25" class="title-text">高亮/强调框 (.highlight-box)</text>
|
||||
<text x="120" y="50" class="body-text">填充 (Fill): #FEF9C3</text>
|
||||
<text x="300" y="50" class="body-text">描边 (Stroke): #FACC15 边框宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 420)">
|
||||
<line x1="0" y1="30" x2="100" y2="30" stroke="#2563EB" stroke-width="2"/>
|
||||
<polygon points="100,25 110,30 100,35" fill="#2563EB"/>
|
||||
<text x="120" y="25" class="title-text">标准连接线 (.elbow-connector)</text>
|
||||
<text x="120" y="50" class="body-text">颜色 (Stroke): #2563EB 宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 500)">
|
||||
<line x1="0" y1="30" x2="100" y2="30" stroke="#FACC15" stroke-width="2"/>
|
||||
<polygon points="100,25 110,30 100,35" fill="#FACC15"/>
|
||||
<text x="120" y="25" class="title-text">高亮连接线 (.highlight-connector)</text>
|
||||
<text x="120" y="50" class="body-text">颜色 (Stroke): #FACC15 宽度(Stroke Width):2</text>
|
||||
</g>
|
||||
|
||||
|
||||
<g transform="translate(50, 580)">
|
||||
<rect width="700" height="120" rx="5" ry="5" fill="#f8f9fa" stroke="#dee2e6" stroke-width="1"/>
|
||||
<text x="20" y="30" class="title-text">文本颜色</text>
|
||||
|
||||
<text x="75" y="80" class="swatch-text-sample" fill="#111827">Aa</text>
|
||||
<text x="75" y="105" text-anchor="middle" class="small-text">主标题/主要文本: #111827</text>
|
||||
|
||||
<text x="225" y="80" class="swatch-text-sample" fill="#374151">Aa</text>
|
||||
<text x="225" y="105" text-anchor="middle" class="small-text">正文 (.body-text): #374151</text>
|
||||
|
||||
<text x="375" y="80" class="swatch-text-sample" fill="#6B7280">Aa</text>
|
||||
<text x="375" y="105" text-anchor="middle" class="small-text">注释 (.small-text): #6B7280</text>
|
||||
|
||||
<text x="525" y="80" class="swatch-text-sample" fill="#64748B">Aa</text>
|
||||
<text x="525" y="105" text-anchor="middle" class="small-text">许可 (.license-text): #64748B</text>
|
||||
</g>
|
||||
|
||||
<text x="400" y="730" class="license-text">本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
|
|
@ -0,0 +1,61 @@
|
|||
<svg width="800" height="650" xmlns="http://www.w3.org/2000/svg" style="background-color: white;">
|
||||
<defs>
|
||||
<style>
|
||||
/* 字体规范:Gitconomy社区默认使用 Noto Sans/sans-serif */
|
||||
.main-title-text { font-family: sans-serif; font-size: 22px; font-weight: 800; fill: #111827; }
|
||||
.title-text { font-family: sans-serif; font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
.highlight-text { font-family: sans-serif; font-size: 12px; font-weight: bold; fill: #111827; }
|
||||
.body-text { font-family: sans-serif; font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.license-text { font-family: sans-serif; font-size: 12px; font-weight: normal; fill: #64748B; text-anchor: middle; }
|
||||
.small-text { font-family: sans-serif; font-size: 11px; font-weight: normal; fill: #6B7280; } /* 已修正为 #6B7280 */
|
||||
|
||||
/* 辅助样式 */
|
||||
.description-text { font-family: sans-serif; font-size: 12px; fill: #374151; }
|
||||
.card { fill: #f8f9fa; stroke: #dee2e6; stroke-width: 1; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="50" class="main-title-text" text-anchor="middle">Gitconomy社区图形即代码图像字体规范指引</text>
|
||||
|
||||
<g transform="translate(50, 90)">
|
||||
<rect width="700" height="70" rx="5" class="card"/>
|
||||
<text x="20" y="45" class="main-title-text">主标题文本 (Sample)</text>
|
||||
<text x="450" y="30" class="description-text">样式类别: .main-title-text</text>
|
||||
<text x="450" y="50" class="description-text">字体大小: 22px | 字重: 800 (Extra Bold)</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 180)">
|
||||
<rect width="700" height="70" rx="5" class="card"/>
|
||||
<text x="20" y="45" class="title-text">模块标题文本 (Sample)</text>
|
||||
<text x="450" y="30" class="description-text">样式类别: .title-text</text>
|
||||
<text x="450" y="50" class="description-text">字体大小: 16px | 字重: bold</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 270)">
|
||||
<rect width="700" height="70" rx="5" class="card"/>
|
||||
<text x="20" y="45" class="highlight-text">高亮强调文本 (Sample)</text>
|
||||
<text x="450" y="30" class="description-text">样式类别: .highlight-text</text>
|
||||
<text x="450" y="50" class="description-text">字体大小: 12px | 字重: bold</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 360)">
|
||||
<rect width="700" height="70" rx="5" class="card"/>
|
||||
<text x="20" y="45" class="body-text">正文和常规描述性文字 (Sample)</text>
|
||||
<text x="450" y="30" class="description-text">样式类别: .body-text</text>
|
||||
<text x="450" y="50" class="description-text">字体大小: 12px | 字重: normal</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 450)">
|
||||
<rect width="700" height="70" rx="5" class="card"/>
|
||||
<text x="20" y="45" class="small-text">辅助性、补充性的注释文字 (Sample)</text>
|
||||
<text x="450" y="30" class="description-text">样式类别: .small-text</text>
|
||||
<text x="450" y="50" class="description-text">字体大小: 11px | 字重: normal</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(0, 560)">
|
||||
<rect x="50" y="0" width="700" height="1" fill="#dee2e6"/>
|
||||
<text x="400" y="40" class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
|
@ -0,0 +1,188 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Gitconomy社区信息图实现范例</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;800&family=Inter:wght@400;500;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* 全局样式与布局 */
|
||||
body {
|
||||
font-family: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
background-color: #f9fafb;
|
||||
color: #111827;
|
||||
padding: 2rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.infographic-container {
|
||||
max-width: 800px;
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
/* 1. 设计系统: CSS变量 (Design Tokens) */
|
||||
:root {
|
||||
/* 颜色变量 */
|
||||
--color-main-box-fill: #EFF6FF;
|
||||
--color-main-box-stroke: #60A5FA;
|
||||
--color-card-background-fill: #DBEAFE;
|
||||
--color-card-background-stroke: #3B82F6;
|
||||
--color-highlight-box-fill: #FEF9C3;
|
||||
--color-highlight-box-stroke: #FACC15;
|
||||
--color-connector-standard: #2563EB;
|
||||
--color-text-main-title: #111827;
|
||||
--color-text-section-title: #374151;
|
||||
--color-text-card-title: #1E40AF;
|
||||
--color-text-body: #374151;
|
||||
--color-text-license: #64748B;
|
||||
--color-icon: #3B82F6;
|
||||
--color-data-viz-track: #E5E7EB;
|
||||
--color-data-viz-progress: var(--color-main-box-stroke);
|
||||
|
||||
/* 字体变量 */
|
||||
--font-family-sans: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
--font-size-main-title: 24px;
|
||||
--font-size-section-title: 18px;
|
||||
--font-size-card-title: 14px;
|
||||
--font-size-body: 12px;
|
||||
--font-size-license: 12px;
|
||||
--font-weight-main-title: 800;
|
||||
--font-weight-bold: 700;
|
||||
--font-weight-medium: 500;
|
||||
--font-weight-normal: 400;
|
||||
}
|
||||
|
||||
/* 2. SVG及HTML元素样式类定义 */
|
||||
.card-background { fill: var(--color-card-background-fill); stroke: var(--color-card-background-stroke); stroke-width: 1.5px; }
|
||||
.elbow-connector { fill: none; stroke: var(--color-connector-standard); stroke-width: 2px; }
|
||||
.icon-style { fill: var(--color-icon); }
|
||||
|
||||
/* 文本样式 */
|
||||
.section-title-text { font-family: var(--font-family-sans); font-size: var(--font-size-section-title); font-weight: var(--font-weight-bold); fill: var(--color-text-section-title); }
|
||||
.card-title-text { font-family: var(--font-family-sans); font-size: var(--font-size-card-title); font-weight: var(--font-weight-bold); fill: var(--color-text-card-title); }
|
||||
.body-text { font-family: var(--font-family-sans); font-size: var(--font-size-body); font-weight: var(--font-weight-normal); fill: var(--color-text-body); }
|
||||
|
||||
/* 数据可视化样式 */
|
||||
.data-viz-track { fill: none; stroke: var(--color-data-viz-track); }
|
||||
.data-viz-progress { fill: none; stroke: var(--color-data-viz-progress); transition: stroke-dashoffset 0.5s ease-in-out; }
|
||||
.data-viz-text { font-family: var(--font-family-sans); font-size: 24px; font-weight: var(--font-weight-main-title); fill: var(--color-text-main-title); text-anchor: middle; }
|
||||
|
||||
/* HTML元素样式 */
|
||||
.main-title { font-family: var(--font-family-sans); font-size: var(--font-size-main-title); font-weight: var(--font-weight-main-title); color: var(--color-text-main-title); text-align: center; margin-bottom: 2rem; }
|
||||
.license-text { font-family: var(--font-family-sans); font-size: var(--font-size-license); color: var(--color-text-license); text-align: center; margin-top: 2rem; }
|
||||
svg { width: 100%; height: auto; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="infographic-container">
|
||||
|
||||
<header>
|
||||
<h1 class="main-title">Gitconomy社区信息图实现范例</h1>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<svg viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="diagramTitle diagramDesc">
|
||||
|
||||
<title id="diagramTitle">Gitconomy核心工作流与特性图</title>
|
||||
<desc id="diagramDesc">此图分为两部分。左侧展示了从“规划设计”到“开发实现”再到“审查合并”的三步工作流程。右侧通过一个环形图和列表展示了项目的关键特性。</desc>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="0" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="var(--color-connector-standard)" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<g id="workflow-section">
|
||||
<text x="180" y="50" class="section-title-text" text-anchor="middle">核心三步流程</text>
|
||||
|
||||
<g transform="translate(50, 100)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">1</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M12.9 6.1a1 1 0 0 0-1.8 0l-1.1 2.3-2.5.4a1 1 0 0 0-.6 1.7l1.8 1.8-.4 2.5a1 1 0 0 0 1.5 1.1l2.2-1.2 2.2 1.2a1 1 0 0 0 1.5-1.1l-.4-2.5 1.8-1.8a1 1 0 0 0-.6-1.7l-2.5-.4-1.1-2.3z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">规划设计</text>
|
||||
<text x="110" y="65" class="body-text">明确需求,制定技术方案。</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 250)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">2</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M14.2 9.8a1 1 0 0 1 1.6 1.2l-2.4 4.5a1 1 0 0 1-1.6-1.2l2.4-4.5zM4.2 9.8a1 1 0 0 0 1.6 1.2l2.4-4.5a1 1 0 0 0-1.6-1.2L4.2 9.8zM12 3a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V4a1 1 0 0 1 1-1z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">开发实现</text>
|
||||
<text x="110" y="65" class="body-text">编写高质量、可维护的代码。</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 400)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">3</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M16.3 5.7a1 1 0 0 0-1-1.6l-4 2a1 1 0 0 0-1 .6l-3 7a1 1 0 0 0 1.6 1l3-7-2.4 1.2a1 1 0 1 0 1 1.6l4-2a1 1 0 0 0 .4-1.6l-3-7 2.4-1.2z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">审查合并</text>
|
||||
<text x="110" y="65" class="body-text">通过同行评审确保代码质量。</text>
|
||||
</g>
|
||||
|
||||
<path d="M180,200 v 30" class="elbow-connector" marker-end="url(#arrowhead)"/>
|
||||
<path d="M180,350 v 30" class="elbow-connector" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="features-section" transform="translate(400, 0)">
|
||||
<text x="200" y="50" class="section-title-text" text-anchor="middle">关键特性解析</text>
|
||||
|
||||
<g transform="translate(200, 180)">
|
||||
<circle cx="0" cy="0" r="60" stroke-width="20" class="data-viz-track" />
|
||||
<circle cx="0" cy="0" r="60" stroke-width="20" class="data-viz-progress"
|
||||
transform="rotate(-90)"
|
||||
stroke-dasharray="377"
|
||||
stroke-dashoffset="94.25" />
|
||||
<text y="10" class="data-viz-text">75%</text>
|
||||
</g>
|
||||
<text x="200" y="280" text-anchor="middle" class="body-text">社区贡献率</text>
|
||||
|
||||
<g transform="translate(80, 350)">
|
||||
<text x="0" y="0" class="section-title-text">核心优势</text>
|
||||
|
||||
<circle cx="10" cy="40" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="45" class="body-text">开放透明的治理模式</text>
|
||||
|
||||
<circle cx="10" cy="70" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="75" class="body-text">代码即价值的贡献账本</text>
|
||||
|
||||
<circle cx="10" cy="100" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="105" class="body-text">自动化的激励分配机制</text>
|
||||
|
||||
<circle cx="10" cy="130" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="135" class="body-text">高度可扩展的插件架构</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 575" style="background-color: white;">
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="50" class="main-title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="22px" font-weight="800" fill="#111827">Gitconomy开放课程贡献流程</text>
|
||||
|
||||
<!-- 步骤1:Fork仓库 -->
|
||||
<g transform="translate(100, 100)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="main-box" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">1. Fork仓库</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">将官方课程仓库Fork到</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">自己的账户下</text>
|
||||
</g>
|
||||
|
||||
<!-- 步骤2:创建分支 -->
|
||||
<g transform="translate(100, 200)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="box" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">2. 创建分支</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">从main分支创建新的</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">特性分支</text>
|
||||
</g>
|
||||
|
||||
<!-- 步骤3:提交修改 -->
|
||||
<g transform="translate(100, 300)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="box" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">3. 提交修改</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">在新分支上进行修改,</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">确保提交信息规范</text>
|
||||
</g>
|
||||
|
||||
<!-- 步骤4:发起Pull Request -->
|
||||
<g transform="translate(400, 300)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="box" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">4. 发起PR</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">向上游仓库main分支</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">发起Pull Request</text>
|
||||
</g>
|
||||
|
||||
<!-- 步骤5:代码评审 -->
|
||||
<g transform="translate(400, 200)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="box" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">5. 代码评审</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">至少一位维护者评审,</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">根据意见进行修改</text>
|
||||
</g>
|
||||
|
||||
<!-- 步骤6:合并 -->
|
||||
<g transform="translate(400, 100)">
|
||||
<rect x="0" y="0" width="180" height="70" rx="5" ry="5" class="highlight-box" fill="#FEF9C3" stroke="#FACC15" stroke-width="2"/>
|
||||
<text x="90" y="30" class="title-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="16px" font-weight="bold" fill="#111827">6. 合并</text>
|
||||
<text x="90" y="50" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">PR被批准后,</text>
|
||||
<text x="90" y="65" class="body-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">由维护者合并到主分支</text>
|
||||
</g>
|
||||
|
||||
<!-- 连接线 - 步骤1到步骤2 -->
|
||||
<path d="M190,170 L190,200" class="elbow-connector" fill="none" stroke="#2563EB" stroke-width="2"/>
|
||||
<polygon points="190,200 185,190 195,190" fill="#2563EB"/>
|
||||
|
||||
<!-- 连接线 - 步骤2到步骤3 -->
|
||||
<path d="M190,270 L190,300" class="elbow-connector" fill="none" stroke="#2563EB" stroke-width="2"/>
|
||||
<polygon points="190,300 185,290 195,290" fill="#2563EB"/>
|
||||
|
||||
<!-- 连接线 - 步骤3到步骤4 -->
|
||||
<path d="M280,335 L400,335" class="elbow-connector" fill="none" stroke="#2563EB" stroke-width="2"/>
|
||||
<polygon points="400,335 390,330 390,340" fill="#2563EB"/>
|
||||
|
||||
<!-- 连接线 - 步骤4到步骤5 -->
|
||||
<path d="M490,300 L490,270" class="elbow-connector" fill="none" stroke="#2563EB" stroke-width="2"/>
|
||||
<polygon points="490,270 485,280 495,280" fill="#2563EB"/>
|
||||
|
||||
<!-- 连接线 - 步骤5到步骤6 -->
|
||||
<path d="M490,200 L490,170" class="highlight-connector" fill="none" stroke="#FACC15" stroke-width="2"/>
|
||||
<polygon points="490,170 485,180 495,180" fill="#FACC15"/>
|
||||
|
||||
<!-- 框住开发者部分 -->
|
||||
<rect x="80" y="80" width="220" height="310" rx="10" ry="10" class="card-background" fill="#DBEAFE" fill-opacity="0.3" stroke="#3B82F6" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
<text x="190" y="420" class="small-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="11px" fill="#6B7280">开发者工作区</text>
|
||||
|
||||
<!-- 框住维护者部分 -->
|
||||
<rect x="380" y="80" width="220" height="310" rx="10" ry="10" class="card-background" fill="#DBEAFE" fill-opacity="0.3" stroke="#3B82F6" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
<text x="490" y="420" class="small-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="11px" fill="#6B7280">维护者工作区</text>
|
||||
|
||||
<!-- 说明文本 -->
|
||||
<g transform="translate(100, 440)">
|
||||
<text class="body-text" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">注意:</text>
|
||||
<text x="0" y="20" class="body-text" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">1. 所有贡献者应严格遵循此工作流程,确保协作有序进行</text>
|
||||
<text x="0" y="40" class="body-text" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">2. 提交时使用描述性的分支名称(如 fix/typo-in-chapter-1 或 feat/add-docker-example)</text>
|
||||
<text x="0" y="60" class="body-text" font-family="Noto Sans, sans-serif" font-size="12px" fill="#374151">3. PR中应清晰说明修改内容及解决的问题,以便维护者高效评审</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="50%" y="550" class="license-text" text-anchor="middle" font-family="Noto Sans, sans-serif" font-size="12px" fill="#64748B">本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.2 KiB |
|
|
@ -0,0 +1,86 @@
|
|||
<svg width="1200" height="450" viewBox="0 0 1200 450" xmlns="http://www.w3.org/2000/svg" style="background-color: white; font-family: 'Noto Sans', sans-serif;">
|
||||
<defs>
|
||||
<style>
|
||||
/* --- 色彩规范 --- */
|
||||
.label-box { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; }
|
||||
.content-box { fill: #F0FDF4; stroke: #34D399; stroke-width: 2px; }
|
||||
|
||||
/* --- 字体规范 --- */
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; text-anchor: middle; }
|
||||
.description-text { font-size: 18px; font-weight: normal; fill: #374151; text-anchor: middle; }
|
||||
.principle-label-text { font-size: 12px; font-weight: bold; fill: #111827; text-anchor: middle; }
|
||||
.title-text { font-size: 16px; font-weight: bold; fill: #111827; text-anchor: middle; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; text-anchor: middle; letter-spacing: 0.02em; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; text-anchor: middle; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="600" y="50" class="main-title-text">Gitconomy开放课程开发核心设计原则</text>
|
||||
|
||||
<g id="principles-container" transform="translate(0, 100)">
|
||||
<g id="principle-1" transform="translate(40, 0)">
|
||||
<rect x="0" y="0" width="200" height="40" rx="8" ry="8" class="label-box" />
|
||||
<text x="100" y="25" class="principle-label-text">原则一</text>
|
||||
<rect x="0" y="60" width="200" height="150" rx="8" ry="8" class="content-box" />
|
||||
<text x="100" y="95" class="title-text">模块化与可组合性</text>
|
||||
<text x="100" y="125" class="body-text">
|
||||
<tspan x="100" dy="0">内容解构为独立、</tspan>
|
||||
<tspan x="100" dy="1.4em">可重用的模块,</tspan>
|
||||
<tspan x="100" dy="1.4em">允许灵活组合与复用。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="principle-2" transform="translate(270, 0)">
|
||||
<rect x="0" y="0" width="200" height="40" rx="8" ry="8" class="label-box" />
|
||||
<text x="100" y="25" class="principle-label-text">原则二</text>
|
||||
<rect x="0" y="60" width="200" height="150" rx="8" ry="8" class="content-box" />
|
||||
<text x="100" y="95" class="title-text">内置协作钩子</text>
|
||||
<text x="100" y="125" class="body-text">
|
||||
<tspan x="100" dy="0">在内容中预设协作入口,</tspan>
|
||||
<tspan x="100" dy="1.4em">将学习过程转化为</tspan>
|
||||
<tspan x="100" dy="1.4em">社区贡献的起点。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="principle-3" transform="translate(500, 0)">
|
||||
<rect x="0" y="0" width="200" height="40" rx="8" ry="8" class="label-box" />
|
||||
<text x="100" y="25" class="principle-label-text">原则三</text>
|
||||
<rect x="0" y="60" width="200" height="150" rx="8" ry="8" class="content-box" />
|
||||
<text x="100" y="95" class="title-text">实践驱动</text>
|
||||
<text x="100" y="125" class="body-text">
|
||||
<tspan x="100" dy="0">每个核心理论</tspan>
|
||||
<tspan x="100" dy="1.4em">必须紧密衔接一个</tspan>
|
||||
<tspan x="100" dy="1.4em">可操作的动手任务。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="principle-4" transform="translate(730, 0)">
|
||||
<rect x="0" y="0" width="200" height="40" rx="8" ry="8" class="label-box" />
|
||||
<text x="100" y="25" class="principle-label-text">原则四</text>
|
||||
<rect x="0" y="60" width="200" height="150" rx="8" ry="8" class="content-box" />
|
||||
<text x="100" y="95" class="title-text">社区维护的资源池</text>
|
||||
<text x="100" y="125" class="body-text">
|
||||
<tspan x="100" dy="0">建立由社区共同定义、</tspan>
|
||||
<tspan x="100" dy="1.4em">共同维护的</tspan>
|
||||
<tspan x="100" dy="1.4em">动态开放资源库。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="principle-5" transform="translate(960, 0)">
|
||||
<rect x="0" y="0" width="200" height="40" rx="8" ry="8" class="label-box" />
|
||||
<text x="100" y="25" class="principle-label-text">原则五</text>
|
||||
<rect x="0" y="60" width="200" height="150" rx="8" ry="8" class="content-box" />
|
||||
<text x="100" y="95" class="title-text">透明化版本控制</text>
|
||||
<text x="100" y="125" class="body-text">
|
||||
<tspan x="100" dy="0">内容的演进历史</tspan>
|
||||
<tspan x="100" dy="1.4em">本身即为学习案例,</tspan>
|
||||
<tspan x="100" dy="1.4em">所有变更均可追溯。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<text x="50%" y="370" class="description-text">五项基本原则相互关联,共同构成Gitconomy开放课程的核心价值体系。</text>
|
||||
|
||||
<text x="50%" y="420" class="license-text">本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
|
|
@ -0,0 +1,37 @@
|
|||
# Gitconomy Research社区文字简介
|
||||
|
||||
## 1. 一句话简介 (Slogan)
|
||||
|
||||
**Gitconomy Research:一个探索人类智慧与机器智能协同(DMIO)的开源实践社区,致力于践行“协作即贡献,贡献即要素”的未来价值网络。**
|
||||
|
||||
---
|
||||
|
||||
## 2. 100字简介
|
||||
|
||||
Gitconomy Research 是一个探索人机协同新范式的开源实践社区。我们致力于从 **DIY (Do It Yourself)** 到 **DMIO (Do Machine Intelligence with Others)** 的全新协作模式,将机器智能作为核心生产引擎,由社区集体智慧共同引导。我们坚信“协作即贡献,贡献即要素”的核心宣言,旨在构建能够精确度量并公平回报一切价值贡献的开源基础设施。我们欢迎所有对未来协作充满热情的“生成者”加入,共同定义开源的下一个时代。
|
||||
|
||||
---
|
||||
|
||||
## 3. 250字简介
|
||||
|
||||
Gitconomy Research 是一个专注于探索人类智慧与机器智能深度协同的开源实践社区。我们的核心是开拓一种名为 **DMIO (Do Machine Intelligence with Others)** 的下一代协作范式,即“与他人一起,共同执行机器智能”。在这种模式下,AI不再仅仅是工具,而是由社区共同引导、策略性驱动的核心生产引擎,旨在将集体智慧注入机器的“生成”过程,实现个体无法企及的创造高度。
|
||||
|
||||
我们的所有实践都建立在两大宣言之上:**协作即贡献**,它定义了社区的行动准则,视每一次有效互动为根本贡献;以及**贡献即要素**,它定义了社区的经济模型,视所有贡献为应被度量和公平回报的核心生产要素。
|
||||
|
||||
我们通过开放项目、工作坊和资源共建等方式,欢迎全球的开发者、研究者和思想家加入我们,共同构建支撑DMIO范式与未来价值网络的开源工具及协议,一起成为这个新时代的开拓者。
|
||||
|
||||
---
|
||||
|
||||
## 4. 完整文字简介
|
||||
|
||||
Gitconomy Research 是一个致力于探索人类智慧与机器智能深度协同的开源实践社区。我们坚信,新纪元的开启呼唤着全新的协作范式与价值主张。因此,我们的所有实践都建立在一个清晰的价值循环之上,其源头是我们的两大核心宣言。
|
||||
|
||||
首先,我们信奉**协作即贡献**。这不仅是我们的行动准则,更是我们对价值来源的根本定义。我们深信,社区的蓬勃活力并非源自个体的孤立创造,而是源于成员间富有意义的互动与紧密连接。每一次有效的沟通、每一次成功的协同、每一次赋能他人的分享,均被视为对社区最根本的贡献。在此基础上,我们提出了**“贡献即要素”**的经济宣言。我们坚定主张,所有获社区认可的贡献,均应被视为与资本、传统劳动同等重要的核心生产要素。它必须得到精确的度量、公正的认可,并有权分享社区增长所创造的价值。一个定义了价值的来源,一个定义了价值的归宿,两者结合,构成了我们社区公平、透明且持续发展的价值引擎。
|
||||
|
||||
为践行这一理念,我们正积极推动从 **DIY (Do It Yourself)** 到 **DMIO (Do Machine Intelligence with Others)** 的协作范式演进。DMIO意味着我们‘与他人携手,共同执行机器智能’,将AI视为核心生产引擎,而社区集体则扮演引导者与策略师的角色。
|
||||
|
||||
我们的核心研究领域正是围绕这一范式展开,主要包括:1) DMIO协作模式与工作流,探索人机协同进行任务分解、执行与整合的最佳实践;2) 贡献度量衡(Contribution Metrics),设计能够量化并识别多样化协作贡献(如提出关键问题、优化AI提示、组织协调等)的算法与模型;3) 社区治理与激励机制,研究如何在开放社区中实现基于贡献的自动化价值分配与决策。
|
||||
|
||||
我们的研究机制完全秉持开放与协作的精神。社区的研究活动主要以项目制和提案驱动的方式进行。任何成员都可以发起一个研究项目(Research Proposal),明确其目标、方法和预期成果。项目一旦获得社区响应,将立即组建一个开放的协作小组,利用Git进行异步协作与版本控制,确保研究过程中的所有讨论、实验和数据均得到透明记录。我们鼓励跨学科的碰撞,通过定期的线上研讨会和工作坊分享阶段性成果,并依赖同伴评审(Peer Review)和集体智慧来迭代我们的研究方向与成果。
|
||||
|
||||
我们所有的研究成果,包括理论框架、软件工具和知识产出,都致力于最大程度地开放与共享。为此,社区的知识内容产出普遍采用知识共享署名-相同方式共享 4.0 国际许可协议(CC BY-SA 4.0),而所有相关的代码和软件工具则遵循 MIT开源许可证。这确保了任何人都能自由使用、修改及分发我们的成果,同时要求衍生作品以同等开放的方式回馈社区。我们邀请所有对未来充满好奇的开拓者加入我们,在人机协作生成的时代,用协作定义贡献,用贡献定义价值。
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
# Gitconomy开放课程内容设计规范和贡献指南
|
||||
|
||||
## 1. 概述
|
||||
|
||||
本文档定义了为Gitconomy开放课程项目贡献内容的标准与工作流程。其目标是确保所有课程内容在质量、结构和协作方式上保持一致性。每一位贡献者都应将此文档作为创建和修改课程内容的主要参考。
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心原则
|
||||
|
||||
所有课程内容的构思与撰写,都应遵循以下五项基本原则。它们是确保课程具有高质量、实用性和社区活力的基础。
|
||||
|
||||

|
||||
*图:Gitconomy开放课程开发原则*
|
||||
|
||||
### 2.1 模块化与可组合性原则
|
||||
|
||||
课程内容需被设计成独立的、可重用的模块。每个模块应聚焦于单一、明确的学习目标,并能与其他模块灵活组合。这种设计使得内容易于维护、更新和复用,学习者也可以根据需求构建个性化的学习路径。
|
||||
|
||||
### 2.2 内置协作钩子原则
|
||||
|
||||
讲义不应是静态的最终交付物,而应是持续协作的起点。在内容的关键节点,应主动设置协作入口,例如标记`[社区挑战]`、``[观点征集]`或`[代码改进]``。这些“钩子”旨在邀请学习者参与内容的迭代,将学习过程转化为社区贡献。
|
||||
|
||||
### 2.3 实践驱动原则
|
||||
|
||||
理论必须与实践相结合。每个核心概念讲解之后,必须附带一个可操作的动手任务。任务目标应是具体、可验证的产出,例如提交一个能够运行的代码脚本、完成一次开源工具的部署,或向一个真实项目提交 `Pull Request`。
|
||||
|
||||
### 2.4 社区维护的资源池原则
|
||||
|
||||
用一个由社区共同维护的动态资源列表,取代传统的、由作者指定的静态“参考文献”。在讲义中为此部分预留结构,并明确鼓励社区成员通过提交`Pull Request`的方式来填充和更新,确保资源的时效性与广度。
|
||||
|
||||
### 2.5 透明化版本控制原则
|
||||
|
||||
内容的演进历史本身就是重要的学习资源。所有变更必须通过 Git 进行管理,并在讲义头部的`[Changelog]`中清晰记录。透明的版本历史不仅展示了内容的迭代过程,也构成了对所有贡献者工作的永久记录。
|
||||
|
||||
---
|
||||
|
||||
## 3. 内容结构规范
|
||||
|
||||
所有讲义必须严格遵循以下标准结构,以保证内容的一致性和机器可读性。
|
||||
|
||||
### 3.1 文件头信息
|
||||
|
||||
每个Markdown文件的顶部必须包含一个 YAML Frontmatter块,用于定义元数据。
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: "[课程名称]"
|
||||
author: "[创建者姓名]"
|
||||
version: "[版本号] - [YYYY-MM-DD]"
|
||||
license: "CC BY-SA 4.0"
|
||||
contributors:
|
||||
- "[作者1]"
|
||||
- "[贡献者1]"
|
||||
- "[贡献者2]"
|
||||
---
|
||||
```
|
||||
|
||||
### 3.2 更新日志
|
||||
|
||||
紧随 Frontmatter 之后,用于记录关键的版本迭代(ChangeLog)。
|
||||
|
||||
```markdown
|
||||
## Changelog
|
||||
- **v0.1 (YYYY-MM-DD, @作者ID):** 创建讲义初始草案。
|
||||
- **v0.2 (YYYY-MM-DD, @贡献者ID):** 新增“XX案例分析”模块,修正“YY代码示例”。
|
||||
```
|
||||
|
||||
### 3.3 课程概览
|
||||
|
||||
课程概览为学习者提供了课程的“导航地图”,旨在课程开始前清晰地设定学习预期。它通过结构化的方式,快速阐明了课程的核心学习目标、所需的前置知识、最适合的目标人群以及大致的时间投入。一个明确的概览能够帮助学习者快速判断课程是否符合自身需求,从而做出高效的学习决策。
|
||||
|
||||
| 类别 | 要求 |
|
||||
| :--- | :--- |
|
||||
| **学习目标** | 列出3-5个明确、可测量的成果。例:“能独立使用 ModelScope 完成一个文本生成 API 的部署”。 |
|
||||
| **前置要求** | 清晰列出所需的基础技能,并为关键知识点提供高质量的学习资源链接。 |
|
||||
| **目标人群** | 明确受众。例:“面向有 Python 基础,希望进入 AIGC 领域的0-2年经验开发者”。 |
|
||||
| **预计时长** | 完成课程(含实践)所需的大致时间。 |
|
||||
|
||||
### 3.4 核心内容
|
||||
|
||||
这是讲义的主体部分,承载了课程的核心知识体系。本节规范旨在确保知识的组织与呈现方式清晰、有逻辑且易于吸收。通过强制要求使用知识结构图、分层组织、可运行的代码示例和贴近现实的案例分析,我们旨在将复杂的概念分解为易于理解的模块,从而优化学习者的认知流程。
|
||||
|
||||
- **知识结构图:** 必须在内容开始处提供一个使用图即代码绘制的可视化知识结构图(svg格式)。
|
||||
- **关键定义:** 对核心术语进行简明扼要的定义。
|
||||
- **分层组织:** 采用清晰的章节、小节结构(H2, H3, H4)。优先使用列表、表格来组织信息。
|
||||
- **代码示例:** 所有代码片段必须可直接复制运行、附带必要的注释,并优先采用主流开源工具。
|
||||
- **案例分析:** 优先结合中国国内的真实业务场景进行讲解。
|
||||
|
||||
### 3.5 实践环节
|
||||
|
||||
实践环节是连接理论知识与实际应用能力的关键桥梁,是课程价值的核心体现。本节规范的目标是设计出能够有效检验和巩固学习成果的实践任务。通过提供从零到一的动手项目、鼓励协作的社区挑战以及明确的评估标准,我们确保学习者不仅仅是被动接收信息,而是能主动运用所学知识解决具体问题。
|
||||
|
||||
- **动手项目:** 设计一个从0到1的可实操项目,步骤清晰,产出明确。
|
||||
- **协作挑战:** 设计需要学习者分组或在社区内寻求帮助才能完成的任务。
|
||||
- **评估标准:** 提供一份自评清单(Checklist),明确定义项目“完成”或“优秀”的标准。
|
||||
- **常见问题(FAQ):** 预判并列出新手在实践中可能遇到的3-5个典型问题及其解决方案。
|
||||
|
||||
### 3.6 资源与社区
|
||||
|
||||
本节规范不仅要求提供高质量的进阶学习资源,更重要的是,它为学习者将学习成果反哺社区提供了清晰的路径。通过动态的资源池和明确的贡献指南,为学习者的持续成长提供支持,完成“学习者”到“贡献者”的身份转变闭环
|
||||
|
||||
- **核心资源:** 列出2-3个最关键的必读/必看补充材料。
|
||||
- **进阶探索:** 提供给希望深入研究的学习者的额外资源或技术路径。
|
||||
- **社区资源池:** 见2.4原则,此处仅留标题或少量示例,并明确鼓励社区贡献。
|
||||
- **贡献指南:** 清晰指引学习者如何对本讲义提 Issue 或 Pull Request。
|
||||
|
||||
---
|
||||
|
||||
## 4. 贡献工作流与标准
|
||||
|
||||
### 4.1 内容风格
|
||||
|
||||
一个一致的、专业的风格可以显著提升学习者的阅读体验和信息获取效率。规范内容涵盖了语言语调、格式化以及内容的可访问性,确保课程对所有用户都友好且易于理解。
|
||||
|
||||
- **语言:** 采用直接、简洁、中性的技术文档风格。使用第二人称“你”与读者对话,保持鼓励性和包容性。避免学术化、官僚化的术语。
|
||||
- **可访问性(A11y):** 所有图片、图表必须提供详尽的文本替代描述(Alt Text)。确保色彩对比度符合 WCAG 标准。
|
||||
- **视角:** 避免“唯一正确答案”的论调,客观呈现不同技术方案的优缺点。
|
||||
|
||||
### 4.2 贡献流程
|
||||
|
||||
遵循一个统一的、基于 Git 的工作流,是保障社区协作有序进行和内容质量可控的关键。该流程涵盖了从创建分支到发起合并请求(Pull Request)并参与评审的全过程。
|
||||
|
||||

|
||||
*图:Gitconomy开放课程贡献流程试示意图*
|
||||
|
||||
1. **Fork 仓库:** 将官方课程仓库 Fork 到你自己的账户下。
|
||||
2. **创建分支:** 从 `main` 分支创建一个新的特性分支,并为其指定一个描述性的名称(如 `fix/typo-in-chapter-1` 或 `feat/add-docker-example`)。
|
||||
3. **提交修改:** 在新分支上进行修改,并确保你的提交信息清晰、规范。
|
||||
4. **发起 Pull Request (PR):** 将你的特性分支向上游仓库的 `main` 分支发起一个 Pull Request。在 PR 的描述中,清晰说明你做了什么、解决了什么问题。
|
||||
5. **代码评审:** 至少需要一位课程维护者(Maintainer)进行评审。请根据评审意见进行讨论和修改。
|
||||
6. **合并:** PR 被批准后,将由维护者合并到主分支。
|
||||
|
||||
### 4.3 贡献认可
|
||||
|
||||
一个透明、公正的认可体系是激励社区成员持续参与的核心动力。规范明确了贡献记录的方式以及优秀贡献者可能获得的社区荣誉和责任。
|
||||
|
||||
- 任何有效的贡献(包括但不限于内容撰写、代码修正、问题报告、评审建议),贡献者的 ID 都将被记录在文件头信息的 `contributors` 列表和 `Changelog` 中。
|
||||
- 做出重要贡献的成员将有机会获得 Gitconomy 社区的荣誉认证,并可能被邀请成为该课程的联合维护者。
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,345 @@
|
|||
# Gitconomy社区信息图设计与实现指南
|
||||
|
||||
## 1. 引言
|
||||
|
||||
这份设计与实现指南是[《Gitconomy社区图形即代码设计规范指南》](./Gitconomy社区图形即代码设计规范指南.md)的补充与具体应用,旨在为Gitconomy社区的开发者与内容贡献者在编写文档、课程讲义或研究报告时,高效地创建专业、一致且富有表现力的信息图(Infographic)与其他可视化内容,从而显著增强文档信息的可读性与传达效果。
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心设计原则
|
||||
|
||||
* **一致性:** 所有图形元素(色彩、字体、间距)必须遵循统一的设计系统,确保品牌形象的统一。
|
||||
* **清晰性:** 设计应服务于信息传达,通过清晰的视觉层级,引导用户快速理解复杂内容。
|
||||
* **可维护性:** 通过使用CSS变量和组件化思想,使设计规范的更新和维护变得简单高效。
|
||||
* **可访问性:** 确保图形内容能被包括屏幕阅读器在内的辅助技术所理解,惠及所有用户。
|
||||
|
||||
---
|
||||
|
||||
## 3. 核心技术栈
|
||||
|
||||
* **结构:** HTML5
|
||||
* **样式:** CSS3 (重点使用CSS变量)
|
||||
* **图形:** SVG (内联于HTML中)
|
||||
|
||||
---
|
||||
|
||||
## 4. 设计系统实现
|
||||
|
||||
设计系统的核心在于将颜色、字体等设计元素组件化,并通过CSS变量进行全局管理。这使得所有视觉元素都源自单一可信来源,便于维护和主题切换(如未来增加深色模式)。
|
||||
|
||||
### 4.1 调色板
|
||||
|
||||
所有颜色值都应定义在 `:root` 伪类中,以便全局复用。
|
||||
|
||||
**代码样例:**
|
||||
|
||||
```css
|
||||
/* 在 <style> 标签中定义 */
|
||||
:root {
|
||||
/* 填充色 (Fill) */
|
||||
--color-main-box-fill: #EFF6FF;
|
||||
--color-box-fill: #F0FDF4;
|
||||
--color-card-background-fill: #DBEAFE;
|
||||
--color-highlight-box-fill: #FEF9C3;
|
||||
--color-background: white;
|
||||
|
||||
/* 描边/强调色 (Stroke/Accent) */
|
||||
--color-main-box-stroke: #60A5FA;
|
||||
--color-box-stroke: #34D399;
|
||||
--color-card-background-stroke: #3B82F6;
|
||||
--color-highlight-box-stroke: #FACC15;
|
||||
--color-connector-standard: #2563EB;
|
||||
--color-connector-highlight: #FACC15;
|
||||
|
||||
/* 文本颜色 (Text) */
|
||||
--color-text-main-title: #111827;
|
||||
--color-text-body: #374151;
|
||||
--color-text-small: #6B7280;
|
||||
--color-text-license: #64748B;
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 字体规范
|
||||
|
||||
字体相关的属性,如字族、大小、字重,也应通过CSS变量进行管理。
|
||||
|
||||
**代码样例:**
|
||||
|
||||
```css
|
||||
/* 在 <style> 标签中定义 */
|
||||
:root {
|
||||
/* ... 颜色变量 ... */
|
||||
|
||||
/* 字体族 */
|
||||
--font-family-sans: 'Noto Sans', 'Inter', sans-serif;
|
||||
|
||||
/* 字号 */
|
||||
--font-size-main-title: 22px;
|
||||
--font-size-title: 16px;
|
||||
--font-size-body: 12px;
|
||||
--font-size-small: 11px;
|
||||
--font-size-license: 12px;
|
||||
|
||||
/* 字重 */
|
||||
--font-weight-main-title: 800; /* Extra Bold */
|
||||
--font-weight-bold: 700;
|
||||
--font-weight-normal: 400;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. SVG实现最佳实践
|
||||
|
||||
### 5.1 基础结构与可访问性
|
||||
|
||||
每个内联SVG都应被视为一幅图像,并为其提供必要的辅助信息。
|
||||
|
||||
* **`viewBox` 属性:** 必须设置,它定义了SVG的内部坐标系,是实现响应式缩放的关键。
|
||||
* **`role="img"`:** 明确向辅助技术声明该SVG元素是一张图片。
|
||||
* **`<title>` 和 `<desc>`:** 作为SVG的**首要子元素**,提供图像的标题和详细描述。`aria-labelledby` 属性用于将这些描述与SVG本身关联起来。
|
||||
|
||||
### 5.2 使用CSS对SVG元素进行样式化
|
||||
|
||||
在HTML的`<style>`块中定义样式类,然后在SVG内部元素的`class`属性中引用这些类。这是连接设计系统和图形实现的关键。
|
||||
|
||||
### 5.3 源代码注释
|
||||
|
||||
为复杂的SVG或其逻辑分组添加注释,是保持代码可读性和可维护性的重要环节。
|
||||
|
||||
---
|
||||
|
||||
## 6. 完整实现范例
|
||||
|
||||
以下是一个完整的[信息图示例代码](./../assets/gitconomy-community-infographic-design-guideline-example.html),它集成了上述所有实践。
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Gitconomy社区信息图实现范例</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;800&family=Inter:wght@400;500;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
/* 全局样式与布局 */
|
||||
body {
|
||||
font-family: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
background-color: #f9fafb;
|
||||
color: #111827;
|
||||
padding: 2rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.infographic-container {
|
||||
max-width: 800px;
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
/* 1. 设计系统: CSS变量 (Design Tokens) */
|
||||
:root {
|
||||
/* 颜色变量 */
|
||||
--color-main-box-fill: #EFF6FF;
|
||||
--color-main-box-stroke: #60A5FA;
|
||||
--color-card-background-fill: #DBEAFE;
|
||||
--color-card-background-stroke: #3B82F6;
|
||||
--color-highlight-box-fill: #FEF9C3;
|
||||
--color-highlight-box-stroke: #FACC15;
|
||||
--color-connector-standard: #2563EB;
|
||||
--color-text-main-title: #111827;
|
||||
--color-text-section-title: #374151;
|
||||
--color-text-card-title: #1E40AF;
|
||||
--color-text-body: #374151;
|
||||
--color-text-license: #64748B;
|
||||
--color-icon: #3B82F6;
|
||||
--color-data-viz-track: #E5E7EB;
|
||||
--color-data-viz-progress: var(--color-main-box-stroke);
|
||||
|
||||
/* 字体变量 */
|
||||
--font-family-sans: 'Noto Sans SC', 'Inter', sans-serif;
|
||||
--font-size-main-title: 24px;
|
||||
--font-size-section-title: 18px;
|
||||
--font-size-card-title: 14px;
|
||||
--font-size-body: 12px;
|
||||
--font-size-license: 12px;
|
||||
--font-weight-main-title: 800;
|
||||
--font-weight-bold: 700;
|
||||
--font-weight-medium: 500;
|
||||
--font-weight-normal: 400;
|
||||
}
|
||||
|
||||
/* 2. SVG及HTML元素样式类定义 */
|
||||
.card-background { fill: var(--color-card-background-fill); stroke: var(--color-card-background-stroke); stroke-width: 1.5px; }
|
||||
.elbow-connector { fill: none; stroke: var(--color-connector-standard); stroke-width: 2px; }
|
||||
.icon-style { fill: var(--color-icon); }
|
||||
|
||||
/* 文本样式 */
|
||||
.section-title-text { font-family: var(--font-family-sans); font-size: var(--font-size-section-title); font-weight: var(--font-weight-bold); fill: var(--color-text-section-title); }
|
||||
.card-title-text { font-family: var(--font-family-sans); font-size: var(--font-size-card-title); font-weight: var(--font-weight-bold); fill: var(--color-text-card-title); }
|
||||
.body-text { font-family: var(--font-family-sans); font-size: var(--font-size-body); font-weight: var(--font-weight-normal); fill: var(--color-text-body); }
|
||||
|
||||
/* 数据可视化样式 */
|
||||
.data-viz-track { fill: none; stroke: var(--color-data-viz-track); }
|
||||
.data-viz-progress { fill: none; stroke: var(--color-data-viz-progress); transition: stroke-dashoffset 0.5s ease-in-out; }
|
||||
.data-viz-text { font-family: var(--font-family-sans); font-size: 24px; font-weight: var(--font-weight-main-title); fill: var(--color-text-main-title); text-anchor: middle; }
|
||||
|
||||
/* HTML元素样式 */
|
||||
.main-title { font-family: var(--font-family-sans); font-size: var(--font-size-main-title); font-weight: var(--font-weight-main-title); color: var(--color-text-main-title); text-align: center; margin-bottom: 2rem; }
|
||||
.license-text { font-family: var(--font-family-sans); font-size: var(--font-size-license); color: var(--color-text-license); text-align: center; margin-top: 2rem; }
|
||||
svg { width: 100%; height: auto; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="infographic-container">
|
||||
|
||||
<header>
|
||||
<h1 class="main-title">Gitconomy社区信息图实现范例</h1>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<svg viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="diagramTitle diagramDesc">
|
||||
|
||||
<title id="diagramTitle">Gitconomy社区信息图实现范例</title>
|
||||
<desc id="diagramDesc">此图分为两部分。左侧展示了从“规划设计”到“开发实现”再到“审查合并”的三步工作流程。右侧通过一个环形图和列表展示了项目的关键特性。</desc>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="0" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="var(--color-connector-standard)" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<g id="workflow-section">
|
||||
<text x="180" y="50" class="section-title-text" text-anchor="middle">核心三步流程</text>
|
||||
|
||||
<g transform="translate(50, 100)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">1</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M12.9 6.1a1 1 0 0 0-1.8 0l-1.1 2.3-2.5.4a1 1 0 0 0-.6 1.7l1.8 1.8-.4 2.5a1 1 0 0 0 1.5 1.1l2.2-1.2 2.2 1.2a1 1 0 0 0 1.5-1.1l-.4-2.5 1.8-1.8a1 1 0 0 0-.6-1.7l-2.5-.4-1.1-2.3z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">规划设计</text>
|
||||
<text x="110" y="65" class="body-text">明确需求,制定技术方案。</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 250)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">2</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M14.2 9.8a1 1 0 0 1 1.6 1.2l-2.4 4.5a1 1 0 0 1-1.6-1.2l2.4-4.5zM4.2 9.8a1 1 0 0 0 1.6 1.2l2.4-4.5a1 1 0 0 0-1.6-1.2L4.2 9.8zM12 3a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V4a1 1 0 0 1 1-1z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">开发实现</text>
|
||||
<text x="110" y="65" class="body-text">编写高质量、可维护的代码。</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 400)">
|
||||
<rect width="260" height="100" rx="8" class="card-background"/>
|
||||
<circle cx="40" cy="50" r="20" fill="white"/>
|
||||
<text x="40" y="56" font-size="18" font-weight="bold" fill="var(--color-icon)" text-anchor="middle">3</text>
|
||||
<g class="icon-style" transform="translate(80, 35) scale(1.2)">
|
||||
<path d="M16.3 5.7a1 1 0 0 0-1-1.6l-4 2a1 1 0 0 0-1 .6l-3 7a1 1 0 0 0 1.6 1l3-7-2.4 1.2a1 1 0 1 0 1 1.6l4-2a1 1 0 0 0 .4-1.6l-3-7 2.4-1.2z"/>
|
||||
</g>
|
||||
<text x="110" y="45" class="card-title-text">审查合并</text>
|
||||
<text x="110" y="65" class="body-text">通过同行评审确保代码质量。</text>
|
||||
</g>
|
||||
|
||||
<path d="M180,200 v 30" class="elbow-connector" marker-end="url(#arrowhead)"/>
|
||||
<path d="M180,350 v 30" class="elbow-connector" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="features-section" transform="translate(400, 0)">
|
||||
<text x="200" y="50" class="section-title-text" text-anchor="middle">关键特性解析</text>
|
||||
|
||||
<g transform="translate(200, 180)">
|
||||
<circle cx="0" cy="0" r="60" stroke-width="20" class="data-viz-track" />
|
||||
<circle cx="0" cy="0" r="60" stroke-width="20" class="data-viz-progress"
|
||||
transform="rotate(-90)"
|
||||
stroke-dasharray="377"
|
||||
stroke-dashoffset="94.25" />
|
||||
<text y="10" class="data-viz-text">75%</text>
|
||||
</g>
|
||||
<text x="200" y="280" text-anchor="middle" class="body-text">社区贡献率</text>
|
||||
|
||||
<g transform="translate(80, 350)">
|
||||
<text x="0" y="0" class="section-title-text">核心优势</text>
|
||||
|
||||
<circle cx="10" cy="40" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="45" class="body-text">开放透明的治理模式</text>
|
||||
|
||||
<circle cx="10" cy="70" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="75" class="body-text">代码即价值的贡献账本</text>
|
||||
|
||||
<circle cx="10" cy="100" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="105" class="body-text">自动化的激励分配机制</text>
|
||||
|
||||
<circle cx="10" cy="130" r="3" fill="var(--color-icon)"/>
|
||||
<text x="25" y="135" class="body-text">高度可扩展的插件架构</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 附录:术语表
|
||||
|
||||
### CSS (层叠样式表)
|
||||
|
||||
| 术语 (Term) | 说明 (Description) |
|
||||
| :--- | :--- |
|
||||
| **`:root`** | 一个CSS伪类,代表文档的根元素。在本指南中,它被用作一个中心化的位置,来声明所有全局的CSS变量(如`--color-main-box-fill`),从而建立整个设计系统的“单一可信来源”。 |
|
||||
| **`fill`** | 一个CSS属性,用于设置SVG图形(如`<rect>`, `<circle>`, `<path>`)的**内部填充颜色**。它不影响描边。 |
|
||||
| **`stroke`** | 一个CSS属性,用于设置SVG图形的**描边(轮廓)颜色**。 |
|
||||
| **`stroke-dasharray`** | 一个CSS属性,它将图形的描边变为一系列的虚线。在本指南中,它与`stroke-dashoffset`结合使用,通过精确计算圆形的周长来实现**环形图**的进度效果。 |
|
||||
| **`stroke-dashoffset`** | 一个CSS属性,用于设定`stroke-dasharray`所创建的虚线的起始**偏移量**。通过动态改变这个值,可以创建进度条动画。 |
|
||||
| **`stroke-width`** | 一个CSS属性,定义SVG图形描边的**宽度(粗细)**。 |
|
||||
| **`text-anchor`** | 一个SVG特有的CSS属性,用于定义文本相对于其定位点(x, y坐标)的对齐方式。范例中`text-anchor="middle"`用于使文本**水平居中**。 |
|
||||
| **`var()`** | 一个CSS函数,用于**调用**在`:root`中定义的CSS变量。例如,`fill: var(--color-main-box-fill);`会读取变量值并应用到`fill`属性上。 |
|
||||
|
||||
### SVG (可缩放矢量图形)
|
||||
|
||||
| 术语 (Term) | 说明 (Description) |
|
||||
| :--- | :--- |
|
||||
| **`<svg>`** | SVG图形的**根元素**,相当于整个图形的画布。所有SVG图形内容都必须包裹在此标签内。 |
|
||||
| **`<circle>`** | 一个基本的SVG图形元素,用于绘制**圆形**。在范例中用于数据环形图的轨道和进度条,以及特性列表前的项目符号。 |
|
||||
| **`<defs>`** | SVG中的“定义”元素,用于容纳那些**可被重复使用的图形对象**,如`<marker>`。它内部的元素在定义时不会被直接渲染。 |
|
||||
| **`<desc>`** | “描述”元素,与`<title>`配合使用,为辅助技术(如屏幕阅读器)提供关于SVG内容的更详细的、非结构化的**文字描述**。 |
|
||||
| **`<g>`** | “分组”元素,用于将相关的图形元素组合成一个逻辑单元或**“组件”**。对`<g>`标签应用`transform`可以移动整个组件。 |
|
||||
| **`<marker>`** | 定义在`<defs>`中的元素,用于为`<path>`或`<line>`的顶点添加如图形、**箭头**等符号。 |
|
||||
| **`<path>`** | 最强大的SVG图形元素之一,通过`d`属性中的一系列命令来绘制任意形状的路径。在范例中用于绘制**连接线**和自定义**图标**。 |
|
||||
| **`<rect>`** | 一个基本的SVG图形元素,用于绘制**矩形**。在范例中主要用于创建卡片的背景。 |
|
||||
| **`<text>`** | 用于在SVG画布内创建**文本**。其样式(颜色、字体)可以通过CSS类进行控制。 |
|
||||
| **`<title>`** | 为SVG图形提供一个可访问的、人类可读的**标题**。它通常是SVG的第一个子元素,对SEO和可访问性至关重要。 |
|
||||
| **`transform`** | 一个SVG属性(不是标签),用于对元素或元素组`<g>`进行移动(`translate`)、缩放(`scale`)、旋转(`rotate`)等几何变换。 |
|
||||
| **`viewBox`** | `<svg>`元素的一个关键属性,它定义了画布的内部坐标系和宽高比。`viewBox`是实现图形**响应式**的核心机制。 |
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,348 @@
|
|||
# Gitconomy社区图形即代码设计规范指南
|
||||
|
||||
## 引言
|
||||
|
||||
在Gitconomy社区,我们致力于通过技术和最佳实践提升文档的质量与团队协作效率。本指南将帮助社区开发者掌握图形即代码(Diagram-as-Code, DaC)的技术,通过统一的设计规范确保图表的高效生成、管理和维护。图形即代码方法将图表定义为文本,并像管理代码一样管理图表,极大地提高了文档风格一致性、跨团队协作效率和版本控制的灵活性。
|
||||
|
||||
**目标读者:** 本指南适用于Gitconomy社区内的开发者以及所有使用图形即代码技术的开发人员,无论是新手还是有经验的图表设计者。通过遵循本规范,开发者可以创建符合社区标准的图形,并保证其可维护性与可扩展性。
|
||||
|
||||
---
|
||||
|
||||
## 1. 默认输出格式:SVG文件规范
|
||||
|
||||
Gitconomy社区默认的图形输出格式为可缩放矢量图形(SVG)。所有图形即代码工具(如Mermaid、PlantUML)在 CI/CD 流程中都应渲染为SVG文件。
|
||||
|
||||
1. **命名规范:** SVG文件名应使用小写字母和连字符(-),并能清晰地描述图表内容,例如:`api-authentication-flow.svg`,`system-architecture-overview.svg`。
|
||||
|
||||
2. **尺寸与视图:** 应在 <svg>标签中显式定义width和height属性,以确保渲染的稳定性和容器的正确预留。在SVG文件中,应尽量保持视图框(viewBox)属性与width/height属性的比例一致,以确保在不同环境下无失真缩放。
|
||||
|
||||
3. **简洁性与优化:** 生成的SVG文件应力求最小化冗余代码,以保持其可追溯到源代码。对于大型或复杂的图表,建议在CI/CD流程中增加SVG压缩步骤(如使用SVGO等工具),移除不必要的注释、空格和默认属性,以提高加载性能。
|
||||
|
||||
4. **自定义属性与元数据**: 推荐在<svg>标签或 <g>标签中使用data-*自定义属性 来嵌入图表的元数据(如版本号、创建时间)或特定数据标签, 便于在Web文档中进行动态处理或筛选。
|
||||
|
||||
5. **源文件保留:** CI/CD流程中,除生成SVG外,必须在文档版本控制系统中保留Mermaid/PlantUML等图形即代码的原始文本文件(如 .mmd, .puml),以便于未来的可编辑性和可追溯性。
|
||||
|
||||
## 2. 图像背景设置
|
||||
|
||||
默认情况下,SVG背景应设置为**白色**,以确保最佳的可读性:
|
||||
|
||||
```xml
|
||||
<svg width="800" height="600" xmlns="[http://www.w3.org/2000/svg](http://www.w3.org/2000/svg)" style="background-color: white;"></svg>
|
||||
```
|
||||
|
||||
如需**透明背景**(允许底层内容显示),可以:
|
||||
|
||||
```xml
|
||||
<svg width="800" height="600" xmlns="[http://www.w3.org/2000/svg](http://www.w3.org/2000/svg)" style="background-color: transparent;">
|
||||
</svg>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 图像配色方案
|
||||
|
||||
配色方案旨在通过**柔和的色块填充**和**清晰的强调描边**,在保持视觉专业性的同时,有效区分图表中的不同概念和层级。我们采用一整套**冷暖色调搭配**的方案:蓝色系用于核心概念和分组,绿色系用于标准信息,黄色系用于高亮和强调,而连接线和文本则统一使用高对比度的深色,以确保最佳的**可读性**和**层次感**。
|
||||
|
||||
### 3.1 标准配色方案
|
||||
|
||||
请在创建图表时尽量遵循此方案,以保持视觉一致性:
|
||||
|
||||
| 用途 | 样式类别 | 填充色 (Fill) | 描边/强调色 (Stroke/Accent) | Hex值 (Fill) | Hex值 (Stroke) | 描边/连接线宽度Stroke/Line Width|
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **主概念框** | `.main-box` | 淡蓝 | 亮蓝 | `#EFF6FF` | `#60A5FA` | **2px** |
|
||||
| **标准信息框** | `.box` | 淡绿 | 活力绿 | `#F0FDF4` | `#34D399` | **2px** |
|
||||
| **分组卡片背景** | `.card-background` | 柔和蓝 | 中度蓝 | `#DBEAFE` | `#3B82F6` | **2px** |
|
||||
| **高亮/强调框** | `.highlight-box` | 淡黄 | 亮黄 | `#FEF9C3` | `#FACC15` | **2px** |
|
||||
| **标准连接线** | `.elbow-connector` | (无) | 深蓝 | `none` | `#2563EB` | **2px** |
|
||||
| **高亮连接线** | **`.highlight-connector`** | **(无)** | **亮黄** | **`none`** | **`#FACC15`** | **2px** |
|
||||
| **主要文本** | `.main-title-text` | (无) | 深灰 | `none` | `#111827` | **N/A** |
|
||||
| **次要文本** | `.body-text` | (无) | 中灰 | `none` | `#374151` | **N/A** |
|
||||
| **注释文本** | `.small-text` | (无) | 浅灰 | `none` | `#6B7280` | **N/A** |
|
||||
| **许可文本** | `.license-text` | (无) | 石板灰 | `none` | `#64748B` | **N/A** |
|
||||
|
||||
### 3.2 配色方案应用与扩展
|
||||
|
||||
- 标准连接线使用深蓝 (`#2563EB`)。
|
||||
- 对于需要**强调流程或关键路径**时,应使用 `.highlight-connector`样式,描边色为亮黄 (`#FACC15`),以提供清晰的**重点导向性**。
|
||||
- 为了简化图表主题管理和未来的**深色模式**切换,建议将这套配色方案以**CSS 变量**(如`--color-main-blue: #60A5FA;`)的形式嵌入或链接到最终文档中,以实现对图表色彩的**全局管理**和**动态调整**。
|
||||
|
||||
- 
|
||||
*图:图形标准配色方案示意图*
|
||||
|
||||
本配色方案的核心在于通过色彩建图表的逻辑层级 :蓝色系和绿色系用于结构化信息,确保信息稳定;而亮黄色系则作为功能性颜色,专用于引导用户注意力到关键组件或核心路径上。通过将这套固定的颜色映射为CSS变量,我们能确保所有图表在不同文档主题(如深色模式)下保持统一的视觉表现 ,大大提升了图表的可维护性和适应性。
|
||||
|
||||
---
|
||||
|
||||
## 4. 图像字体规范
|
||||
|
||||
图形即代码的字体规范旨在通过统一的字号和字重体系,确保图表在任何分辨率下都具有 卓越的可读性和专业的视觉一致性 。我们采用Noto Sans无衬线字体家族,并为不同的信息层级(如主标题、小标题、正文、注释)设置了 清晰的字号差异和字重分级 ,确保用户能够一眼识别信息的重要性。
|
||||
|
||||
| 样式类别 | 字体大小 (`font-size`) | 字重 (`font-weight`) | 建议用途 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| `.main-title-text` | **22px** ($\approx \mathbf{1.375\text{rem}}$) | **800** (Extra Bold) | 整个示意图的 **主标题** |
|
||||
| `.title-text` | **16px** ($\approx \mathbf{1\text{rem}}$) | `bold` | 各模块或卡片的 **小标题** |
|
||||
| `.highlight-text` | **12px** ($\approx \mathbf{0.75\text{rem}}$) | `bold` | 需要 **特别强调** 的关键信息 |
|
||||
| `.body-text` | **12px** ($\approx \mathbf{0.75\text{rem}}$) | `normal` | **正文** 和常规描述性文字 |
|
||||
| `.license-text` | **12px** ($\approx \mathbf{0.75\text{rem}}$) | `normal` | 底部 **许可声明** |
|
||||
| `.small-text` | **11px** ($\approx \mathbf{0.6875\text{rem}}$) | `normal` | 辅助性、补充性的 **注释文字** |
|
||||
|
||||
字体可读性及排版建议:
|
||||
|
||||
- **字体选择:** 优先使用无衬线字体,确保清晰度(如sans-serif 族,默认使用Noto Sans)。
|
||||
- **字距(letter-spacing)**: 正文 (.body-text) 推荐设置为 0.02em ,以略微增加字间清晰度。
|
||||
- **行距(line-height)**: 对于多行文本,推荐设置行间距为1.4 到 1.5 ,以保证密集信息的清晰度。
|
||||
- **单位说明:** 优先使用像素 (px) 确保静态一致性。为实现响应式缩放,我们提供了一个基准字体大小为16px的rem参考值。在响应式图表设计中,建议使用em或rem作为单位,或通过viewBox缩放来间接调整字体大小。
|
||||
|
||||

|
||||
*图:图形文字规范示意*
|
||||
|
||||
统一的字体规范是确保技术文档专业度的基石。 通过精确定义每一个文本元素的 font-size 和 font-weight ,我们为所有图形即代码生成的图表创建了一个 可预测且高度一致的文本环境 。 这种严格的层级划分不仅增强了信息的可读性, 也使得图表在不同设备和平台上的视觉呈现更加稳定, 避免了因字体差异导致的布局错乱和阅读障碍。
|
||||
|
||||
---
|
||||
|
||||
## 5. 图像元素间距规范
|
||||
|
||||
保持元素之间的统一间距,使图表布局更加专业:
|
||||
|
||||
* 主标题与第一个内容元素:**30-40像素**
|
||||
* 主要概念盒子间的垂直间距:**40-50像素**
|
||||
* 相关概念组内元素的垂直间距:**10-20像素**
|
||||
* 底部许可声明与上方元素间距:**50-70像素**(确保明显分离)
|
||||
|
||||
响应式布局:对于不同屏幕尺寸的适配,确保图表保持比例并避免元素堆叠。使用viewBox和width/height设置来保证内容自适应
|
||||
|
||||
---
|
||||
|
||||
## 6. 图像元素布局与定位规范
|
||||
|
||||
为确保Gitconomy社区图形的一致性和专业性,图像元素的布局与定位应遵循以下规范:
|
||||
|
||||
### 6.1 坐标系统与单位
|
||||
|
||||
| 规范项 | 说明 | 优先级/示例 |
|
||||
| :--- | :--- | :--- |
|
||||
| **坐标原点** | 默认使用 **SVG 左上角** 为坐标原点 $(0, 0)$。 | |
|
||||
| **单位使用** | 优先使用 **像素 $(\text{px})$** 作为默认单位,保持一致性。 | $\text{width}="200" \text{height}="100"$ |
|
||||
| **相对单位** | 需要响应式设计时,可使用 **百分比 $(\%)$** 或 **视口单位 $(\text{vw}, \text{vh})$**。 | $\text{width}="100\%" \text{height}="50\text{vh}"$ |
|
||||
|
||||
### 6.2 图形元素定位方法
|
||||
|
||||
* **绝对定位**:使用 $\mathbf{x}$ 和 $\mathbf{y}$ 属性进行直接定位,适用于静态布局。
|
||||
|
||||
<!-- end list -->
|
||||
|
||||
```xml
|
||||
<rect x="100" y="150" width="200" height="100" class="main-box" />
|
||||
```
|
||||
|
||||
* **相对定位**:使用 **$\text{transform}$ 属性** 进行相对于元素原始位置的定位。
|
||||
|
||||
<!-- end list -->
|
||||
|
||||
```xml
|
||||
<g transform="translate(50, 30)">
|
||||
</g>
|
||||
```
|
||||
|
||||
### 6.3 对齐与分组
|
||||
|
||||
* **元素对齐**:关键元素应使用 **网格对齐**,主要参考线间距为 **$20\text{px}$**。
|
||||
* **元素对齐细节:在复杂的流程图或网络图中,应尽量避免元素边界相互重叠。通过`x`** 和`y`坐标计算,保所有同级元素在垂直或水平方向上处于**$20\text{px}$** 网格线的整数倍位置,避免元素堆叠。
|
||||
* **分组策略与容器结构:相关元素应使用 **$\mathbf{<g>}$ 标签 分组,便于统一应用样式和变换。在多层级图表中,`<g>`*标签可以作为*逻辑容器来管理一组子元素,通过对容器应用`transform`变换,可以更灵活地调整内部元素的相对定位。
|
||||
|
||||
<!-- end list -->
|
||||
|
||||
```xml
|
||||
<g class="module-container">
|
||||
<rect class="card-background" x="10" y="10" width="300" height="200" />
|
||||
<text class="title-text" x="25" y="40">模块标题</text>
|
||||
</g>
|
||||
```
|
||||
|
||||
### 6.4 布局模式规范
|
||||
|
||||
1. **流程图布局**
|
||||
|
||||
| 布局类型 | 描述 | 间距规范 |
|
||||
| :--- | :--- | :--- |
|
||||
| **水平流程** | 元素从左到右排列。 | 间距保持为 **$80\text{px} - 120\text{px}$**。 |
|
||||
| **垂直流程** | 元素从上到下排列。 | 间距保持为 **$60\text{px} - 80\text{px}$**。 |
|
||||
| **网格布局** | 多组件系统应使用网格布局。 | 网格单元大小为 **$100\text{px} \times 100\text{px}$**。 |
|
||||
|
||||
2. **层级排列**
|
||||
|
||||
* **视觉层级**:重要元素应位于 **视觉中心区域** (视图的中心 **$40\%$**)。
|
||||
* **Z轴顺序**:使用 **SVG 的自然绘制顺序**(后定义的元素在上层)。
|
||||
* **特殊突出**:需要突出的元素可适当 **增大尺寸** ($\mathbf{10\% - 15\%}$)。
|
||||
|
||||
3. **响应式布局技术**
|
||||
|
||||
* **视图框适配**:使用 **$\text{viewBox}$ 属性** 确保 SVG 在不同尺寸的容器中保持比例。
|
||||
|
||||
<!-- end list -->
|
||||
|
||||
```xml
|
||||
<svg viewBox="0 0 800 600" width="100%" height="auto">
|
||||
</svg>
|
||||
```
|
||||
|
||||
* **保留边距**:内容应在视图边缘保留 **$5\% - 10\%$ 的边距**,避免内容紧贴边界。
|
||||
|
||||
4. **变换 ($\text{Transform}$) 应用规范**
|
||||
|
||||
* **标准变换**:使用标准变换函数实现定位和旋转效果。
|
||||
|
||||
| 变换类型 | 示例 | 描述 |
|
||||
| :--- | :--- | :--- |
|
||||
| **平移** | `<g transform="translate(100, 50)">...</g>` | 将元素移动至 $(100, 50)$。 |
|
||||
| **旋转** | `<g transform="rotate(45, 50, 50)">...</g>` | 围绕点 $(50, 50)$ 旋转 $45$ 度。 |
|
||||
| **缩放** | `<g transform="scale(1.2)">...</g>` | 放大$1.2$倍。 |
|
||||
|
||||
* **复合变换**:多重变换按 **从右到左** 的顺序应用。
|
||||
|
||||
<!-- end list -->
|
||||
|
||||
```xml
|
||||
<g transform="rotate(30) translate(100, 0)">...</g>
|
||||
```
|
||||
|
||||
* **变换原点**:明确指定变换的 **中心点**,特别是对于旋转和缩放操作。
|
||||
|
||||
### 6.5 连接线与箭头规范
|
||||
|
||||
* **路径类型**:优先使用 **直角连接线** ($\text{elbow connector}$),避免线条交叉。
|
||||
* **路径定位**:连接线应连接至元素 **边界的中点**。
|
||||
* **路径计算**:
|
||||
* **起点** $(x_1, y_1)$: $(\text{源元素.}x + \text{源元素.}\text{width}/2, \text{源元素.}y + \text{源元素.}\text{height})$
|
||||
* **终点** $(x_2, y_2)$: $(\text{目标元素.}x + \text{目标元素.}\text{width}/2, \text{目标元素.}y)$
|
||||
|
||||
---
|
||||
|
||||
## 7. 图形源代码注释规范
|
||||
|
||||
在Gitconomy社区,图形源代码(包括SVG和所有图形即代码工具如Mermaid、PlantUML生成的代码)应包含详细的注释。这不仅有助于开发者理解代码的结构和功能,还能促进团队间的高效协作和代码的可维护性。
|
||||
|
||||
### 7.1 注释的基本要求
|
||||
|
||||
1. **清晰描述图形的目的**
|
||||
每个图形源代码文件应在开头部分添加简短的描述,阐明该图表的功能、目的和适用场景。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
图表名称:API认证流程
|
||||
描述:该图表展示了系统中API认证的工作流程,从用户请求到系统认证过程的各个阶段。
|
||||
适用场景:开发人员可用此图表快速了解API认证机制,便于系统架构设计和调试。
|
||||
-->
|
||||
```
|
||||
|
||||
2. **模块化代码注释**
|
||||
对于较复杂的图形源代码,应在每个模块或部分之前进行注释,说明该部分的功能和作用,确保其他开发者能快速理解模块的目的和实现逻辑。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
模块名称:用户身份验证
|
||||
描述:此部分展示了用户身份验证的具体步骤,包括用户名输入、密码验证及令牌生成。
|
||||
-->
|
||||
<rect x="100" y="100" width="200" height="50" class="auth-box" />
|
||||
```
|
||||
|
||||
3. **标注自定义参数和关键属性**
|
||||
如果在图形代码中使用了自定义参数或关键属性(如颜色、尺寸、坐标等),应进行注释以说明其用途和设计意图。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
设置背景颜色为淡蓝色,确保图表在大多数背景下清晰可见。
|
||||
-->
|
||||
<svg width="800" height="600" xmlns="http://www.w3.org/2000/svg" style="background-color: #EFF6FF;">
|
||||
```
|
||||
|
||||
4. **代码块之间的逻辑分隔**
|
||||
在图形源代码的不同逻辑部分之间,添加空行和注释,帮助开发者清晰地区分不同功能模块。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
连接用户输入框与认证模块的线条
|
||||
-->
|
||||
<path d="M200,150 L200,200" class="elbow-connector" />
|
||||
```
|
||||
|
||||
### 7.2 注释的格式要求
|
||||
|
||||
1. **简洁明了**
|
||||
注释应简洁、准确,避免冗长的描述。避免在注释中包含与图形代码无关的技术细节。
|
||||
|
||||
2. **统一格式**
|
||||
所有注释应遵循统一的格式,例如:
|
||||
|
||||
* 使用`<!-- 描述内容 -->`来标记单行注释。
|
||||
* 对较长的注释,可使用多行注释`<!--`和`-->`来包围。
|
||||
|
||||
3. **结构化注释**
|
||||
对于较复杂的图形设计,建议采用结构化的注释方式,包括:
|
||||
|
||||
* 图表的目的和背景
|
||||
* 模块化的功能描述
|
||||
* 关键属性或参数的解释
|
||||
|
||||
示例:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
图表名称:数据流向
|
||||
描述:展示数据在系统中的流向路径,帮助开发者理解数据传输的不同节点。
|
||||
关键模块:
|
||||
- 输入数据:从外部系统接收到的数据。
|
||||
- 处理模块:数据的转换和处理。
|
||||
- 输出:最终生成的报告数据。
|
||||
-->
|
||||
```
|
||||
|
||||
### 7.3 高级注释要求
|
||||
|
||||
对于高级功能或较为复杂的图形,以下注释规范是推荐的:
|
||||
|
||||
1. **指明设计原理和决策**
|
||||
如果图形源代码中包含复杂的设计决策或算法,建议注明该决策的背景和设计原则。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
设计决策:采用深蓝色作为连接线颜色,确保在浅色背景下清晰可见。
|
||||
背景:原本使用黑色,但在白色背景下可视性较差,因此调整为深蓝色。
|
||||
-->
|
||||
```
|
||||
|
||||
2. **引用外部文档或资源**
|
||||
如果图形源代码引用了外部资源或文档(如设计规范、API文档等),应在注释中进行明确标注,便于开发者进一步查阅。例如:
|
||||
|
||||
```xml
|
||||
<!--
|
||||
参考文档:API认证流程设计 - 请参阅Gitconomy开发文档第5章,了解API认证的详细步骤。
|
||||
-->
|
||||
```
|
||||
|
||||
注释不仅是代码的辅助工具,也是高效协作和长期维护的重要部分。Gitconomy社区在图形即代码中严格要求注释规范,旨在确保每一位开发者能够快速理解和修改图形代码,同时保证文档的可维护性和可扩展性。通过遵循这些注释规范,团队成员可以更高效地协作,减少错误和理解偏差,提高整体开发效率和文档质量。通过增加图形源代码注释规范,我们不仅确保图形的高效使用和维护,还提高了代码的可读性和团队协作的透明度。这将进一步促进Gitconomy社区在技术文档方面的专业性与一致性。
|
||||
|
||||
---
|
||||
|
||||
## 8. 许可声明
|
||||
|
||||
所有Gitconomy社区图表应在底部包含统一的许可声明:
|
||||
|
||||
```xml
|
||||
<text x="50%" y="600" class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
```
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
"图形即代码"方法正在彻底改变开发团队创建和维护技术文档的方式。通过将图表定义为文本,并像管理代码一样管理图表,开发者可以实现更高效的协作、更一致的文档风格、以及更紧密的代码与文档同步。
|
||||
|
||||
在Gitconomy社区,我们鼓励所有开发者采用本指南中的设计规范和最佳实践,创建统一、专业的技术文档。这不仅能提升文档质量,更能促进团队协作和知识共享,最终提高整个社区的工程实践水平。
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,870 @@
|
|||
# Gitconomy社区文档格式规范指南
|
||||
|
||||
## 引言
|
||||
|
||||
在`人人都是研究员`的Gitconomy开放研究社区中,让每一次`Commit`都能被社区快速阅读、复现、再创造。本指南统一文档风格、目录结构、元数据与提交流程,确保人类transclusion与AI都能无缝协作。
|
||||
|
||||
本指南适用于所有向Gitconomy Research所有仓库提交的文档类内容,包括但不限于:
|
||||
|
||||
- 研究论文、报告解读
|
||||
- 项目白皮书、技术文档
|
||||
- 教程、工作流程指南
|
||||
- 会议记录、社区治理提案
|
||||
- README 文件
|
||||
- 任何其他以 .md, .pdf, .txt 等格式存储的说明性文件。
|
||||
|
||||
## 1. 指南编写指导原则
|
||||
|
||||
### 1.1 指南规范指导思想
|
||||
|
||||
本部分旨在阐明本指南背后的“原因”,将文档定位为开源环境下开放研究流程中不可或缺的一环,而不仅仅是一项繁琐的任务。
|
||||
|
||||
在开放式研究的背景下,文档是建立信任和确保科学有效性的首要工具。它不仅是项目成果的说明书,更是研究过程透明度和可信度的载体。传统的开源软件文档侧重于可用性和功能实现,而开放式 研究 文档则必须将可复现性置于核心地位。一份高质量的文档,意味着研究成果是可被验证、可被信赖的,从而使其他研究者能够在此基础上进行验证和扩展 。因此,本社区的文档不仅要服务于代码的使用者,更要服务于科学的审查者。
|
||||
|
||||
一个成功的开源研究社区,其本质在于融合两种截然不同的文化:软件开发的敏捷迭代文化与学术研究的严谨验证文化。前者追求快速原型和功能交付,文档侧重于“快速上手”和API参考 ;后者则强调同行评审和结果验证,文档侧重于详尽的方法论、数据来源和理论依据。若无法有效弥合这两种文化的差异,社区将面临两种潜在的失败模式:其一,项目因缺乏严谨的方法学和数据文档而科学性不足,无法获得学术界的认可;其二,项目因文档过于晦涩、理论性过强而吓退潜在的社区贡献者,导致项目停滞不前。
|
||||
|
||||
因此,本指南的核心目标是建立一种`混合文档模型`。它既要提供顶级开源软件项目所具备的清晰、简洁的快速入门指南和用法示例 ,又要强制执行学术研究所需的严格的数据、代码和实验方法文档标准。这种模型的建立,旨在将文档本身作为澄清思路、帮助他人理解期望的工具 ,并最终将严谨的科学数据管理融入社区工作流程,使其成为迈向可复现研究的第一步 。通过这种方式,文档将成为连接敏捷协作与科学严谨性的桥梁,从而构成本社区独特的价值主张。
|
||||
|
||||
### 1.2 指南规范设计原则
|
||||
|
||||
Gitconomy社区文档规范的基本原则:
|
||||
|
||||
1. `乐高原则`——把文档拆成最小可复用单元(数据说明、方法描述、代码片段、思维笔记),像乐高一样随取随拼。
|
||||
2. `AI友好`——所有文档须同时满足“人类可读 + LLM 可解析”。使用显式标题、列表、代码围栏,避免隐式引用。
|
||||
3. `一次写作、多处复用`——任何文档块(如方法描述)应能在 README、论文、教学课件中无缝引用,借助 Markdown 的 transclusion 与变量替换实现。
|
||||
4. `渐进式参与`——提供不同复杂度的规范要求,让新手能够低门槛参与,同时为经验丰富的贡献者提供高级指南。
|
||||
5. `可访问性优先`——确保文档对各种设备、各种阅读需求的用户都友好,包括屏幕阅读器用户、色盲用户等。
|
||||
|
||||
## 2. 快速上手
|
||||
|
||||
### 2.1 快速参考清单
|
||||
|
||||
以下是提交文档前的基本检查清单,确保满足核心要求:
|
||||
- [ ] 文件名使用小写字母,单词间使用连字符(-)分隔
|
||||
- [ ] [ ] 文档使用Markdown格式(.md后缀)
|
||||
- [ ] [ ] 文档包含清晰的标题(一级标题)
|
||||
- [ ] [ ] 文档包含作者和日期信息(显式或隐式元数据)
|
||||
- [ ] [ ] 标题层级正确(不跳级,如一级标题后直接使用三级标题)
|
||||
- [ ] [ ] 内容结构清晰,使用适当的小标题划分
|
||||
- [ ] [ ] 图片使用相对路径引用,并提供alt文本
|
||||
- [ ] [ ] 代码块使用三个反引号标记,并指定语言
|
||||
- [ ] [ ] 包含许可声明
|
||||
- [ ] [ ] 参考文献格式统一
|
||||
|
||||
### 2.2 新手贡献路径
|
||||
|
||||
为帮助新加入社区的贡献者逐步掌握文档规范,我们提供以下渐进式参与路径:
|
||||
|
||||
||路径|关注要点|主要参与方式|
|
||||
|:---|:---|:---|:---|
|
||||
|1|入门级|关注基本格式和内容准确性|- 使用现有模板创建文档<br>- 确保基本元数据完整<br>- 遵循基本Markdown语法|
|
||||
|2|进阶级|提升文档结构和可读性|- 优化内容组织和层次结构<br>- 添加适当的图表和视觉元素<br>- 完善引用和参考文献<br>|
|
||||
|3|专家级|实现文档的最佳实践|- 创建可复用的文档组件<br>|- 优化多语言支持<br>- 贡献文档模板和工具|
|
||||
|
||||
新手贡献者可以从以下简单任务开始:
|
||||
|
||||
- 修正现有文档中的拼写和格式错误
|
||||
- 为现有文档添加示例或说明
|
||||
- 翻译已有文档到其他语言
|
||||
- 撰写简短的教程或指南
|
||||
|
||||
## 3. 目录规范
|
||||
|
||||
### 3.1 通用目录规范
|
||||
|
||||
所有Gitconomy Research仓库应遵循一致的顶层目录结构:
|
||||
|
||||
~~~
|
||||
📁 repository-name/
|
||||
├── 01-category-one/ # 第一类内容
|
||||
├── 02-category-two/ # 第二类内容
|
||||
├── 03-category-two/ # 第二类内容
|
||||
│ ├── .scripts/ # 文档相关脚本
|
||||
│ ├── templates/ # 文档模板
|
||||
│ └── assets/ # 共享资源(图片等)
|
||||
├── README.md # 项目概述
|
||||
├── CONTRIBUTING.md # 贡献指南
|
||||
└── 📄 LICENSE # 许可证文件
|
||||
~~~
|
||||
|
||||
目录命名应遵循以下规则:
|
||||
|
||||
- 请使用小写字母
|
||||
- 单词间使用中划线连字符(-)分隔
|
||||
- 使用数字前缀给文件夹排序(如01-introduction/),方便 GitHub/GitCode Web 界面浏览
|
||||
- 名称应简洁明了,反映内容主题
|
||||
|
||||
### 3.2 研究类文档
|
||||
|
||||
~~~
|
||||
📁 research-topic/
|
||||
├── 📁 01-papers/ # 完整论文或报
|
||||
├── 📁 02-data/ # 研究数据
|
||||
│ ├── raw/ # 原始数据
|
||||
│ └── processed/ # 处理后的数据
|
||||
├── 📁 03-methods/ # 研究方法描述
|
||||
├── 📁 04-analysis/ # 分析代码和结果
|
||||
├── 📁 05-assets/ # 图表和可视
|
||||
└── 📄 README.md # 研究概述和导航
|
||||
~~~
|
||||
|
||||
### 3.3 教育类文档
|
||||
|
||||
~~~
|
||||
📁 education-topic/
|
||||
├── 📁 01-introduction/ # 课程说明
|
||||
├── 📁 02-syllabus/ # 教学大纲
|
||||
├── 📁 03-lessons/ # 课程内容
|
||||
│ ├── 📄 lesson-01.md
|
||||
│ └── ...
|
||||
├── 📁 04-exercises/ # 练习和实践项目
|
||||
├── 📁 05-resources/ # 学习资源
|
||||
└── 📄 README.md # 课程概述和导航
|
||||
~~~
|
||||
|
||||
### 3.4 评论/思维类文档
|
||||
|
||||
~~~
|
||||
📁 perspective-topic/
|
||||
├── 📁 01-case-studies/ # 案例研究
|
||||
├── 📁 02-references/ # 参考资料
|
||||
├── 📄 README.md # 主题概述和导航
|
||||
├── 📄 core-concepts.md # 核心概念阐述
|
||||
└── 📄 pplications.md # 应用场景
|
||||
~~~
|
||||
|
||||
## 4. 文档规范
|
||||
|
||||
### 4.1 文档命名规范
|
||||
|
||||
1. **文件命名规则**
|
||||
|
||||
文件命名应遵循以下规则:
|
||||
|
||||
- 使用小写字母(中文文件名除外)
|
||||
- 单词间使用连字符(-)分隔
|
||||
- 文件扩展名使用小写
|
||||
- 包含版本信息时使用v1, v2等后缀
|
||||
- 内容类型应该在文件名中体现
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
- 英文文档:contribution-guidelines.md, ai-collaboration-model-v2.md
|
||||
- 中文文档:基于贡献即要素的社区角色重构思考.md
|
||||
- 包含日期的文档:weekly-report-20250301.md
|
||||
~~~
|
||||
|
||||
2. **图片命名规则**
|
||||
|
||||
- 使用描述性名称
|
||||
- 指明图片类型或用途
|
||||
|
||||
3. **多语言文档命名**
|
||||
|
||||
多语言文档应在文件名中添加语言代码:
|
||||
|
||||
- 使用ISO 639-1两字母语言代码
|
||||
- 语言代码置于文件名末尾,扩展名之前
|
||||
- 使用连字符分隔语言代码
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
- 英文版:contribution-guidelines-en.md
|
||||
- 中文版:contribution-guidelines-zh.md
|
||||
|
||||
对于主要使用中文的文档,可以使用中文文件名,并在其他语言版本中添加相应语言代码:
|
||||
|
||||
- 中文原版:研究方法.md
|
||||
- 英文翻译版:研究方法-en.md
|
||||
~~~
|
||||
|
||||
4. **版本号规范**
|
||||
|
||||
文档版本号应遵循语义化版本控制(Semantic Versioning)规范:
|
||||
|
||||
- 格式为:主版本号.次版本号.修订号(例如:1.2.3)
|
||||
- 主版本号:不兼容的内容变更
|
||||
- 次版本号:向后兼容的功能性新增
|
||||
- 修订号:向后兼容的问题修正
|
||||
|
||||
在文件名或元数据中表示版本时:
|
||||
|
||||
- 文件名中使用简化版本:document-name-v1.md, document-name-v2.md
|
||||
- 元数据中使用完整版本号:version: 1.2.3
|
||||
|
||||
### 4.2 文档格式规范
|
||||
|
||||
#### 4.2.1 Markdown基本规范
|
||||
|
||||
所有文档应使用`Markdown`格式编写,遵循以下规范:
|
||||
|
||||
1. **标题层级**
|
||||
|
||||
- 文档标题使用一级标题(# 标题)
|
||||
- 主要章节使用二级标题(## 章节)
|
||||
- 子章节使用三级标题(### 子章节)
|
||||
- 最多使用到四级标题(#### 小节)
|
||||
|
||||
*正确示例:*
|
||||
|
||||
~~~
|
||||
# 文档标题
|
||||
## 第一章
|
||||
### 1.1 小节
|
||||
### 1.2 小节
|
||||
## 第二章
|
||||
~~~
|
||||
|
||||
*错误示例:*
|
||||
|
||||
~~~
|
||||
# 文档标题
|
||||
### 1.1 小节(跳过了二级标题)
|
||||
~~~
|
||||
|
||||
2. **列表格式**
|
||||
|
||||
- 无序列表使用连字符(-)
|
||||
- 有序列表使用数字加点(1.)
|
||||
- 列表缩进使用两个空格
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
- 第一项
|
||||
- 第二项
|
||||
- 子项A
|
||||
- 子项B
|
||||
- 第三项
|
||||
|
||||
1. 第一步
|
||||
2. 第二步
|
||||
1. 子步骤1
|
||||
2. 子步骤2
|
||||
3. 第三步
|
||||
~~~
|
||||
|
||||
3. **代码块**
|
||||
|
||||
- 使用三个反引号标记代码块
|
||||
- 指定语言类型以启用语法高亮
|
||||
|
||||
*示例:*
|
||||
|
||||
```Python
|
||||
def example_function():
|
||||
return "This is a code example"
|
||||
```
|
||||
|
||||
4. **表格**
|
||||
|
||||
- 使用标准Markdown表格语法
|
||||
- 表格前后留一空行
|
||||
- 表头与内容之间必须有分隔行
|
||||
- 尽量保持列对齐以提高可读性
|
||||
|
||||
*示例*
|
||||
|
||||
|列名1|列名2|列名3|
|
||||
|:---|:---|:---|
|
||||
|数据1|数据2|数据3|
|
||||
|数据1|数据2|数据3|
|
||||
|
||||
|
||||
5. **链接与图片**
|
||||
|
||||
- 使用相对路径引用仓库内图片
|
||||
- 外部链接应提供完整URL,包括https://前缀
|
||||
- 提供清晰的alt 文本,兼顾无障碍与 LLM 理解。
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
[相关文档](../docs/related-document.md)
|
||||
|
||||

|
||||
|
||||
<https://gitconomy.org/>
|
||||
~~~
|
||||
|
||||
#### 4.2.2 元数据规范
|
||||
|
||||
对于较长的研究文档或文章,建议在 Markdown 文件顶部添加 YAML Front Matter 来提供元数据,便于管理和检索。元数据可以采用显式或隐式方式:
|
||||
|
||||
1. **显式元数据**(推荐用于正式研究文档)
|
||||
|
||||
文档开头使用YAML格式的元数据块:
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
---
|
||||
title: 文档标题
|
||||
author: 作者名称
|
||||
date: YYYY-MM-DD
|
||||
version: x.y.z
|
||||
category: [研究/思想/教育]
|
||||
tags: [标签1, 标签2]
|
||||
---
|
||||
~~~
|
||||
|
||||
必填字段:
|
||||
|
||||
- `title: 文档标题`
|
||||
- `author: 主要作者`
|
||||
- `date: 创建或最后修改日期`
|
||||
- `version: 文档版本`
|
||||
|
||||
可选字段:
|
||||
|
||||
- `category: 文档类别`
|
||||
- `tags: 相关标签`
|
||||
- `contributors: 其他贡献者`
|
||||
- `license: 许可证类型`
|
||||
- `language: 文档语言`
|
||||
- `original_link: 原文链接`(适用于翻译文档)
|
||||
- `summary: 简短摘要`
|
||||
|
||||
2. **隐式元数据**(适用于简短文档或非正式贡献)
|
||||
|
||||
在文档正文中自然融入必要信息:
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
# 文档标题
|
||||
|
||||
作者:作者名称 | 日期:YYYY-MM-DD | 版本:x.y.z
|
||||
|
||||
[文档正文开始...]
|
||||
~~~
|
||||
|
||||
对于简短或临时性文档,甚至可以只在文档标题下方添加作者和日期信息:
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
# 文档标题
|
||||
|
||||
作者:作者名称
|
||||
日期:YYYY-MM-DD
|
||||
|
||||
[文档正文开始...]
|
||||
~~~
|
||||
|
||||
无论采用哪种方式,都应确保包含基本的作者和日期信息,以便追踪文档来源和版本。
|
||||
|
||||
### 4.3 内容组织规范
|
||||
|
||||
1. **基本结构**
|
||||
|
||||
`研究类文档`应包含以下基本结构:
|
||||
|
||||
~~~
|
||||
1. 标题:清晰表达文档主题
|
||||
2. 摘要:不超过200字,概述核心内容和贡献
|
||||
3. 引言:背景、目的和研究问题
|
||||
4. 正文:结构清晰,使用多级标题划分逻辑段
|
||||
5. 结论:总结要点,指出局限性和未来工作
|
||||
6. 参考文献:引用所有参考的外部资料
|
||||
7. 附录(可选):额外材料、数据或代码
|
||||
~~~
|
||||
|
||||
`教育类文档`应包含:
|
||||
|
||||
~~~
|
||||
1. 标题:课程或教程名称
|
||||
2 .学习目标:完成后预期获得的能力
|
||||
3. 先决条件:所需的基础知识
|
||||
4. 内容:分步骤或模块组织的教学内容
|
||||
5. 练习:巩固学习的活动
|
||||
6. 进阶资源:深入学习的参考资料
|
||||
~~~
|
||||
|
||||
`评论/思维类文档`应包含:
|
||||
|
||||
~~~
|
||||
1. 标题:观点或思考的主题
|
||||
2. 核心主张:主要观点概述
|
||||
3. 论证:支持主张的理由和证据
|
||||
4. 应用:思想的实际应用场景
|
||||
5. 参考文献:相关研究和资料
|
||||
~~~
|
||||
|
||||
2. **内容模块化**
|
||||
|
||||
遵循"乐高原则",将文档内容模块化:
|
||||
|
||||
- 每个模块应有明确的标题
|
||||
- 相关内容应组织在一起
|
||||
- 避免过长的段落(超过10行)
|
||||
- 使用列表和表格组织复杂信息
|
||||
- 通过小标题创建清晰的内容结构
|
||||
|
||||
### 4.4 图表与多媒体规范
|
||||
|
||||
好的,这是您提供内容的Markdown表格格式:
|
||||
|
||||
| 类别 | 具体要求 |
|
||||
| :--- | :--- |
|
||||
| **图片规范** | <ul><li>格式:优先使用SVG格式(矢量图),其次是PNG(位图)<li>大小:控制在500KB以内,除非必须保持高分辨率<li>分辨率:至少300 DPI,确保打印质量<li>尺寸:避免过大图片,建议宽度不超过1200像素<li>命名:使用描述性名称</li>位置:放置在assets/目录下,按主题组织<ul>|
|
||||
| **图表要求** | <ul><li>所有图表必须包含标题</li>坐标轴必须有清晰标签<li>图例应易于区分<li>配色应考虑色盲友好性<li><li>对复杂图表提供文字说明<ul> |
|
||||
| **多媒体内容** | <ul><li>视频:提供文字摘要和关键时间点<li>动画:提供静态图片替代版本<li>交互式内容:确保有静态替代版本<ul>|
|
||||
| **可访问性要求** | <ul><li>所有图片必须提供alt文本<li>避免仅通过颜色传达信息<li>表格应使用表头,便于屏幕阅读器解析<li>复杂图表应提供文字描述版本<ul> |
|
||||
|
||||
**示例:**
|
||||
|
||||
~~~
|
||||

|
||||
|
||||
*图1:该图展示了Gitconomy社区研究框架,包含三个核心组件:知识生产、价值分配和治理机制。*
|
||||
~~~
|
||||
|
||||
### 4.5 参考文献与引用
|
||||
|
||||
1. **引用格式**
|
||||
|
||||
- 学术引用使用APA格式
|
||||
- 引用应在文档末尾的"参考文献"部分列出
|
||||
- 引用编号在正文中使用方括号标注,如[1]
|
||||
|
||||
**示例(正文中):**
|
||||
|
||||
~~~
|
||||
根据最新研究[1],开放研究模式能显著提高知识传播效率。Smith等人[2]进一步指出...
|
||||
~~~
|
||||
|
||||
**示例(参考文献部分):**
|
||||
|
||||
~~~
|
||||
## 参考文献
|
||||
|
||||
[1] Johnson, A., & Williams, B. (2023). Open Research Paradigms. *Journal of Open Science*, 45(2), 112-128.
|
||||
|
||||
[2] Smith, C., Jones, D., & Brown, E. (2024). Knowledge Sharing in Digital Commons. *Digital Collaboration Review*, 12(4), 78-92. https://doi.org/10.1234/dcr.2024.123
|
||||
~~~
|
||||
|
||||
2. **脚注使用**
|
||||
|
||||
对于解释性内容或次要信息,可使用脚注:
|
||||
|
||||
~~~
|
||||
这是正文内容[^1],包含需要额外解释的概念。
|
||||
|
||||
[^1]: 这是脚注内容,提供额外解释或参考信息。
|
||||
~~~
|
||||
|
||||
3. **术语引用**
|
||||
|
||||
- 首次出现的专业术语应提供简短解释或脚注
|
||||
- 考虑在文档末尾添加术语表
|
||||
- 保持术语使用的一致性,避免同一概念使用不同表述
|
||||
|
||||
### 4.6 许可说明
|
||||
|
||||
Gitconomy社区采用以下许可方式:
|
||||
|
||||
1. **文档许可**
|
||||
|
||||
所有文档内容采用知识共享署名-相同方式共享4.0国际许可协议(CC BY-SA 4.0)进行许可。这意味着您可以:
|
||||
|
||||
- 共享:复制、发行、展示和表演本作品
|
||||
- 演绎:修改、转换或以本作品为基础进行创作
|
||||
|
||||
但须遵守以下条件:
|
||||
|
||||
- 署名:必须提供原作者的署名
|
||||
- 相同方式共享:如果您改变、转换本作品或以本作品为基础进行创作,您只能使用与本作品相同或兼容的许可协议发布您的贡献
|
||||
|
||||
2. **代码许可**
|
||||
|
||||
所有代码(包括代码示例、脚本)采用MIT许可证进行许可。这是一个宽松的软件许可证,只要保留版权和许可声明,允许任何人以任何方式使用代码。
|
||||
|
||||
3. **数据许可**
|
||||
|
||||
研究数据采用开放数据共享 (ODbL)许可,允许自由共享、修改和使用数据,但要求保持开放并归功于原始贡献者。
|
||||
|
||||
## 5. 写作风格指南
|
||||
|
||||
### 5.1 语言与表达
|
||||
|
||||
1. **清晰性与简洁性**
|
||||
|
||||
- 使用主动语态:强制要求使用主动语态,以增强清晰度和直接性。例如,使用"该脚本处理数据…“而非"数据被该脚本处理…”。
|
||||
- 使用简洁句式:提倡使用简短、清晰的句子。避免冗长、复杂的从句结构。
|
||||
- 术语一致性:保持术语使用的统一性,避免使用同一概念的不同表述。
|
||||
|
||||
2. **正式性与专业性**
|
||||
|
||||
- 保持适度的正式性,避免过于口语化的表达
|
||||
- 避免使用缩写词(除非已经解释)
|
||||
- 使用精确的技术术语,避免模糊表述
|
||||
- 避免使用情感化或主观评价性语言
|
||||
|
||||
### 5.2 结构化写作
|
||||
|
||||
好的,这是您提供内容的Markdown表格格式:
|
||||
|
||||
| 类别 | 具体要求 |
|
||||
| :--- | :--- |
|
||||
| **段落组织** | <ul><li>每个段落聚焦于单一主题或观点</li>段落以主题句开始,随后展开论述<li>段落长度控制在3-7行之间<li>使用过渡词连接段落,保持流畅性<ul> |
|
||||
| **章节划分** | <ul><li>使用有意义的标题,反映章节内容<li>标题层级清晰,逻辑递进</li\>\<li>保持相似层级章节结构的一致性</li>章节长度适中,避免过长章节<ul> |
|
||||
| **内容流程** | <ul>遵循逻辑流程,如时间顺序、因果关系、一般到特殊等<li>重要信息优先展示<li>使用小结总结复杂章节的要点<li>确保不同部分之间的连贯性<ul> |
|
||||
|
||||
### 5.3 视觉化沟通
|
||||
|
||||
1. **展示而非描述**
|
||||
|
||||
**"Show, don’t tell"**是本社区文档的核心原则之一。应优先使用视觉元素来传达信息。
|
||||
|
||||
- 对于多维度信息,使用表格呈现
|
||||
- 对于流程或关系,使用流程图或关系图
|
||||
- 对于数据趋势,使用图表
|
||||
- 对于用户界面,使用截图或GIF动图
|
||||
|
||||
2. **视觉元素规范**
|
||||
|
||||
- 所有视觉元素都应有编号和标题
|
||||
- 在正文中引用视觉元素(如"如图1所示")
|
||||
- 提供足够的上下文,确保视觉元素可独立理解
|
||||
- 确保视觉元素与文本内容紧密相关
|
||||
|
||||
3. **命令行展示**
|
||||
|
||||
对于命令行操作,使用代码块并添加注释:
|
||||
|
||||
~~~
|
||||
# 安装依赖包
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 运行分析脚本
|
||||
python analyze.py --input data.csv --output results.json
|
||||
~~~
|
||||
|
||||
### 5.4 可访问性考虑
|
||||
|
||||
好的,这是您提供内容的Markdown表格格式:
|
||||
|
||||
| 类别 | 具体要求 |
|
||||
| :--- | :--- |
|
||||
| **文本可访问性** | <ul><li>使用清晰、简洁的语言,避免过长的句子<li>确保文本与背景有足够的对比度<li>避免使用难以阅读的花式字体</li>用足够大的字体大小,便于阅读<ul> |
|
||||
| **色彩使用** | <ul><li>避免仅通过颜色传达信息,应同时使用形状、标签或模式</li>使用色盲友好的配色方案(推荐使用ColorBrewer)</li><li>确保图表中的所有元素都具有足够的对比度</li>提供可选的高对比度主题<ul> |
|
||||
| **屏幕阅读器支持** | <ul><li>使用适当的Markdown语法,确保结构清晰</li>为图片和图表提供详细的替代文本<li>表格使用标准格式,包含表头,便于屏幕阅读器解析<li>避免使用纯图片展示文本内容</li>为链接提供有意义的描述,避免使用"点击这里"等不明确表述<ul> |
|
||||
| **多设备适配** | <ul><li>确保文档在不同尺寸的设备上都能正常显示<li>避免使用过宽的表格或代码块<li>考虑移动设备用户的阅读体验<li>提供打印友好的版本<ul> |
|
||||
|
||||
## 6. AI辅助写作
|
||||
|
||||
### 6.1 AI工具使用指南
|
||||
|
||||
AI工具可以显著提高文档创作效率,但应当谨慎使用并确保内容质量。
|
||||
|
||||
推荐的AI辅助场景:
|
||||
|
||||
- 草稿生成和构思发散
|
||||
- 文本润色和语法检查
|
||||
- 内容摘要和关键点提取
|
||||
- 格式转换和规范化
|
||||
- 专业术语解释和简化
|
||||
|
||||
使用建议:
|
||||
|
||||
- 将AI视为协作工具,而非完全替代人工创作
|
||||
- 始终审核AI生成的内容,确保准确性和相关性
|
||||
- 提供具体、详细的提示(prompt),获取更精准的结果
|
||||
- 保持文档风格一致,避免AI生成部分与人工部分风格差异明显
|
||||
|
||||
### 6.2 提示词(Prompt)模板库
|
||||
|
||||
以下是常用的AI辅助写作prompt模板,可用于常见文档创作任务:
|
||||
|
||||
1. **文档结构生成**
|
||||
|
||||
~~~
|
||||
请为一篇关于[主题]的研究文档创建详细的结构大纲,包括以下部分:
|
||||
1. 引言(背景、目的、研究问题)
|
||||
2. 文献综述
|
||||
3. 研究方法
|
||||
4. 数据分析
|
||||
5. 研究结果
|
||||
6. 讨论
|
||||
7. 结论
|
||||
~~~
|
||||
|
||||
2. **内容润色与格式化**
|
||||
|
||||
~~~
|
||||
请帮我润色以下文本,使其更加清晰、简洁,并符合学术写作风格。同时,请将内容格式化为Markdown格式,使用适当的标题层级、列表和强调。
|
||||
|
||||
[粘贴需要润色的文本]
|
||||
~~~
|
||||
|
||||
3. **术语解释生成**
|
||||
|
||||
~~~
|
||||
请为以下专业术语创建简明的解释,适合在文档中首次提及时使用。每个解释不超过30字:
|
||||
|
||||
1. [术语1]
|
||||
2. [术语2]
|
||||
3. [术语3]
|
||||
~~~
|
||||
|
||||
### 6.3 AI辅助的最佳实践
|
||||
|
||||
1. **提示工程技巧**
|
||||
|
||||
- 使用明确、具体的指令
|
||||
- 提供上下文和目标受众信息
|
||||
- 指定输出格式(如Markdown)
|
||||
- 分步骤提问,逐步完善内容
|
||||
- 要求AI提供多个备选方案
|
||||
|
||||
2. **审核与质量控制**
|
||||
|
||||
- 核实AI生成的事实和数据
|
||||
- 检查逻辑连贯性和论证有效性
|
||||
- 确保内容与主题相关,不偏离焦点
|
||||
- 维持一致的术语使用和写作风格
|
||||
- 检查AI是否理解了特定领域的专业知识
|
||||
|
||||
3. **透明度和诚信**
|
||||
|
||||
- 在适当情况下注明内容由AI辅助生成
|
||||
- 不使用AI生成虚假研究结果或数据
|
||||
- 保持人类的创造性思维和批判性思考
|
||||
- 遵循相关伦理准则和最佳实践
|
||||
|
||||
## 7. Git工作规范
|
||||
|
||||
### 7.1 分支管理规范
|
||||
|
||||
Gitconomy Research社区采用基于功能分支的Git工作流程,确保代码和文档的高质量和可追踪性。
|
||||
|
||||
1. **分支命名规范**
|
||||
|
||||
- `主分支`:main或master,保持稳定可用状态
|
||||
- `开发分支`:develop,集成已完成但未发布的功能
|
||||
- `功能分支`:feature/简短描述,用于开发新功能或文档
|
||||
- `修复分支`:fix/简短描述,用于修复错误
|
||||
- `文档分支`:docs/简短描述,专门用于文档更新
|
||||
- `发布分支`:release/版本号,准备发布的版本
|
||||
- `热修复分支`:hotfix/简短描述,用于紧急修复生产环境问题
|
||||
|
||||
2. **分支工作流程**
|
||||
|
||||
~~~
|
||||
1. 从最新的main或develop分支创建功能分支
|
||||
2. 在功能分支上进行开发和提交
|
||||
3. 定期将主分支合并到功能分支,保持同步
|
||||
4. 完成后,创建Pull Request请求合并
|
||||
5. 通过代码审核后,合并到主分支
|
||||
6. 合并后删除功能分支
|
||||
~~~
|
||||
|
||||
### 7.2 提交(Commit)信息规范
|
||||
|
||||
1. **提交信息**
|
||||
|
||||
提交信息应遵循以下格式:
|
||||
|
||||
- 类型(范围): 简短描述
|
||||
- 详细描述(可选)
|
||||
- 相关问题(可选)
|
||||
|
||||
类型包括:
|
||||
|
||||
- `docs`:文档更新
|
||||
- `feat`:新功能
|
||||
- `fix`:错误修复
|
||||
- `refactor`::代码重构(不改变功能)
|
||||
- `style`:格式调整(不影响代码功能)
|
||||
- `test`:测试相关
|
||||
- `chore`:构建过程或辅助工具的变动
|
||||
|
||||
范围(可选)
|
||||
|
||||
指明本次提交影响的范围,如:
|
||||
|
||||
- `core`:核心模块
|
||||
- `ui`:用户界面
|
||||
- `api`:API接口
|
||||
- `intro`:介绍文档
|
||||
- `all`:全局变更
|
||||
|
||||
描述
|
||||
|
||||
- 使用命令式语气(如"添加功能"而非"添加了功能")
|
||||
- 简洁明了(不超过50个字符)
|
||||
-不以句号结尾
|
||||
|
||||
*示例:*
|
||||
|
||||
~~~
|
||||
docs(readme): 更新安装说明
|
||||
|
||||
- 添加Windows系统安装步骤
|
||||
- 更新依赖库版本要求
|
||||
- 修复格式错误
|
||||
|
||||
Closes #123
|
||||
~~~
|
||||
|
||||
2. **Pull Request格式规范**
|
||||
|
||||
提交Pull Request应遵循以下格式:
|
||||
|
||||
- 标题: 清晰描述PR目的,如 [Docs] Add Eclipse Attack Research。
|
||||
- 描述:
|
||||
- 简要说明本次提交的内容和目的。
|
||||
- 关联相关 Issue(如有),例如 Closes #123。
|
||||
- 勾选检查项(见下文PR模板)。
|
||||
|
||||
Pull Request模板:
|
||||
|
||||
~~~
|
||||
## 变更类型
|
||||
<!-- 请勾选一项 -->
|
||||
- [ ] 新研究论文/报告
|
||||
- [ ] 新教程/指南
|
||||
- [ ] 文档内容修正/更新
|
||||
- [ ] 文档结构优化
|
||||
- [ ] 其他(请注明)________________
|
||||
|
||||
## 描述
|
||||
<!-- 详细描述本次提交的目的和主要内容。 -->
|
||||
|
||||
## 相关 Issue
|
||||
<!-- 关联本次PR旨在解决的Issue,例如 Closes #123 -->
|
||||
Closes #
|
||||
|
||||
## 检查清单 (Checklist)
|
||||
<!-- 请在提交前确保完成以下事项 -->
|
||||
- [ ] 我已阅读并同意遵守《文档贡献指南》。
|
||||
- [ ] 我对文档进行了拼写和语法检查。
|
||||
- [ ] 我使用了建议的文件命名规则和目录结构。
|
||||
- [ ] 我的文档结构清晰,包含了摘要、正文和参考文献等必要部分。
|
||||
- [ ] 我引用了所有参考的资料和来源。
|
||||
~~~
|
||||
|
||||
审核过程:
|
||||
|
||||
1. 提交PR:贡献者创建PR并填写模板
|
||||
2. 自动化检查:运行文档格式和链接检查
|
||||
3. 同行评审:至少一名维护者进行代码审核
|
||||
4. 反馈修改:根据审核意见进行修改
|
||||
5. 批准合并:符合要求后由维护者批准并合并
|
||||
|
||||
### 7.3 代码审核标准
|
||||
|
||||
1. **文档审核要点**
|
||||
|
||||
- `准确性`:内容是否准确、最新
|
||||
- `完整性`:是否包含所有必要信息
|
||||
- `结构`:组织是否清晰、逻辑
|
||||
- `风格`:是否符合写作风格指南
|
||||
- `格式`:是否遵循Markdown规范
|
||||
- `可读性`:是否易于理解和阅读
|
||||
- `一致性`:是否与现有文档保持一致
|
||||
|
||||
2. 技术内容审核
|
||||
|
||||
- `代码示例`:是否正确、最佳实践、可运行
|
||||
- `技术描述`:是否准确、清晰
|
||||
- `安全性`:是否包含敏感信息
|
||||
- `性能`:建议的做法是否高效
|
||||
|
||||
3. **审核反馈指南**
|
||||
|
||||
- 提供具体、建设性的反馈
|
||||
- 区分必须修改的问题和建议性改进
|
||||
- 指出问题的同时提供解决方案
|
||||
- 保持礼貌和尊重,关注内容而非人
|
||||
|
||||
## 8. 工具与资源
|
||||
|
||||
### 8.1 推荐工具
|
||||
|
||||
作为一个开放研究社区,Gitconomy Research鼓励使用开源工具进行文档创作和研究工作。开源工具通常具有以下优势:
|
||||
|
||||
- **透明性**:源代码公开,工作原理可查验,符合开放研究的透明性原则
|
||||
- **可持续性**:不依赖单一商业实体,降低工具突然停止支持的风险
|
||||
- **可定制性**:可根据特定需求进行修改和扩展
|
||||
- **知识共享**:促进社区协作和知识累积
|
||||
- **可访问性**:通常免费使用,降低参与门槛
|
||||
- **格式开放**:减少数据锁定,提高长期可访问性
|
||||
|
||||
我们建议优先考虑开源替代方案,特别是在核心工作流程中。然而,我们也理解在某些情况下,专有工具可能提供必要的功能或便利性。因此,本指南中的工具推荐包含了开源和专有选项,最终选择应基于个人需求、工作流程和具体情况。无论选择何种工具,我们鼓励将数据保存为开放格式(如Markdown、CSV、JSON等),确保内容的长期可访问性和可迁移性。
|
||||
|
||||
1. **Markdown编辑器**
|
||||
|
||||
- [Joplin](https://joplinapp.org/):开源笔记和待办事项应用,支持Markdown、加密和同步
|
||||
- [Obsidian](https://obsidian.md/):知识管理与Markdown编辑
|
||||
- [Zettlr](https://www.zettlr.com/):开源的学术写作Markdown编辑器
|
||||
- [Jupyter Lab](https://jupyter.org/):交互式开发环境,支持Markdown单元格与代码混合编辑,特别适合数据科学和计算研究文档
|
||||
- [VS Code](https://code.visualstudio.com/)(配合Markdown All in One插件)
|
||||
|
||||
2. **图表与图形工具**
|
||||
|
||||
- [Mermaid](https://mermaid.js.org/):通过代码创建图表
|
||||
- [Draw.io](https://app.diagrams.net/):免费的图表绘制工具
|
||||
- [Excalidraw](https://excalidraw.com/):手绘风格图表工具
|
||||
- [Canva](https://www.canva.com/):设计与图形创作平台
|
||||
- [Inkscape](https://inkscape.org/):开源矢量图形编辑器
|
||||
- [GIMP](https://www.gimp.org/):开源图像编辑软件
|
||||
|
||||
3. **质量检查工具**
|
||||
|
||||
- [Grammarly](https://www.grammarly.com/):语法和拼写检查
|
||||
- [Hemingway Editor](https://hemingwayapp.com/):可读性分析
|
||||
- [markdownlint](https://github.com/DavidAnson/markdownlint):Markdown格式检查
|
||||
- [Vale](https://vale.sh/):可定制的文档风格检查
|
||||
|
||||
4. **协作与版本控制**
|
||||
|
||||
- [GitHub](https://github.com/)/[GitCode](https://gitcode.com):代码和文档托管平台
|
||||
- [Figma](https://www.figma.com/):协作设计平台
|
||||
- [Zotero](https://www.zotero.org/):引用和参考文献管理
|
||||
|
||||
### 8.2 模板库
|
||||
|
||||
Gitconomy提供以下文档模板,便于创建标准化内容:
|
||||
|
||||
1. 研究文档模板
|
||||
2. 教育文档模板
|
||||
3. 社区文档模板
|
||||
|
||||
(陆续更新中)
|
||||
|
||||
## 9. 文档规范指南总结
|
||||
|
||||
遵循此指南将有助于:
|
||||
|
||||
- **提高协作效率**: 统一的格式和结构让其他成员更容易阅读、理解和维护文档。
|
||||
- **保证内容质量**: 通过规范化的流程,确保提交的文档清晰、准确、有价值。
|
||||
- **维持仓库整洁**: 良好的文件组织方式使仓库结构清晰,便于导航和管理。
|
||||
- **展现社区专业性**: 统一的规范体现了社区的严谨性和专业性,吸引更多优秀的贡献者。
|
||||
|
||||
最后,感谢你花时间阅读本指南并为Gitconomy Research社区做出贡献!你的每一份努力都帮助我们共同构建一个更强大、更专业的开源研究社区。
|
||||
|
||||
## 10. 附录: 术语表
|
||||
|
||||
以下是Gitconomy Research社区常用术语的标准定义:
|
||||
|
||||
|术语|定义|
|
||||
|:---|:---|
|
||||
|开放研究|强调研究过程和结果公开透明,允许他人访问、验证和构建的研究方法。|
|
||||
|可复现性|使用相同的数据和方法能够获得相同或类似结果的特性。|
|
||||
|数据溯源|记录和追踪数据来源、处理步骤和转换过程的完整历史。|
|
||||
|同行评审|由同领域专家对研究成果进行严格评估的过程。|
|
||||
|版本控制|跟踪和管理文件变更的系统,允许回溯历史版本。|
|
||||
|知识共享|主动分享研究发现、方法和数据,促进科学进步的实践。|
|
||||
|混合文档模型|结合软件开发的敏捷文档和学术研究的严谨性的文档方法。|
|
||||
|乐高原则|将文档拆分为最小可复用单元,便于组合和重用的方法。|
|
||||
|元数据|描述数据的数据,如创建时间、作者、版本等。|
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
# Gitconomy社区贡献指南
|
||||
|
||||
欢迎您有兴趣为Gitconomy Research社区做出贡献!我们是一个致力于开源生态理论以及人工智能领域相关的开放研究社区。您的每一次贡献,无论是代码、数据、文档还是研究思路,都对我们至关重要。
|
||||
|
||||
本贡献指南旨在为您提供清晰的指引,帮助您更轻松地参与到社区项目中。请仔细阅读并遵循本指南,以确保您的贡献能够顺利地被接纳。
|
||||
|
||||
## 1. 社区行为准则
|
||||
|
||||
为了维护一个健康、友好、互相尊重的社区环境,我们希望所有参与者都能遵守我们的 [社区行为准则](./../../CODE_OF_CONDUCT.md)。在参与贡献之前,请您务必阅读并同意该准则。
|
||||
|
||||
## 2. 如何做出贡献
|
||||
|
||||
我们欢迎多种形式的贡献,包括但不限于:
|
||||
|
||||
* **报告问题**:如果您在使用我们的项目时遇到问题、发现 Bug 或有功能建议,请通过提交[Issue](./https://gitcode.com/Gitconomy-Research/Git4Research/issues)的方式告知我们。
|
||||
* **贡献代码**:您可以帮助我们修复Bug、添加新功能或优化现有代码。
|
||||
* **完善文档**:清晰的文档对于任何项目都至关重要。您可以帮助我们改进文档的清晰度、准确性和完整性。
|
||||
* **分享研究**:如果您有相关的研究成果、数据集或分析,我们非常欢迎您与社区分享。
|
||||
* **参与讨论**:您可以积极参与社区的讨论,为其他成员答疑解惑,或对社区的发展提出您的见解。
|
||||
|
||||
## 3. 参与代码和文档贡献流程
|
||||
|
||||
### 3.1 报告问题 (Issues)
|
||||
|
||||
在提交之前,请先搜索现有的Issues,以确保您的问题尚未被提出。
|
||||
|
||||
提交Issue时,请您:
|
||||
|
||||
* 使用清晰、简洁的标题来概括问题。
|
||||
* 在正文中详细描述问题,并提供以下信息:
|
||||
* **问题描述**:清晰地描述您遇到的问题。
|
||||
* **复现步骤**:提供可复现该问题的详细步骤。
|
||||
* **预期行为**:描述您期望发生的结果。
|
||||
* **实际行为**:描述实际发生的结果。
|
||||
* **运行环境**:提供您的操作系统、软件版本等相关环境信息。
|
||||
* 如果您有任何关于问题解决方案的建议,也请一并提出。
|
||||
|
||||
### 3.2 贡献代码 (Pull Requests)
|
||||
|
||||
我们非常欢迎您通过Pull Request(PR)的方式为项目贡献代码。
|
||||
|
||||
**1. Fork 仓库**
|
||||
|
||||
首先,您需要Fork本仓库到您自己的账户下。
|
||||
|
||||
**2. 克隆您的Fork**
|
||||
|
||||
将您Fork的仓库克隆到本地:
|
||||
|
||||
```bash
|
||||
git clone https://gitcode.com/Gitconomy-Research/Git4Research.git
|
||||
```
|
||||
|
||||
**3. 创建新的分支**
|
||||
|
||||
在开始您的工作之前,请从 `main` 分支创建一个新的特性分支:
|
||||
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
或者,如果您是修复一个 Bug:
|
||||
|
||||
```bash
|
||||
git checkout -b fix/issue-number
|
||||
```
|
||||
|
||||
请为您的分支选择一个有意义的名称。
|
||||
|
||||
**4. 编写代码**
|
||||
|
||||
* **代码风格**:请遵循项目现有的代码风格。
|
||||
* **提交信息**:您的每一次提交都应该有一个清晰、简洁的提交信息。我们建议遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范。
|
||||
* 例如:`feat: Add new feature for data analysis` 或 `fix: Correct calculation error in XYZ module`
|
||||
* **测试**:如果您的代码改动需要测试,请确保添加了相应的单元测试或集成测试,并通过所有现有的测试。
|
||||
|
||||
**5. 保持分支同步**
|
||||
|
||||
在您准备提交PR之前,请确保您的分支与上游的`main`分支保持同步:
|
||||
|
||||
```bash
|
||||
git remote add upstream https://gitcode.com/Gitconomy-Research/Git4Research.git
|
||||
git fetch upstream
|
||||
git rebase upstream/main
|
||||
```
|
||||
|
||||
**6. 提交 Pull Request**
|
||||
|
||||
将您的本地分支推送到您的Fork仓库:
|
||||
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
```
|
||||
|
||||
然后,在GitCode上向`Gitconomy-Research/Git4Research`的`main`分支发起一个Pull Request。
|
||||
|
||||
在您的PR描述中,请:
|
||||
|
||||
* 清晰地描述您所做的改动。
|
||||
* 关联相关的 Issue (例如:`Closes #123`)。
|
||||
* 提供任何有助于我们审查您代码的额外信息。
|
||||
|
||||
**7. 代码审查**
|
||||
|
||||
一旦您提交了PR,社区的核心成员会尽快对您的代码进行审查。我们可能会提出一些修改建议,请您关注您的PR并及时回复。
|
||||
|
||||
在审查通过后,我们会将您的代码合并到主分支中。
|
||||
|
||||
### 3.3 文档贡献
|
||||
|
||||
文档是项目的一部分,因此我们同样欢迎您贡献文档:
|
||||
|
||||
- **文档内容**:如果您发现文档中有错误或缺失,或有更好的方式可以描述内容,请提交修改。
|
||||
- **语言要求**:提交文档时,请确保语言简洁明了,尽量避免使用行话和复杂术语。
|
||||
|
||||
文档贡献指南请参考:[社区文档格式规范指南](./Gitconomy社区文档格式规范指南.md)
|
||||
|
||||
## 4. 参与社区讨论过程
|
||||
|
||||
在社区中,讨论是推动项目进展和创新的重要方式。我们鼓励每位开发者积极参与讨论,不仅可以帮助解决技术问题,还能为平台的改进提供宝贵的意见和建议。
|
||||
|
||||
以下是关于如何参与社区讨论的说明,包括参与Issue和Discussion的最佳实践:
|
||||
|
||||
### 4.1 参与Issue
|
||||
|
||||
* **查看现有的 Issue**:在提交新Issue之前,请先查看是否已经有人提出类似的问题或功能需求。这样可以避免重复工作,并有可能找到现有问题的解决方案。
|
||||
* **提交 Issue**:如果您发现一个新问题,或者有新的功能请求,可以创建一个新的issue。在提交时,请尽量提供详细的信息:
|
||||
|
||||
* 描述问题或需求。
|
||||
* 提供复现步骤、错误信息或屏幕截图(如果适用)。
|
||||
* 指明您使用的平台和版本号。
|
||||
* **标签使用**:合理使用标签,帮助团队快速了解问题的类型,例如 `bug`、`feature request`、`question` 等。
|
||||
* **参与讨论**:在Issue中,您可以与其他开发者和维护者互动,帮助分析和解决问题。如果您有更多的细节或见解,欢迎随时补充。
|
||||
|
||||
### 4.2 参与Discussion
|
||||
|
||||
* **加入讨论**:在GitCode的Discussion页面中,您可以参与有关项目、技术选型、平台改进等方面的讨论。这些讨论是非正式的,旨在收集社区成员的意见和建议。
|
||||
* **发起讨论**:如果您有一个有趣的想法、问题或者技术挑战,您可以发起一个新的讨论。确保讨论主题明确,并为其他人提供足够的上下文信息,以便他们可以有效地参与。
|
||||
* **分享经验与资源**:我们鼓励您分享自己在使用平台过程中的经验、工具、最佳实践等,帮助其他开发者更好地理解和使用平台。
|
||||
* **保持礼貌和尊重**:无论是在Issue还是 Discussion中,请始终保持礼貌和尊重他人。我们提倡建设性和包容性的交流氛围。
|
||||
|
||||
### 4.3 讨论指南
|
||||
|
||||
* **清晰简洁**:在讨论中,表达观点时尽量简洁明了,避免过于复杂的术语,确保所有参与者都能理解您的观点。
|
||||
* **提供上下文**:如果您在讨论中提到某些技术细节或工具,尽量提供上下文或引用相关文档链接,以帮助其他人理解您的论点。
|
||||
* **尊重他人意见**:不同的人可能有不同的意见和建议,请尊重每个人的观点,积极倾听并寻求共识。
|
||||
|
||||
### 4.4 社区互动的益处
|
||||
|
||||
* **促进学习**:参与社区讨论可以帮助您快速了解项目的最新动态和开发进展,并通过与他人交流提升技术水平。
|
||||
* **推动改进**:您的意见和建议将直接影响项目的未来发展。通过参与讨论,您可以帮助我们识别潜在问题并推动项目的持续优化。
|
||||
* **建立联系**:社区讨论为您提供了一个与其他开发者互动的机会,您可以通过讨论建立联系并扩大您的技术网络。
|
||||
|
||||
通过参与Issue和Discussion,您不仅可以帮助改进 Gitconomy Research项目,还能与全球的开发者共同推动开源项目的持续发展。我们鼓励每位社区成员都能积极参与,贡献自己的想法和技术,助力社区的共同成长!
|
||||
|
||||
---
|
||||
|
||||
## 5. 社区运营与成员参与
|
||||
|
||||
在Gitconomy社区,每一位成员的贡献不仅仅体现在技术开发上,活动组织、社区推广以及合作伙伴拓展等运营工作同样是社区发展的核心组成部分。通过积极参与社区运营,成员们不仅能推动技术创新,还能共同建设一个开放、创新、充满活力的前沿技术社区。
|
||||
|
||||
### 5.1 成员参与与运营
|
||||
|
||||
在Gitconomy社区,所有成员都可以参与到社区的日常运营中,贡献不仅限于代码和文档,还包括以下方面:
|
||||
|
||||
* **活动组织**:参与社区内外的技术研讨会、黑客松、工作坊等活动的策划与执行,帮助社区成员共同探索前沿技术,促进技术交流。
|
||||
* **社区推广**:帮助提升社区的知名度,推广Gitconomy的理念和项目,吸引更多的开发者和研究人员加入,扩大社区影响力。
|
||||
* **合作伙伴拓展**:与高校、科研机构、企业和其他开源社区建立合作关系,共同推动开源技术的普及与发展,寻找合作机会以促进项目的长远发展。
|
||||
|
||||
### 5.2 社区活动与合作
|
||||
|
||||
1. **技术研讨会与工作坊**:定期组织线上或线下的技术分享和实践工作坊,提升成员的技术能力和团队合作水平。
|
||||
2. **社区合作伙伴**:我们鼓励成员与其他开源社区、高校、研究机构和企业建立合作关系,共同推动AI、开源技术等领域的合作与创新。
|
||||
|
||||
我们将继续推动社区的持续发展,未来重点关注以下领域:
|
||||
|
||||
* **跨社区合作**:与更多前沿技术社区和学术机构合作,共同开展创新项目,推动AI和开源技术的深度融合。
|
||||
* **成员赋能**:为成员提供更多的学习机会、技术支持和职业发展路径,帮助他们在社区中获得更多成长和成就感。
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
感谢您阅读并了解Gitconomy社区贡献指南!您的每一份贡献,无论是代码、文档、活动组织还是社区推广,都是推动我们共同前进的动力。我们欢迎您积极参与,帮助改善和扩展社区的各个方面。通过贡献技术、分享研究、参与讨论、推动活动和拓展合作伙伴,您不仅能推动前沿研究的进展,还能与全球的开发者和研究人员共同建设一个更加开放和创新的技术社区。
|
||||
|
||||
我们相信,社区的成功不仅取决于技术的突破,还需要每位成员的共同努力。无论您的贡献是什么,每一份参与都在帮助Gitconomy社区成长。让我们携手并肩,推动技术和知识的共享,共同迎接未来的挑战与机遇。
|
||||
|
||||
---
|
||||
|
||||
|
||||
🎉 感谢您为Gitconomy Research社区所做的贡献! 🎉
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
# Gitconomy社区月度运营报告 (2025年10月)
|
||||
|
||||
## 一、社区概述
|
||||
|
||||
亲爱的Gitconomy Research社区成员:
|
||||
|
||||
很高兴与大家分享我们社区正式运营的第一份月度报告。2025年10月,Gitconomy Research正式启航,在这个探索性的月份里,我们共同迈出了共同创造和维护这个社区“数字公共资源”的第一步。Gitconomy不仅以开源为核心价值,更注重成员间的协作与共同成长。在这个探索的阶段,社区的每一位成员都是其成长的关键力量。本报告旨在回顾10月社区的活动、数据与成就,展现Gitconomy在早期阶段的活跃度与成长,并展望未来发展。
|
||||
|
||||
---
|
||||
|
||||
## 二、社区数据概览
|
||||
|
||||
**主要仓库活动**
|
||||
|
||||
* **仓库地址:** [Git4Research](https://www.google.com/search?q=https://gitcode.com/Gitconomy-Research/Git4Research)
|
||||
|
||||
|指标|数据记录|数据洞察|
|
||||
|:---|:---:|:---|
|
||||
|代码贡献|561次|10月份共计有561次代码提交,7人持续贡献|
|
||||
|star|42|社区理念初步获得认可|
|
||||
|fork|9|开发者协作意愿初步建立|
|
||||
|活跃贡献者|10+|首月共有10+贡献者参与内容创建与讨论|
|
||||
|Issues总数|16|成功创建并讨论16个issues,涉及社区治理、研究方向和活动规划|
|
||||
|讨论参与|25+|社区讨论区已有13个主题讨论,吸引了30+条回复|
|
||||
|项目访问量|2,392次|高频访问集中于文档模块(占62%),知识共享需求显著|
|
||||
|
||||
综合来看,社区在启动初期其核心价值主张体现为“知识驱动”和“教育聚焦”,大量访问集中于文档模块,且大部分议题围绕课程建设,证明了社区在知识共享和开放教育方面的有一定的吸引力。社区的活跃度目前由一个规模较小但持续投入的核心团队驱动,这同时也揭示了贡献者集中度较高的现状,构成了初期发展的人才依赖风险。综上,社区在10月成功地以知识内容吸引了广泛关注,下一阶段的关键挑战在于如何将大量的“内容消费者”有效转化为更多元的“价值共建者”,以确保社区的长期健康发展。
|
||||
|
||||
## 三、本月重要事件
|
||||
|
||||
**1. 线上社区会议**
|
||||
|
||||
我们在10月份成功举办了三次线上社区会议,完成了社区的冷启动和初步规划:
|
||||
|
||||
* **[第一次社区线上会议 (Issue \#1)](https://gitcode.com/Gitconomy-Research/Git4Steering/issues/1):** 确立了社区的使命、愿景与核心支柱。
|
||||
* **[第二次社区线上会议 (Issue \#3)](https://gitcode.com/Gitconomy-Research/Git4Steering/issues/3):** 围绕核心议题展开深度探讨,并确立了“从讨论到议题”的核心工作模式。
|
||||
* **[第三次社区线上会议 (Issue \#6)](https://gitcode.com/Gitconomy-Research/Git4Steering/issues/6):** 明确了11月的工作目标并完成了任务分解。
|
||||
|
||||
**2. 重要议题讨论**
|
||||
|
||||
本月,社区围绕发展方向与治理结构展开了关键讨论,并沉淀为可追踪的Issue:
|
||||
|
||||
* **[核心研究议题确立](https://gitcode.com/Gitconomy-Research/Git4Steering/issues/3):** 通过会议讨论,确立了“开源贡献价值量化”等首批核心研究议题。
|
||||
* **[社区初始成员招募(discussions /2)](https://gitcode.com/Gitconomy-Research/Git4Research/discussions/2):** 发布了成员招募与角色定义计划,为社区的结构化发展奠定了基础。
|
||||
|
||||
**3. 参与行业会议与观点分享**
|
||||
|
||||
10月21日,社区代表参加了“开放原子紫金开源专区开源大会”的圆桌分享,并在会上分享了社区的核心观点:“人工智能正深刻改变开源的内涵。开源贡献的范畴已从单一的代码扩展至数据、算法模型与算力等多元要素。未来的开源基础设施需要支撑更复杂的协作模式,实现人与智能体的高效融合,推动社区从代码共享平台升级为知识与智力的协同创造中心。”
|
||||
|
||||
**4. 开放教育项目启动**
|
||||
|
||||
我们正式启动了[《开源导论与数字素养》](https://gitcode.com/Gitconomy-Research/Git4Research/blob/main/open-education/open-source-courses/01-%E5%BC%80%E6%BA%90%E9%80%9A%E8%AF%86/%E5%BC%80%E6%BA%90%E5%AF%BC%E8%AE%BA%E4%B8%8E%E6%95%B0%E5%AD%97%E7%B4%A0%E5%85%BB/README.md)课程的交付工作,计划提供总共32个学时的教学内容。
|
||||
|
||||
**5. 文化活动与AIGC实践**
|
||||
|
||||
为庆祝中秋节和1024程序员节,社区通过AIGC技术生成了两张主题海报。
|
||||
|
||||
* **[节日海报展示与讨论 (Discussion \#4)](https://gitcode.com/Gitconomy-Research/Git4Research/discussions/4):** 这一尝试不仅丰富了社区文化生活,也是我们践行人机协作理念的具体实践。
|
||||
|
||||
**5. 开放研究成果分享**
|
||||
|
||||
发布了《生成者时代创造心法的一些思考——从Maker到Generator》文章。
|
||||
|
||||
* **[研究文章链接](https://gitcode.com/Gitconomy-Research/Git4Research/blob/main/developer-thinking/%E7%94%9F%E6%88%90%E8%80%85%E6%97%B6%E4%BB%A3%E5%88%9B%E9%80%A0%E5%BF%83%E6%B3%95%E7%9A%84%E4%B8%80%E4%BA%9B%E6%80%9D%E8%80%83.md):** 该文章探讨了生成式技术时代的创造思维转变,展现了社区在理论研究方面的初步成果。
|
||||
|
||||
**6. 社区正式对外亮相**
|
||||
|
||||
10月31日,在深圳市科技传播促进会的支持下,Gitconomy Research社区正式对外亮相。这一事件标志着社区进入了试运营阶段,是社区发展的一个重要里程碑。
|
||||
|
||||
## 四、成员贡献与亮点
|
||||
|
||||
* **活跃贡献者:** 感谢本月所有在代码、Issue、讨论区留下贡献的早期成员,你们的每一次参与都是社区前进的动力。特别感谢会议组织者和记录者,你们的工作是社区高效协作的基石。
|
||||
* **优秀内容分享:** 本月社区产出的《生成者时代创造心法》文章和AIGC节日海报,是社区在开放研究和人机协作方面的实践成果。
|
||||
|
||||
## 五、合作伙伴致谢
|
||||
|
||||
Gitconomy Research社区的启动和早期探索,离不开以下合作社区与企业伙伴的支持。我们在此表示诚挚的感谢(排名不分先后):
|
||||
|
||||
* **合作社区:**
|
||||
|
||||
* 深圳市科技传播促进会
|
||||
* HiFoss社区
|
||||
* 蜀鸿会
|
||||
* 通鸿会
|
||||
* Horizon Club
|
||||
* 开放原子紫金开源专区
|
||||
|
||||
* **企业伙伴:**
|
||||
|
||||
* 软通教育
|
||||
* 深圳嘉灵思
|
||||
* 深圳蛟龙腾飞
|
||||
* 深圳坪芯
|
||||
|
||||
## 六、下月计划与展望
|
||||
|
||||
* **社区治理:** 发布社区章程讨论稿
|
||||
* **教育项目:** 继续推进《开源导论与数字素养》课程的内容共建和交付。
|
||||
* **社区活动:** 组织第一次社区的读书会。
|
||||
* **企业走访:** 配合深圳市科技传播促进会企业走访计划,提供AI和开源方面的内容支持
|
||||
|
||||
## 七、社区反馈与改进
|
||||
|
||||
我们高度重视每一位社区成员的意见和建议。如有任何关于社区运营、活动组织或内容建设的想法,请通过以下方式与我们联系:
|
||||
|
||||
* 在 [Git4Steering](https://www.google.com/search?q=https://gitcode.com/Gitconomy-Research/Git4Steering) 仓库中创建新的 issue
|
||||
* 在社区讨论区发起话题
|
||||
* 参与下次社区线上会议
|
||||
|
||||
|
||||
## 结语
|
||||
|
||||
Gitconomy Research 社区处于起步阶段,感谢每一位早期支持者的参与、贡献以及所有合作伙伴的支持。你们是社区成长最宝贵的力量。让我们共同努力,探索生成式时代的无限可能!
|
||||
|
||||
[10月份社区运营信息图](https://gitcode.com/Gitconomy-Research/Git4Research/blob/main/docs/reports/community-reports/2025/community-report-oct-infographic.pdf)
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
# 新代码仓库提案:[在此填写您的项目名称]
|
||||
|
||||
---
|
||||
|
||||
## 1. 项目名称 (Repository Name)
|
||||
|
||||
**建议的仓库名称:** `(例如: Git4Ledger)`
|
||||
|
||||
*仓库名称前缀为Git4,后缀名称应简短且具有描述性和相关性。*
|
||||
|
||||
---
|
||||
|
||||
## 2. 项目负责人 (Initial Maintainers)
|
||||
|
||||
**初始维护者GitCode用户名:**
|
||||
- `@username-1`
|
||||
- `@username-2` (可选)
|
||||
|
||||
*请列出至少一位愿意长期负责此项目的初始维护者。*
|
||||
|
||||
---
|
||||
|
||||
## 3. 问题陈述 (Problem Statement)
|
||||
|
||||
**a. 我们要解决什么问题?**
|
||||
|
||||
*(请用几句话清晰地描述您想要解决的具体问题、挑战或需求。)*
|
||||
|
||||
**b. 为什么这个问题对Gitconomy社区很重要?**
|
||||
|
||||
*(请说明解决这个问题将为社区带来什么价值,例如:填补了某个技术空白、提升了社区协作效率、促进了开源经济学的研究等。)*
|
||||
|
||||
---
|
||||
|
||||
## 4. 项目目标与范围 (Goals & Scope)
|
||||
|
||||
**a. 项目的核心目标是什么?**
|
||||
|
||||
*(请列出这个项目希望达成的 1-3 个核心目标。)*
|
||||
- 目标一:
|
||||
- 目标二:
|
||||
- ...
|
||||
|
||||
**b. 项目的主要功能范围 (In-Scope):**
|
||||
|
||||
*(请具体描述这个项目计划包含哪些主要功能或交付物。)*
|
||||
- 功能/交付物 A
|
||||
- 功能/交付物 B
|
||||
- ...
|
||||
|
||||
**c. 项目的非目标范围 (Out-of-Scope):**
|
||||
|
||||
*(明确哪些功能或领域是本项目*不*包含的,这有助于界定项目边界,避免范围蔓延。)*
|
||||
- 例如:本项目不负责后端数据存储。
|
||||
- 例如:本项目不提供商业化支持。
|
||||
- ...
|
||||
|
||||
---
|
||||
|
||||
## 5. 与社区的关联性 (Relevance to Gitconomy)
|
||||
|
||||
**该项目如何与Gitconomy的核心使命(如开源经济、开放研究、协同治理、开放课程、价值创造等)相关联?**
|
||||
|
||||
*(请阐述您的项目如何体现或推动Gitconomy的社区愿景。)*
|
||||
|
||||
---
|
||||
|
||||
## 6. 技术栈初步构想 (Initial Tech Stack)
|
||||
|
||||
**计划使用的主要语言、框架或工具是什么?**
|
||||
|
||||
*(这只是一个初步构想,方便社区了解技术方向,后续可以调整。例如:Vue.js, Python, Java等。)*
|
||||
|
||||
---
|
||||
|
||||
## 7. 其他信息 (Optional)
|
||||
|
||||
**是否有任何相关的现有项目、研究论文或参考链接可以分享?**
|
||||
|
||||
*(这可以帮助社区成员更快地理解您提案的背景。)*
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
|
@ -0,0 +1,272 @@
|
|||
# 入门实操
|
||||
## GitCode 现有平台
|
||||
|
||||
1. 网站
|
||||
|
||||
https://gitcode.com/
|
||||
2. 手机APP
|
||||
|
||||
去应用商店下载
|
||||
3. 微信小程序
|
||||
|
||||
在微信搜索GitCode,找到小程序
|
||||
|
||||
## 登录GitCode账号
|
||||
登录GitCode官网
|
||||
|
||||
https://gitcode.com/
|
||||
|
||||
选择右上角的 登录 按钮,进行账号登录:
|
||||
|
||||

|
||||
|
||||
以短信登录为例
|
||||
|
||||

|
||||
|
||||
以第三方(比如微信)登录为例
|
||||
|
||||

|
||||
|
||||
以密码登录为例
|
||||
|
||||

|
||||
|
||||
|
||||
任选一种方式进行账号登录。
|
||||
## 绑定邮箱(重要)
|
||||
右上角 找到 我的头像,在下拉列表中选择个人设置,
|
||||
|
||||

|
||||
|
||||
进入到个人设置页,左侧导航栏选择账号管理-> 电子邮件,在这里实现邮箱的绑定。
|
||||
|
||||

|
||||
## 熟悉个人设置页
|
||||
|
||||
右上角 找到 我的头像,在下拉列表中选择个人设置,进入到个人设置页。
|
||||
|
||||
点击左侧导航栏,可以查看相对应的功能。
|
||||
|
||||
可以在 账号管理 -> 用户资料 -> 编辑个人信息,上传头像等···
|
||||
|
||||

|
||||
|
||||
也可也在 账号管理 ->账号设置 -> 更换手机号 修改密码等···
|
||||
|
||||

|
||||
|
||||
|
||||
## 查找组织仓库
|
||||
|
||||
方法一:(快速)
|
||||
|
||||
点击左上角的GitCode Logo,选择项目-> 找到组织项目GitResearch,如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
方法二:
|
||||
|
||||
页面左上角找到侧边栏图标,下拉选项中选择项目-> 找到组织项目GitResearch,如下图所示:
|
||||
|
||||

|
||||
|
||||
方法三:
|
||||
|
||||
登录后,进入GitCode主页,选择右上角我的头像,在下拉列表中选择‘我的组织’
|
||||
|
||||

|
||||
|
||||
就可以进入到‘我的组织’了,图中红框勾选的部分就是我的所有组织
|
||||
|
||||

|
||||
|
||||
选中‘Gitconomy Research’组织,进入组织内部界面
|
||||
|
||||

|
||||
|
||||
选择 项目 ,就可以查看所有仓库了。
|
||||
|
||||

|
||||
|
||||
选择 ‘Git4Resarch仓库’,这个是我们主要协作的仓库地址。
|
||||
|
||||

|
||||
|
||||
现在我们就可以成功看到仓库内部的所有信息了。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 新手小白仓库名字——Git4Beginner
|
||||
后续的操作,请在Git4Beginner仓库中进行。
|
||||
|
||||
## 介绍仓库的基础使用
|
||||
### 1. Watching+点赞Stars
|
||||
找到仓库的右边Watching-下拉列表选择‘全部通知’,以便后续能及时接到全部通知。
|
||||
|
||||
记得点赞Stars
|
||||
|
||||

|
||||
|
||||
### 2. 找到项目
|
||||
选择项目,可以查看到仓库内的所有项目。
|
||||
|
||||

|
||||
|
||||
进入到项目内部。如下图所示:
|
||||
|
||||

|
||||
|
||||
这里我选择Git4Research项目,进入后界面如下图所示:
|
||||
|
||||

|
||||
|
||||
|
||||
### 3. 讨论
|
||||
前提是要进入到项目里面,即必须要完成步骤二。
|
||||
|
||||
以‘2025年社区中秋节海报’讨论为例,点击进入,
|
||||
|
||||

|
||||
|
||||
就可以看到当前讨论的内容。
|
||||
|
||||

|
||||
|
||||
滑动到页面最底部,进行评论并发表。
|
||||
|
||||

|
||||
|
||||
|
||||
发表成功提醒‘已创建评论’,如图所示:
|
||||
|
||||

|
||||
|
||||
滑动到页面最底部,可以查看大家的评论,也可也在其他小伙伴的评论下进行回复。
|
||||
|
||||

|
||||
### 4. issue
|
||||
前提是要进入到项目里面,即必须要完成步骤二。
|
||||
|
||||
选择issue,进入到issue页面。
|
||||
|
||||

|
||||
|
||||
任选issue,这里以‘编写Git操作手册’为例,点击‘编写Git操作手册’进入,最下方有个回复输入框,可以进行回复。
|
||||
|
||||
|
||||

|
||||
|
||||
注意:目前GitCode评论和回复不能发表情包,但是可以发输入法带有的颜文字,比如输入哈哈,输入法这边会出现这个 😄 。
|
||||
|
||||
|
||||
### 5. 回到主页
|
||||
|
||||
点击左上角logo或者旁边的仓库名字,可以回到仓库主页。
|
||||
|
||||

|
||||
## Fork项目
|
||||
|
||||
找到仓库 右上角的 Fork按钮
|
||||
|
||||

|
||||
|
||||
进入到Fork步骤界面,按要求填写信息:
|
||||
|
||||
1. 项目名称:
|
||||
系统默认会使用和fork原始项目一致的名称,由于我进入的是Git4Research,所以这个地方显示Git4Research;
|
||||
|
||||
也可以自定义项目名称,举例:Git4ResearchTest
|
||||
|
||||
2. 项目路径:
|
||||
第一个路径系统自带生成,然后/后面的路径是个项目名称一致的。(这个是随着项目名称变化)
|
||||
|
||||
举例:xigelin/Git4ResearchTest
|
||||
|
||||
3. 项目介绍:
|
||||
|
||||
根据仓库内容填写介绍
|
||||
|
||||
4. 选择要Fork的分支: main
|
||||
|
||||
上述填写完成后,点击 ‘创建Fork项目’ 实现成功创建。
|
||||
|
||||
创建步骤如下图所示:
|
||||
|
||||

|
||||
|
||||
项目正在Fork中···
|
||||
|
||||

|
||||
|
||||
项目Fork完成
|
||||
|
||||

|
||||
|
||||
至此,我们完成了对组织-主仓库的拷贝,后续我们就可以在自己Fork的仓库里进行内容的增删改查了。
|
||||
|
||||
## 上传文件
|
||||
|
||||
以上传文件为例,
|
||||
找到 ‘+’号,进行新增操作,在弹出的下拉列表中,点击上传文件,具体位置参考如下图片:
|
||||
|
||||

|
||||
|
||||
在上传界面根据要求进行操作,点击中间的“+”打开文件存储位置,选择要上传的文件,也可直接通过拖拽的方式进行上传。
|
||||
|
||||
以上传test文件为例,操作图请参考下图:
|
||||
|
||||

|
||||
|
||||
以拖拽方式为例,
|
||||
|
||||

|
||||
|
||||
如test.txt文件上传成功后,会在页面进行显示。如下图所示:
|
||||
|
||||

|
||||
|
||||
其中,提交信息必须填写,要求填写内容有意义,简洁明确该文件上传的是什么。
|
||||
|
||||
最后,点击下方的黑色按钮-提交 即可。
|
||||
|
||||

|
||||
|
||||
如果没找到的话,选择右侧的Fork右边的下拉箭头图标,选择已存在的项目,进入到自己Fork仓库入口,
|
||||
|
||||

|
||||
|
||||
至此,可以查看到自己成功上传的文件了。
|
||||
|
||||

|
||||
|
||||
## 把自己的仓库代码推送到组织仓库
|
||||
|
||||
选择‘Pull Request’,点击右侧黑色按钮的‘+ 新建Pull Request’,进行新建PR操作。
|
||||
|
||||

|
||||
|
||||
左侧是自己的仓库名字(我在前面自定义的是Git4ResearchTest,与前面讲的 如何Fork项目?中的第一点项目名称是一致的)和分支(默认是main),
|
||||
|
||||
右侧是组织的仓库名字(Git4Research)和分支(默认是main)
|
||||
|
||||

|
||||
|
||||
点击下一步,继续操作。
|
||||
填写相关信息,
|
||||

|
||||
至此,PR成功,也就是我们把自己新上传的文件成功的推送到组织仓库了,接下来就是等组织仓库负责人进行审核了。
|
||||

|
||||
|
||||
## 同步代码
|
||||
|
||||
在仓库首页,找到同步源项目,点击左侧的刷新图标,即可实现代码同步。确保自己的代码进度和其他人以及main分支的一致。
|
||||
|
||||

|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用[知识共享署名--相同方式共享4.0国际许可协议(CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)进行许可,© 2025 Gitconomy Research社区
|
||||
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 295 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 424 KiB |
|
After Width: | Height: | Size: 407 KiB |
|
After Width: | Height: | Size: 218 KiB |
|
After Width: | Height: | Size: 290 KiB |
|
After Width: | Height: | Size: 417 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 991 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 405 KiB |
|
After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 337 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 523 KiB |
|
After Width: | Height: | Size: 286 KiB |
|
After Width: | Height: | Size: 342 KiB |
|
After Width: | Height: | Size: 334 KiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 137 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 802 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 219 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 390 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
|
@ -0,0 +1,491 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>《开源导论与数字素养》课程信息图</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700;900&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--bg: #f8fafc;
|
||||
--ink: #0f172a;
|
||||
--muted: #64748b;
|
||||
--card: #ffffff;
|
||||
--line: #e5e7eb;
|
||||
--brand: #004AAD;
|
||||
--brand2: #0062D5;
|
||||
--brand5: #CDE6FF;
|
||||
}
|
||||
body {
|
||||
font-family: 'Noto Sans SC', sans-serif;
|
||||
background-color: var(--bg);
|
||||
color: var(--ink);
|
||||
}
|
||||
.hero {
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 56px 16px 64px;
|
||||
}
|
||||
.hero h1 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 32px;
|
||||
line-height: 1.2;
|
||||
font-weight: 900;
|
||||
}
|
||||
@media (min-width:768px) {
|
||||
.hero h1 {
|
||||
font-size: 40px;
|
||||
}
|
||||
}
|
||||
.hero .lead {
|
||||
color: var(--brand5);
|
||||
font-size: 18px;
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.site-footer {
|
||||
background: var(--brand);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 18px 16px;
|
||||
margin-top: 24px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.chart-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
max-width: 600px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
height: 300px;
|
||||
max-height: 400px;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.chart-container {
|
||||
height: 350px;
|
||||
}
|
||||
}
|
||||
.flow-step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.flow-icon {
|
||||
flex-shrink: 0;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border-radius: 9999px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.flow-content {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
.flow-line {
|
||||
width: 2px;
|
||||
height: 2rem;
|
||||
margin-left: 1.45rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="text-[#0f172a]">
|
||||
|
||||
<header class="hero">
|
||||
<h1>开源导论与数字素养——课程战术手册</h1>
|
||||
<p class="lead">覆盖"设计→内容→实施→实践→评估"全教学生命周期的行动指导框架</p>
|
||||
</header>
|
||||
|
||||
<div class="container mx-auto p-4 md:p-8 max-w-6xl mt-8">
|
||||
|
||||
<section class="mb-16 bg-white rounded-lg shadow-md p-6">
|
||||
<h2 class="text-2xl font-bold text-center text-[var(--brand2)] mb-6">课程哲学:启蒙、引导与赋能</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 text-center">
|
||||
<div class="p-4">
|
||||
<div class="text-6xl mb-4">💡</div>
|
||||
<h3 class="text-xl font-semibold mb-2 text-[#FF6B6B]">启蒙</h3>
|
||||
<p class="text-sm text-[var(--muted)]">打开通往开源世界的大门,激发学生对开放、协作、共享精神的好奇心与认同感。</p>
|
||||
</div>
|
||||
<div class="p-4">
|
||||
<div class="text-6xl mb-4">🗺️</div>
|
||||
<h3 class="text-xl font-semibold mb-2 text-[#4D96FF]">引导</h3>
|
||||
<p class="text-sm text-[var(--muted)]">绘制清晰的“开源世界地图”,系统介绍理念、文化、生态及工具,并指明参与路径。</p>
|
||||
</div>
|
||||
<div class="p-4">
|
||||
<div class="text-6xl mb-4">🚀</div>
|
||||
<h3 class="text-xl font-semibold mb-2 text-[#6BCB77]">赋能</h3>
|
||||
<p class="text-sm text-[var(--muted)]">通过实践掌握基本技能,培养自主学习、团队协作和创新思维能力,为未来赋能。</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
---
|
||||
<section class="mb-16">
|
||||
<h2 class="text-2xl font-bold text-center text-[var(--brand2)] mb-6">四维整合学习目标</h2>
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||
<div class="bg-white rounded-lg shadow-md p-6 flex flex-col">
|
||||
<h3 class="text-xl font-semibold mb-3 text-[#FF6B6B]">知识与素养目标</h3>
|
||||
<p class="mb-4 text-sm text-[var(--muted)]">本课程旨在让学生系统地理解开源的定义、历史、许可证规则以及社区的运作模式。学生将能够识别全球及中国本土的主要开源生态系统,并初步掌握开源人工智能框架和新兴技术的基础知识。同时,课程致力于培养学生开放、协作、共享的开源精神和负责任的数字公民意识。</p>
|
||||
<div class="chart-container h-64 md:h-80 flex-grow">
|
||||
<canvas id="knowledgeChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg shadow-md p-6 flex flex-col">
|
||||
<h3 class="text-xl font-semibold mb-3 text-[#4D96FF]">能力与思政目标</h3>
|
||||
<p class="mb-4 text-sm text-[var(--muted)]">学生将熟练运用Git及主流协作平台,掌握查找、评估和参与开源项目的方法,并具备初步的贡献能力。课程将引导学生理解开源创新与国家发展战略的联系,增强其科技自信与社会责任感,培养国际视野和法治精神,激励他们为构建开放包容的技术生态贡献力量。</p>
|
||||
<div class="chart-container h-64 md:h-80 flex-grow">
|
||||
<canvas id="abilityChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-16 bg-white rounded-lg shadow-md p-8">
|
||||
<h2 class="text-2xl font-bold text-center text-[var(--brand2)] mb-6">坚实的教育理论基础</h2>
|
||||
<p class="text-center max-w-3xl mx-auto mb-8 text-sm text-[var(--muted)]">本课程的设计深度融合了多种先进的教育理论,采用建构主义作为哲学基础,通过项目式学习和翻转课堂等教学模式,将学生置于情境化的开源社区环境中,通过经验学习的循环,促进他们在社会协作中成长,并最终培养其适应数字时代的联通主义学习能力。</p>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="w-full min-w-max text-left border-collapse">
|
||||
<thead>
|
||||
<tr class="bg-[var(--brand2)] text-white">
|
||||
<th class="p-3 font-semibold text-sm border border-[var(--line)]">教育理论核心思想</th>
|
||||
<th class="p-3 font-semibold text-sm border border-[var(--line)]">在课程中的具体实践</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="hover:bg-gray-100">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[#FF6B6B]">建构主义 (Constructivism)</td>
|
||||
<td class="p-3 border border-[var(--line)]">学习者主动构建知识,通过动手实践(写代码、做项目)来理解抽象概念。</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-gray-100">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[#4D96FF]">社会建构主义 (Social Constructivism)</td>
|
||||
<td class="p-3 border border-[var(--line)]">学习在社会互动中发生,体现在团队项目、同伴代码审查(Peer Review)、社区互动。</td>
|
||||
</tr>---
|
||||
<tr class="hover:bg-gray-100">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[#6BCB77]">情境学习理论 (Situated Learning)</td>
|
||||
<td class="p-3 border border-[var(--line)]">在真实“实践社群”中学习,使用真实的GitCode/Gitee平台,向真实开源项目贡献。</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-gray-100">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[#FFD93D]">经验学习理论 (Experiential Learning)</td>
|
||||
<td class="p-3 border border-[var(--line)]">经验-反思-概念-实验的循环,“微贡献”作业要求记录过程并进行反思总结。</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-gray-100">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[#495057]">联通主义 (Connectivism)</td>
|
||||
<td class="p-3 border border-[var(--line)]">学习是构建和导航网络,培养信息素养,利用丰富的在线开放资源自主学习。</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-16">
|
||||
<h2 class="text-2xl font-bold text-center text-[var(--brand2)] mb-6">16周学习之旅:探索开源通识的“知识地图”</h2>
|
||||
<div class="bg-white rounded-lg shadow-md p-8">
|
||||
<div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-icon bg-[#FF6B6B]">1</div>
|
||||
<div class="flow-content">
|
||||
<h4 class="font-bold text-lg">模块一:开源理念与文化 (1-2周)</h4>
|
||||
<p class="text-sm text-[var(--muted)]">奠定理论基础,通过故事化教学和辩论赛建立核心认知。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-line bg-[#FF6B6B]"></div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-icon bg-[#4D96FF]">2</div>
|
||||
<div class="flow-content">
|
||||
<h4 class="font-bold text-lg">模块二:开源工具与平台 (3-6周)</h4>
|
||||
<p class="text-sm text-[var(--muted)]">掌握Git、GitCode等核心工具,通过翻转课堂和即时体验扫清实践障碍。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-line bg-[#4D96FF]"></div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-icon bg-[#6BCB77]">3</div>
|
||||
<div class="flow-content">
|
||||
<h4 class="font-bold text-lg">模块三:开源项目生态图谱 (7-10周)</h4>
|
||||
<p class="text-sm text-[var(--muted)]">拓宽视野,通过嘉宾分享和探究性作业认知全球与中国本土的开源生态。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-line bg-[#6BCB77]"></div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-icon bg-[#FFD93D]">4</div>
|
||||
<div class="flow-content">
|
||||
<h4 class="font-bold text-lg">模块四:开源项目贡献实践 (11-14周)</h4>
|
||||
<p class="text-sm text-[var(--muted)]">从了解到参与,通过“微贡献”工作坊和团队项目完成“第一次贡献”。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flow-line bg-[#FFD93D]"></div>
|
||||
<div class="flow-step">
|
||||
<div class="flow-icon bg-[#495057]">5</div>
|
||||
<div class="flow-content">
|
||||
<h4 class="font-bold text-lg">模块五:社会价值与全球化视野 (15-16周)</h4>
|
||||
<p class="text-sm text-[var(--muted)]">升华认知,通过“世界咖啡馆”讨论和制定个人规划,思考未来趋势。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-16 bg-white rounded-lg shadow-md p-8">
|
||||
<h2 class="text-2xl font-bold text-center text-[var(--brand2)] mb-6">科学、全面的评估体系</h2>
|
||||
<p class="text-center max-w-3xl mx-auto mb-8 text-sm text-[var(--muted)]">我们采用过程性与成果导向相结合的评估方式,旨在全面客观地评价学生的学习成效与综合素养的提升。这不仅关注最终结果,更重视学生在学习过程中的参与、实践与成长。</p>
|
||||
<div class="overflow-x-auto">
|
||||
<table class="w-full text-left border-collapse">
|
||||
<thead>
|
||||
<tr class="bg-[var(--brand2)] text-white">
|
||||
<th class="p-3 font-semibold text-sm border border-[var(--line)]">评估类别</th>
|
||||
<th class="p-3 font-semibold text-sm border border-[var(--line)]">评估项</th>
|
||||
<th class="p-3 font-semibold text-sm border border-[var(--line)] text-center">权重</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="bg-blue-50">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[var(--brand2)] align-top" rowspan="2">过程性评估</td>
|
||||
<td class="p-3 border border-[var(--line)]">
|
||||
<strong class="text-[#FF6B6B]">课堂参与、互动与同伴互评</strong>
|
||||
<p class="text-xs text-[var(--muted)] mt-1">基于出勤、发言、协作与社区互动。</p>
|
||||
</td>
|
||||
<td class="p-3 border border-[var(--line)] text-center font-bold text-lg">30%</td>
|
||||
</tr>
|
||||
<tr class="bg-blue-50">
|
||||
<td class="p-3 border border-[var(--line)]">
|
||||
<strong class="text-[#4D96FF]">实践作业与挑战</strong>
|
||||
<ul class="list-disc list-inside mt-2 space-y-1 pl-2 text-xs text-[var(--muted)]">
|
||||
<li>Git/GitCode基础操作考核 (15%)</li>
|
||||
<li>“微贡献”尝试记录与反思 (15%)</li>
|
||||
<li>在线知识小测验 (10%)</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td class="p-3 border border-[var(--line)] text-center font-bold text-lg">40%</td>
|
||||
</tr>
|
||||
<tr class="bg-red-50">
|
||||
<td class="p-3 border border-[var(--line)] font-semibold text-[var(--brand2)]">终结性评估</td>
|
||||
<td class="p-3 border border-[var(--line)]">
|
||||
<strong class="text-[#FF6B6B]">期末综合项目/报告</strong>
|
||||
<p class="text-xs text-[var(--muted)] mt-1">“7选1”菜单式选题,允许多学科组队,需进行课堂展示。</p>
|
||||
</td>
|
||||
<td class="p-3 border border-[var(--line)] text-center font-bold text-lg">30%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="mb-16">
|
||||
<h2 class="text-3xl font-bold text-center text-[var(--brand)] mb-10">附录:推荐资源与项目</h2>
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12">
|
||||
<div>
|
||||
<h3 class="text-2xl font-bold text-[var(--brand2)] mb-2">附录一:推荐的长期微贡献项目列表</h3>
|
||||
<p class="text-sm text-[var(--muted)] mb-6">鼓励学生立足本土完成首次贡献,探索全球机会。</p>
|
||||
|
||||
<div class="space-y-6">
|
||||
<div class="bg-white rounded-lg shadow-md p-5">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-3">1. GitCode官方</h4>
|
||||
<div class="space-y-2 text-sm">
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">入口:</strong> <code class="text-xs bg-gray-100 p-1 rounded">gitcode.com → 探索 → 任务/悬赏</code></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">任务类型:</strong> <span class="text-[var(--muted)]">每周刷新海量微任务</span></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">示例:</strong> <span class="text-[var(--muted)]">“给国产数据库补一条 SQL 示例”</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg shadow-md p-5">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-3">2. OpenHarmony社区</h4>
|
||||
<div class="space-y-2 text-sm">
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">入口:</strong> <code class="text-xs bg-gray-100 p-1 rounded">openatom.cn/projects → Issues</code></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">任务类型:</strong> <span class="text-[var(--muted)]">文档改错、翻译、单元测试</span></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">示例:</strong> <span class="text-[var(--muted)]">OpenHarmony 文档错别字</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg shadow-md p-5">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-3">3. openEuler 社区</h4>
|
||||
<div class="space-y-2 text-sm">
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">入口:</strong> <code class="text-xs bg-gray-100 p-1 rounded">gitcode.com/openeuler → Issues</code></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">任务类型:</strong> <span class="text-[var(--muted)]">Shell 脚本、文档、测试</span></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">示例:</strong> <span class="text-[var(--muted)]">“给 openEuler 22.03 安装脚本加一行注释”</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg shadow-md p-5">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-3">4. MindSpore社区</h4>
|
||||
<div class="space-y-2 text-sm">
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">入口:</strong> <code class="text-xs bg-gray-100 p-1 rounded">gitcode.com/mindspore → Issues</code></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">任务类型:</strong> <span class="text-[var(--muted)]">API 翻译、测试用例、教程补图</span></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">示例:</strong> <span class="text-[var(--muted)]">“把 5 个英文 API 描述翻译成中文”</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white rounded-lg shadow-md p-5">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-3">5. ModelScope魔搭</h4>
|
||||
<div class="space-y-2 text-sm">
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">入口:</strong> <code class="text-xs bg-gray-100 p-1 rounded">modelscope.cn → 任务广场</code></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">任务类型:</strong> <span class="text-[var(--muted)]">模型体验报告、示例代码</span></p>
|
||||
<p><strong class="font-semibold text-gray-700 w-20 inline-block">示例:</strong> <span class="text-[var(--muted)]">跑通中文 Stable Diffusion 并提交体验截图</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="text-2xl font-bold text-[var(--brand2)] mb-2">附录二:推荐的教学和学习资源</h3>
|
||||
<p class="text-sm tex---t-[var(--muted)] mb-6">为教学团队备课和学生深度自学提供支持。</p>
|
||||
<div class="space-y-6">
|
||||
<div class="bg-white rounded-lg shadow-md p-6">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-4">📚 经典阅读</h4>
|
||||
<ul class="list-disc list-inside space-y-2 text-sm text-[var(--muted)]">
|
||||
<li>《大教堂与集市》</li>
|
||||
<li>《只是为了好玩:Linux之父林纳斯自传》</li>
|
||||
<li>《自由软件,自由社会:理查德·斯托曼选集》</li>
|
||||
<li>《Pro Git》(中文版)</li>
|
||||
</ul>
|
||||
<hr class="my-4 border-[var(--line)]">
|
||||
<h5 class="font-semibold text-gray-700 mb-2">拓展建议:</h5>
|
||||
<ul class="list-disc list-inside space-y-2 text-sm text-[var(--muted)]">
|
||||
<li>《Working in Public》</li>
|
||||
<li>《The Pragmatic Programmer》</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-lg shadow-md p-6">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-4">🎓 在线课程与实验</h4>
|
||||
<ul class="list-disc list-inside space-y-2 text-sm text-[var(--muted)]">
|
||||
<li>freeCodeCamp (中文社区)</li>
|
||||
<li>华东师范大学《开源引论》课程资源</li>
|
||||
<li>The Linux Foundation Training</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-lg shadow-md p-6">
|
||||
<h4 class="text-lg font-bold text-[var(--brand2)] mb-4">🌐 社区、资讯与博客</h4>
|
||||
<ul class="list-disc list-inside space-y-2 text-sm text-[var(--muted)]">
|
||||
<li>Gitee 开源指北</li>
|
||||
<li>OSCHINA (开源中国)</li>
|
||||
<li>阮一峰的网络日志</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区。
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
function wrapLabels(label) {
|
||||
const maxLength = 16;
|
||||
if (typeof label !== 'string' || label.length <= maxLength) {
|
||||
return label;
|
||||
}
|
||||
const words = label.split(' ');
|
||||
const lines = [];
|
||||
let currentLine = '';
|
||||
for (const word of words) {
|
||||
if ((currentLine + ' ' + word).trim().length > maxLength) {
|
||||
if (currentLine) lines.push(currentLine.trim());
|
||||
currentLine = word;
|
||||
} else {
|
||||
currentLine = (currentLine + ' ' + word).trim();
|
||||
}
|
||||
}
|
||||
if (currentLine) {
|
||||
lines.push(currentLine.trim());
|
||||
}
|
||||
return lines.length > 0 ? lines : [label];
|
||||
}
|
||||
|
||||
const tooltipTitleCallback = function(tooltipItems) {
|
||||
const item = tooltipItems[0];
|
||||
let label = item.chart.data.labels[item.dataIndex];
|
||||
if (Array.isArray(label)) {
|
||||
return label.join(' ');
|
||||
} else {
|
||||
return label;
|
||||
}
|
||||
};
|
||||
|
||||
const commonChartOptions = {
|
||||
maintainAspectRatio: false,
|
||||
responsive: true,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'bottom',
|
||||
labels: {
|
||||
padding: 20,
|
||||
font: {
|
||||
family: "'Noto Sans SC', sans-serif",
|
||||
size: 12
|
||||
}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
callbacks: {
|
||||
title: tooltipTitleCallback
|
||||
},
|
||||
bodyFont: {
|
||||
family: "'Noto Sans SC', sans-serif"
|
||||
},
|
||||
titleFont: {
|
||||
family: "'Noto Sans SC', sans-serif"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const knowledgeData = {
|
||||
labels: ['开源定义与历史', '许可证原则', '社区运作模式', '全球与本土生态', '开源AI框架', '新兴开源技术'].map(wrapLabels),
|
||||
datasets: [{
|
||||
label: '知识点覆盖',
|
||||
data: [20, 15, 15, 25, 15, 10],
|
||||
backgroundColor: [
|
||||
'rgba(255, 107, 107, 0.6)',
|
||||
'rgba(77, 150, 255, 0.6)',
|
||||
'rgba(107, 203, 119, 0.6)',
|
||||
'rgba(255, 217, 61, 0.6)',
|
||||
'rgba(255, 159, 67, 0.6)',
|
||||
'rgba(153, 102, 255, 0.6)'
|
||||
],
|
||||
borderColor: [
|
||||
'#FF6B6B',
|
||||
'#4D96FF',
|
||||
'#6BCB77',
|
||||
'#FFD93D',
|
||||
'#FF9F43',
|
||||
'#9966FF'
|
||||
],
|
||||
borderWidth: 1
|
||||
}]
|
||||
};
|
||||
new Chart(document.getElementById('knowledgeChart'), {
|
||||
type: 'polarArea',
|
||||
data: knowledgeData,
|
||||
options: commonChartOptions
|
||||
});
|
||||
|
||||
const abilityData = {
|
||||
labels: ['Git与协作平台运用', '项目评估与查找', '代码贡献实践', '非代码贡献实践', '团队协作能力', '批判性思维'].map(wrapLabels),
|
||||
datasets: [{
|
||||
label: '能力点雷达图',
|
||||
data: [90, 80, 70, 85, 95, 75],
|
||||
fill: true,
|
||||
backgroundColor: 'rgba(77, 150, 255, 0.2)',
|
||||
borderColor: '#4D96FF',
|
||||
pointBackgroundColor: '#4D96FF',
|
||||
pointBorderColor: '#fff',
|
||||
pointHoverBackgroundColor: '#fff',
|
||||
pointHoverBorderColor: '#4D96FF'
|
||||
}]
|
||||
};
|
||||
new Chart(document.getElementById('abilityChart'), {
|
||||
type: 'radar',
|
||||
data: abilityData,
|
||||
options: { ...commonChartOptions, scales: { r: { beginAtZero: true, suggestedMax: 100 } } }
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,270 @@
|
|||
# 《开源导论与数字素养》全周期教学指南
|
||||
|
||||
## 引言:本指南的目的与使用
|
||||
|
||||
本指南是一份全面的教学实施手册,旨在为《开源导论与数字素养》课程的教学团队(包括授课教师、课程助教及教学管理者)提供从顶层设计到一线操作的全周期指导。它不仅阐述了课程的“是什么”与“为什么”,更聚焦于“教什么”和“如何教”,以确保课程理念能够高效、高质量地落地,并实现持续的迭代与优化。
|
||||
|
||||
本指南借鉴了MIT OpenCourseWare (OCW)的结构化与开放性,并将其内化为一套覆盖**设计 → 内容 → 实施 → 实践 → 评估**完整生命周期的行动框架。请将本指南作为课程准备、教学实施和课后复盘的核心参考。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:课程设计融合先进教育理念
|
||||
|
||||
本部分奠定了课程的设计理念与骨架,是所有教学活动开展的理论基石,回答了“我们为什么要开设这门课”以及“我们希望学生成为什么样的人”。
|
||||
|
||||

|
||||
|
||||
*图:融合先进教育理念的课程设计指导思想*
|
||||
|
||||
### 1.1 课程理念:启蒙、引导与赋能
|
||||
|
||||
本课程的核心哲学是**启蒙、引导与赋能**。我们坚信,这门课的价值远不止于教授一项工具或技能,而在于为大一新生开启一扇通往新世界的大门。启蒙意味着激发学生对开放、协作、共享精神的好奇心;引导意味着为他们绘制一幅清晰的“开源世界地图”,并指明参与路径;赋能则意味着通过高度实践性的教学,使他们真正掌握参与开源的基本技能,为未来发展注入强大动力。
|
||||
|
||||
### 1.2 教学法与理论基础
|
||||
|
||||
本课程的教学设计深度融合了多种先进的教育理论,并确立了**立足国内,放眼全球**的核心实践原则。我们的教学法根植于坚实的理论基础,确保每一次教学活动都具备科学性和目的性。
|
||||
|
||||
1. 课程的哲学基石是**建构主义学习理论** (Constructivism),它强调学习并非被动接收信息,而是学习者基于已有经验主动建构新知识的过程。因此,课程通过一系列实践活动(如提交第一个PR、完成团队项目),让学生在“做中学”,亲手“构建”起对开源的理解。
|
||||
|
||||
2. 在此基础上,课程充分体现了**社会建构主义**(Social Constructivism)的精髓,即知识是在与他人的互动协作中共同建构的。团队项目、同伴互评(Peer Review)等社会性学习活动,以及教师在“微贡献工作坊”中提供的“支架式教学 (Scaffolding)”,都是为了帮助学生有效跨越其“最近发展区 (ZPD)”。
|
||||
|
||||
3. **情境学习理论**(Situated Learning Theory)解释了为何将学习置于真实场景中至关重要。本课程直接使用GitCode等真实的“实践社群 (Community of Practice)”,鼓励学生通过“合法的边缘性参与 (Legitimate Peripheral Participation)”,从修改一份文档开始,逐步成长为社区的贡献者。
|
||||
|
||||
4. **经验学习理论**(Experiential Learning Theory) 为课程中的“理论-实践-反思”闭环提供了模型。以“微贡献”作业为例,学生在“具体经验”(尝试贡献)后,进行“反思性观察”(记录反思),从中“抽象概念化”(总结原则),并在后续的团队项目中进行“主动实验”(应用新原则),形成一个完整的学习闭环。
|
||||
|
||||
5. 最后,作为一门面向数字时代的课程,其教学方式也深受**联通主义**(Connectivism))的影响。该理论认为学习是建立和维护网络连接的过程。课程通过强调信息素养的培养,并鼓励学生利用丰富的开放教育资源(OER)进行自主学习,正是为了培养其在分布式网络环境中“连接”与“导航”的能力。
|
||||
|
||||
下表总结了这些核心教育理论与本课程实践的对应关系:
|
||||
|
||||
| 教育理论 | 核心思想 | 在《开源导论》课程中的具体实践 |
|
||||
| :------------------------------------------- | :----------------------------- | :----------------------------------------------------------- |
|
||||
| **建构主义 (Constructivism)** | 学习者主动构建知识 | 通过动手实践(写代码、做项目)来理解抽象概念。 |
|
||||
| **社会建构主义 (Social Constructivism)** | 学习在社会互动中发生 | 体现在团队项目、同伴代码审查(Peer Review)、社区互动。 |
|
||||
| **情境学习理论 (Situated Learning)** | 在真实“实践社群”中学习 | 使用真实的GitCode/Gitee平台,向真实开源项目贡献。 |
|
||||
| **经验学习理论 (Experiential Learning)** | 经验-反思-概念-实验的循环 | “微贡献”作业要求记录过程并进行反思总结。 |
|
||||
| **联通主义 (Connectivism)** | 学习是构建和导航网络 | 培养信息素养,利用丰富的在线开放资源自主学习。 |
|
||||
|
||||
这五大理论如五根支柱,共同撑起了《开源导论与数字素养》这门课程的教学大厦。它们确保了课程不仅是在传递知识和技能,更是在塑造一种全新的学习方式和思维模式——一种主动建构、乐于协作、勇于实践、勤于反思、精于连接的,真正属于数字时代和开源精神的思维模式。
|
||||
|
||||
### 1.3 课程框架:四维一体的培养目标
|
||||
|
||||
课程的所有内容和活动都围绕以下四维一体的综合培养目标展开,确保每一环节都有明确的育人指向。
|
||||
|
||||
| 维度 | 学习成果描述 |
|
||||
| :--- | :----------------------------------------------------------- |
|
||||
| **知识** | 系统性地阐述开源的定义、历史、核心理念及主流许可证的差异;识别全球与中国本土的关键开源项目、基金会和平台。 |
|
||||
| **能力** | 熟练运用Git和主流代码托管平台(如GitCode)完成版本控制与协作流程;独立查找、评估并向一个真实的开源项目提交一次“微贡献”。 |
|
||||
| **素养** | 秉持开放、协作、共享、贡献的开源精神;建立负责任的数字公民意识;展现出更高的信息素养和在开放网络中自主学习的能力。 |
|
||||
| **思政** | 结合具体案例,理解开源创新与国家“技术自主可控”战略的联系,增强科技自信与社会责任感。 |
|
||||
|
||||
---
|
||||
|
||||
## 第二部分: 课程内容模块化设计
|
||||
|
||||
课程内容共分为五大模块,总计16章,贯穿16个教学周,每周2学时,循序渐进地引导学生从理论认知走向实践应用,是课程交付的“知识地图”。
|
||||
|
||||
|序号|模块名称|主要教学内容|
|
||||
|:---|:---:|:---|
|
||||
|模块一|开源理念与文化<br>(第1-2周)|本模块作为课程的基石,旨在为学生奠定理论基础,建立核心认知。内容将系统介绍开源的起源、核心定义,并深入阐释其所倡导的自由、共享、合作与透明等核心理念。同时,将详细解读常见的开源许可证及其法律意义。为深化学习效果,教学活动将引入故事化教学,例如播放《代码奔腾》(Revolution OS) 的核心片段,并组织一场关于许可证选择的案例辩论赛,以激发学生的思辨能力。|
|
||||
|模块二|开源工具与平台<br>(第3-6周)|本模块聚焦于开源生态中不可或缺的工具与平台,目标是掌握核心工具,扫清实践障碍。内容将从Git版本控制工具的基础命令入手,逐步过渡到GitHub、Gitee等主流代码托管与协作平台的具体使用,并初步接触Hugging Face、ModelScope等新一代AI模型平台。教学上将采用实践驱动的翻转课堂,例如在课程专用组织中,让学生通过提交PR创建个人介绍文件,并通过课堂任务在线运行和测试一个AI模型,获得即时反馈与成就感。|
|
||||
|模块三|开源项目生态图谱<br>(第7-10周)|本模块旨在帮助学生拓宽视野,认知更广阔的全球与本土开源生态。内容将覆盖全球重要的开源基金会、AI与云原生等热门领域的开源现状,并重点介绍中国开源生态的特色与战略项目。教学活动将邀请朋辈榜样(如参与开源的学长学姐)、业界专家或组织代表进行分享,并布置模板化的探究性作业,引导学生深度调研一个中国开源项目。|
|
||||
|模块四|开源项目贡献实践<br>(第11-14周)|本模块将课程推向高潮,目标是引导学生从了解到参与,完成“第一次贡献”。内容将系统讲解贡献者成长路径、具体的代码与非代码贡献方法,以及开源经验对职业发展的促进作用。核心教学活动是流程化的“微贡献”工作坊(Workshop),教师将现场引导学生完成一次真实的PR提交。同时,学生将以小组形式,围绕AI应用、数据分析或社区贡献等方向,开展聚焦的期末团队项目。|
|
||||
|模块五|开源的社会价值与全球化视野<br>(第15-16周)|本模块是课程的升华部分,旨在引导学生深入思考开源的未来。内容将探讨开源对技术创新、社会进步的深远影响,并展望其未来发展趋势。教学活动将采用“世界咖啡馆”(World Café)等升级的讨论形式促进思想碰撞,并要求学生提交一份“我的开源之旅规划图”,作为对未来学习与参与的展望。|
|
||||
|
||||
为平衡深度与广度,教学团队在实施时应遵循“先实践、后理论”的原则,尤其在前几周,优先确保学生通过动手操作建立信心和兴趣。
|
||||
|
||||

|
||||
|
||||
*图:课程知识模块逻辑递进关系*
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:课程实施交付准备
|
||||
|
||||
本部分聚焦于课程的落地执行,为教学团队提供从课前准备到课堂交付,再到风险管理和持续改进的全流程操作方案。
|
||||
|
||||
### 3.1 课前准备清单
|
||||
|
||||
**平台与环境搭建:**
|
||||
- [ ] 创建课程专属代码仓库:在GitCode上创建课程专属组织。
|
||||
- [ ] 设置在线实验平台:配置GitCode的CI/CD或类似平台。
|
||||
- [ ] 建立课程交流社群:创建微信群或QQ群。
|
||||
|
||||
**教学资源准备:**
|
||||
- [ ] 定制学生版课程大纲 (Syllabus)。
|
||||
- [ ] 准备所有周教学材料。
|
||||
- [ ] 初始化“Awesome List”。
|
||||
|
||||
**外部资源协调:**
|
||||
- [ ] 预筛选“微贡献”项目。
|
||||
- [ ] 确认嘉宾分享。(Summary & Outlook)
|
||||
|
||||
### 3.2 课程交付:教学路线图
|
||||
|
||||
本课程的16周教学旅程将围绕“3-2-1”核心实践模型展开,确保学习节奏张弛有度。前3周将通过翻转课堂和线上闯关等活动,为学生夯实开源理念与Git技能的“地基”。随后的教学将穿插全球生态图谱、开源治理等视野拓展内容,并在关键节点安排2周的“深度体验”,聚焦AI模型平台与安全合规。最后冲刺的1周将以“成果产出”为核心,通过“微贡献”工作坊和PBL项目路演,让学生完成从0到1的蜕变,最终在价值升华与未来展望中结束整个学期的学习。
|
||||
|
||||

|
||||
|
||||
*图:课程“3-2-1”教学路线图*
|
||||
|
||||
### 3.3 教学支持与迭代
|
||||
|
||||
**风险预案:**
|
||||
| 风险 | 症状 | 预案 |
|
||||
| :--- | :--- | :--- |
|
||||
| 零基础学生掉队 | PR提交率低 | 开设“周三晚诊所”答疑时间 + 录制3分钟短视频“Git提交三连命令” |
|
||||
| 开源项目无响应 | Issue无人理睬 | 教师提前fork项目作为备份,确保学生的PR至少可被教师合并 |
|
||||
| 跨专业选课 | 线下讨论难聚齐 | 开设飞书多维表等“云小组”工具,自动分配角色,线上协作 |
|
||||
|
||||
**持续改进与社区联动:**
|
||||
|
||||
1. **动态反馈与调整机制**:在第8周左右增设一次匿名的期中反馈调查,收集学生对课程难度、节奏和内容的意见,并根据反馈对后半学期的教学计划进行微调。
|
||||
2. **适应多样化学习风格**:在课程资源库中,为倾向于自学的学生提供额外的、结构化的独立学习任务包(如带有知识点自测的阅读材料、进阶的线上实验等),并明确告知这些资源可作为替代或补充。
|
||||
3. **建立长期学习社区与支持体系**:课程结束后,引导学生加入一个可持续的校内开源学习社群、社团或论坛。定期(如每学期一次)组织往届学员分享会,邀请已在开源领域有所发展的校友分享经验。
|
||||
4. **规划进阶学习路径**:对于学有余力、兴趣浓厚的学生,提供一份“进阶学习路径图”或完整的对应的开源项目的知识地图,推荐更深入的课程(如操作系统、数据库)、项目(参与更核心的模块开发)或角色(尝试组织社区活动、担任项目助理)。
|
||||
5. **社区合作**:与开源基金会、开源社区与开源代码托管平台等建立长期合作关系,确保good-first-issue资源的稳定供给。
|
||||
6. **建立学习共同体**:建立“校友导师”制度,邀请往期优秀学员回校担任助教或分享嘉宾,形成课程的滚动迭代与传承文化。
|
||||
|
||||
---
|
||||
|
||||
## 第四部分:课程实践“战术手册”
|
||||
|
||||
为了激活课堂,本课程将综合运用多种现代化教学方法,改变传统计算机课程可能枯燥乏味的局面,将课堂变成了充满创造力和乐趣的“学习工坊 (Learning Studio)”,旨在激发学生的学习主动性并培养其实践创新能力。
|
||||
|
||||

|
||||
|
||||
*图:课程实践“战术手册”*
|
||||
|
||||
### 4.1 模块化教学活动设计
|
||||
|
||||
| 模块 | 关键活动 | 资源包 | 教师操作提示 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **开源理念** | “许可证情景剧”角色扮演 | 许可证卡片、判例脚本 | 课前分6组,课堂10分钟即兴法庭辩论 |
|
||||
| **Git技能** | “Git密室逃脱”线上闯关 | GitCode CI/CD 自动评测 | 设置4关,实时排行榜,课堂助教巡回答疑 |
|
||||
| **AI开源** | “1小时克隆一条AI语音” | Model Scope模板 | 学生只需改几行参数即可体验 |
|
||||
| **微贡献** | “错别字猎人”行动 | 附录一的good-first-issue集合 | 提前锁定5个中文项目,确保Issue 48小时内被维护者响应 |
|
||||
| **全球化** | “开源大使馆”虚拟圆桌 | Zoom连线海外maintainer | 提前测试网络,准备双语文本 |
|
||||
|
||||
### 4.2 课堂组织模板(2×50min示例)
|
||||
|
||||
* **0–10 min:** 闪电问答
|
||||
* **10–30 min:** 案例故事 + 教师点睛
|
||||
* **30–60 min:** 分组实操
|
||||
* **60–75 min:** 成果快闪
|
||||
* **75–90 min:** 教师总结 + 下次任务布置
|
||||
|
||||
### 4.3 推荐教学工具箱
|
||||
|
||||
为了将本课程“理论与实践深度融合”及“学生为中心”的教学理念落到实处,需要构建了一个整合的“数字化学习生态系统”。这个工具箱不仅是完成教学任务的辅助软件列表,其本身就是课程教学内容的重要组成部分。通过在真实的数字化环境中使用这些前沿工具,学生将在潜移默化中内化数字时代的协作方式、沟通文化和学习方法,从而全面提升其数字素养。我们鼓励教学团队将这些工具视为搭建现代化、互动式、情境化学习场的“积木”,根据实际情况灵活选用与组合。
|
||||
|
||||
| 类别 | 核心工具 | 核心应用与教学价值 (Core Application & Pedagogical Value) | 实施贴士与拓展建议 (Implementation Tips & Extension Suggestions) |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **协作与代码托管** | GitCode (主)<br>GitHub (辅) | **课程中枢系统**:承载课程仓库、作业提交、PR练习与同伴互评。体现“立足国内,兼顾全球”的视野,确保访问流畅性的同时接轨国际最大开源社区。 | **创建课程组织 (Organization)**:在GitCode上建立课程专属组织,便于统一管理。**预设模板**:提供Issue和PR模板,从源头培养学生的规范协作习惯。 |
|
||||
| **互动与反馈** | Mentimeter<br>雨课堂 | **课堂脉搏监控**:用于课堂“闪电问答”、实时投票、词云生成,即时掌握学情,打破单向讲授的沉闷,是实现形成性评价和主动学习的关键。 | **游戏化知识点**:用Mentimeter的竞赛功能将许可证等枯燥内容变为抢答赛。**快速反馈**:利用雨课堂进行课后匿名问卷,收集学生真实困惑。可补充**Slido**用于大型Q\&A。 |
|
||||
| **AI平台体验** | ModelScope魔搭<br>Hugging Face | **前沿技术传送门**:让学生“零门槛”接触和体验全球顶级的AI开源模型,直观感受开源在前沿科技领域的巨大推动力,极大激发学习兴趣。 | **任务化体验**:将平台体验设计成“寻宝游戏”,如“找到一个能识别猫狗的图片分类模型并测试三张图片”,提升趣味性和主动探索性。 |
|
||||
| **文档与知识管理** | Joplin<br>Obsidian<br>飞书文档 | **构建第二大脑**:引导学生超越简单的报告撰写,学习使用Markdown及双向链接等现代化工具构建个人知识网络(PKM),是数字素养的核心体现。 | **鼓励分享与展示**:设立课程公共知识库,鼓励学生分享笔记。可举办中期“学习笔记”展示会,让学生交流知识管理心得,将此作为期末项目文档部分的加分项。 |
|
||||
| **交流与社群** | 微信群 (基础)<br>Discord/Slack (进阶) | **模拟真实社区**:采用分层策略,微信群保证信息高效触达,Discord/Slack则让学生提前沉浸式体验国际开源社区主流的异步、分频道、可归档的沟通文化。 | **建立社区礼仪 (Etiquette)**:在Discord/Slack中置顶频道规则,明确“如何有效提问”、“提问前先搜索”等社区礼仪,将数字公民教育融入日常。 |
|
||||
| **线上实验与评测** | GitCode CI/CD<br>GitHub Classroom | **智能化助教**:实现对Git操作等技能点的自动化评测与即时反馈,解放教学人力的同时,让学生在“代码-测试-修改”的快速循环中高效学习,并初步接触DevOps理念。 | **引入徽章系统 (Badge System)**:为“Git密室逃脱”任务的每一关设置CI/CD检查点,通过后自动在学生仓库的README中点亮一个徽章,增强游戏化体验与成就感。 |
|
||||
|
||||
这个工具箱将课程的教学活动与真实的数字化工作流无缝对接。它不仅为学生提供了必要的“术”,更在工具的使用场景和规范中融入了开源文化的“道”。通过这个生态系统,课程的建构主义、情境学习、联通主义等教育理念得以具体化、情境化,从而确保学生在课程结束后,带走的不仅仅是知识点,更是一整套能够受益终身的数字素养和自主学习能力。
|
||||
|
||||
### 4.4 学习贡献可视化
|
||||
|
||||
在课程专用仓库的README中,可以根据学生提交的PR、解决的Issue、分享的优质资源等,设立一个简单的积分和贡献榜,用游戏化的方式激励参与。
|
||||
|
||||
在学生提交PR作业时,要求至少2名其他同学进行Code Review(或文档Review),提出修改建议。这不仅能锻炼学生的批判性思维,也是开源协作的核心环节。
|
||||
|
||||
从课前准备清单到2x50分钟的课堂组织模板,再到“3-2-1”的教学节奏模型,所有环节都被高度模块化和流程化。这意味着任何一位合格的教师,拿到这份指南都能迅速上手,高质量地完成教学任务。
|
||||
|
||||
---
|
||||
|
||||
## 第五部分:课程评估衡量与成长
|
||||
|
||||
课程采用过程性评估(70%)与终结性评估(30%)相结合的方式,旨在科学、全面地衡量学生的学习成效。这种设计极大地鼓励了学生的持续参与,而非“期末突击”。课程需要建立一个多层次、即时的反馈系统,让评估本身成为了促进学习和成长的过程。
|
||||
|
||||
### 5.1 评价方法与构成
|
||||
|
||||
课程开始时就公布所有考核项的具体评分标准(Rubric)。例如,一个“符合规范的Pull Request”需要满足:1) 标题清晰;2) 描述完整,说明了修改原因;3) 代码/文档风格符合项目规范;4) 关联了对应的Issue。
|
||||
|
||||
我们采用**过程性评估(70%)与终结性评估(30%)** 相结合的方式,重在激励学生的持续参与和真实成长。
|
||||
|
||||
|评估类被| 评估项 | 权重 | 描述与实施建议 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
|**过程性评估<br>(70%)**| 在线知识小测验 | 10% | 检验核心知识点的掌握情况。 |
|
||||
|| Git/GitCode基础操作考核 | 15% | 引入“绿色通过”机制,按时完成即得满分。 |
|
||||
|| “微贡献”尝试记录与反思 | 15% | 评价重点在于反思的深度。 |
|
||||
|| 课堂参与、互动与同伴互评 | 30% | 将PR、项目互评各占5%。 |
|
||||
| **终结性评估**<br>**30%** | 期末综合项目/报告 | 30% | 提供“7选1”菜单式选题,允许多学科组队。 |
|
||||
|
||||
### 5.2 课程目标映射矩阵
|
||||
|
||||
| 维度 | 学习成果(学生学完能做什么) | 可观察证据 | 支撑章节 | 评价方式 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **知识** | 说出开源定义、四大核心理念、主流许可证差异 | 课堂快问快答、在线测验 | 1–2章 | 测验10% |
|
||||
| **能力** | 使用Git完成add-commit-push-pull流程,提交一次PR | 练习仓库PR链接 | 3–4章 | 实践作业15% |
|
||||
| **素养** | 主动在GitCode/ModelScope上提问或回答一次 | Issue/讨论截图 | 5–6章 | 课堂参与20% |
|
||||
| **思政** | 用具体案例说明中国开源战略对国家安全的意义 | 期末报告相关段落 | 10、15章 | 期末项目30% |
|
||||
|
||||
### 5.3 反馈机制
|
||||
|
||||
* **即时与自动反馈:** 利用GitCode Webhook对PR格式进行自动检查。
|
||||
* **同伴反馈:** 将同伴互评作为正式环节。
|
||||
* **教师/助教反馈:** 建立“周三晚诊所”等固定答疑时间。
|
||||
|
||||
## 6. 课程教学指南总结
|
||||
|
||||
本指南系统性地构建了一套从顶层设计到底层实践的《开源导论与数字素养》全周期教学框架。它以**“启蒙、引导、赋能”的哲学为引领,以建构主义等先进教育理论为学理支撑,确立了“立足本土,拥抱世界”**的开放格局。
|
||||
|
||||
在实践层面,指南提供了详尽的16周内容详解、模块化的教学活动设计、丰富的工具与资源列表,以及科学的过程性评估方案。其核心亮点在于强调真实情境下的动手实践,通过“Git密室逃脱”、“微贡献工作坊”和期末PBL项目,引导学生完成一次从0到1的开源贡献,真正实现知识的内化与能力的跃迁。
|
||||
|
||||
展望未来,本课程不仅是知识的传授,更是一个可持续发展的学习共同体。通过建立动态反馈机制、校友导师制度以及与开源社区的深度联动,我们致力于将这门课打造成一盏**“启明灯”**,不仅为学生当下的学习点亮道路,更能激发他们持续探索、终身参与开源世界的激情与动力,在他们心中播下“开放、协作、共享、贡献”的种子,伴随其成长,绽放光芒。
|
||||
|
||||
## 附录一:推荐的长期微贡献项目列表
|
||||
|
||||
本列表以国内平台和项目为主,鼓励学生立足本土完成首次贡献,同时教师可引导学有余力的学生探索GitHub等国际平台的同类机会,以拓宽全球视野。
|
||||
|
||||
1. **GitCode官方**
|
||||
* **入口:** `gitcode.com` → 探索 → 任务/悬赏
|
||||
* **任务类型:** 每周刷新海量微任务
|
||||
* **示例:** “给国产数据库补一条 SQL 示例”
|
||||
|
||||
2. **OpenHarmony社区**
|
||||
* **入口:** `openatom.cn/projects` → Issues → `good-first-issue`
|
||||
* **任务类型:** 文档改错、翻译、单元测试
|
||||
* **示例:** OpenHarmony 文档错别字
|
||||
|
||||
3. **openEuler 社区**
|
||||
* **入口:** `gitcode.com/openeuler` → Issues → `good-first-issue`
|
||||
* **任务类型:** Shell 脚本、文档、测试
|
||||
* **示例:** “给 openEuler 22.03 安装脚本加一行注释”
|
||||
|
||||
4. **MindSpore社区**
|
||||
* **入口:** `gitcode.com/mindspore` → Issues → `good-first-issue`
|
||||
* **任务类型:** API 翻译、测试用例、教程补图
|
||||
* **示例:** “把 5 个英文 API 描述翻译成中文”
|
||||
|
||||
5. **ModelScope魔搭**
|
||||
* **入口:** `modelscope.cn` → 任务广场
|
||||
* **任务类型:** 模型体验报告、示例代码
|
||||
* **示例:** 跑通中文 Stable Diffusion 并提交体验截图
|
||||
|
||||
-----
|
||||
|
||||
## **附录二:推荐的教学和学习资源**
|
||||
|
||||
本资源列表旨在为教学团队的备课工作提供深度支持,并为渴望自我探索的学生开辟一条从入门到精通的自学路径。我们鼓励教师将其作为“延伸阅读”和“探索任务”的素材库,引导学生在课堂之外,继续他们的开源之旅,将自主学习和终身学习的能力内化为一种习惯。
|
||||
|
||||
| 类别 | 资源名称/平台 | 推荐理由与应用场景 | 补充与拓展建议 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **经典阅读** | <ul><li>《大教堂与集市》<li>《只是为了好玩》<li>《自由软件,自由社会》<li>《Pro Git》(中文版)</ul> | **思想基石**:这四本书构成了理解开源文化的“必读经典”。它们分别从开发模式、领袖人物、哲学精神和核心技能四个维度,为学生构建起一个完整的开源世界观。 | **<ul><li>《Working in Public》**:Nadia Asparouhova所著,是探讨现代开源维护者工作、社区动态与经济模式的新经典,可作为进阶阅读。<li>**《The Pragmatic Programmer》**:培养专业开发者思维的经典,虽不专讲开源,但其理念与开源精神高度契合。</ul> |
|
||||
| **纪录片与视频** | <ul><li>《代码奔腾》(Revolution OS)<li>Bilibili/YouTube </ul>| **直观体验**:纪录片能让学生身临其境地感受开源运动早期的激情与理想主义。而视频平台则是获取“活”知识的最佳渠道,内容更新快,形式生动。 | **指定频道**:推荐如**Fireship.io**(快节奏技术解读)、**程序员鱼皮**(国内项目实践)等优质UP主。**会议演讲**:KubeCon, PyCon, FOSDEM等顶级开源大会的演讲视频是了解前沿技术的绝佳免费资源。 |
|
||||
| **在线课程与实验** | <ul><li>freeCodeCamp (中文社区)<li>华东师范大学《开源引论》<li>The Linux Foundation Training</ul> | **系统学习**:这些平台提供了结构化的学习路径和实践项目。特别是国内高校的公开课,为教学设计提供了宝贵的本土化参考。 | <ul><li>**GitHub Learning Lab**:官方出品的交互式机器人教练,可作为“Git/GitHub基础操作考核”的平台,游戏化体验极佳<li>**Microsoft Learn**:提供大量免费且高质量的Git、GitHub和DevOps学习模块。</ul> |
|
||||
| **社区、资讯与博客** | <ul><li>Gitee 开源指北</ul> | **中文生态**:这些是国内学生入门开源最亲切、最接地气的资源,内容覆盖从入门教程到行业最新动态,社区氛围活跃,便于提问和交流。 | **国际视野**:推荐**Hacker News**(高质量技术讨论)、**LWN.net**(硬核Linux/FOSS新闻)、**Dev.to**(全球开发者博客平台),用于培养学生的信息检索和英文阅读能力。 |
|
||||
| **播客与新闻通讯** | *N/A* | **持续学习**:播客和邮件通讯是当今开发者保持信息同步的主流方式。推荐此类资源有助于培养学生“持续学习”和“信息过滤”的元能力。 | <ul><li>**播客**:推荐**The Changelog**, **Command Line Heroes**等,适合在通勤等碎片化时间收听。<li>**新闻通讯(Newsletter)**:推荐**TLDR**, **Console.dev**, **PyCoder's Weekly**等,每日或每周推送精选技术资讯。 </ul>|
|
||||
|
||||
这份列表如同一套功能强大的“外挂”学习包,能够极大地丰富和延展课堂教学的内容。教师可以巧妙地将这些资源融入课程设计,例如,将一篇经典文章的阅读作为课前任务,或将一个Git的实验作为课后作业。通过这种方式,不仅能激发学生的学习自主性,更能引导他们真正步入广阔无垠的全球开源社区,开启属于自己的探索与贡献之旅。
|
||||
|
||||
---
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可, © 2025 Gitconomy Research社区。
|
||||
|
|
@ -0,0 +1,203 @@
|
|||
# 《开源导论与数字素养》教学大纲
|
||||
|
||||
## 一、课程基本信息
|
||||
|
||||
- **课程名称**: 开源导论与数字素养
|
||||
- **课程代码**: [由教务系统指定]
|
||||
- **学期**: 2025-2026学年秋季学期
|
||||
- **学分**: 2
|
||||
- **授课教师**: [教师姓名]
|
||||
|
||||
## 二、课程概述
|
||||
|
||||
### 1. 课程简介
|
||||
|
||||
本课程是面向全校大一新生开设的一门通识选修课,旨在作为学生探索和理解开源世界的启蒙与引导课程。它并非一门专业的技术深潜课程,而是立足于提升学生在数字时代的核心素养,培养其开源意识、协作精神与创新思维。课程致力于帮助学生系统掌握开源的定义、发展简史、核心价值、主流许可证及其精神实质;全面认知全球与中国本土主要的开源项目、基金会和代码托管平台;并最终通过真实的“微贡献”实践,完成一次从了解到参与的完整体验。
|
||||
|
||||
### 2. 核心理念
|
||||
|
||||
本课程以“启蒙、引导与赋能”为核心理念,通过高度互动的教学设计,引导学生在实践中主动建构知识,培养其终身学习的能力。
|
||||
|
||||
### 3. 先修要求:
|
||||
|
||||
无。欢迎任何专业背景、零基础的同学选修。
|
||||
|
||||
## 二、课程学习目标
|
||||
|
||||
在完成本课程后,学生将能够:
|
||||
|
||||
1. **知识层面**: 系统性地阐述开源的定义、历史、核心理念及主流许可证的差异;识别全球与中国本土的关键开源项目、基金会和平台。
|
||||
2. **能力层面**: 熟练运用Git和主流代码托管平台(如GitCode)完成版本控制与协作流程;独立查找、评估并向一个真实的开源项目提交一次“微贡献”。
|
||||
3. **素养层面**: 秉持开放、协作、共享、贡献的开源精神;建立负责任的数字公民意识;展现出更高的信息素养和在开放网络中自主学习的能力。
|
||||
4. **思政层面**: 结合具体案例,理解开源创新与国家“技术自主可控”战略的联系,增强科技自信与社会责任感。
|
||||
|
||||
## 三、 课程活动与学习方法
|
||||
|
||||
本课程将采用以学生为中心的混合式学习方法,包括但不限于:
|
||||
|
||||
1. **互动讲座** :结合案例故事、嘉宾分享和课堂讨论。
|
||||
2. **翻转课堂**:针对技能型知识点,要求学生课前观看视频,课堂时间用于实践与答疑。
|
||||
3. **动手实验** : 包括个人操作练习和游戏化的线上闯关活动。
|
||||
4. **项目式学习**:以小组为单位,完成一个综合性的期末项目。
|
||||
5. **同伴互评**:在代码审查等环节,学习提供和接收建设性的反馈。
|
||||
|
||||
## 四、课程教学大纲
|
||||
|
||||
~~~
|
||||
📁《开源导论与数字素养》课程大纲/
|
||||
├── 模块一:开源理念与文化/
|
||||
│ ├──📁 第 1 章:开源的起源与定义
|
||||
│ │ ├── 1.1 从“黑客文化”到自由软件运动(1970s-1980s)
|
||||
│ │ ├── 1.2 Linux的诞生与发展(1990s)
|
||||
│ │ ├── 1.3 开源 vs 自由软件:理念之争(1998)
|
||||
│ │ ├── 1.4 商业开源从实用主义到商业利润(2000s-现在)
|
||||
│ │ ├── 1.5 开源理念推动知识共享的进步
|
||||
│ │ ├── 1.6 开放运动的融合与演变
|
||||
│ │ └── 1.7 AI开源的定义与争论
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 💡 破冰活动:“我们身边的开源” - 学生列举日常软件,教师揭示其开源内核。
|
||||
│ └──📁 第 2 章:开源协作的规则与法律框架
|
||||
│ ├── 2.1 开源的四大核心理念与内涵
|
||||
│ ├── 2.2 从“大教堂与市集”到数字经济的“道路与桥梁”的变迁
|
||||
│ ├── 2.3 开源社区的文化与礼仪
|
||||
│ ├── 2.4 法律基石:开源中的版权、专利与商标
|
||||
│ ├── 2.5 出站许可:定义代码的公共边界
|
||||
│ ├── 2.6 入站贡献:保障项目的知识产权链
|
||||
│ ├── 2.7 开源许可证选择决策框架
|
||||
│ ├── 2.8 新一代开源许可证类型
|
||||
│ └── 互动与实验:
|
||||
│ └── 🎭 “许可证情景剧”:分组角色扮演,就虚拟项目选择许可证进行法庭式辩论。
|
||||
├── 模块二:开源工具与平台/
|
||||
│ ├──📁 第 3 章:Git与代码托管平台入门
|
||||
│ │ ├── 3.1 什么是版本控制
|
||||
│ │ ├── 3.2 Git的诞生背景:从Linux内核到全球协作
|
||||
│ │ ├── 3.3 从Git到GitHub:一场通往“社交化编程”的革命
|
||||
│ │ ├── 3.4 Git基础工作原理
|
||||
│ │ ├── 3.5 Git基础操作
|
||||
│ │ ├── 3.6 Git分支管理
|
||||
│ │ ├── 3.7 Git远程仓库与社区协作
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 📝 实践:“提交你的第一个PR” - 在课程仓库中创建并提交个人介绍文件。
|
||||
│ ├──📁 第 4 章:Git进阶与社区协作
|
||||
│ │ ├── 4.1 深入Git内部:对象模型
|
||||
│ │ ├── 4.2 Git内部原理:一个基于对象的图数据库
|
||||
│ │ ├── 4.3 Git底层命令的应用
|
||||
│ │ ├── 4.4 Git与持续集成/持续交付 (CI/CD)
|
||||
│ │ ├── 4.5 社区协作:Pull Request工作流与代码审查
|
||||
│ │ ├── 4.6 Git在企业与科研中的应用
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 👀 练习:同伴互评(Peer Review)其他同学的个人介绍PR。
|
||||
│ ├──📁 第 5 章:新一代AI模型托管与协作平台
|
||||
│ │ ├── 5.1 ModelScope魔搭与Hugging Face简介
|
||||
│ │ ├── 5.2 “模型即服务”与AI开源社区
|
||||
│ │ └── 5.3 在线体验:运行一个AI模型
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 🎨 AIGC体验工坊:选择一个方向(文生图、文生音频、文生视频、文生代码等),使用ModelScope/Hugging Face模板在线生成并分享你的第一个AI作品。
|
||||
│ └──📁 第 6 章:开源软件安全与合规性考量
|
||||
│ ├── 6.1 软件供应链安全简介
|
||||
│ └── 6.2 开源治理与许可证合规
|
||||
│ └── 互动与实验:
|
||||
│ └── 🔍 案例分析:分组讨论Log4j等真实安全事件,复盘其影响与应对。
|
||||
├── 模块三:开源项目生态图谱/
|
||||
│ ├──📁 第 7 章:全球开源生态图谱
|
||||
│ │ ├── 7.1 主流开源基金会(Apache, Linux, Eclipse)
|
||||
│ │ └── 7.2 经典开源项目巡礼
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 🌐 小组探究:选择一个开源基金会,制作5分钟快闪PPT介绍其历史、治理和明星项目。
|
||||
│ ├──📁 第 8 章:开源AI与云原生生态
|
||||
│ │ ├── 8.1 主流AI框架(TensorFlow, PyTorch, MindSpore)
|
||||
│ │ └── 8.2 云原生技术(Docker, Kubernetes)与开源
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 📊 快速识别:通过Mentimeter进行项目Logo竞猜,活跃课堂气氛。
|
||||
│ ├──📁 第 9 章:开源协作模式延伸
|
||||
│ │ ├── 9.1 开源社区的治理模式
|
||||
│ │ └── 9.2 开源的商业模式
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 📈 商业模式分析:选择一家开源公司(如Red Hat, GitLab),分析其商业模式的优劣。
|
||||
│ └──📁 第 10 章:中国开源生态与战略项目
|
||||
│ ├── 10.1 开放原子开源基金会
|
||||
│ └── 10.2 OpenHarmony, openEuler等国家级战略项目
|
||||
│ └── 互动与实验:
|
||||
│ └── 🇨🇳 探究性作业:基于模板,深度分析一个中国开源项目的社区健康度与生态位。
|
||||
├── 模块四:开源项目贡献实践/
|
||||
│ ├──📁 第 11 章:开源项目贡献者成长指南
|
||||
│ │ ├── 11.1 如何寻找适合自己的第一个项目 (Good First Issue)
|
||||
│ │ └── 11.2 非代码贡献的价值:文档、翻译、测试、社区运营
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 🕵️♂️ 寻宝游戏:在GitCode/Gitee上寻找并提交3个带有`good-first-issue`标签的真实任务链接。
|
||||
│ ├──📁 第 12 章:开源项目代码与非代码贡献实践
|
||||
│ │ ├── 12.1 文档类贡献实践
|
||||
│ │ ├── 12.2 社区互动类贡献实践
|
||||
│ │ └── 12.3 (可选)创意与代码类贡献
|
||||
│ │ └── 互动与实验:
|
||||
│ │ ├── 🎯 “错别字猎人”行动:在教师预选的中文项目中,现场寻找并提交一个文档修正PR。
|
||||
│ │ ├── 🌐 “国际化翻译官”任务:选择一小段项目文档进行翻译提交。
|
||||
│ │ ├── 🐛 “Bug侦探”挑战:尝试复现一个已被报告的简单Bug,并在Issue下补充复现步骤或评论。
|
||||
│ │ └── 🎨 “社区艺术家”悬赏:为项目贡献一个Logo优化建议或制作一张宣传图。
|
||||
│ ├──📁 第 13 章:开源与职业发展和创新创业
|
||||
│ │ ├── 13.1 开源贡献:你的第二张“技术简历”
|
||||
│ │ └── 13.2 基于开源技术的创业案例分析
|
||||
│ │ └── 互动与实验:
|
||||
│ │ └── 💼 嘉宾分享/简历诊所:邀请业界专家分享,或现场指导学生如何将开源贡献写入简历。
|
||||
│ └──📁 第 14 章:开源项目团队协作实践
|
||||
│ └── 14.1 期末项目启动:选题、组队与规划
|
||||
│ └── 互动与实验:
|
||||
│ └── 🛠️ 敏捷开发初体验:使用GitCode的项目管理功能(如看板)进行团队任务分解与协作。
|
||||
└── 模块五:开源的社会价值与全球化视野/
|
||||
├──📁 第 15 章:开源对技术创新与社会进步的作用
|
||||
│ ├── 15.1 开源在科研、教育、公益领域的应用
|
||||
│ └── 15.2 开源与全球协作
|
||||
│ └── 互动与实验:
|
||||
│ └── ☕ “世界咖啡馆”:分组流动讨论开源在不同社会领域的应用与挑战。
|
||||
└──📁 第 16 章:开源的未来趋势与全球化视野
|
||||
├── 16.1 AI for Science, RISC-V等前沿趋势
|
||||
└── 16.2 期末项目路演与个人开源之旅规划
|
||||
└── 互动与实验:
|
||||
├── 🏆 期末项目路演:每组进行5分钟项目展示,邀请嘉宾点评。
|
||||
└── 🗺️ 提交“我的开源之旅规划图”:以思维导图形式,规划未来的学习与参与路径。
|
||||
~~~
|
||||
|
||||
## 五、课程知识图谱
|
||||
|
||||
本课程构建了一个全面而系统的开源知识体系,涵盖从核心理念到实践应用的九个关键层次。知识体系以开源基础概念和核心价值观为根基,向上延伸至法律框架、技术工具和生态系统,逐步深入到参与实践、社会价值与未来趋势,最终落脚于应用领域和能力素养。
|
||||
|
||||

|
||||
|
||||
*图:课程知识图谱*
|
||||
|
||||
这一知识图谱不仅为学习者提供了结构化学习路径,还体现了开源文化"自由、共享、合作、透明"的核心精神,帮助学习者建立系统性的开源知识体系,培养数字时代所需的创新思维和实践能力。
|
||||
|
||||
## 六、考核方式与评分标准
|
||||
|
||||
本课程采用过程性评估(权重70%)与终结性评估(权重30%)相结合的方式,旨在全面、公正地衡量你的学习成果。
|
||||
|
||||
|评估类被| 评估项 | 权重 | 描述与实施建议 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
|**过程性评估<br>(70%)**| 在线知识小测验 | 10% | 检验核心知识点的掌握情况。 |
|
||||
|| Git/GitCode基础操作考核 | 15% | 引入“绿色通过”机制,按时完成即得满分。 |
|
||||
|| “微贡献”尝试记录与反思 | 15% | 评价重点在于反思的深度。 |
|
||||
|| 课堂参与、互动与同伴互评 | 30% | 将PR、项目互评各占5%。 |
|
||||
| **终结性评估**<br>**30%** | 期末综合项目/报告 | 30% | 提供“7选1”菜单式选题,允许多学科组队。 |
|
||||
|
||||
## 七、课程学习价值
|
||||
|
||||
本课程旨在为你提供超越传统课堂的独特价值,助你在大学生涯的起点便建立起面向未来的核心竞争力。通过这门课程,你将收获:
|
||||
|
||||
1. **一套实用的数字技能**:你将掌握Git、GitCode等现代软件协作开发的核心工具,这些技能不仅在IT领域至关重要,在科研、项目管理、内容创作等众多领域也日益普及。
|
||||
2. **一种全新的思维模式**:你将深入理解“开放、协作、共享、贡献”的开源精神,学会如何在分布式、异步的环境中与他人高效协作,这是一种将让你受益终身的思维与工作方式。
|
||||
3. **一张亮眼的技术名片**:你在课程中向真实开源项目提交的“微贡献”,将成为你个人能力最直接、最可信的证明,是未来求职、升学时一份极具分量的“技术简历”。
|
||||
4. **一个链接世界的窗口**: 你将学会如何进入并参与本土乃至全球的开源社区,与来自世界各地的优秀开发者交流,极大地拓宽你的专业视野和人际网络。
|
||||
|
||||
## 八、课程政策
|
||||
|
||||
1. **学术诚信**: 所有提交的作业和项目都必须独立完成(团队项目除外)。严禁任何形式的抄袭和作弊行为,一经发现,将严格按照学校相关规定处理。
|
||||
2. **课堂参与**:本课程高度重视互动与实践,你的积极参与是课程成功的重要组成部分。我们鼓励并期待你在课堂内外提出有价值的问题,并与其他同学分享你的见解。
|
||||
3. **沟通**:课程相关问题请首先在课程交流群中提问,鼓励同学之间互助解答。对于个人问题,请通过邮件或在答疑时间与教学团队联系。
|
||||
4. **作业迟交政策**:如无特殊情况(如病假等,需提供证明),迟交的作业将按扣分。请提前规划好你的时间。
|
||||
|
||||
祝同学们在开源的世界里,学有所获,玩得开心!
|
||||
|
||||
---
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可。
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
# 《开源导论与数字素养》课程代码仓指南
|
||||
|
||||
欢迎来到《开源导论与数字素养》课程的官方代码仓库!本仓库是课程教学与实践的核心协作平台,你将在这里完成作业、参与项目、提交贡献,并与老师和同学互动。
|
||||
|
||||
## 一、仓库结构
|
||||
|
||||
~~~
|
||||
📁 course-2025-fall-open-source-intro/
|
||||
├── 📁 01-syllabus/ # 课程大纲与教学计划
|
||||
├── 📁 02-lectures/ # 每讲课件与资料
|
||||
├── 📁 03-assignments/ # 作业提交区
|
||||
│ ├── 📁 personal-intro/ # 个人介绍PR练习
|
||||
│ ├── 📁 git-escape-room/ # Git密室逃脱任务
|
||||
│ └── 📁 micro-contribution/# 微贡献记录与反思
|
||||
├── 📁 04-projects/ # 小组项目空间
|
||||
├── 📁 05-resources/ # 学习资源汇总
|
||||
├── 📁 06-contrib/ # 学生贡献内容(如笔记、翻译、工具脚本)
|
||||
└── 📄 README.md # 本文件,课程总指南
|
||||
~~~
|
||||
|
||||
## 二、如何使用本仓库
|
||||
|
||||
### 1. 首次访问:Fork + Clone
|
||||
1. 点击右上角 **Fork** 按钮,将本仓库复制到你的账户下。
|
||||
2. 使用 `git clone` 命令将你Fork后的仓库克隆到本地。
|
||||
|
||||
### 2. 提交作业:Pull Request(PR)
|
||||
所有作业都通过 **Pull Request** 提交:
|
||||
- 在 `assignments/` 下找到对应作业目录;
|
||||
- 在你的Fork中完成作业;
|
||||
- 通过PR将修改提交到本仓库。
|
||||
|
||||
### 3. 参与协作:Issue & Discussion
|
||||
- 发现课程资料有误?欢迎提交 **Issue** 反馈;
|
||||
- 有问题想讨论?使用 **Discussions** 功能;
|
||||
- 想分享学习资源?可在 `resources/` 下提交PR。
|
||||
|
||||
## 三、 重要实践流程
|
||||
|
||||
### 1. 个人介绍PR(第3周)
|
||||
- 在 `assignments/personal-intro/` 中创建 `你的姓名.md` 文件;
|
||||
- 提交PR,标题格式:`[作业] 个人介绍 - 姓名`;
|
||||
- 等待同伴Review,并根据反馈修改。
|
||||
|
||||
### 2. Git密室逃脱(第4周)
|
||||
- 任务发布在 `assignments/git-escape-room/`;
|
||||
- 完成每个关卡后,推送代码并触发CI自动检查;
|
||||
- 全部通过后,CI会自动为你点亮徽章🎖️。
|
||||
|
||||
### 3. 微贡献实践(第11-14周)
|
||||
- 在 `assignments/micro-contribution/` 中提交你的贡献记录;
|
||||
- 包括:项目名称、Issue链接、PR链接、贡献类型、个人反思;
|
||||
- 鼓励附上截图或代码片段。
|
||||
|
||||
## 四、小组项目协作
|
||||
|
||||
1. 每组在 `projects/` 下创建一个文件夹,命名为项目名称;
|
||||
2. 使用 **GitCode项目管理看板** 进行任务分配与跟踪;
|
||||
3. 所有代码、文档、演示材料均提交至该文件夹;
|
||||
4. 最终进行PR合并与项目展示。
|
||||
|
||||
## 五、提交规范
|
||||
|
||||
1. 提交信息:每次提交都需清晰描述修改的目的与内容。
|
||||
2. 代码规范:遵循统一的代码风格和注释规范。
|
||||
3. 文档要求:每个作业和项目都需附带详细的说明文档
|
||||
|
||||
## 六、行为准则
|
||||
|
||||
- 尊重他人,友好交流;
|
||||
- 禁止抄袭,所有提交须为原创或明确标注引用;
|
||||
- PR描述应清晰说明修改内容与目的;
|
||||
- 鼓励互相Review,提出建设性意见。
|
||||
|
||||
## 七、需要帮助?
|
||||
|
||||
- 先在 Discussions 或 Issue 中搜索是否已有类似问题;
|
||||
- 若未解决,可提交Issue并标注 `question` 标签;
|
||||
- 紧急问题可联系助教或课程群。
|
||||
|
||||
---
|
||||
|
||||
**Happy Coding & Contributing!**
|
||||
让我们一起在开源的世界中学习、成长、贡献 🚀
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可, © 2025 Gitconomy Research社区。
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
# Git入门实战指南 (Git4Beginner)
|
||||
|
||||
欢迎来到Git的世界!Git是目前世界上最先进的分布式版本控制系统。简单来说,它可以帮你记录文件的每一次改动,让你不仅能随时“后悔”(回退到之前的版本),还能方便地与他人协作。
|
||||
|
||||
本指南将带你完成从安装到第一次“提交”的全过程。
|
||||
|
||||
## 0. 准备工作
|
||||
|
||||
在开始之前,你需要拥有一个 **GitCode** 账号。
|
||||
|
||||
* 如果还没有,请前往 [https://gitcode.com/](https://gitcode.com/) 注册。
|
||||
* *提示:注册后请记住你的用户名和注册邮箱,稍后配置 Git 时会用到。*
|
||||
|
||||
-----
|
||||
|
||||
## 1. 安装Git客户端
|
||||
|
||||
首先,我们需要在你的电脑上安装Git命令行工具。请根据你的操作系统选择对应的安装方式。
|
||||
|
||||
### Windows 用户
|
||||
|
||||
1. 前往Git官网下载页面:[https://git-scm.com/download/win](https://git-scm.com/download/win)
|
||||
2. 点击 "Click here to download" 下载最新的 64-bit 安装程序。
|
||||
3. 运行安装程序。**一路点击 "Next"(下一步)使用默认设置即可**。
|
||||
4. 安装完成后,在桌面空白处右键点击,如果看到 **"Git Bash Here"** 菜单,说明安装成功。
|
||||
|
||||
### macOS用户
|
||||
|
||||
大多数 macOS 系统已预装 Git。
|
||||
|
||||
1. 打开 "终端(Terminal)" 应用(可以通过 Command + 空格搜索 "Terminal")。
|
||||
2. 输入 `git --version` 并回车。
|
||||
3. 如果显示了版本号(如 `git version 2.x.x`),则无需安装。
|
||||
4. 如果没有,终端会提示你安装 "Xcode Command Line Tools",点击 "安装" 并按照提示操作即可。
|
||||
* *(备选方案:你也可以像 Windows 一样去 [git-scm.com/download/mac](https://git-scm.com/download/mac) 下载安装包)*
|
||||
|
||||
### Linux用户
|
||||
|
||||
打开终端,根据你的发行版输入安装命令:
|
||||
|
||||
* **Debian/Ubuntu:** `sudo apt-get install git`
|
||||
* **Fedora:** `sudo dnf install git`
|
||||
|
||||
-----
|
||||
|
||||
## 2. 初次运行配置 (必须做!)
|
||||
|
||||
安装后,你必须告诉 Git “你是谁”。Git 在每次提交时都会记录这些信息。
|
||||
|
||||
打开你的命令行工具(Windows 用户请右键选择 **Git Bash**,Mac/Linux 用户打开**终端**),依次输入以下两行命令(注意替换为你自己的信息):
|
||||
|
||||
```bash
|
||||
# 设置你的名字 (建议使用英文名或拼音)
|
||||
git config --global user.name "Your Name"
|
||||
|
||||
# 设置你的邮箱 (建议使用你注册 GitCode 的邮箱)
|
||||
git config --global user.email "your_email@example.com"
|
||||
```
|
||||
|
||||
*验证配置是否成功:*
|
||||
输入 `git config --list`,确认你刚才输入的信息出现在列表中。
|
||||
|
||||
-----
|
||||
|
||||
## 3. Fork目标仓库 (在线操作)
|
||||
|
||||
我们需要在 GitCode 上“复制”一份练习仓库到你自己的名下。这个操作叫 **Fork**。
|
||||
|
||||
1. 打开浏览器,访问目标仓库:[https://gitcode.com/Gitconomy-Research/Git4Beginner](https://gitcode.com/Gitconomy-Research/Git4Beginner)
|
||||
2. 在页面右上角找到 **Fork** 按钮,点击它。
|
||||
3. 按照提示,选择将仓库 Fork 到你的个人账号下。
|
||||
4. 等待几秒钟,页面会自动跳转。此时,请注意浏览器地址栏,URL 应该变成了:
|
||||
`https://gitcode.com/<你的用户名>/Git4Beginner`
|
||||
*这代表你已经拥有了这个仓库的完全控制权!*
|
||||
|
||||
-----
|
||||
|
||||
## 4. Clone:将仓库下载到本地
|
||||
|
||||
现在,我们要把你云端的这个仓库“克隆”到你的电脑上。
|
||||
|
||||
1. 在你的电脑上创建一个专门放代码的文件夹,比如 `D:\Code` 或 `~/Code`。
|
||||
2. 在刚才 Fork 成功的页面上(你自己的仓库页面),找到绿色的 **“克隆”** 按钮,点击并复制 **HTTPS** 地址。
|
||||
* *地址格式类似于:`https://gitcode.com/你的用户名/Git4Beginner.git`*
|
||||
3. 回到命令行工具 (Git Bash/终端),使用 `cd` 命令进入你刚才创建的文件夹:
|
||||
|
||||
```bash
|
||||
# 例如进入 D 盘的 Code 文件夹 (Windows)
|
||||
cd /d/Code
|
||||
# 或者 (Mac/Linux)
|
||||
cd ~/Code
|
||||
```
|
||||
|
||||
5. 执行克隆命令 (粘贴你刚才复制的地址):
|
||||
|
||||
```bash
|
||||
git clone https://gitcode.com/你的用户名/Git4Beginner.git
|
||||
```
|
||||
|
||||
6. 下载完成后,进入仓库目录:
|
||||
|
||||
```bash
|
||||
cd Git4Beginner
|
||||
```
|
||||
|
||||
*恭喜你!你已经准备好开始实验了。*
|
||||
|
||||
-----
|
||||
|
||||
## 5. 新手基础实验
|
||||
|
||||
Git 的核心工作流是一个循环:**修改文件 -\> 添加到暂存区 (Add) -\> 提交存档 (Commit) -\> 推送到云端 (Push)**。
|
||||
|
||||
### 实验一:你好,世界 (创建新文件)
|
||||
|
||||
我们来创建一个属于你自己的文件并提交。
|
||||
|
||||
**Step 1: 创建文件**
|
||||
在 `Git4Beginner` 文件夹下,创建一个新的文本文件,命名为 `hello_<你的名字>.txt`(例如 `hello_guo.txt`),并在里面写上一句你想说的话,然后保存。
|
||||
|
||||
**Step 2: 查看状态 (Status)**
|
||||
回到命令行,输入:
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
*你会看到红色的文字,提示有一个 "Untracked file"(未跟踪文件),这就是你刚创建的文件。*
|
||||
|
||||
**Step 3: 添加到暂存区 (Add)**
|
||||
告诉 Git 你想让它管理这个新文件:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
```
|
||||
|
||||
*(注意:`add` 后面有一个空格和一个点 `.`,表示添加当前目录下的所有变动)*
|
||||
|
||||
**Step 4: 提交存档 (Commit)**
|
||||
将暂存区的内容正式存入版本历史,并附上一条说明信息:
|
||||
|
||||
```bash
|
||||
git commit -m "My first commit: created hello file"
|
||||
```
|
||||
|
||||
*如果成功,你会看到 `[master (root-commit) xxxxxxx] My first commit...` 这样的提示。*
|
||||
|
||||
**Step 5: 推送到云端 (Push)**
|
||||
将你本地的存档同步到 GitCode 服务器:
|
||||
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
*注意:第一次推送时,Git 会弹窗要求你输入 GitCode 的用户名和密码。输入正确后,推送即可成功。*
|
||||
*(如果看到 `100%` 和 `Done` 字样,说明推送成功!)*
|
||||
|
||||
> **验证:** 此时刷新你的 GitCode 仓库网页,你刚刚创建的文件应该已经出现在网页上了!
|
||||
|
||||
-----
|
||||
|
||||
### 实验二:修改文件
|
||||
|
||||
这次我们修改一个已有的文件。
|
||||
|
||||
**Step 1: 修改**
|
||||
用记事本或编辑器打开你刚才创建的 `hello_<你的名字>.txt`,增加一行新内容并保存。
|
||||
|
||||
**Step 2: 再次查看状态**
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
*这次你会看到提示 `modified: hello_<你的名字>.txt`,告诉你有文件被修改了。*
|
||||
|
||||
**Step 3: 提交修改三部曲**
|
||||
重复我们熟悉的操作:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Update: added a new line"
|
||||
git push
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
### 实验三:查看历史 (Log)
|
||||
|
||||
你想知道这个仓库之前发生过什么吗?
|
||||
|
||||
在命令行输入:
|
||||
|
||||
```bash
|
||||
git log
|
||||
```
|
||||
|
||||
你将看到一个详细的列表,显示了谁(Author)、在什么时间(Date)、做了什么操作(刚才 `-m` 后面的消息)。
|
||||
|
||||
*按 `q` 键可以退出查看模式。*
|
||||
|
||||
-----
|
||||
|
||||
## 恭喜!
|
||||
|
||||
你已经掌握了Git最核心的20%的功能,这足以应对 80%的日常个人开发场景。接下来,你可以尝试在 [`Git4Beginner` ](https://gitcode.com/Gitconomy-Research/Git4Beginner)仓库中进行更多的探索。
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可, © 2025 Gitconomy Research社区。
|
||||
|
|
@ -0,0 +1,715 @@
|
|||
# 第一章:开源的起源与定义
|
||||
|
||||
## 🎯 本章学习目标
|
||||
|
||||
通过本章学习,学生将能够:
|
||||
|
||||
1. 准确理解开源的定义和核心内涵
|
||||
2. 了解开源运动的历史发展脉络
|
||||
3. 认识开源与自由软件的关系和区别
|
||||
4. 理解开源对现代技术发展的重要意义
|
||||
5. 建立对开源世界的初步认知框架
|
||||
|
||||
---
|
||||
|
||||
## 💡导论:一场从代码共享到全球协作的革命
|
||||
|
||||
本章将探讨一个强大思想的起源:软件源代码应当被分享。我们将通过两条既相互独立又紧密关联的“革命”线索来追溯这一思想的演变。第一条是伦理革命,它源于一种信念,即限制知识的获取在道德上是错误的。这是自由软件运动的故事。第二条是实用主义革命,其驱动力在于人们认识到,协作式开发能够产生更优质、更可靠、更具创新性的软件。这是开源运动的故事。
|
||||
|
||||
要真正理解我们所处的数字世界,我们必须同时领会第一次革命的哲学理想和第二次革命的实践方法。它们如同同一枚硬币的两面,时而相互张力,时而相辅相成,但最终共同塑造了21世纪的技术格局。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:一场革命的基石
|
||||
|
||||
本部分旨在阐述开源运动的哲学与技术基石。开源运动并非凭空产生,而是一种早已存在的协作工程文化的顶点。这种文化后来被理查德·斯托曼(Richard Stallman)编纂为一套道德和政治哲学,并最终因Linux内核的适时出现而变得切实可行。
|
||||
|
||||
### 1.1 从“黑客文化”到自由软件运动(1970s-1980s)
|
||||
|
||||
#### 1.1.1 MIT的黄金时代:“黑客伦理”的诞生
|
||||
|
||||
开源思想的源头可以追溯到20世纪60年代的麻省理工学院(MIT),特别是在两个关键团体中:技术模型铁路俱乐部(TMRC)和MIT人工智能实验室(AI Lab)。这些地方并非现代意义上的正式研究项目,而是学术界的“温床”,在这里,一群才华横溢、充满好奇心的学生获得了前所未有的、直接接触PDP-1和PDP-10等大型主机的机会。
|
||||
|
||||
**“黑客”(hacker)**一词正是在这里诞生的。它最初的含义并非指恶意入侵者,而是指那些精通编程、并以“寓教于乐的巧妙构思”(playful cleverness)和追求技术卓越为乐的程序员[1]。一次“hack”指的是一个优雅、富有创意且常常打破常规的问题解决方案,是技术艺术性的展现。这个时代的传奇人物包括理查德·格林布拉特(Richard Greenblatt)、比尔·高斯珀(Bill Gosper)和彼得·多伊奇(Peter Deutsch)等[2]。
|
||||
|
||||
这种文化由一套不成文但影响深远的原则所支配,后来由史蒂文·利维(Steven Levy)在其1984年的开创性著作《黑客:计算机革命的英雄》中系统地阐述为“黑客伦理”[3]。
|
||||
|
||||
这种文化的精髓在于:
|
||||
|
||||
* **信息共享**:他们坚信“所有信息都应免费”。分享软件就像分享菜谱一样自然。
|
||||
* **亲手实践**:崇尚“亲手实践的准则”(Hands-On Imperative),鼓励动手创造和解决问题。
|
||||
* **精英崇拜**:崇尚的是巧妙的创造力(即 "hacks"),而非头衔或地位。
|
||||
|
||||
这些早期的黑客社区通过互联网的前身ARPANET相互连接,使得这些原本孤立的小组得以形成一个“网络部落”,共享行话、讽刺作品和共同的理念。
|
||||
|
||||
这种“黑客伦理”并非凭空产生的抽象哲学。它是一种独特的社会技术环境的直接文化产物:一方面是极其昂贵、稀缺的计算资源,另一方面是像马文·明斯基(Marvin Minsky)这样的实验室负责人做出的激进决定,即给予一小群杰出学生完全开放、不受束缚的访问权限。在20世纪60年代,一台计算机的成本高达12万美元,普通人极难接触。MIT的特殊之处在于,它拥有一些“多余的机器”,可以留给社区成员“玩耍”,这与其他机构形成了鲜明对比,在那些地方,计算机由少数操作员“神职人员”般地控制着[4]。这种独特的环境创造了一个精英管理的文化,其中唯一的通行证是技术能力,而主要目标是为了技艺本身的热爱去挑战机器的极限,而非为了商业利益。在一个小规模、高度信任、共同使用珍贵资源的社区里,囤积代码是毫无意义且会阻碍进步的。共享改进意味着整个社区的工具集都能变得更好,让每个人都受益。因此,“信息应该免费”的伦理,虽然最终升华为一项道德原则,但其根源在于特定优越环境下的现实需求。
|
||||
|
||||
#### 1.1.2 哲学的断裂:专有软件的兴起
|
||||
|
||||
到了20世纪70年代末和80年代初,计算领域发生了巨变。1969年美国政府诉IBM的反垄断案带来了一个意想不到的后果:硬件和软件被“解绑”,这催生了一个将软件作为独立商业产品的市场。公司开始将软件视为宝贵的知识产权,而非共享工具。
|
||||
|
||||
这导致了专有软件(proprietary software)的兴起。在这种模式下,源代码被视为商业机密,用户则受到限制性许可协议(如保密协议NDA)的约束,禁止共享或修改软件。这种新模式与黑客伦理背道而驰。随着人才被私营公司挖走,MIT人工智能实验室的共享文化也开始衰落。
|
||||
|
||||
|
||||
>**人物故事:斯托曼与打印机**
|
||||
>
|
||||
>这一转折点的标志性事件,可以通过理查德·斯托尔曼(Richard Stallman)在MIT人工智能实验室的经历来生动说明。实验室引进了一台新的施乐9700激光打印机,但其软件是专有的。与之前的打印机不同——斯托尔曼曾修改过旧打印机的源代码,使其能在打印完成或卡纸时自动发送通知——他被拒绝访问新打印机的源代码。这不仅仅是不便,对斯托尔曼而言,这是一种伦理上的违背。它代表了他所珍视的协作社区的毁灭,一个“不允许你共享或更改软件”的系统,他认为这是“反社会的”和“不道德的”[5]。
|
||||
|
||||
#### 1.1.3 “自由软件”的道德使命
|
||||
|
||||
为了回应这种“哲学的断裂”,斯托尔曼于1983年发起了GNU项目。其目标雄心勃勃:创建一个完整的、类似Unix的、完全由“自由软件”组成的操作系统。GNU这个名字是一个递归缩写,意为**“GNU's Not Unix”(GNU不是Unix)**,这既表明了它与当时已逐渐专有化的Unix系统兼容,又在哲学上与之对立[6]。
|
||||
|
||||
为了给GNU项目提供法律和组织上的支持,斯托尔曼在1985年成立了自由软件基金会(Free Software Foundation, FSF)。FSF的使命是为计算机用户的权利而奔走。
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可。
|
||||
FSF将“自由软件”的“自由”(free)定义为关乎自由(liberty),而非价格(price),即“言论自由”(free speech)中的自由,而非“免费啤酒”(free beer)中的免费。一个程序被称为“自由软件”,当且仅当它赋予用户四项本质自由[7]:
|
||||
|
||||
- **自由之0**: 为任何目的、以任何方式运行该程序的自由。
|
||||
- **自由之1**: 研究该程序如何工作,并根据个人需要修改它的自由。获取源代码是实现此项自由的前提。
|
||||
- **自由之2**: 随心所欲地再分发该程序副本的自由,以便帮助他人。
|
||||
- **自由之3**: 将修改后的版本分发给他人的自由。获取源代码同样是实现此项自由的前提。
|
||||
|
||||
<br>
|
||||
|
||||
为了在法律上强制执行这些自由,斯托尔曼开创了**“Copyleft”(著佐权)**的概念。通过巧妙地运用版权法(Copyright),像GNU通用公共许可证(GPL)这样的Copyleft许可证规定,任何修改和重新分发该软件的人,都必须在相同的条款下进行。这可以防止第三方获取自由软件,进行专有化修改后,再将源代码封闭起来。它利用版权法来确保软件永久保持自由。
|
||||
|
||||
自由软件运动从根本上说,是一个旨在重塑数字领域权力结构的社会和政治项目。它认为,非自由软件创造了一种不公正的权力关系,即开发者控制用户。斯托尔曼的论述始终围绕道德和伦理展开,他使用的词汇是“不道德的”、“反社会的”和“不调整了布局以避免文字重叠,并增加了区块的颜色,以提升页面的视觉效果。通过改变不同部分的背景色和优化布局,使整个图形更加清晰和富有层次公正的权力”。他强调用户的“自由”和“对自己生活的控制权”。FSF的使命明确包括倡导和教育,而不仅仅是软件开发。斯托尔曼甚至认为,在学校教授专有软件是在“植入依赖性”。这并非软件工程师在讨论开发方法,而是一位社会活动家在探讨公民自由[8]。因此,创建GNU项目不仅仅是为了编写一个新的操作系统,它更是一项政治行动,旨在创建一个“数字公地”,在这里用户是拥有权利的公民,而不仅仅是产品的消费者。代码是手段,用户的自由才是最终目的。
|
||||
|
||||
### 1.2 Linux的诞生与发展(1990s)
|
||||
|
||||
到1990年,GNU项目已经开发出了一个操作系统所需的大部分主要组件,包括编译器(GCC)、编辑器(Emacs)和调试器(GDB),但唯独缺少最关键的部分——内核(kernel)。这个空白在1991年被填补。当时,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)出于个人爱好,开始开发自己的操作系统内核,并将其命名为“Linux” 。
|
||||
|
||||
1992年,托瓦兹做出了一个历史性的决定:将Linux内核置于GNU GPLv2许可证之下发布。这一举动使得几乎完备的GNU系统得以与Linux内核相结合,从而诞生了第一个完整的、完全自由的操作系统——GNU/Linux[9]。这一结合是斯托曼长达十年愿景的现实体现,也是将自由软件理念推向广泛应用的关键事件。
|
||||
|
||||
GNU/Linux的诞生并非源于一次有计划的合作,而是历史的偶然与必然的结合。斯托曼提供了全面的哲学、法律和软件工具框架,但未能完成最关键的技术组件。托瓦兹则创造了这一组件,但他需要一个成熟的工具生态系统和像GPL这样强大的法律框架来保护他的创作。一方的成功依赖于另一方的存在,这种共生关系完美地体现了模块化、组件化开发方法的巨大威力。
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:大分裂与商业开源的崛起
|
||||
|
||||
本部分分析了该运动发生分化的关键时刻。“开源”标签是一场精心策划的营销活动,旨在通过剥离自由软件运动中带有道德色彩和反商业的言论,使其在商业世界中更易被接受。这次品牌重塑取得了巨大成功,推动了开源在产业界的大规模应用,但也在哲学层面造成了持久的分裂。
|
||||
|
||||
### 1.3 开源 vs 自由软件:理念之争(1998)
|
||||
|
||||
#### 1.3.1 **开源"概念的正式提出**
|
||||
|
||||
1998年初,正值与微软的“浏览器大战”白热化阶段,网景公司(Netscape)做出了一个战略性的商业决策:开放其旗舰产品Netscape Communicator套件的源代码。这一纯粹出于商业和实用主义动机的举动,为重新审视自由软件运动的对外宣传策略提供了契机。
|
||||
|
||||
1998年2月3日,一场战略会议在加利福尼亚州的帕罗奥图召开。与会者包括埃里克·雷蒙(Eric S. Raymond)、布鲁斯·佩伦斯(Bruce Perens)、克莉丝汀·彼得森(Christine Peterson)等人。他们认为,驱动网景公司开放源代码的“实用主义和商业案例”是吸引更广泛用户和开发者的关键。他们感到“自由软件”一词带有“不受欢迎的意识形态和政治包袱” ,并且容易被误解为“零成本” 。会上,克莉丝汀·彼得森提议使用“开源”(open source)一词,作为一个更中性、对商业更友好的替代方案。
|
||||
|
||||
此后不久,1998年2月下旬,埃里克·雷蒙和布鲁斯·佩伦斯共同创立了开放源代码促进会(Open Source Initiative, OSI)[10],作为这一新标签的管理者和倡导组织。OSI的使命是推广一种“利用分布式同行评审和透明流程力量的软件开发方法”,并承诺带来“更高的质量、更好的可靠性、更大的灵活性、更低的成本,以及终结掠夺性的供应商锁定”。
|
||||
|
||||
OSI发布了 **“开源定义 (The Open Source Definition, OSD)”**[11],OSI的定义并非凭空创造,而是直接改编自《Debian自由软件指导方针》(DFSG)。DFSG是由布鲁斯·佩伦斯和Debian社区共同制定的一套原则,用于判断哪些许可证可以被其自由操作系统接受28。《开源定义》(The Open Source Definition, OSD)本质上就是移除了Debian特定引用的DFSG。
|
||||
|
||||
OSD为软件许可证是否能被OSI认证为“开源”提供了一个十点的核对清单:
|
||||
|
||||
1. **自由再分发**: 许可证不得限制任何一方出售或赠送该软件。
|
||||
2. **源代码**: 程序必须包含源代码,或提供方便的获取途径。
|
||||
3. **衍生作品**: 必须允许修改和衍生作品。
|
||||
4. **作者源代码的完整性**: 许可证可要求修改后的版本使用不同的名称或版本号,或以补丁形式分发,以保护作者的声誉。
|
||||
5. **不得歧视任何个人或群体**。
|
||||
6. **不得歧视任何领域**: 这是关键的一点,明确禁止许可证限制商业用途。
|
||||
7. **许可证的分发**: 附加于程序的权利必须适用于所有获得该程序的人,无需执行额外的许可证。
|
||||
8. **许可证不得专属于特定产品**: 权利跟代码走,而不是跟它所属的软件包走。
|
||||
9. **许可证不得限制其他软件**: 它不能强制要求与它一同分发的其他软件也必须是开源的。
|
||||
10. **许可证必须技术中立**: 任何条款都不能基于特定的技术或接口。
|
||||
|
||||
<br>
|
||||
|
||||
《开源定义》的十项标准并非一种全新的哲学,而是对FSF“四大自由”的一次务实的、法律化的转译,旨在让企业法务部门更容易接受。FSF使用伦理语言(如“自由”、“社区”),而OSD则使用商业和法律语言(如“再分发”、“衍生作品”、“不得歧视”)。通过对比可以发现,FSF的“运行自由”(自由0)对应OSD的第5和第6条;“研究和修改自由”(自由1)对应OSD的第2和第3条;“再分发副本自由”(自由2)对应OSD的第1条;“分发修改版本自由”(自由3)则对应OSD的第3和第4条。其余条款则像是法律上的“护栏”,确保核心原则不被巧妙的许可证技巧所规避。这种战略性的重新表述,虽然在实践中达成了几乎相同的结果,但它将对话的焦点从“用户的道德权利是什么?”转移到“为了让这种开发模式有效运作,许可证必须允许什么?”,正是这一转变,为自由软件原则在企业界的大规模采纳打开了大门。
|
||||
|
||||
从“自由软件”到“开源”,这不仅是名称的改变,更是一场**市场策略的转变**,它强调技术和经济优势,而非道德责任,极大地推动了开源软件在全球范围内的普及。
|
||||
|
||||
#### 1.3.2 开源与自由软件的比较
|
||||
|
||||
自由软件与开源的核心区别在于价值观。由斯托曼领导的自由软件运动是一场关注用户自由和伦理的社会运动。斯托曼认为,专有软件是一种控制用户的不公正的权力体系,而自由本身就是一种道德价值[5]。相比之下,开源运动是一种关注实用效益的开发方法论 。正如布鲁斯·佩伦斯所说,“‘开源’是向商界推广既有的‘自由软件’概念的一场运动的正式名称” [12]。斯托曼甚至将开源称为“一场非运动”,因为它除了实用优势外,“不为任何东西呐喊”。
|
||||
|
||||
尽管两种定义几乎覆盖了同一组软件许可证,但它们的表述方式揭示了各自不同的侧重点。
|
||||
|
||||
- **FSF的四大基本自由**:聚焦于用户的权利:运行、研究、再分发和分发修改后版本的自由[5]。其语言充满了关于自由和控制的论述。
|
||||
- **OSI的开源定义(OSD)**:源自Debian自由软件指导方针(DFSG)的十点标准[。它聚焦于
|
||||
许可证的属性:自由再分发、提供源代码、允许衍生作品、不歧视任何个人或领域(包括商业用途)等 18。其语言是技术性的、宽容的,明确设计用来吸引商业用户。
|
||||
|
||||
<br>
|
||||
|
||||
自由软件 (FSF) vs. 开源 (OSI) 的详细比较:
|
||||
|
||||
| 比较维度 | 自由软件运动 (Free Software Foundation, FSF) | 开源促进会 (Open Source Initiative, OSI) |
|
||||
| :--- | :--- | :--- |
|
||||
| **主要动机** | **伦理与社会:** 核心驱动力是用户的“自由”。FSF认为,软件用户应该拥有控制自己所使用软件的权利。这是一种基于道德和社会公义的哲学理念,强调这是一种不可剥夺的权利。理查德·斯托曼将其类比为“言论自由”(Free as in speech),而非“免费啤酒”(Free as in beer)。 | **实用与技术:** 核心驱动力是务实的商业和技术优势。OSI主张,开放源代码的开发模式(透明、协作、快速迭代)能够创造出更可靠、更高质量、更安全的软件。它将重点从道德 imperative 转移到了商业价值和工程效率上。 |
|
||||
| **核心价值** | **自由 (Freedom):** 这是唯一的、最重要的价值。FSF定义的“自由”具体体现在其“四大基本自由”中,确保用户可以不受限制地运行、研究、修改和分发软件。 | **多样化的优势:** 开源的核心价值是多元的,包括但不限于:**透明度**(任何人都可以审查代码)、**可靠性**、**灵活性**、**更低的成本**以及**避免厂商锁定**。这些都是吸引企业和商业用户的关键卖点。 |
|
||||
| **关键文件** | **四大基本自由 (The Four Essential Freedoms):** 这是自由软件定义的基石。<br> - **自由 0:** 无论用户出于何种目的,都有运行程序的自由。<br> - **自由 1:** 有研究程序如何运作的自由,并能根据自身需要修改它。<br> - **自由 2:** 有再分发软件副本的自由,从而可以帮助他人。<br> - **自由 3:** 有分发你修改过的程序副本的自由,从而让整个社区有机会从中受益。 | **开源定义 (The Open Source Definition):** 这是一个用于评估特定许可证是否符合“开源”标准的一套准则,共包含十个要点,例如:<br> 1. 自由再分发。<br> 2. 包含源代码。<br> 3. 允许修改和衍生作品。<br> 4. 不得歧视任何个人或群体。<br> 5. 不得歧视任何应用领域。<br> 6. 许可证权利必须适用于所有再分发者。<br> (以及其他四点) |
|
||||
| **目标受众** | **用户和开发者社区:** FSF的宣传语言和目标更多地面向那些关心社会和伦理问题的个人用户、活动家和开发者。它强调建立一个有道德的数字社会。 | **企业、商业机构和开发者:** OSI的诞生就是为了让“自由软件”的理念更容易被商业世界所接受。它使用商业友好的语言,向企业CTO、IT经理和务实的开发者展示开源的实际好处。 |
|
||||
| **对专有软件的看法** | **不道德的,一个社会问题:** FSF认为专有(非自由)软件本质上是不公正的,因为它剥夺了用户的基本自由。它将使用专有软件视为一个需要解决的社会和伦理问题。 | **一种劣等的开发模式和竞争对手:** OSI通常将专有软件视为一种技术上和商业上较为逊色的开发模式。开源软件是与之竞争的更优选择,但并不必然从道德上谴责所有专有软件。开源可以和专有软件共存,甚至协同工作。 |
|
||||
| **关键人物** | **理查德·斯托曼 (Richard Stallman, RMS):** FSF的创始人和精神领袖。他发起了GNU项目,并撰写了最初的GPL许可证,是整个运动的奠基人。 | **埃里克·雷蒙 (Eric S. Raymond, ESR) 和 布鲁斯·佩伦斯 (Bruce Perens):** OSI的联合创始人。雷蒙的文章《大教堂与集市》为开源开发模式提供了理论基础。佩伦斯起草了《开源定义》。他们共同推动了“开源”这个术语的普及。 |
|
||||
| **许可证哲学** | **强硬的“Copyleft” (著佐权):** 强烈推崇具有“病毒性”或“传染性”的Copyleft许可证,尤其是 **GNU通用公共许可证 (GPL)**。GPL要求任何基于其代码的修改或衍生作品也必须在GPL下发布,以此来“捍卫”和“传播”自由,确保自由不会在传递过程中丢失。 | **包容与多样化:** 对许可证持更宽容的态度。OSI既认可GPL这样的Copyleft许可证,也同样推崇**宽容型许可证 (Permissive Licenses)**,如 **MIT**、**Apache** 和 **BSD** 许可证。这类许可证给予了开发者更大的灵活性,允许他们将代码用于专有软件中,这使得开源对商业应用更具吸引力。 |
|
||||
|
||||
*表:自由软件与开源的哲学及实践对比*
|
||||
|
||||
简单来说,可以这样理解:FSF是一场社会运动,其核心是一套关于用户权利和计算机伦理的哲学。它的工具是自由软件。OSI是一场营销或倡导运动,其核心是一种务实的技术开发方法论。它的目标是推广这种方法论的商业和技术优势。两者并非完全对立,实际上,几乎所有被OSI认证为“开源”的软件也都符合FSF的“自由软件”定义。它们是同一批软件的两种不同“品牌”或“视角”。开源是自由软件的“营销分支”,它成功地将自由软件的思想带入了主流商业世界,但代价是淡化了其背后强烈的道德和社会哲学。
|
||||
|
||||
从“自由软件”到“开源”,它将对话的焦点从“用户的道德权利是什么?”转移到了“为了让这种开发模式有效运作,许可证必须允许什么?” 。正是这一转变,为自由软件原则在企业界的大规模采纳打开了大门,并催生了全球性的产业采纳浪潮 。然而,这一成功的市场策略也带来了一个根本性的商业悖论:企业如何在一个其产品根据定义可以被自由使用、修改和分发的模式下,建立一个可持续的盈利性企业?
|
||||
|
||||
### 1.4 商业开源从实用主义到商业利润(2000s-现在)
|
||||
|
||||
#### 1.4.1 开源与闭源、商业软件、免费软件的辨析
|
||||
|
||||
开源的商业化之路并非坦途,而是一个不断试错、演进的战略探索过程。它并非单一的商业模式,而是随着技术环境、市场竞争和社区动态的变化而演化出的一系列阶段。
|
||||
|
||||
我们首先从系统比较开源开源与闭源,开源与商业软件、免费软件之间的差异,为进一步分析开源的商业化奠定基础。
|
||||
|
||||
1. **核心二分法:开源软件 vs. 闭源软件**
|
||||
|
||||
软件世界最根本的区别在于源代码(source code)——即程序员编写的、人类可读的指令——的可访问性20。
|
||||
|
||||
- **开源软件**(Open Source Software, OSS): 源代码是公开的。用户被授予在开源许可证条款下查看、复制、修改和重新分发代码的权利。这就像你买蛋糕时,不仅得到了蛋糕,还附赠了配方,让你能看到它是如何制作的,并可以自己动手调整。Linux、Git、VLC媒体播放器、LibreOffice、Firefox。
|
||||
- **闭源软件**(Closed Source Software))或专有软件 (Proprietary Software):源代码是商业机密,由个人或公司拥有和控制。用户只能获得编译后的、可执行的二进制文件。他们购买的是软件的使用许可,而非软件本身,并且被禁止修改或重新分发。这就像你买了一个蛋糕,却不知道它的配料,也无法自己再烤一个。例如:Microsoft Windows、Microsoft Office、Adobe Photoshop
|
||||
|
||||
这两种模式在多个维度上存在显著差异:
|
||||
|
||||
1. **控制与定制**: 开源软件为用户提供了最终的控制权,可以根据特定需求进行定制。而闭源软件则不然,用户必须依赖供应商提供更新和功能。
|
||||
2. **支持**: 闭源软件通常由供应商提供专门的、专业的支持服务。开源软件则主要依赖社区通过论坛和文档提供支持,当然,付费的专业支持服务也是其生态系统的重要组成部分。
|
||||
3. **安全**: 这是一个持续争论的焦点。开源阵营认为,“众目睽睽之下,Bug无处藏身”,更多的眼睛审查代码能更快地发现并修复漏洞。闭源阵营则认为,对代码保密能增加恶意行为者发现可利用漏洞的难度。
|
||||
4. **创新**: 开源被认为能通过全球性的、协作式的同行评审和贡献来促进更快的创新。闭源软件的创新则受限于供应商内部团队的规模和视野。
|
||||
|
||||
2. **澄清误区:商业软件与免费软件**
|
||||
|
||||
人们常常将“开源”等同于“免费”,并认为任何收费软件都必然是闭源的。这种看法是片面的,需要仔细辨析。
|
||||
|
||||
- **商业软件** (Commercial Software): 指以盈利为目的销售的软件。关键在于,商业软件既可以是开源的,也可以是闭源的。公司可以销售一款开源产品,或为其提供支持服务,也可以在一个开源项目的基础上构建自己的专有产品。自由软件基金会明确指出,一个真正的自由软件必须允许商业使用、商业开发和商业分发。
|
||||
|
||||
- **免费软件** (Freeware): 指无需付费即可使用的软件,但它仍然是专有的。其源代码不公开,用户也不享有“四大自由”。你可以免费使用它,但不能研究、修改或再分发它。Adobe Acrobat Reader是典型的例子。**必须强调:免费软件不是自由软件。**
|
||||
|
||||
3. **混合模式**
|
||||
|
||||
许多现代系统并非纯粹的单一模式:
|
||||
|
||||
- **闭源但包含开源组件**:核心产品是专有的,但它使用了各种开源库和组件。例如:苹果的macOS和iOS是专有系统,但它们建立在开源的Darwin内核之上,并包含了许多其他开源部分。
|
||||
- **基于开源的专有免费软件**:最终产品是专有的且免费,但它是一个开源项目的分支或构建版本。例如:Google Chrome是基于开源项目Chromium的专有免费软件[13]。Microsoft Edge同样基于Chromium[14]。<br>
|
||||
|
||||
4. **软件分发模式矩阵汇总**
|
||||
|
||||
为了系统地梳理这些概念,下表从多个维度对它们进行了比较:
|
||||
|
||||
| 模式 | 源代码访问权限 | 成本 | 用户权利(修改/再分发) | 典型案例 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **开源软件 (Open Source)** | **可访问**。源代码向公众开放。 | 通常免费,但也可销售。 | **是**,根据许可证规定。 | Linux, Firefox, Git, LibreOffice。 |
|
||||
| **闭源软件 (Closed Source)** | **不可访问**。源代码是商业机密。 | 可免费或付费。 | **否**。用户只获得使用许可,而非所有权。 | Microsoft Windows, Adobe Photoshop。 |
|
||||
| **商业软件 (Commercial)** | 可开源或闭源。 | 通常付费。 | 取决于许可证。 | Red Hat Enterprise Linux (开源), MS Office (闭源)。 |
|
||||
| **免费软件 (Freeware)** | **通常不可访问**。 | **免费**。 | **否**。用户不能研究或修改代码。 | WhatsApp, Google Chrome。 |
|
||||
|
||||
*表:软件分发模式对比*
|
||||
|
||||
**核心要点**:判断一个软件是否“开源”,唯一的标准就是**源代码是否开放**并遵循特定的许可协议,与它是否收费、是否用于商业目的没有必然联系。
|
||||
|
||||
#### 1.4.2 商业开源的战略演进
|
||||
|
||||
开源的商业化是一段不断演进的战略探索,旨在解决一个根本性的商业悖论:企业如何在一个其产品可被自由使用、修改和分发的模式下实现盈利。这一历程始于一场战略性的品牌重塑,即用对商业更友好的“开源”一词,替代带有浓厚道德色彩且被认为有反商业倾向的“自由软件”术语。这一由开源促进会(OSI)主导的转变,将对话焦点从用户的道德权利转移到许可证如何促进有效开发上,为企业大规模采纳开源铺平了道路。商业开源的演进大致可分为三个主要阶段。
|
||||
|
||||
1. **第一阶段:订阅与保障模型**
|
||||
|
||||
在商业开源的早期,红帽公司(Red Hat)开创了第一个被广泛验证为成功的商业模式:**订阅与保障模型**。该模式的核心在于不直接销售软件,而是销售围绕开源软件的全面企业级保障服务,满足了企业对稳定性、安全性、可预测性和可问责性的核心需求·[15]。
|
||||
|
||||
红帽的商业模式建立在一个清晰的流程之上:它首先积极参与并贡献于上游的、由社区驱动的开源项目(如 Fedora 项目),这些项目是创新的源泉,但其快速迭代的特性不适合直接用于企业生产环境。随后,红帽将这些前沿的技术成果进行筛选、整合、加固和严格测试,将其锻造成一个稳定、可靠且具有长期生命周期支持的企业级产品——红帽企业级Linux(Red Hat Enterprise Linux, RHEL)。
|
||||
|
||||

|
||||
|
||||
*图:RedHat开源商业价值实现示意图*
|
||||
|
||||
企业客户购买的并非 RHEL 软件本身,而是一份年度订阅。这份订阅是进入红帽生态系统的门票,其提供的价值远超软件代码。它包含以下核心要素:
|
||||
|
||||
- 企业级产品:将上游社区项目(如Fedora)的技术成果进行加固和严格测试,打造出具有长期生命周期支持(长达10年)的红帽企业级Linux(RHEL)。
|
||||
- 专家技术支持:提供从标准工作时间到24/7全天候的技术支持,并享有服务水平协议(SLA)保障。
|
||||
- 安全保障:拥有专门的产品安全团队持续监控和修复漏洞,并提供多项安全认证。
|
||||
- 认证生态系统:与数千家硬件、软件和云服务商合作,确保兼容性,消除风险。
|
||||
- 法律保障:为客户提供知识产权方面的法律保护,以应对潜在的专利纠纷。
|
||||
- 主动式管理工具:提供如红帽智能分析(Red Hat Insights)等工具,主动识别并修复潜在问题。
|
||||
|
||||
<br>
|
||||
|
||||
红帽模式的巧妙之处在于,它将开源软件的“免费”特性转化为了其商业模式的有力支撑。RHEL 的源代码是公开的,这催生了多个基于其源码构建的、免费的“克隆”发行版,如早期的 CentOS,以及近期的 Rocky Linux 和 AlmaLinux。这些免费替代品的存在,非但没有削弱红帽的业务,反而更加凸显了其订阅服务的价值。它向市场证明了,代码本身是一种商品,而真正稀缺且有价值的是围绕代码构建的信任、保障和专业知识体系。超过90%的财富500强企业选择为 RHEL 付费,这一事实雄辩地证明,大型企业愿意为风险规避和生产力保障支付溢价[16]。
|
||||
|
||||
| 特性/服务 | 社区版Linux (例如 Rocky Linux) | 红帽企业级Linux (RHEL) 订阅 |
|
||||
| :--- | :--- | :--- |
|
||||
| **源代码访问** | 完全可访问 | 完全可访问 |
|
||||
| **成本** | 免费 | 付费订阅 |
|
||||
| **技术支持** | 社区论坛,尽力而为 | 24/7企业级支持,服务水平协议(SLA)保障 |
|
||||
| **安全补丁** | 社区驱动,发布时间不确定 | 由专业安全团队提供,及时发布,并提供内核实时补丁 |
|
||||
| **硬件/软件认证** | 有限或无官方认证 | 拥有数千家硬件、软件和云厂商的广泛认证 |
|
||||
| **产品生命周期** | 由社区意愿决定,不确定 | 明确的10年支持生命周期 |
|
||||
| **主动式分析** | 不提供 | 提供红帽智能分析 (Red Hat Insights) |
|
||||
| **法律保障** | 不提供 | 提供开源保障计划,规避知识产权风险 |
|
||||
|
||||
*表:红帽的价值主张:超越免费软件*
|
||||
|
||||
最终,红帽的成功证明了其商业模式的独特性和难以复制性。它并非简单地销售支持服务,而是销售“生产就绪即服务”(production-readiness as a service)。它成功地将自身定位为连接混乱、快速创新的开源社区与追求稳定、安全的企业世界之间的桥梁。这一模式的护城河并非代码,而是三十年来积累的品牌信誉、庞大的生态系统以及深厚的企业客户信任。其他公司之所以难以复制红帽的成功,正是因为它们缺乏这种由时间、规模和市场时机共同铸就的无形资产[17]。
|
||||
|
||||
2. **第二阶段:开源核心的兴起**
|
||||
|
||||
随着开源在企业中的普及,以及风险投资对开源初创公司的青睐,一种新的、更具扩展性的商业模式应运而生,并逐渐成为主流——这就是“开源核心”(Open Core)模型。该模型由安德鲁·兰皮特(Andrew Lampitt)在2008年正式提出,它采取一种混合策略:提供一个功能受限的“核心”版本作为免费的开源软件,以吸引开发者、建立社区并推动广泛采用;同时,将企业级用户所需的高级功能打包成专有的“企业版”或附加组件进行销售,从而实现盈利[18]。
|
||||
|
||||

|
||||
|
||||
*图:Open Core商业模式示意图*
|
||||
|
||||
开源核心模型从根本上改变了价值主张。与红帽模型不同,它不再仅仅销售保障和支持,而是直接通过销售专有软件功能来获利。这种模式下,公司的核心竞争力从服务能力转向了产品研发能力。其典型的运作方式如下:
|
||||
|
||||
- **开源核心**(Community Edition):这部分产品是完全开源的,包含了项目的基础功能。它的主要目标是成为一个强大的市场营销和分发渠道。由于免费且开源,开发者可以无障碍地下载、使用和评估,从而在组织内部形成自下而上的“草根”采纳。
|
||||
- **专有功能**(Enterprise Edition):这部分产品是闭源的,建立在开源核心之上,并增加了满足大型企业需求的特定功能。这些功能通常围绕着可扩展性(Scalability)、可靠性(Reliability)、安全性(Security)、可管理性(Manageability)和合规性(Compliance)等方面。
|
||||
- **商业化路径**:当开发者在个人项目或小型团队中成功使用开源核心后,随着应用规模的扩大和在企业内部重要性的提升,他们会自然而然地遇到开源核心无法满足的需求,例如需要单点登录(SSO)、高级权限控制、审计日志、高可用性集群或专业的支持服务。此时,这些已经对产品产生依赖的开发者便会成为企业内部的拥护者,推动公司购买包含这些功能的企业版。<br>
|
||||
|
||||
这种模式本质上是一种高效的、以开发者为中心的“免费增值”(Freemium)市场进入策略。它巧妙地利用了开源社区作为其市场漏斗的顶端,以极低的边际成本获取了海量用户,并将这些用户转化为通向企业级销售的内部渠道[19]。
|
||||
|
||||
|
||||
>**案例分析:GitLab**
|
||||
>
|
||||
>GitLab 是开源核心模型的典范。它最初提供两个独立的发行版:社区版(Community Edition, CE)和企业版(Enterprise Edition, EE)。如今,它已统一为单一代码库,通过不同的许可证层级(Free、Premium、Ultimate)来控制功能的开放[20]。
|
||||
>
|
||||
>1. Free Tier (免费层):提供完整的 DevOps 平台核心功能,包括源代码管理(SCM)、持续集成/持续交付(CI/CD)、问题跟踪等,足以满足个人开发者和小型团队的需求。
|
||||
>2. Premium Tier (高级层):在免费版的基础上,增加了企业在扩大团队和项目规模时需要的功能,如高级CI/CD、发布控制、企业级敏捷规划和优先支持。
|
||||
3>. Ultimate Tier (旗舰层):面向大型和受监管的企业,提供了最全面的功能集,重点在于高级安全测试(SAST、DAST)、软件供应链安全、合规性管理和价值流管理。
|
||||
>
|
||||
>GitLab的功能分层策略清晰地展示了开源核心的商业逻辑:核心功能免费,以建立用户基础和社区;而那些能够直接解决企业管理、安全和合规痛点的功能则被置于付费墙之后,成为驱动收入增长的核心引擎。
|
||||
|
||||
>**案例分析:MongoDB**
|
||||
>
|
||||
>MongoDB是另一个成功运用开源核心模型的例子,尽管其核心许可证(SSPL)已不被OSI认可(详见下一节)。它提供了一个免费的、源码可用的社区版(Community Edition),适用于开发、原型设计和学习。而其商业产品MongoDB Enterprise Advanced则通过订阅模式提供了企业在生产环境中大规模部署所必需的关键功能:
|
||||
>
|
||||
>1. 高级安全:社区版只提供基本的认证和授权,而企业版则支持与企业现有安全设施集成的 Kerberos 和 LDAP 认证、静态数据加密(Encryption at Rest)以及全面的审计功能 。
|
||||
>2. 管理与运维工具:企业版订阅包含了强大的运维管理平台 Ops Manager,可以实现自动化部署、监控、备份和恢复,极大地降低了运维复杂性。
|
||||
性能与扩展:企业版提供了内存存储引擎(In-Memory Storage Engine)等高性能选项,以及更高级的扩展和管理能力。
|
||||
>3. 专业支持:企业订阅提供24/7的专业技术支持和SLA保障,这是社区版所不具备的。
|
||||
>
|
||||
>通过将这些对企业至关重要的功能设为专有,MongoDB成功地构建了一条从免费社区版到付费企业版的清晰升级路径,使其成为数据库市场的主导力量之一[21]。
|
||||
|
||||
总而言之,开源核心模型代表了商业开源的第二次重大演进。它将商业化的重心从服务转移到了产品本身,创造了一种可复制且对风险投资极具吸引力的商业模式。通过利用开源社区进行市场推广和用户获取,这些公司能够以远低于传统企业软件厂商的成本实现快速增长,并成功地将开发者社区的忠诚度转化为可观的商业收入。
|
||||
|
||||
3. **第三阶段:防御浪潮 —— 应对云服务商商品化的新许可证**
|
||||
|
||||
开源核心模型的成功依赖于一个关键前提:开源项目的商业维护者是其企业级功能的主要或唯一提供商。然而,21世纪10年代以来,大型公有云服务提供商(尤其是亚马逊网络服务,AWS)的崛起,对这一前提构成了直接的、甚至是生存性的威胁。这催生了商业开源的第三个发展阶段——一个以防御为主要目的、以创造新型限制性许可证为特征的“防御浪潮”。
|
||||
|
||||
**催化剂:“佃农”问题**
|
||||
|
||||
这一冲突的核心被形象地称为“佃农”(Tenant Farmer)或“云端掠夺”(Strip-Mining)问题。其模式如下:大型云服务商利用其规模、运营和生态系统优势,将广受欢迎的开源项目(通常是开源核心模型的“核心”部分)包装成一个易于使用、高度可扩展的“即服务”(as-a-service)产品,直接向终端用户销售。在这个过程中,云服务商获取了绝大部分的商业利润,但却很少或完全不对上游的开源项目做出实质性的代码贡献或财务支持[22]。
|
||||
|
||||
对于开源核心公司而言,这无异于釜底抽薪。它们投入巨额研发资金维护和发展开源项目,而云服务商则利用这些成果,摇身一变成了它们最强大的竞争对手。云服务商不仅截断了开源公司向企业版转化的潜在客户流,还利用其平台优势提供了更具吸引力的集成体验,从而将开源项目的价值商品化[23]。
|
||||
|
||||
>**案例分析:AWS与Elastic的冲突**
|
||||
>
|
||||
>这一矛盾的典型案例是AWS与Elastic公司之间的长期争端。Elastic公司是Elasticsearch(一个流行的搜索和分析引擎)和Kibana(一个数据可视化工具)的主要开发者。最初,这些核心产品都采用极其宽松的Apache 2.0许可证发布。AWS 抓住了这个机会,推出了“Amazon Elasticsearch Service”,一个基于 Elasticsearch的托管服务。
|
||||
>
|
||||
>Elastic公司认为,AWS的行为不仅是在“掠夺”其研发成果,还通过使用“Elasticsearch”这一名称造成了严重的市场混淆,让许多用户误以为AWS的服务得到了 Elastic 官方的支持。Elastic声称,尽管多次尝试与AWS沟通合作,但AWS几乎没有对项目做出有意义的贡献,反而只是将其作为盈利工具。
|
||||
>
|
||||
>这场冲突在2021年1月达到顶峰。Elastic宣布,将不再在Apache 2.0许可下发布新版本的 Elasticsearch和Kibana,转而采用一种双重许可模式:服务器端公共许可证(Server Side Public License, SSPL)和Elastic许可证。这一举动旨在从法律上阻止AWS等云服务商继续提供其托管服务[24]。作为回应,AWS宣布将基于 Elasticsearch和Kibana最后一个Apache 2.0 许可的版本创建一个分支(fork),并将其命名为 OpenSearch。此举得到了社区中一部分坚持纯粹开源理念的用户的支持,但也导致了社区的分裂。
|
||||
|
||||
这场公开的决裂,标志着商业开源公司与云巨头之间的矛盾已经不可调和,并开启了一场围绕许可证的“军备竞赛”。
|
||||
|
||||
**应对策略:一场许可证的军备竞赛**
|
||||
|
||||
为了应对云服务商的威胁,一系列新的、具有限制性的“源码可用”(source-available)许可证应运而生。这些许可证虽然公开了源代码,但明确违反了《开源定义》中的一条或多条原则,特别是“不得歧视任何应用领域”(OSD 第6条)。它们是有意为之的商业武器,旨在保护开源公司的商业模式。
|
||||
|
||||
- **Commons Clause** (公共条款):这是由 Redis Labs 在2018年推动的早期尝试。它并非一个独立的许可证,而是一个可以附加在现有开源许可证(如 Apache 2.0)之上的“附加条款”。其核心内容是禁止“销售”该软件,而“销售”的定义被明确扩展到包括提供托管或咨询服务[25]。这一做法引发了开源社区的巨大争议,批评者认为它通过模糊的措辞污染了“开源”的定义。由于社区的强烈反对和实际效果不佳,Redis Labs 最终放弃了Commons Clause。
|
||||
|
||||
- **服务器端公共许可证** (Server Side Public License, SSPL):由 MongoDB 首创,并被 Elastic 采纳,SSPL 是一种更具攻击性的许可证。它基于 AGPL v3,但在第13节增加了一个关键条款:如果一个实体将受 SSPL 许可的软件作为服务向第三方提供,那么该实体必须在 SSPL 许可下,公开发布其“服务源代码”。“服务源代码”被宽泛地定义为包括管理软件、用户界面、API、自动化、监控、备份、计费等所有支持该服务运行的软件源码 [26]。这一条款被称为“毒丸”,因为它使得云服务商几乎不可能遵守该许可证——除非他们愿意将自己庞大而专有的云管理平台完全开源。正因为如此,OSI 明确拒绝承认 SSPL 为开源许可证,认为它歧视了“提供云服务”这一应用领域 。
|
||||
|
||||
- **商业源代码许可证** (Business Source License, BSL):由 MariaDB 的创始人 Michael "Monty" Widenius 提出,并被 HashiCorp 等公司采纳,BSL 是目前最新的、也可能是最务实的一种折衷方案。BSL 是一种源码可用许可证,它允许自由复制、修改和分发,但明确禁止在生产环境中用于提供与软件许可方相竞争的商业产品[27]。BSL 的核心创新在于其“自动转换”条款:它规定在一个预设的“变更日期”(Change Date,最长不超过四年)之后,该版本的软件许可证将自动转换为一个真正的、OSI 批准的开源许可证(如 GPL v2.0 或其兼容许可证)。这一设计为软件开发者提供了一个有时限的商业保护期,以确保其在产品生命周期的早期获得商业回报,同时向社区承诺该软件最终将回归开源公地。这可以被视为在商业可持续性与开源精神之间寻求的一种动态平衡。
|
||||
|
||||
这一系列许可证的演变,标志着商业开源世界的一次深刻裂变。它将 OSI 所定义的、哲学上纯粹的“开源”与在云时代下,企业为了生存而必须采取的、务实的“源码可用”商业模式区分开来。这些公司正在做出一个清醒的战略选择:为了保护其核心商业模式免受云巨头的侵蚀,它们愿意放弃 OSI 官方的“开源”认证。这不仅是一场法律和商业的博弈,更是一场关于在21世纪“开放”一词究竟意味着什么的定义权之争。
|
||||
|
||||
| 许可证 | 创始者/主要推动者 | 核心限制机制 | 最终开源状态 | OSI 是否批准? |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **Commons Clause** | Redis Labs | 附加条款,禁止“销售”(包括作为服务提供)软件。 | 不改变,依赖于基础许可证。 | 否 |
|
||||
| **Server Side Public License (SSPL)** | MongoDB | 如果作为服务提供,必须在SSPL下开源整个服务栈(管理、监控、计费等)。 | 永久为SSPL,不会自动转换为其他许可证。 | 否 |
|
||||
| **Business Source License (BSL)** | MariaDB / HashiCorp | 禁止在生产环境中用于提供与许可方竞争的产品或服务。 | 是,在“变更日期”(最长4年)后,自动转换为一个GPL兼容的开源许可证。 | 否 |
|
||||
|
||||
*表:现代源码可用许可证分类比较*
|
||||
|
||||
#### 1.4.3 开源基金会的角色与影响
|
||||
|
||||
随着开源项目规模的扩大和参与者的多样化(包括个人开发者、企业乃至竞争对手),一个非正式的组织结构变得难以为继。为了确保项目的长期可持续性、中立性和健康发展,开源基金会应运而生,成为现代开源生态系统中不可或缺的制度性支柱 。这些非营利组织为开源项目提供了关键的法律、财务和治理基础设施,使开发者能够专注于技术创新 。
|
||||
|
||||
开源基金会的核心作用体现在以下几个方面:
|
||||
|
||||
1. **中立的治理与管理**:基金会为项目提供了一个中立的家园。这意味着项目的知识产权(如商标和代码库)由基金会持有,而非任何单一的公司或个人 。这种中立性至关重要,它鼓励了来自不同背景甚至相互竞争的公司的开发者进行合作,因为他们相信没有任何一方能够单方面控制项目的未来 。在商业公司放弃开源承诺(即“rug pull”)的时代,基金会的治理承诺为用户和贡献者提供了宝贵的信任保障 。
|
||||
2. **法律与知识产权保护**:基金会为项目提供专业的法律支持,处理复杂的许可证合规性、商标保护和专利问题 。它们帮助项目选择合适的开源许可证,并为贡献者提供法律保护,使他们免受潜在的法律风险 。
|
||||
3. **财务与资源可持续性**:基金会通过企业会员费、捐赠和赞助等方式为项目筹集资金,用于支持基础设施、组织活动、雇佣核心维护人员等,从而确保项目的财务可持续性 。
|
||||
4. **社区建设与生态系统发展**:基金会通过组织会议(如 KubeCon)、提供培训和认证、开展市场推广等活动,积极培育和扩大项目的社区 。它们为用户、开发者和商业伙伴提供了一个交流和协作的平台,促进了整个生态系统的繁荣。
|
||||
|
||||
|
||||
> **典范案例:**
|
||||
>1. Apache软件基金会 (ASF):成立于1999年,是历史最悠久的开源基金会之一 。它以其独特的、基于精英制的治理模式——“ The Apache Way”——而闻名,强调社区驱动、共识决策和务实的商业友好许可证(Apache License)。ASF托管了数百个对全球技术基础设施至关重要的项目,如Apache HTTP Server和Kafka。
|
||||
>
|
||||
>2. Linux基金会(LF):成立于2007年,由两个早期组织合并而成,其最初使命是保护和标准化 Linux 。如今,它已发展成为一个“ 基金会的基金会”,为众多关键的开源项目提供了一个伞形组织,涵盖了从云原生、网络到人工智能的各个领域 。
|
||||
>
|
||||
>3. 云原生计算基金会(CNCF):作为 Linux 基金会的一部分,CNCF成立于2015年,当时谷歌将 Kubernetes项目捐赠给了该基金会。CNCF的使命是“让云原生计算无处不在”,它通过托管Kubernetes、Prometheus和Envoy等一系列关键项目,成功地围绕云原生技术构建了一个充满活力的、厂商中立的生态系统 。
|
||||
|
||||
总而言之,开源基金会是现代开源生态系统的制度性基石。它们通过提供中立的治理、法律保护和资源支持,解决了大型协作项目所面临的复杂挑战,确保了开源项目能够超越个人或单一公司的生命周期,成为可持续的、可信赖的数字公共基础设施。
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:“开放”运动——开源精神的延伸
|
||||
|
||||
本部分探讨了开源哲学在软件领域之外的深远影响。它展示了透明、协作开发和自由再分发等核心原则如何被应用于物理对象、教育、科学研究和全球发展等领域,从而催生了一场更广泛的“开放”运动。
|
||||
|
||||
### 1.5 开源理念推动知识共享的进步
|
||||
|
||||
开源软件所倡导的透明、协作和用户自由的原则,其力量和有效性已经远远超出了代码的范畴。开源的理念、精神与方法已经成为一种可供借鉴的蓝图,被成功地延伸至物x理对象、教育、科学探究和全球发展等多个领域。这一扩展标志着一场深刻的范式转移,它将“源代码”的隐喻应用于我们物理世界、知识体系和社会进步的基石之上,催生了更广泛的“开放”运动。
|
||||
|
||||

|
||||
|
||||
*图:开放运动的演变*
|
||||
|
||||
1. **开源硬件**:从代码到物理对象的自由创造
|
||||
|
||||
开源硬件(Open Source Hardware, OSH)是开源精神在物理世界中的延伸。不同于软件领域,硬件产品的“源代码”表现为设计文件,如电路图、机械制图和材料清单。通过公开这些设计文件,任何人都可以研究、修改、制造甚至销售相关的硬件产品[28]。这种转变,不仅改变了传统的硬件开发流程,还极大地降低了进入门槛。以Arduino为例,作为开源硬件平台的代表,它让全球的开发者和创客能够以极低的成本创造复杂的电子产品,从而激发了“创客运动”的蓬勃发展。这一现象表明,开源不仅限于虚拟世界,它同样在推动实体制造的民主化,赋予每个人成为创造者的可能。
|
||||
|
||||

|
||||
|
||||
*图:开源硬件模式关键要素*
|
||||
|
||||
2. **开放教育资源**:知识的普惠与再分发
|
||||
|
||||
开放教育资源(Open Education Resource, OER)将开源精神引入了教育领域。OER指的是那些可以自由访问、使用、修改和再分发的教学、学习和研究材料。这些资源通常依据开放许可发布,使得全球的学习者可以自由地使用和改编[29]。例如,MIT OpenCourseWare(MIT OCW)便是OER的开创性示范,向全世界开放了MIT的课程材料和讲义。OER的核心在于“5R”原则:保留、重用、修改、混合和再分发,这一理念挑战了知识的所有权和教育资源的封闭性。它使得优质教育不再是少数人的专属,而是变成了全球范围内每一个人的共享财富。随着OER的推广,我们看到了教育不平等的有效回应,也预示着教育领域的结构性改革。
|
||||
|
||||

|
||||
|
||||
*图:开放教育5项基本原则*
|
||||
|
||||
3. **开放科学**:透明与可复现的科研新模式
|
||||
|
||||
开源精神在科学研究中的延伸,催生了“开放科学”(Open Science)运动。这一理念主张科研过程的开放性与透明度,从研究设计、数据收集、实验结果到最终的论文发布,都应当以可公开的形式进行共享。开放科学的核心目标是让科学研究更加透明、可复现并且易于获取,这有助于提升科研的质量和效率[30]。以Plan S为代表的开放获取倡议,推动了全球范围内科研出版的重大变革,打破了传统学术出版的付费墙,提倡开放获取数据与成果。随着开源数据的广泛使用,科学界正朝着一个更加稳健、透明和高效的方向发展,科研成果的共享促进了全球合作与创新。
|
||||
|
||||

|
||||
|
||||
*图:开放科学的关键特征*
|
||||
|
||||
4. **数字公共产品**:全球发展中的开源战略
|
||||
|
||||
数字公共产品(Digital Public Goods, DPG)是开源精神在全球发展领域的最新体现。联合国定义数字公共产品为那些有助于实现可持续发展目标(SDGs)的开源软件、数据、AI模型、开放标准和内容。DPG不仅仅是技术的开源,更是为全球特别是中低收入国家提供了一个可以自由使用、修改和定制的数字基础设施框架[31]。DHIS2,一个全球被超过75个国家用于公共卫生管理的开源平台,就是DPG的典型代表。DPG的提出,表明全球技术合作正走向一个更加开放的阶段。通过这一模型,开源为全球范围内的数字基础设施建设提供了一个可行且高效的路径,避免了技术依赖与技术锁定,为全球发展带来了更多公平与机会。
|
||||
|
||||

|
||||
|
||||
*图:数字公共产品的关键特征*
|
||||
|
||||
跨越这些不同领域的开放运动,我们可以识别出共同的动力和连接点:
|
||||
|
||||
1. **共同目标**:各开放运动都致力于通过知识共享和协作创造更大的社会价值 ;
|
||||
2. **相互影响**:一个领域的创新往往推动其他领域的发展(如Git的版本控制推动开放科学中的可复现性);
|
||||
3. **重叠社区**:参与者经常跨越不同开放领域(如从开源软件到开源硬件);
|
||||
4. **共享挑战**:可持续商业模式、质量保证和监管合规等挑战在各开放领域中普遍存在;
|
||||
5. **协同解决方案**:跨领域合作创造更全面的开放生态系统。<br>
|
||||
|
||||
开源精神的推广,已经不仅仅是技术革新,更是一种新的社会运动。从硬件制造到教育资源,再到科学研究和全球发展,开源所倡导的自由、共享、合作和透明的价值观,不仅推动了技术的创新,还帮助我们重构了全球合作与知识共享的体系。开放运动的成功证明,创新并不局限于技术的更新换代,它同样体现在思想的碰撞与共享之中。在这个充满挑战和机遇的时代,开源已不再是少数人的专利,它正在塑造更加开放、合作和公平的未来。
|
||||
|
||||
### 1.6 开放运动的融合与演变
|
||||
|
||||
开放运动正以前所未有的广度和深度,在全球范围内经历一场深刻的变革。从最初的开源软件,其核心理念已渗透至科学研究、数据共享、教育、硬件制造乃至全球性挑战的解决方案中。如今,一个更加融合、制度化和智能化的开放新时代正在来临,其特点是跨领域生态系统的形成、主流机构的广泛采纳、治理模式的创新以及与人工智能(AI)的深度交织。
|
||||
|
||||
1. **开放创新生态系统:融合与共生的网络**
|
||||
|
||||
单一领域的开放实践正逐渐汇合成一个相互关联、相互支持的创新网络。开源软件是这一生态系统的基石,它不仅为各行各业提供了坚实的技术基础,也为开放科学研究提供了强大的工具。例如,开源的计算框架(如TensorFlow、PyTorch)和数据处理工具(如Pandas、Jupyter Notebooks)已成为现代科学研究不可或缺的一部分。
|
||||
|
||||

|
||||
|
||||
*图:开放运动生态的融合与共生网络*
|
||||
|
||||
这种融合产生了积极的连锁反应:
|
||||
|
||||
- 开源软件促进了开放科学的发展,使研究过程更加透明和可复现。
|
||||
- 开放的科研过程产生了大量的开放数据,这些数据反过来又成为新的科学发现和AI模型训练的宝贵资源。
|
||||
- 开放数据和开源工具共同推动了开放教育的普及,全球学习者得以免费获取高质量的知识和技能。
|
||||
- 最终,这种开放的循环延伸至物理世界,催生了 开放硬件 的创新,如Arduino和RISC-V架构,使得硬件设计和制造的门槛大大降低。
|
||||
|
||||
2. **制度化与主流化:从边缘走向核心**
|
||||
|
||||
开放原则正从过去的边缘化、草根性实践,转变为被全球政府、顶尖企业和核心科研机构采纳的核心战略。
|
||||
|
||||
在政府层面,越来越多的国家和地区出台政策,鼓励或强制要求公共资助的研究成果(包括论文和数据)以开放获取的形式发布。政府机构也日益成为开源软件的消费者和贡献者,以提升公共服务的效率和透明度。
|
||||
|
||||
在企业界,曾经对开源持怀疑态度的大型科技公司,如今已成为开源生态系统的主要驱动力。它们纷纷成立开源项目办公室(OSPO),主导或深度参与关键开源项目的开发,并将其作为吸引人才、加速创新和构建技术生态的核心战略。
|
||||
|
||||
学术界和产业界开始重新审视贡献的价值,将开发和维护开源工具、共享数据集等开放贡献,纳入正式的职业评估和晋升标准中,认可其对科技进步的实质性推动作用。
|
||||
|
||||
3. **开放治理模式:探索可持续的协作机制**
|
||||
|
||||
随着开放社区的规模和复杂性不断增加,探索更有效、更公平的治理和决策机制成为关键议题。传统的“仁慈的独裁者”或核心团队维护模式,正在向更加多元化和去中心化的方向发展。
|
||||
|
||||
- **新型治理工具**:区块链和分布式账本技术为开放协作提供了新的可能性。通过智能合约和去中心化自治组织(DAO),社区可以探索更为透明和自动化的资金分配、决策投票和贡献激励机制。
|
||||
|
||||
- **混合商业模式**:为了平衡开放性与项目的可持续发展,各种创新的商业模式应运而生。这包括“开源核心”(Open Core)模式(基础功能开源,高级功能收费)、提供专业技术支持、托管服务(SaaS)以及通过社区捐赠和基金会资助等,确保了开源项目能够获得持续的维护和发展动力。
|
||||
|
||||
4. **AI与开放运动的交织:重塑创新范式**
|
||||
|
||||
人工智能的崛起,特别是大语言模型(LLM)的突破,为开放运动注入了新的活力,同时也带来了新的挑战。
|
||||
|
||||
以Llama、Mistral等为代表的开源大语言模型,打破了少数科技巨头在AI领域的垄断,极大地降低了开发者和研究人员使用、定制和构建先进AI应用的门槛。这种开放性正在催生大量针对特定领域和语言文化的创新应用,加速了AI技术的普及和迭代。
|
||||
|
||||
AI工具在开放内容的创建、翻译和改编方面展现出巨大潜力。机器翻译技术使得知识能够跨越语言障碍,而内容生成工具则可以辅助教育工作者和研究人员快速创建多样化的开放教育资源。
|
||||
|
||||
5. **面向全球挑战的开放解决方案**
|
||||
|
||||
面对气候变化、公共卫生危机等复杂且紧迫的全球性挑战,跨国界、跨领域的开放协作变得至关重要。开放的精神和模式为此提供了理想的框架。
|
||||
|
||||
以开放气候(Open Climate)与公共卫生为例子,在应对气候变化的斗争中,“开放气候”等新兴领域正在形成。科研人员、数据科学家和环保组织通过共享气候模型、开放环境监测数据和共同开发减排技术,来加速解决方案的寻找。同样,在新冠疫情期间,全球科学家通过开放共享病毒基因序列、研究数据和临床试验结果,以前所未有的速度推进了疫苗和疗法的研发。
|
||||
|
||||
| 领域 | 理念的延伸 | 精神与方法 | 意义与影响 |
|
||||
| ------- | -------------------------- | ------------------------------ | ----------------------- |
|
||||
| 开源硬件 | 产品设计文件(电路图、机械制图、材料清单) | 协作改良的精神应用于硬件设计,推动法律框架适应专利法 | 民主化实体制造,降低硬件设计门槛,激发创客运动 |
|
||||
| 开放教育资源 | 教学材料的开放许可发布 | 知识普惠,遵循“5R”原则(保留、重用、修改、混合、再分发) | 打破教育壁垒,全球共享优质教育资源 |
|
||||
| 开放科学与研究 | 研究过程与成果透明,遵循开放获取和开放数据原则 | 追求科研的可靠性和协作性,推动全球创新 | 加速科研创新,推动科研领域的可复现性改革 |
|
||||
| 数字公共产品 | 开源软件、开放数据、开放AI模型等支持可持续发展目标 | 提供全球公平和数字主权的基础设施 | 为中低收入国家提供数字基础设施,促进全球合作 |
|
||||
|
||||
*表:“开放”生态系统的演变*
|
||||
|
||||
总体而言,开放运动正从单一的技术实践演变为一个复杂的、多层次的全球现象。它通过构建一个相互连接的创新生态系统,被主流社会广泛接纳,并不断探索适应未来的治理结构。与AI的深度融合以及在全球挑战面前展现出的巨大潜力,预示着开放运动将在未来的全球创新与协作中扮演愈发核心的角色。
|
||||
|
||||
## 第四部分:当代挑战——在人工智能时代定义开放
|
||||
|
||||
本章课程的最后一部分探讨了开放运动当前最具争议的前沿领域——人工智能,特别是大型语言模型(LLM),从根本上挑战了“源”的传统定义,迫使人们重新评估一个复杂、数据驱动的系统要实现真正的“开放”意味着什么。围绕Meta公司Llama模型的争论,正是这场现代冲突的完美案例。
|
||||
|
||||
### 1.7 AI开源的定义与争论
|
||||
|
||||
1. **OSI的“开源AI定义”(OSAID)**
|
||||
|
||||
传统开源软件的定义是基于对其源代码的访问,源代码是构建程序的完整配方 。然而,人工智能系统,特别是机器学习模型,则有所不同。它们的行为不仅由代码决定,还取决于三个核心组成部分:
|
||||
|
||||
- 模型架构(代码)
|
||||
- 训练后的模型权重(参数)
|
||||
- 训练数据
|
||||
|
||||
这就引出了一个核心问题:对于一个AI系统来说,什么是“用于修改的首选格式”?仅仅发布代码就足够了吗?还是权重?或者必须包含数据? 。
|
||||
|
||||

|
||||
|
||||
*图:开源软件定义(OSD) vs 开源AI定义(OSAID)*
|
||||
|
||||
为应对这场危机,OSI一直在制定一份开源AI的定义草案 。该草案(v1.0)[32]指出,一个AI系统要被认为是真正开放的,必须提供所有必要的组件,以便一个有技能的人能够“重建一个基本等效的系统” 。这明确包括:
|
||||
|
||||
- **代码**:用于训练、推理、数据处理等的源代码。
|
||||
- **参数**:模型权重和其他配置设置。
|
||||
- **数据信息**:关于训练数据的足够详细的信息,包括其来源、范围、特征以及处理方式 。这并不一定要求发布原始数据本身(如果因隐私等原因受到限制),但要求对其保持透明 。
|
||||
|
||||
2. **“开放权重”与真正开源的争论**
|
||||
|
||||
如今,许多模型以“开放权重”(open weight)的形式发布,即模型参数可供公众下载和微调,但训练数据和大部分训练代码仍然是专有的 。这种做法促进了技术的普及和定制化,但妨碍了完全的可复现性以及对隐藏在训练数据中偏见的审计 。这引发了一场争论:“开放权重”是一种合法的开放形式,还是一个会稀释“开源”含义的误导性术语? 。其核心矛盾在于创新与准入的渴望同透明、安全与问责的需求之间的紧张关系 。
|
||||
|
||||
>**案例研究:围绕Meta Llama的争议**
|
||||
>
|
||||
>Meta公司积极地将其Llama系列模型(Llama 2, Llama 3, Llama 4)宣传为“开源” 。然而,OSI和FSF都强烈反对这一说法,这使其成为检验开放定义的一个备受瞩目的现代案例。
|
||||
>
|
||||
>Llama社区许可证:Llama的许可证是一份自定义的法律协议,而非OSI批准的许可证[33]。它包含多个违反开源定义的条款:
|
||||
>
|
||||
>1. 歧视个人或团体(OSD第5条):它限制月活跃用户超过7亿的公司使用,要求它们向Meta申请特殊的商业许可。这是一个旨在针对谷歌等竞争对手的反竞争条款 。
|
||||
>2. 歧视特定应用领域(OSD第6条):该许可证包含一份“可接受使用政策”,禁止将Llama用于某些活动,如生成非法内容或用于关键基础设施 。虽然表面上看似合理,但这违反了开源软件可用于任何目的的原则。FSF认为,这赋予了Meta本应由民主选举的政府通过立法行使的权R力 。
|
||||
>3. 限制用于改进其他模型:许可证明确禁止使用Llama或其输出来“改进任何其他大型语言模型”(Llama本身除外)。这直接违背了开源核心的协作改进精神。
|
||||
>OSI与FSF的立场:两个组织都明确表示,Llama许可证不是一个开源许可证 。他们认为Meta在进行“开放洗白”(openwashing)——即利用“开源”的正面品牌形象,为一个专有的、限制性的许可证谋求市场优势和商誉,而实际上并未授予该术语所蕴含的真正自由 。
|
||||
|
||||
关于AI开放性的辩论,实际上是最初自由软件与开源之争的重演,但争议性更大。正如OSI为商业创造了一个实用主义的定义一样,像Meta这样的公司现在也为AI创造了“实用主义”的许可证,它们提供了一定程度的开放性(权重),同时保留了战略控制(数据、使用限制)。这迫使社区必须决定,“开放”这个标签是否可以被延伸以适应这些新的混合模式,或者必须划定一条严格的界线来维护其原有含义。这场关于Llama的争议不仅仅是关于一家公司的许可证,它是一场在AI时代为“开源”的定义本身而战的斗争。
|
||||
|
||||
此外,这场辩论也标志着“源”的概念从“源代码”向“真理之源”的转变。在传统软件中,源代码就是真理的来源。而在AI中,训练数据是模型知识、偏见和行为的最终来源。因此,关于是否发布训练数据的争论,实际上是关于透明度和问责制的争论。一个没有数据透明度的“开放权重”模型是一个黑箱;我们可以使用它,但我们无法完全理解或信任它为何如此行事。OSI的定义草案中对数据透明度的强调,正是为了确保开源AI不仅可用,而且可审计、可信赖。
|
||||
|
||||
## 第五部分:互动与讨论
|
||||
|
||||
💡 **破冰活动:“我们身边的开源”**
|
||||
|
||||
为了将理论与实践相结合,本次互动旨在揭示本章所讨论的“开源”、“闭源”及“混合模式”等抽象概念,并非遥远的专业议题,而是深深植根于我们日常使用的数字工具之中。
|
||||
|
||||
活动流程如下:首先,请同学们说出自己最常使用的网页浏览器、移动或桌面操作系统、办公套件以及即时通讯应用。然后,教师将根据同学们的回答,在白板或幻灯片上进行分类,并揭示它们各自的源代码模式。这将引导我们进行一场深入的讨论:为什么像谷歌这样的公司会选择在一个开源项目的基础上构建其专有的Chrome浏览器?苹果公司在其闭源的macOS中使用开源组件又能获得什么好处?此外, 华为鸿蒙操作系统中如何运用开源技术,以及这种结合如何帮助他们实现自有操作系统的生态建设和差异化竞争?
|
||||
|
||||
讨论要点与实例分析样例:
|
||||
|
||||
| 类别 | 软件/系统 | 模式与描述 |
|
||||
| :--- | :--- | :--- |
|
||||
| **网页浏览器** | Google Chrome | 专有的免费软件,但它建立在谷歌维护的开源项目[Chromium](https://www.chromium.org/chromium-projects/)之上[13]。 |
|
||||
| | Mozilla Firefox | 一个纯粹的开源项目,由社区志愿者构建,并由[Mozilla基金会](https://www.mozillafoundation.org/en/)管理[34]。 |
|
||||
| | Microsoft Edge | 专有软件,但现在也基于开源的Chromium项目构建[35]。 |
|
||||
| | Apple Safari | 专有软件,但它建立在开源的WebKit浏览器引擎之上[36]。 |
|
||||
| **操作系统** | Android | 其核心,即安卓开放源代码项目[(AOSP)](https://source.android.com/),是开源的。然而,绝大多数手机上运行的安卓系统版本是专有的,因为它包含了闭源的谷歌移动服务(GMS)[37]。 |
|
||||
| | Apple iOS & macOS | 两者都是专有的闭源操作系统,但它们的核心——一个名为Darwin的内核——是由开源组件构建的[38]。 |
|
||||
| | Microsoft Windows | 经典的闭源、专有操作系统。尽管近年来微软大规模拥抱开源,但Windows本身仍然是专有的[39]。 |
|
||||
| | 华为鸿蒙操作系统 (HarmonyOS) | 这是一个复杂的演进案例。其早期用于手机的版本被广泛认为是基于安卓AOSP的深度定制版本。然而,其底层基础是华为捐赠给开放原子开源基金会的[OpenAtom OpenHarmony](https://www.openharmony.cn/mainPlay/)项目。最新的HarmonyOS NEXT则移除了安卓库,不再兼容安卓应用,完全基于OpenHarmony<br>构建,是一个独立的闭源操作系统[40]。这使其成为一个从“混合模式”向“基于开源基础的专有系统”转变的绝佳讨论案例。 |
|
||||
| **生产力及其他软件** | Microsoft Office / Google Docs | 两者都是专有的闭源产品。 |
|
||||
| | LibreOffice | [LibreOffice](https://www.libreoffice.org)是一款功能齐全、社区驱动、完全自由开源的Microsoft Office替代品[41]。 |
|
||||
| | VLC Media Player | [VLC](https://github.com/videolan/vlc)是一款著名的、功能强大的、跨平台的自由开源应用程序[42]。 |
|
||||
| | Mattermost vs. Slack | [Mattermost](https://github.com/mattermost/mattermost)是一个开源、可自托管的协作平台,专为需要完全数据控制和高度定制化的组织设计[43];而Slack则是一款专有的、云优先的SaaS工具,以其极致的用户体验和庞大的应用集成生态系统而著称。 |
|
||||
| **开发者工具与AI模型** | Git | 由林纳斯·托瓦兹创建的、世界上最流行的版本控制系统。它是现代软件开发的基石,并且是自由开源的[44]。 |
|
||||
| | Visual Studio Code (VS Code) | [VS Code](https://code.visualstudio.com/)是微软广受欢迎的开源代码编辑器[45]。 |
|
||||
| | Docker | [Docker](https://www.docker.com/)是领先的容器化平台,由众多开源项目(如Moby和containerd)构成,是开源生态系统的关键部分[46]。 |
|
||||
| | DeepSeek AI模型 | [DeepSeek](https://www.deepseek.com/)是一个关于AI时代“开放”定义的典型案例。其代码在宽松的MIT许可下发布。|
|
||||
|
||||
📚 **延伸阅读与拓展**
|
||||
|
||||
1. 埃里克·雷蒙[《大教堂与市集》](https://zh.wikipedia.org/wiki/%E5%A4%A7%E6%95%99%E5%A0%82%E5%92%8C%E5%B8%82%E9%9B%86)
|
||||
|
||||
2. 理查德·斯托曼[《自由软件,自由社会》](https://en.wikipedia.org/wiki/Free_Software,_Free_Society)
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
本章旨在为学生建立对开源世界的**初步认知框架**,理解其从早期的技术协作文化到现代商业与社会运动的演变脉络。学习的重点在于区分**自由软件**和**开源**这两种核心理念,并认识到其精神已延伸至多个前沿领域。
|
||||
|
||||

|
||||
|
||||
*图:开源运动的演变*
|
||||
|
||||
掌握本章的关键知识点后,学生将能够:
|
||||
|
||||
| 学习维度 | 关联知识点 |
|
||||
| :--- | :--- |
|
||||
| **知识点** | <ul><li>**起源与哲学基石**:理解 MIT “黑客伦理”(信息共享)的诞生;掌握自由软件(FSF)的**“四大本质自由”**(运行、研究、再分发、修改后分发)作为运动的道德使命。<li>理念之争:区分自由软件(FSF)聚焦**伦理与用户自由** 与开源(OSI)聚焦**实用主义与技术优势** 的本质区别。<li>**法律框架**:理解 Copyleft(著佐权)通过运用版权法来**确保软件永久保持自由**。</li>**商业与免费**:辨析**开源软件**、**闭源软件**、**商业软件**和**免费软件**的区别,核心标准是源代码的可访问性。</ul> |
|
||||
| **能力点** | <ul><li>**识别商业模式**:分析红帽的**“订阅与保障”**模型、**“开源核心”(Open Core)**模型以及应对云服务商竞争的**防御性许可证**(如 SSPL, BSL)的战略逻辑。<li>**辨析混合系统**:能够识别并分类日常使用的数字产品(如 Google Chrome, macOS)在**开源与闭源**组件上的混合模式。<li>**评估许可证策略**:运用 OSD 标准,批判性评估现代 AI 模型许可证(如 Meta Llama)**是否符合真正的开源定义**。</ul> |
|
||||
| **素养点** | <ul><li>**价值观冲突**:批判性地理解自由软件运动的**伦理纯粹主义**与开源运动的**商业实用主义**之间的张力。<li>**数字主权**:认识到开源精神已延伸至**开源硬件(OSH)**、**开放教育(OER)和开放科学**等领域,成为推动知识共享和民主化的社会组织原则。<li>**AI 挑战**:理解 AI 系统的**三元结构**(代码、权重、数据)如何挑战了传统“源代码”的定义,以及这种模糊性对**透明度与问责制**的影响。<ul> |
|
||||
|
||||
---
|
||||
|
||||
## 附录 A:教师教学指南
|
||||
|
||||
### 1.教学重点
|
||||
|
||||
本章的教学核心是建立学员对开源运动的哲学、伦理和社会价值的认知框架,区分两大核心理念,并追踪其在商业世界和社会中的应用。
|
||||
|
||||
* **起源与哲学基石:** 重点讲解 MIT **“黑客伦理”**(信息共享)的诞生;理解理查德·斯托尔曼发起 **GNU 项目**和**自由软件运动**的道德使命。
|
||||
* **两大核心理念:** 必须清晰区分 **自由软件(FSF)** 的 **“四大自由”**(聚焦于用户的权利和伦理)与 **开源(OSI)** 的 **“开源定义”(OSD)**(聚焦于实用效益和商业友好)。
|
||||
* **商业化路径:** 理解商业开源的战略演进:从红帽的 **“订阅与保障”** 模型到 **“开源核心”(Open Core)** 模型,以及应对云服务商竞争的 **防御性许可证**(如 SSPL, BSL)。
|
||||
* **开放精神的延伸:** 掌握开源理念从代码向外扩展的应用,包括 **开源硬件**(OSH)、**开放教育资源**(OER)和 **开放科学**,认识到“开放”是一种社会和经济组织原则。
|
||||
|
||||
### 2. 教学难点
|
||||
|
||||
* **“自由”与“免费”的混淆:** 学生难以将自由软件的“自由”(Freedom / Liberty)与“免费”(Price / Free Beer)彻底区分。
|
||||
* **FSF 与 OSI 的张力:** 难以理解为什么自由软件(FSF)和开源(OSI)两种理念在实践中覆盖了几乎同一组软件,但在价值观和对外宣传上存在巨大冲突。
|
||||
* **开源核心与许可证争议:** 难以理解 **Open Core** 模式的盈利逻辑,以及为什么 **SSPL** 等许可证虽然公开了源代码,但因违反 OSD 而被 OSI 明确拒绝认证为“开源”。
|
||||
* **AI 时代的 “源” 定义:** 难以理解 AI 系统中 **“源”** 的概念已从传统软件的**代码**延伸至**模型权重**和**训练数据**,导致传统开源定义失效。
|
||||
|
||||
### 3. 常见问题 (FAQ)
|
||||
|
||||
1. 开源软件就是免费软件吗?
|
||||
2. 斯托曼的自由软件(Free Software)和开源(Open Source)到底有什么区别?
|
||||
3. 像谷歌 Chrome 这样的浏览器是开源的还是闭源的?**
|
||||
4. Copyleft 是什么意思?它为什么要这么做?
|
||||
5. 为什么 GitCode/Gitee 等平台在中国很重要?
|
||||
|
||||
---
|
||||
## 附录B:课程讲义术语表
|
||||
|
||||
- **AOSP (安卓开放源代码项目 - Android Open Source Project)** :安卓系统的核心基础,是开源的。讲义中提到,尽管AOSP是开源的,但大多数消费者手机上运行的安卓系统版本通过包含闭源的谷歌移动服务(GMS)而成为专有系统 。
|
||||
|
||||
- **ARPANET**:互联网的前身。在20世纪60-70年代,它将麻省理工学院等地的孤立“黑客”社区连接起来,形成了一个共享文化和理念的“网络部落” 。
|
||||
|
||||
- **Copyleft (著佐权)**:由理查德·斯托尔曼开创的一个法律机制,通过巧妙地运用版权法(Copyright)来确保软件及其衍生作品永久保持自由。像GPL这样的许可证规定,任何修改和重新分发该软件的人都必须在相同的条款下进行,从而防止代码被专有化。
|
||||
|
||||
- **Closed Source Software (闭源软件)**: 也称为“专有软件”(Proprietary Software)。其源代码被视为商业机密,由个人或公司拥有和控制。用户只能获得编译后的二进制文件和使用许可,被禁止研究、修改或重新分发。
|
||||
|
||||
- **Commercial Software (商业软件)**:指以盈利为目的进行开发和销售的软件。讲义强调,商业软件既可以是开源的,也可以是闭源的,其商业性质与源代码是否开放没有必然联系。
|
||||
|
||||
- **Darwin**: 苹果公司闭源的macOS和iOS操作系统的核心。它本身是一个由多个开源组件(如Mach微内核和FreeBSD)构建的内核,并且苹果公司也将其作为开源项目发布。
|
||||
|
||||
- **Debian Free Software Guidelines (DFSG - 《Debian自由软件指导方针》)**:由布鲁斯·佩伦斯和Debian社区共同制定的一套原则,用于判断哪些许可证符合其自由操作系统的要求。《开源定义》(OSD)正是直接改编自此指导方针。
|
||||
|
||||
- **Digital Public Goods (DPG - 数字公共产品)**:开源精神在全球发展领域的最新延伸。联合国将其定义为有助于实现可持续发展目标(SDGs)的开源软件、数据、AI模型、开放标准和内容,旨在为全球特别是中低收入国家提供可自由使用和定制的数字基础设施框架。
|
||||
|
||||
- **Four Essential Freedoms (四项本质自由)**:由自由软件基金会(FSF)定义的、构成“自由软件”核心的四项用户权利:为任何目的运行程序的自由(自由之0);研究和修改程序的自由(自由之1);再分发副本的自由(自由之2);分发修改后版本的自由(自由之3)。
|
||||
|
||||
- **Free Software (自由软件)**:由自由软件基金会(FSF)定义的软件,其核心在于赋予用户“四大自由”。这里的“自由”(free)关乎自由(liberty),而非价格(price),即“言论自由”中的自由,而非“免费啤酒”中的免费。
|
||||
|
||||
- **Free Software Foundation (FSF - 自由软件基金会)**:由理查德·斯托尔曼于1985年成立的非营利组织,旨在为GNU项目提供法律和组织支持,并为计算机用户的权利而奔走。
|
||||
|
||||
- **Freeware (免费软件)**:指无需付费即可使用的软件,但它通常是专有的,其源代码不公开,用户也不享有“四大自由”。讲义强调,免费软件不是自由软件。
|
||||
|
||||
- **GNU Project (GNU项目)**:由理查德·斯托尔曼于1983年发起的一个宏大项目,目标是创建一个完整的、类似Unix且完全由“自由软件”组成的操作系统。“GNU”是一个递归缩写,意为“GNU's Not Unix”(GNU不是Unix)。
|
||||
|
||||
- GNU General Public License (GPL - GNU通用公共许可证)**:一种典型的Copyleft许可证,由FSF发布,旨在通过法律手段确保软件及其所有衍生版本都保持自由。
|
||||
|
||||
- **Hacker (黑客)**:最初诞生于20世纪60年代麻省理工学院(MIT)的术语。其原始含义并非指恶意入侵者,而是指那些精通编程、并以“寓教于乐的巧妙构思”(playful cleverness)和追求技术卓越为乐的程序员。
|
||||
|
||||
- Hacker Ethic (黑客伦理)**:源于MIT早期计算机文化的一套不成文原则,由史蒂文·利维在其著作中系统阐述。核心信条包括信息共享(“所有信息都应免费”)和“亲手实践的准则” [1]。
|
||||
|
||||
- **Kernel (内核)**: 操作系统的最关键核心部分。讲义中提到,GNU项目在早期缺少内核,后来与林纳斯·托瓦兹开发的Linux内核结合,形成了完整的GNU/Linux操作系统。
|
||||
|
||||
- **Linux**:由芬兰学生林纳斯·托瓦兹于1991年开始开发的类Unix操作系统内核。1992年,它在GPLv2许可证下发布,并与几乎完备的GNU系统结合,诞生了第一个完整的自由操作系统。
|
||||
|
||||
- **Linus Torvalds (林纳斯·托瓦兹)**: Linux内核的创建者。在1991年,作为芬兰赫尔辛基大学的一名学生,他出于个人爱好开发了Linux内核的第一个版本。
|
||||
|
||||
- **MIT Artificial Intelligence Laboratory (MIT AI Lab)**:20世纪60年代麻省理工学院的一个关键团体,是早期“黑客文化”和开源思想的摇篮之一,为学生提供了前所未有的接触大型主机的机会 [1]。
|
||||
|
||||
- **Open Core (开源核心)**:一种商业模式。公司利用开源的核心组件(如Linux内核、Chromium)来协同创新并降低开发成本,然后将自身的专有精力集中在能够创造差异化价值和收入的用户体验、服务和生态系统锁定上。
|
||||
|
||||
- Open Educational Resources (OER - 开放教育资源)**:开源精神在教育领域的延伸,指那些可以自由访问、使用、修改和再分发的教学、学习和研究材料。其核心是“5R”原则。
|
||||
|
||||
- Open Hardware (开源硬件 - OSH)**:开源精神在物理世界中的延伸,指公开硬件产品的设计文件(如电路图、材料清单),从而使任何人都可以研究、修改、制造和销售该硬件。
|
||||
|
||||
- Open Science (开放科学)**:开源精神在科学研究领域的延伸,主张科研全过程(从研究设计、数据收集到最终发表)的开放性与透明度,以提升研究的可复现性、效率和合作。
|
||||
|
||||
- Open Source (开源)**:1998年由克莉丝汀·彼得森等人提出的术语,旨在作为“自由软件”的一个对商业更友好的替代方案。它将重点从道德诉求转移到协作开发模式带来的实用主义好处上,如更高质量、更强可靠性和更低成本。
|
||||
|
||||
- Open Source Definition (OSD - 《开源定义》)**
|
||||
: 由开源促进会(OSI)发布的一套十点标准,用于判断一个软件许可证是否能被认证为“开源”。它改编自《Debian自由软件指导方针》,可以看作是对FSF“四大自由”的一次务实的、法律化的转译。
|
||||
|
||||
- Open Source Initiative (OSI - 开源促进会)**:由埃里克·雷蒙和布鲁斯·佩伦斯于1998年共同创立的组织,旨在管理和推广“开源”这一新术语,并向商界阐释其价值与方法论。
|
||||
|
||||
- Open Source Software (OSS - 开源软件)**: 指源代码公开的软件,用户被授予在开源许可证条款下查看、复制、修改和重新分发代码的权利。
|
||||
|
||||
- Open Weight (开放权重)**:在人工智能领域,指公开发布模型参数(权重)供公众下载和微调,但训练数据和大部分训练代码仍然是专有的做法。这种模式引发了关于其是否是真正开源的激烈争论。
|
||||
|
||||
- **Proprietary Software (专有软件)**:见“Closed Source Software (闭源软件)” 。
|
||||
|
||||
- **Richard Stallman (理查德·斯托尔曼)**:自由软件运动的发起者和精神领袖。因无法修改专有打印机驱动的经历,促使他于1983年发起了GNU项目,并于1985年成立了自由软件基金会(FSF)。
|
||||
|
||||
- **Source Code (源代码)**: 程序员编写的、人类可读的程序指令。源代码的可访问性是区分开源软件和闭源软件的根本标准。
|
||||
|
||||
- **5R Principles (5R原则)**:开放教育资源(OER)的核心实践原则,包括保留(Retain)、重用(Reuse)、修改(Revise)、混合(Remix)和再分发(Redistribute)的权利。
|
||||
|
||||
---
|
||||
|
||||
## 参考的文献与著作
|
||||
|
||||
[1] Hacker culture | Wikipedia, https://en.wikipedia.org/wiki/Hacker_culture <br>
|
||||
[2] A Little Bit of Hacker History | UTAH, https://users.cs.utah.edu/~elb/folklore/afs-paper/node3.html <br>
|
||||
[3] Levy, S. (1984). Hackers: Heroes of the computer revolution. Doubleday <br>
|
||||
[4] A Little Bit of Hacker History | UTAH, https://users.cs.utah.edu/~elb/folklore/afs-paper/node3.html <br>
|
||||
[5] The GNU Operating System and the Free Software Movement | Open Sources: Voices from the Open Source Revolution, https://www.oreilly.com/openbook/opensources/book/stallman.html <br>
|
||||
[6] Overview of the open source ai definition 1.0 GNU System | GNU Project - Free Software Foundation, http://www.gnu.org/gnu/gnu-history.html <br>
|
||||
[7] The Free Software Definition | Free Software Foundation, https://www.gnu.org/philosophy/free-sw.en.html <br>
|
||||
[8] Free Software Is Even More Important Now | GNU.org, https://www.gnu.org/philosophy/free-software-even-more-important.html <br>
|
||||
[9] A look back at 40 Years of GNU and the Free Software Foundation | ZDNET,, https://www.zdnet.com/article/40-years-of-gnu-and-the-free-software-foundation <br>
|
||||
[10] History of the Open Source Initiative | Open Source Initiative, https://opensource.org/about/history-of-the-open-source-initiative <br>
|
||||
[11] The Open Source Definition | Open Source Initiative, https://opensource.org/osd <br>
|
||||
[12] Twenty Years and Counting | Open Source Initiative, https://opensource.org/blog/twenty-years-and-counting-2 <br>
|
||||
[13]Chrome V/s Chromium | Google Help,https://support.google.com/chrome/thread/272064373/https://source.android.com/chrome-v-s-chromium?hl=en <br>
|
||||
[14] Microsoft Edge | Wikipedia, https://en.wikipedia.org/wiki/Microsoft_Edge <br>
|
||||
[15] Red Hat's development model, | RetHat, https://www.redhat.com/en/about/development-model <br>
|
||||
[16] Why choose Red Hat for Linux? | RedHat, https://www.redhat.com/en/topics/linux/why-choose-red-hat-enterprise-linux <br>
|
||||
[17] The Red Hat model only worked for Red Hat | Open Core Ventures, https://www.opencoreventures.com/blog/the-red-hat-model-only-worked-for-red-hat <br>
|
||||
[18]The Open-Core Model In A Nutshell | FourWeekMBA, https://fourweekmba.com/open-core/ <br>
|
||||
[19] Open Source: From Community to Commercialization | Andreessen Horowitz,https://a16z.com/open-source-from-community-to-commercialization/ <br>
|
||||
[20] GitLab tiers | The GitLab Handbook , https://handbook.gitlab.com/handbook/marketing/brand-and-product-marketing/product-and-solution-marketing/tiers/ <br>
|
||||
[21] MongoDB Opensource vs MongoDB Enterprise | Codemia, https://codemia.io/knowledge-hub/path/mongodb_opensource_vs_mongodb_enterprise <br>
|
||||
[22] Elastic's Return to Open Source | Revenera Blog, https://www.revenera.com/blog/software-composition-analysis/elastics-return-to-open-source/ <br>
|
||||
[23] Dispute between Elastic and AWS highlights ongoing battle over open source business model | GeekWire, https://www.geekwire.com/2021/dispute-elastic-aws-highlights-ongoing-battle-open-source-business-model/ <br>
|
||||
[24] Doubling down on open, Part II | Elastic Blog, https://www.elastic.co/blog/licensing-change <br>
|
||||
[25] “Commons Clause” License Condition v1.0 |https://commonsclause.com/ <br>
|
||||
[26] Server Side Public License (SSPL) | MongoDB, https://www.mongodb.com/legal/licensing/server-side-public-license <br>
|
||||
[27] Business Source License 1.1 | MariaDB, https://mariadb.com/bsl11/ <br>
|
||||
[28] Open Source Hardware Definition | Open Source Hardware Association, https://oshwa.org/resources/open-source-hardware-definition/ <br>
|
||||
[29] -What is OER? | CreativeCommons, https://wiki.creativecommons.org/wiki/What_is_OER%3F <br>
|
||||
[30] Open science is about transparency, sharing, and inclusivity. | Center of Open Science, https://www.cos.io/open-science <br>
|
||||
[31] What is a Digital Public Good (DPG)? | UNICEF, https://unicef.github.io/publicgoods-accelerator-guide/about-dpgs/what-is-a-dpg/ <br>
|
||||
[32] The open source ai definition 1.0 | Open Source Initiative, https://opensource.org/ai/faq <br>
|
||||
[33] META LLAMA 3 COMMUNITY LICENSE AGREEMENT | llama.com, https://www.llama.com/llama3/license/ <br>
|
||||
[34] Firefox Terms of Use | mozilla.org, https://www.mozilla.org/en-US/about/legal/terms/firefox/ <br>
|
||||
[35] Microsoft Edge | Wikipedia, https://en.wikipedia.org/wiki/Microsoft_Edge <br>
|
||||
[36] Safari Release Notes | Apple Developer, https://developer.apple.com/documentation/safari-release-notes <br>
|
||||
[37] Android (operating system) | Wikipedia, https://en.wikipedia.org/wiki/Android_(operating_system) <br>
|
||||
[38] Darwin (operating system) | Wikipedia, https://en.wikipedia.org/wiki/Darwin_(operating_system) <br>
|
||||
[39] The Windows Subsystem for Linux is now open source | Windows Blogs, https://blogs.windows.com/windowsdeveloper/2025/05/19/the-windows-subsystem-for-linux-is-now-open-source/ <br>
|
||||
[40] HarmonyOS NEXT | Wikipedia, https://zh.wikipedia.org/wiki/HarmonyOS_NEXT <br>
|
||||
[41] Home | LibreOffice | Free and private office suite - Based on OpenOffice, https://www.libreoffice.org/ <br>
|
||||
[42] VLC media player | Wikipedia, https://en.wikipedia.org/wiki/VLC_media_player <br>
|
||||
[43] The open source advantage | Mattermost.com, https://mattermost.com/open-source/ <br>
|
||||
[44] Git, https://git-scm.com/ <br>
|
||||
[45] Why did we build Visual Studio Code? | Visualstudio.com, https://code.visualstudio.com/docs/editor/whyvscode#:~:text=VS%20Code%20is%20an%20open,and%20vibrant%20community%20on%20GitHub. <br>
|
||||
[46] Docker and Open Source | Docker, https://www.docker.com/community/open-source/
|
||||
|
||||
---
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可, © 2025 Gitconomy Research社区。
|
||||
|
|
@ -0,0 +1,680 @@
|
|||
# 第四章:Git高级原理与进阶实践
|
||||
|
||||
## 🎯 学习目标
|
||||
|
||||
通过本讲义的学习,您将能够:
|
||||
|
||||
1. 掌握Git核心对象模型与内部工作机制
|
||||
2. 理解并实践高级版本控制技术与历史改写策略
|
||||
3. 学习Git与持续集成/持续交付(CI/CD)工具的集成方法
|
||||
4. 掌握现代社区协作工作流与代码审查规范
|
||||
5. 将Git的版本控制应用到其他领域
|
||||
|
||||
---
|
||||
|
||||
## 💡导论
|
||||
|
||||
Git作为现代软件开发的核心工具,已经超越了简单的版本控制功能。在这一章中,我们将深入探索Git的内部工作机制、高级命令应用以及如何在团队和社区环境中高效协作。Git不仅是一个版本控制系统,更是一种分布式协作平台,理解其底层原理和高级应用将极大提升开发效率和团队协作质量。我们将通过实验直观展示其对象模型,我们将探讨高效的团队工作流战略、CI/CD 自动化集成、GitOps 这一声明式运维范式,乃至 Git 在数据科学和可重复性研究中的前沿应用。
|
||||
|
||||
掌握 Git 的“道”(其设计哲学)而非仅仅是“术”(其命令),是区分专业开发者和普通实践者的关键。本章将引导您完成这一从“命令使用者”到“系统理解者”的转变。
|
||||
|
||||
-----
|
||||
|
||||
## 第一部分:Git架构的核心原理
|
||||
|
||||
Git 的真正核心是一个基于内容寻址(Content-Addressable)的键值数据库,它将项目的历史建模为一个由不可变快照对象组成的有向无环图(DAG)
|
||||
|
||||
### 4.1 深入Git内部:对象模型
|
||||
|
||||
#### 4.1.1 Git的对象类型
|
||||
|
||||
Git的核心是一个内容寻址(file system)系统,这意味着它通过文件内容的哈希值来唯一标识和检索文件。这种设计使得Git能够在分布式环境中保持数据完整性和一致性。Git使用SHA-1算法为每个对象生成40位的十六进制哈希值,该哈希值基于对象的类型和内容计算而成 。Git的这种内容寻址特性是其高效、安全和分布式能力的基础,它确保了只要文件内容不变,其存储位置和引用方式就不会改变。
|
||||
|
||||
Git 的数据库中存储着四种基本对象类型,它们是构成版本库的“原子”。
|
||||
|
||||
|对象类型|描述|存储内容|
|
||||
|:---|:---|:---|
|
||||
|Blob|二进制大对象|文件内容|
|
||||
|Tree|树对象|目录结构与文件引用|
|
||||
|Commit|提交对象|版本元数据与历史连接|
|
||||
|Tag|标签对象|版本标记与附加信息|
|
||||
|
||||
1. **Blob (Binary Large Object)**
|
||||
|
||||
Blob对象用于存储文件的 **内容**。至关重要的是,Blob 对象只存储文件的原始数据,完全不包含任何元数据,甚至不包括文件名。其 SHA-1 哈希键是根据其内容计算得出的。这种设计产生了一个极其高效的副产品:数据去重。如果两个文件(无论位于仓库何处或在哪个历史版本中)具有完全相同的内容,它们将共享同一个Blob对象。这也使得文件重命名在 Git 中是一个“廉价”操作,因为Git无需复制文件内容;新的 tree 对象只需简单地指向同一个Blob的 SHA-1即可。
|
||||
|
||||
2. **Tree (树)**
|
||||
|
||||
Tree对象代表一个目录结构 。它本质上是一个列表,每行包含一个指向其他对象(Blob或子 Tree)的指针。每个条目都包含该对象的模式(如 `100644` 表示普通文件)、对象类型(`blob` 或 `tree`)、SHA-1哈希值以及文件名。子目录就是通过tree对象指向其他tree对象来实现的,从而递归地构建出完整的项目结构 。
|
||||
|
||||
3. **Commit (提交)**
|
||||
|
||||
Commit对象代表了项目在某个特定时间点的 **完整快照** 。它本身并不是快照数据,而是一个元数据对象,其核心内容包括:
|
||||
|
||||
- 一个指向项目根目录的顶层 tree 对象的 SHA-1。
|
||||
- 一个或多个parent提交的 SHA-1。普通提交有一个父提交;合并提交(merge commit)有两个或多个;仓库的初始提交没有父提交。
|
||||
- 作者(author)和提交者(committer)的信息(姓名、邮箱和时间戳)。
|
||||
- 提交信息(commit message)。
|
||||
|
||||
4. **Tag (标签)**
|
||||
|
||||
Tag对象用于标记某个特定的 Commit,通常用于标记版本发布。标签分为两种:lightweight(轻量标签)和annotated(附注标签)。轻量标签只是一个指向特定提交的引用(像一个永不移动的分支),而附注标签则是一个完整的、有自己SHA-1的Git对象。
|
||||
|
||||
这种由 Blob、Tree 和 Commit 构成的嵌套哈希结构,形成了一个“默克尔树”(Merkle tree) 。一个 Commit 的SHA-1依赖于其Tree的SHA-1,而Tree的SHA-1又依赖于其包含的所有 Blob和子Tree的SHA-1。这种设计提供了Git 数据完整性的绝对保证:在不改变最终Commit 哈希值的前提下,篡改历史中任何文件的任何一个比特位都是不可能的。
|
||||
|
||||
#### 4.1.2 Git作为内容寻址文件系统
|
||||
|
||||
Git 的核心是一个键值数据存储 。“键”是内容的 SHA-1 哈希值,“值”是内容本身 。当 Git 存储一个对象时(例如使用底层的 `git hash-object` 命令),它会执行以下步骤:
|
||||
|
||||
1. 构建一个头部(header),格式为:`blob <content_size>\0`。
|
||||
2. 将“头部 + 原始文件内容”拼接起来。
|
||||
3. 计算这个新内容的 SHA-1 哈希值。
|
||||
4. 使用 zlib 压缩拼接后的内容。
|
||||
5. 将压缩后的数据写入 `.git/objects/` 目录中,文件名即为其 SHA-1 哈希值。
|
||||
|
||||
这种CAS设计是Git效率的核心引擎。除了数据去重外,它还带来了极速的差异比较。为了比较两个 Commit 之间的差异,Git 首先比较它们根 tree 对象的 SHA-1。如果哈希值相同,意味着两个快照的所有内容(包括所有子目录和文件)完全一致,差异为空,无需进行逐文件比较 。
|
||||
|
||||
#### 4.1.3 “快照,而非差异”范式
|
||||
|
||||
Git版本控制的核⼼范式是存储快照(Snapshots),⽽⾮差异(Diffs)。这与许多其他版本
|
||||
控制系统(如Subversion)形成了鲜明对⽐。在基于差异的系统中,每次提交只记录相对于
|
||||
上⼀次提交的代码变更部分。⽽Git在每次提交时,都会为项⽬中所有被跟踪的⽂件⽣成⼀个
|
||||
完整的快照。这个快照是通过⼀个Commit对象、⼀个(或多个)Tree对象以及⼀系列Blob对
|
||||
象共同构建的。
|
||||
|
||||
具体来说,当执⾏git commit 时,Git会遍历暂存区,为每个⽂件创建⼀个Blob对象(如果内容有变化),然后构建⼀个Tree对象来记录当前⽬录结构,这个Tree对象会递归地包含所有⼦⽬录的Tree对象。最后,Git创建⼀个Commit对象,该对象指向这个代表项⽬根⽬录的Tree对象,并附上提交信息和⽗提交引⽤。这种快照模型虽然看起来会占⽤更多空间,但由于Git对对象进⾏了⾼效的压缩(zlib)和去重(内容相同的⽂件只存储⼀次),实际存储开销并不⼤。Git会周期性地(例如在 `git gc` 垃圾回收期间)将这些松散对象打包成“包文件”(Packfile)。在Packfile内部,Git会“注意到两个对象非常相似,然后存储其中一个对象的完整内容,以及另一个对象与它之间的增量差异(delta difference)” 。
|
||||
|
||||
更重要的是,快照模型带来了巨⼤的性能优势:切换分⽀、回滚到历史版本等操作都⾮常迅速,因为Git只需要直接读取对应Commit指向的Tree和Blob对象即可,⽆需像基于差异的系统那样,通过⼀系列的补丁计算来重建⽂件内容 。
|
||||
|
||||
因此,Git的设计呈现出一种二元性:它的概念模型(对外暴露的 API)是 100% 基于快照的;而它的物理存储模型(Packfile这一实现细节)则使用增量(delta)作为最终的磁盘空间优化手段。
|
||||
|
||||
>一次Commit的生命周期示例:
|
||||
>
|
||||
>当开发者执行git commit时,Git会创建一个完整的提交快照,而非记录差异。这一过程涉及以下步骤:
|
||||
>
|
||||
>1. Git遍历暂存区中的所有文件
|
||||
>2. 对每个文件内容计算SHA-1哈希值
|
||||
>3. 如果该哈希值对应的Blob对象已存在,则直接引用;否则创建新Blob
|
||||
>4. 将这些Blob对象组织成Tree结构,形成目录树
|
||||
>5. 最后创建Commit对象,包含提交信息、作者、时间戳以及指向根Tree的哈希值
|
||||
|
||||
### 4.2 Git内部原理: 一个基于对象的图数据库
|
||||
|
||||
Git 不是文件系统工具,它的核心本质是一种 基于对象的图数据库(Graph Database。Git的所有历史和版本关系都通过一个 有向无环图(DAG, Directed Acyclic Graph)来存储。Git 把“目录-快照-历史”三级实体分别建模为 Blob、Tree、Commit 三类节点,以 40 位 SHA-1 为指针,形成只增不改的有向无环图(DAG);Commit→Parent 的边永远向前,保证历史不可篡改、分支可并行、合并可回溯,整个`.git/objects`就是这张DAG的持久化存储。Commit对象通过parent字段指向上—个Commit, 形成了—条代表项⽬历史的时间线链表。同时, Commit对象通过tree字段指向—个Tree对象,Tree对象⼜通过其内部的条⽬指向其他Tree对象或Blob对象,从⽽构成了—棵代表项⽬⽬录结构的多叉树。Tag对象则指向特定的Commit对象, 为其打上标记 。 整个 `.git`⽬录, 特别是`.git/objects` 和`.git/refs` , 共 同构成了这个图数据库的物理存储。所有的Git命令, ⽆论是`git add` 、`git commit` 还是`git merge`,本质上都是在对这个图数据库进⾏增删改查的操作。
|
||||
|
||||
`.git` 目录是版本库的“大脑” 。其核心组件包括:
|
||||
|
||||
1. **`.git/objects`:数据库**
|
||||
|
||||
`.git/objects`⽬录是Git的核⼼数据库,所有Git对象( Blob 、 Tree 、 Commit 、 Tag)都以⽂ 件的形式存储在这⾥。 这个⽬录的结构设计得⾮常巧妙, 它采⽤了—种分层存储的⽅式来管理 数以百万计的对象⽂件。 每个对象的SHA-1哈希值( —个40位的⼗六进制字符串)被⽤作其 ⽂件名。 为了提⾼⽂件系统的访问效率, Git将这个40位的哈希值分成了两部分: 前两位作为⼦⽬录名 ,后38位作为⽂件名 。 例如, —个哈希值为83baae61804e65cc73a7201a7252750c76066a30 的Blob对象, 会被存储在 .git/objects/83/baae61804e65cc73a7201a7252750c76066a30 路径下 。 这种设计不仅避免了单个⽬录下⽂件数量过多的问题, 也使得根据哈希值快速定位和访问对象成为可能。 此外, Git还会对存储的对象内容进⾏zlib压缩, 以节省磁盘空间。
|
||||
|
||||
2. **`.git/refs`:指针**
|
||||
|
||||
`.git/refs` ⽬录是Git⽤来存储各种 “指针” 的地⽅, 这些指针以⽂件的形式存在, 其内容是它 们所指向的Git对象的SHA-1哈希值。 这个⽬录主要包含三个⼦⽬录:heads 、tags和remotes。`refs/heads` ⽬录下存放的是本地分⽀的指针, 每个⽂件对应—个分⽀, ⽂件名就是分⽀名, ⽂件内容是该分⽀当前最新—次提交的Commit对象的哈希值。`refs/tags` ⽬录则存放了所有的标签( 主要是轻量标签)。`refs/remotes` ⽬录⽤于存储远程仓库的分⽀指针, 其下通常会有—个或多个以远程仓库名命名的⼦⽬录( 如 origin )。 通过这些指针,Git可以快速地找到分⽀和标签所对应的提交,⽽⽆需遍历整个对象数据库,这⼤⼤提⾼ 了分⽀切换和版本定位的效率。
|
||||
|
||||
3. **`.git/HEAD`:当前状态**
|
||||
|
||||
`.git/HEAD` ⽂件是—个⾮常特殊的指针,它记录了当前⼯作⽬录所处的状态,即当前检出 (checkout)的是哪个分⽀或哪次提交。在⼤多数情况下,`.git/HEAD` ⽂件的内容是—个符号引⽤(symbolic reference), 它指向 `refs/heads` ⽬录下的—个分⽀⽂件。例如, 如果当前在master分⽀上, `.git/HEAD` ⽂件的内容就是`ref: refs/heads/master` 。 在 “分离HEAD”(detached HEAD)状态下, 例如当你直接检出—个特定的提交时,`.git/HEAD` ⽂件将直接包含该提交的SHA-1哈希值。这个⽂件是Git理解当前⼯作上下⽂的关键,它决定了下—次提交会更新哪个分⽀的指针。
|
||||
|
||||
##### 🎉动手实验: 一次Commit的⽣命周期
|
||||
|
||||
Git的命令分为“Porcelain”(瓷器,用户友好的高级命令,如 `git log`)和“Plumbing”(管道,低级别工具,如 `git cat-file`) 。我们可以使用底层命令手动遍历Git的对象图,以验证第一部分中的模型。
|
||||
|
||||
**实践:从 HEAD 追踪到文件内容**
|
||||
|
||||
1. **找到 HEAD 指向:** `cat .git/HEAD`
|
||||
* 输出:`ref: refs/heads/main` 。
|
||||
2. **找到 main 分支的 Commit SHA-1:** `cat .git/refs/heads/main`
|
||||
* 输出:(例如) `f7f3f6d...` 。
|
||||
3. **查看该 SHA-1 的对象类型:** `git cat-file -t f7f3f6d`
|
||||
* 输出:`commit` 。
|
||||
4. **查看该 Commit 的内容:** `git cat-file -p f7f3f6d`
|
||||
* 输出会显示 `tree`、`parent`、`author` 等信息。找到 `tree` (例如) `3c4e9cd...`。
|
||||
5. **查看该 Tree 的内容:** `git cat-file -p 3c4e9cd`
|
||||
* 输出会显示一个列表,包含文件名和它们对应的 Blob 或 Tree 的 SHA-1 4。找到 (例如) `100644 blob a906cb2... README`。
|
||||
6. **查看该 Blob 的内容:** `git cat-file -p a906cb2`
|
||||
* 输出:`README` 文件的原始文本内容。
|
||||
|
||||
这个手动追踪过程证明了Git 数据库并非黑盒,而是一个简单、可遍历的对象图。
|
||||
|
||||
---
|
||||
|
||||
### 4.3 Git底层命令的应用
|
||||
|
||||
#### 4.3.1 `git stash`: 保存⼯作现场
|
||||
|
||||
`git stash` 命令是—个⾮常有⽤的⼯具, ⽤于临时保存当前⼯作⽬录的未提交更改 。当你正在—个分⽀上进⾏开发, 但突然需要切换到另—个分⽀去处理—个紧急任务时, 你的⼯作区可能处于—个“不⼲净”的状态( 即有已修改但未`git add`的⽂件, 或已`git add`但未`git commit` 的⽂件)。 此时, 直接切换分⽀可能会导致冲突或数据丢失。`git stash` 的作⽤就是将这些未提交的更改 “储藏”起来,让你的⼯作⽬录恢复到上—次提交时的⼲净状态。你可以使⽤`git stash pop`命令将之前储藏的更改重新应⽤到当前⼯作⽬录。这个命令在需要频 繁切换上下⽂或在不确定是否要提交当前更改时⾮常有⽤。
|
||||
|
||||
**`stash` 内部机制**
|
||||
|
||||
它并不是一个补丁文件,而是创建了两个特殊的、不属于任何分支的Commit 对象:
|
||||
|
||||
1. 一个“Index”提交(I),记录了暂存区的状态。
|
||||
2. 一个“Working Tree”提交(W),记录了工作目录的状态。
|
||||
|
||||
`stash` 引用本身是一个合并提交,它指向 `HEAD` 和 I。这个复杂的结构正是 `git stash pop` 能够精确恢复暂存区和工作目录状态的原因。
|
||||
|
||||
**核心用例:**
|
||||
|
||||
* **中断的工作流:** 正在开发feature-A,突然需要修复紧急Bug。`git stash` -\> `git checkout main` -\> 修复 Bug -\> `git checkout feature-A` -\> `git stash pop` 。
|
||||
* **“脏树”拉取:** `git pull` 因本地修改而失败。`git stash` -\> `git pull` -\> `git stash pop`。
|
||||
|
||||
**高级用法:**
|
||||
|
||||
* `git stash list`:查看所有储藏。
|
||||
* `git stash apply`:应用储藏,但保留它在列表中的副本。
|
||||
* `git stash pop`:应用储藏,并从列表中移除它。
|
||||
* `git stash -u`:同时储藏未被追踪(untracked)的文件。
|
||||
* `git stash -p`:以交互方式选择要储藏的代码块。
|
||||
|
||||
#### 4.3.2 `git tag`: 版本发布
|
||||
|
||||
`git tag` 命令是Git中⽤于创建 、列出、删除或验证标签的⼯具,它在软件发布管理中扮演着⾄关重要的⻆⾊。标签为仓库历史中的特定点提供了—个永久且易于记忆的别名,通常⽤于标记发布版本( 如 v1.0.0 ) 、重要的⾥程碑或任何需要被快速定位的提交。如前所述,Git⽀持两种标签类型: 轻量标签和附注标签。在正式的项⽬发布中,强烈建议使⽤附注标签( `git tag -a <tagname> -m <message>` ),因为它是—个完整的Git对象,包含了标签创建者、创建⽇期和标签信息,可以被GPG签名以提供更强的安全性和可验证性。通过`git tag` 命令, 团队可以清晰地管理项⽬的版本历史,⽅便地回溯到任何—个发布版本,并与CI/CD系统集成,实现基于标签的⾃动化部署流程。
|
||||
|
||||
**`tag` 的内部机制**
|
||||
|
||||
`tag` 的内部机制取决于其类型:
|
||||
|
||||
1. **轻量标签 (Lightweight Tag):** 它是一个非常简单的引用 (ref),存储在 `.git/refs/tags/<tagname>` 文件中。该文件内容仅仅是它所指向的那个 `Commit` 对象的SHA-1哈希值。它本质上只是一个“别名”或“书签”,不包含任何额外信息。
|
||||
2. **附注标签 (Annotated Tag):** 它是一个独立的、完整的Git对象(类型为 "tag"),存储在Git的对象数据库中。这个 "tag" 对象包含了:它所指向的 `Commit` 对象的哈希值、标签创建者(tagger)的信息、创建日期、附注信息(message)以及可选的GPG签名。而 `.git/refs/tags/<tagname>` 文件中的内容,则是这个 "tag" 对象的SHA-1哈希值。
|
||||
|
||||
**核心用例:**
|
||||
|
||||
* **标记软件发布:** 在`main`分支上完成所有测试后,执行 `git tag -a v1.0.0 -m "Release version 1.0.0"` 来创建一个正式的、带附注的发布标签。
|
||||
* **触发自动化构建:** CI/CD 系统(如 GitHub Actions)通常被配置为“监听”新标签的推送。执行 `git push origin v1.0.0` 可以自动触发生产环境的构建和部署流程。
|
||||
* **标记重要节点:** 为项目的重要里程碑(如 "Alpha-1", "RC-2.0")打上标签,方便团队成员快速检出(`git checkout v1.0.0`)特定版本进行审查或测试。
|
||||
|
||||
**高级用法:**
|
||||
|
||||
* `git tag -l "v1.4.*"`:列出所有符合 `v1.4.*` 模式的标签。
|
||||
* `git tag <tagname> <commit-hash>`:为过去的某个特定提交补加一个标签。
|
||||
* `git tag -s <tagname> -m <message>`:创建一个GPG签名的标签,用于验证发布者的身份和标签的完整性。
|
||||
* `git tag -v <tagname>`:验证一个GPG签名标签的有效性。
|
||||
* `git push origin --tags`:将本地所有尚未推送的标签一次性推送到远程仓库。
|
||||
* `git tag -d <tagname>`:删除一个本地标签。
|
||||
* `git push origin --delete <tagname>`:删除一个远程仓库的标签(这是一个需要谨慎操作的命令)。
|
||||
|
||||
#### 4.3.3 `git restore`:撤销更改
|
||||
|
||||
##### 4.3.3.1 撤销”类命令:restore vs. reset vs. revert
|
||||
|
||||
这是Git中最容易混淆的领域。理解的关键在于区分Git的存储空间结构:1) 工作目录(Working Directory),2) 暂存区(Index/Staging Area),3) 提交历史(HEAD 指向的 Commit)。
|
||||
|
||||
在深入 restore 之前,我们先简要对比这三个“撤销”命令:
|
||||
|
||||
1. `git restore` (文件级撤销):最安全、最现代的命令。它只操作工作目录和暂存区。它用来撤销尚未提交的更改,永远不会修改提交历史。
|
||||
|
||||
2. `git reset` (历史级撤销 - 本地):强大的命令,主要作用是移动 HEAD 指针,即“重写”本地提交历史。它会根据参数(--soft, --mixed, --hard)连锁反应式地修改暂存区和工作目录。
|
||||
|
||||
3. `git revert `(历史级撤销 - 公共):最安全的历史撤销命令。它不会删除或修改历史,而是创建一个新的提交来反转(undo)某个旧提交的更改。它适用于撤销已经推送的更改。
|
||||
|
||||
| 命令 (Command) | 主要用途 (Primary Use Case) | 修改工作目录 | 修改暂存区 (Index) | 修改提交历史 (HEAD ref) |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| `git restore <file>` | 撤销工作目录中的更改(从暂存区恢复) | 是 | 否 | 否 |
|
||||
| `git restore --staged <file>` | 撤销暂存区中的更改(从HEAD恢复) | 否 | 是 | 否 |
|
||||
| `git reset --soft <commit>` | 移动HEAD指针,保留所有本地更改 | 否 | 否 | 是 (移动指针) |
|
||||
| `git reset --mixed <commit>` | 移动HEAD指针,取消暂存更改 | 否 | 是 (重置) | 是 (移动指针) |
|
||||
| `git reset --hard <commit>` | 移动HEAD指针,丢弃所有本地更改 | 是 (重置) | 是 (重置) | 是 (移动指针) |
|
||||
| `git revert <commit>` | 安全地撤销一个已提交的更改 | 是 (应用反向更改) | 是 (应用反向更改) | 是 (添加新提交) |
|
||||
|
||||
*表:Git “撤销”类命令矩阵*
|
||||
|
||||
##### 4.3.3.2 `git restore`命令详解
|
||||
|
||||
`git restore`是Git 2.23版本引⼊的—个新命令,旨在更清晰地撤销对⼯作区或暂存区的更改。它的引⼊是为了解决`git checkout` 命令功能过于复杂 、容易混淆的问题。`git restore` 主要有两个⽤途:
|
||||
|
||||
- 撤销⼯作区的修改:如果你修改了—个⽂件,但还没有`git add` 到暂存区, 可以使⽤`git restore <file>`来放弃这些修改,让⽂件恢复到暂存区(或最近—次提交)的状态。
|
||||
- 撤销暂存区的修改:如果你已经使⽤ `git add`将⽂件添加到暂存区,但想把它从暂存区 移出(即 “unstage” ),可以使⽤` git restore --staged <file> ` 。 这不会修改⼯作区中的 ⽂件内容,只是将其从下—次提交的候选列表中移除。这个命令使得撤销操作更加直观和安全, 减少了误操作的⻛险。
|
||||
|
||||
**`git restore`内部机制**
|
||||
|
||||
`git restore`的所有操作都可以理解为在Git的三个“存储空间”之间安全地复制文件版本:
|
||||
|
||||
- 工作目录 (Working Directory): 你在本地文件系统中直接编辑的文件。
|
||||
- 暂存区 (Index / Staging Area): 运行 git add 后,文件快照被存放的地方。
|
||||
- 提交历史 (Commit / HEAD): HEAD 指向的那个提交(即你“已保存”的最新版本)。
|
||||
|
||||
restore命令的机制就是从一个“源”空间复制文件内容到“目标”空间:
|
||||
|
||||
1. **git restore <file> (默认)**
|
||||
|
||||
- 源: 暂存区 (Index)
|
||||
- 目标: 工作目录 (Working Directory)
|
||||
- 作用: 用暂存区中的版本覆盖工作目录中的版本。
|
||||
|
||||
2. **git restore --staged <file>**
|
||||
|
||||
- 源: HEAD (最近的提交)
|
||||
- 目标: 暂存区 (Index)
|
||||
- 作用: 用 HEAD 中的版本覆盖暂存区中的版本,实现 "Unstage"。
|
||||
|
||||
3. **git restore --source <commit> <file>**
|
||||
|
||||
- 源: 指定的 <commit>
|
||||
目标: 工作目录 (Working Directory)
|
||||
作用: 从任意一个旧提交中检出文件,并覆盖工作目录中的版本。
|
||||
|
||||
`git restore`的关键在于它永远不会更新`HEAD`引用。这意味着它绝不会创建新提交或移动你当前所在的分支,是一个专门用于修改工作区和暂存区的“安全”命令。
|
||||
|
||||
**高级用法:**
|
||||
|
||||
* `git restore <file>`:丢弃工作目录中的更改(用暂存区的内容覆盖。
|
||||
* `git restore --staged <file>`:将文件移出暂存区(用 `HEAD` 的内容覆盖)。
|
||||
* `git restore --source <commit> <file>`:从某个旧提交中拉取文件版本到工作目录,但不改变 `HEAD` 。
|
||||
|
||||
#### 4.3.4 `git log`:⾼级历史查询
|
||||
|
||||
`git log`是查看项⽬提交历史的最基本命令, 但它也提供了丰富的选项来进⾏⾼级历史查询 和格式化输出。通过不同的参数组合,你可以快速定位特定的提交、分析项⽬演进趋势或⽣ 成定制化的报告。
|
||||
|
||||
- 按作者 、时间或⽂件过滤: --author="John Doe" 可以只显示特定作者的提交; --
|
||||
since="2 weeks ago" 或 --until="2025-01-01" 可以按时间范围过滤; <path> 可以 只显示影响特定⽂件或⽬录的提交 。
|
||||
. 搜索提交信息: --grep="fix bug" 可以在提交信息中搜索包含特定关键词的提交 。
|
||||
. 查看⽂件历史: git log --follow <file> 可以追踪—个⽂件的历史, 即使它被重命名过 。
|
||||
- 格式化输出:--oneline可以将每次提交压缩为—⾏显示; --graph可以以图形化的⽅式展示分⽀和合并历史; --pretty=format:"%h - %an, %ar : %s" 可以完全⾃定义 输出格式, 显示哈希值 、作者、相对时间和提交信息。
|
||||
|
||||
掌握这些⾼级⽤法, 能让你在海量的提交历史中迅速找到所需信息 。
|
||||
|
||||
#### 4.3.5 策划历史:交互式变基 (git rebase -i)
|
||||
|
||||
`git rebase -i`(交互式变基)的目的是“精心策划你的提交历史” ,使其在分享之前更具可读性和逻辑性,而不是为了伪造历史。
|
||||
|
||||
当运行 `git rebase -i <base>` 时,Git 会打开一个编辑器,显示一个“todo 列表” 35。你可以修改每个提交前的命令:
|
||||
|
||||
- **`pick` (p)**:保留该提交(默认)。
|
||||
- **`reword` (r)**:保留该提交,但暂停以仅修改提交信息。
|
||||
- **`edit` (e)**:在此提交处暂停变基,允许你修改文件内容(例如 `git commit --amend`),完成后运行 `git rebase --continue`
|
||||
- **`squash` (s)**:将此提交合并到前一个(列表上一行)提交中,并暂停让你合并两条提交信息。
|
||||
- **`fixup` (f)**:与 `squash` 类似,但完全丢弃此提交的信息。非常适合用于“修复拼写错误”之类的提交。
|
||||
- **`drop` (d)**:从历史中完全删除该提交。
|
||||
|
||||
`rebase` 操作再次印证了第一部分的模型:它是一个复制和重放的操作。由于 Git 对象是不可变的,你不能移动一个提交。`rebase` 实际上是:
|
||||
|
||||
1. 计算原始提交与其父提交之间的差异(diff)。
|
||||
2. 将这个差异应用到一个新的父提交上(即 `<base>`)。
|
||||
3. 创建一个全新的 Commit 对象(具有新的 SHA-1)来代表这个新快照。
|
||||
|
||||
这正是为什么变基后 SHA-1 会改变,以及为什么在公共分支上执行此操作是危险的。
|
||||
|
||||
#### 4.3.6 标签策略:轻量 (Lightweight) vs. 附注 (Annotated)
|
||||
|
||||
1. **轻量标签:**
|
||||
|
||||
* 一个简单的引用(`refs/tags/` 下的一个文件),本质上是一个指向提交的“书签”。
|
||||
* 用例:私人的、临时的标记。
|
||||
|
||||
2. **附注标签 (`-a`):**
|
||||
|
||||
* 一个完整的 Git 对象(类型为 `tag`) 。
|
||||
* 此对象包含标签创建者、日期、标签信息,并且可以被 GPG 签名。
|
||||
* * 用例:公共的、官方的版本发布。
|
||||
|
||||
一个关键的实践差异在于 Git 工具本身如何对待它们:`git push --follow-tags`(一个用于推送发布的常用命令)默认只推送附注标签。这强化了最佳实践:如果你希望一个标签成为项目官方共享历史的一部分,它必须是附注标签。
|
||||
|
||||
## 第二部分: Git 自动化与协作流程
|
||||
|
||||
### 4.4 Git与持续集成/持续交付 (CI/CD)
|
||||
|
||||
在现代软件开发实践中,持续集成(CI)与持续交付/部署(CD)是提升开发效率、保障代码质量、加速产品迭代的核心方法论。Git作为分布式版本控制系统的基石,与CI/CD流程的深度融合,构成了现代 DevOps(Development and Operations)文化的骨架。通过将代码的每一次变更(Commit、Push、Pull Request)作为自动化流程的触发器,团队能够实现从代码提交到生产环境部署的全链路自动化。
|
||||
|
||||
#### 4.4.1 什么是 CI/CD?
|
||||
|
||||
CI/CD是一套旨在自动化软件交付流程的实践和文化,它将传统上相互分离的开发、测试和运维环节紧密地连接在一起。这个缩写代表了两个核心概念:持续集成(CI)和持续交付/部署(CD)。
|
||||
|
||||
1. **CI (Continuous Integration): 持续集成的定义与优势**
|
||||
|
||||
持续集成(CI)是一种软件开发实践,它要求团队成员**频繁地将其代码变更集成到共享的主干分支**(如 `main` 或 `master`)中。每次集成都会通过自动化的构建和测试流程进行验证,以便尽早地发现和定位集成错误。CI的核心目标是打破开发过程中的“集成通点”,其主要优势体现在:快速发现错误、提高代码质量、减少手动工作和提供快速反馈。
|
||||
|
||||
2. **CD (Continuous Delivery/Deployment): 持续交付与持续部署的区别**
|
||||
|
||||
持续交付(Continuous Delivery)和持续部署(Continuous Deployment)是 CI 的延伸,它们共同的目标是实现代码发布的自动化,但两者之间存在一个关键的区别,主要体现在最终部署到生产环境的决策方式上。
|
||||
|
||||
| 概念 | 定义 | 部署决策 |
|
||||
| :--- | :--- | :--- |
|
||||
| **持续交付 (CI)** | 任何通过了所有自动化测试的代码变更,都处于一种 **“可部署”状态**,发布包已准备就绪。 | **手动批准**:部署到生产环境需要人工触发。 |
|
||||
| **持续部署 (CD)** | 任何通过了所有自动化测试的代码变更,都会被**自动、直接地部署到生产环境**。 | **全自动**:无需人工干预或批准。 |
|
||||
|
||||
*表:CI和CD定义*
|
||||
|
||||
选择持续交付还是持续部署,取决于组织的文化、对风险的容忍度以及业务需求。
|
||||
|
||||
#### 4.4.2 Git 作为 CI/CD 的“引擎”
|
||||
|
||||
Git在现代CI/CD 体系中扮演着 **“引擎”或“触发器”** 的核心角色。CI/CD流水线的启动、执行和流转,都与Git仓库中的事件和分支策略紧密耦合。
|
||||
|
||||
1. **Git 事件作为触发器 (on push, on pull\_request)**
|
||||
|
||||
CI/CD 流水线的自动化始于对 Git 仓库中特定事件的监听。最常见的是**代码推送(Push)事件**和**拉取请求(Pull Request, PR)事件**。
|
||||
|
||||
- **Push 事件**:当开发者将本地提交推送到远程仓库的特定分支时,CI/CD 系统会立即检测并自动触发预设的流水线。
|
||||
- **Pull Request 事件**:当创建 PR(请求合并)时,CI/CD 系统会配置为在 PR 创建、更新或合并时触发流水线,以确保在代码被正式合并前运行一套完整的自动化测试和代码审查流程。
|
||||
|
||||
2. 分支策略 (Branching) 如何驱动 CI/CD 流程
|
||||
|
||||
分支策略是 Git 工作流的核心,它直接决定了 CI/CD 流水线的复杂度和行为。不同的分支承载着不同的目的,因此可以触发不同阶段的 CI/CD 流程:
|
||||
|
||||
- **功能分支(Feature Branch):** 变更通常只触发快速的单元测试和代码质量检查。
|
||||
- **主干分支(Main/Master Branch):** 变更会触发一个更全面的 CI/CD 流水线,包括所有测试、构建发布制品,并可能自动部署到预发布或生产环境。
|
||||
|
||||
通过将 CI/CD 流水线与分支策略相结合,团队可以实现对不同环境(开发、测试、预发布、生产)的精细化、自动化管理。
|
||||
|
||||
#### 4.4.3 CI/CD 流水线 (Pipeline) 解构
|
||||
|
||||
CI/CD 流水线(Pipeline)是CI/CD流程的具体实现,它是一个由一系列按顺序或并行执行的步骤(Steps)组成的自动化工作流。
|
||||
|
||||
1. **核心阶段 (Build, Test, Deploy)**
|
||||
|
||||
一个典型的 CI/CD 流水线通常包含以下核心阶段:
|
||||
|
||||
| 阶段 (Stage) | 目标 | 典型任务 (Steps) |
|
||||
| :--- | :--- | :--- |
|
||||
| **1. 检出 (Checkout)** | 获取源代码 | 从 Git 仓库中克隆(Clone)或拉取(Pull)最新的代码。 |
|
||||
| **2. 构建 (Build)** | 编译和打包 | 安装项目依赖,编译源代码,生成可执行文件、库或容器镜像。 |
|
||||
| **3. 测试 (Test)** | 验证代码质量 | 运行自动化测试套件(单元、集成、E2E),进行代码质量扫描。 |
|
||||
| **4. 部署 (Deploy)** | 发布到环境 | 将通过测试的制品部署到指定的环境,如预发布环境(Staging)或生产环境(Production),可采用蓝绿部署、金丝雀发布等策略。 |
|
||||
|
||||
2. **运行器 (Runners) 与环境 (Environments)**
|
||||
|
||||
- **运行器 (Runners):** 是执行流水线中定义的任务(Jobs)的计算实例,如 CI/CD 平台提供的共享虚拟机或组织自建的专用服务器。
|
||||
- **环境 (Environments):** 代表了一个部署目标,如 `development`、`staging` 或 `production`。通过为部署任务配置不同的环境,可以实现对部署流程的精细控制,例如为 `production` 环境设置手动审批流程。
|
||||
|
||||
#### 4.4.4 实践:GitHub Actions简介
|
||||
|
||||
GitHub Actions是GitHub提供的原生 CI/CD 平台,它允许开发者直接在 GitHub 仓库中创建、管理和运行自动化工作流。
|
||||
|
||||
1. **`.yml` 配置文件的基本语法**
|
||||
|
||||
GitHub Actions 的工作流配置是 YAML(`.yml` 或 `.yaml`)文件,必须存放在仓库的 `.github/workflows/` 目录下。
|
||||
|
||||
* `name`:工作流的名称。
|
||||
* `on`:定义触发工作流的 Git 事件,如 `push`、`pull_request`。
|
||||
* `jobs`:定义工作流中要执行的一个或多个任务(Job)。
|
||||
* `runs-on`:指定 Job 运行的环境,如 `ubuntu-latest`。
|
||||
* `steps`:定义 Job 中按顺序执行的一系列步骤,可以是 `uses` 一个 Action 或 `run` 一个命令。
|
||||
|
||||
2. **案例:一个简单的自动化测试工作流**
|
||||
|
||||
```yaml
|
||||
# .github/workflows/ci.yml
|
||||
name: Node.js CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16.x, 18.x, 20.x]
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
```
|
||||
|
||||
这个案例展示了如何利用 GitHub Actions 和 Git 事件,构建一个强大而灵活的自动化测试流程,确保代码质量并提高开发效率。
|
||||
|
||||
### 4..5 社区协作: Pull Request 工作流与代码审查
|
||||
|
||||
在现代软件开发实践中,Pull Request (PR) 已经成为团队协作和代码审查的核心机制。它不仅是一个技术流程,更是一种确保代码质量、促进知识共享和加强团队沟通的文化实践。
|
||||
|
||||
#### 4.5.1 核心协作模式
|
||||
|
||||
**GitHub Flow 详解**
|
||||
|
||||
GitHub Flow 是一种轻量级、基于分支的协作工作流,其核心思想是围绕一个长期存在的主分支(通常是 `main` 或 `master`)进行开发。所有新功能都必须在一个独立的特性分支上进行。
|
||||
|
||||
**GitHub Flow 核心流程:**
|
||||
|
||||
1. **创建功能分支 (Create a feature branch)**: 从 `main` 分支创建一个新的功能分支。
|
||||
2. **提交更改 (Commit changes)**: 在功能分支上进行开发,并定期提交更改。
|
||||
3. **推送分支 (Push the branch)**: 将功能分支推送到远程仓库。
|
||||
4. **创建 Pull Request (Open a Pull Request)**: 请求将你的功能分支合并到 `main` 分支。
|
||||
5. **代码审查与讨论 (Discuss and review code)**: 团队成员对 PR 中的代码进行审查,提出反馈。
|
||||
6. **合并 (Merge)**: 一旦 PR 通过了所有必要的审查和自动化检查,就可以将其合并到 `main` 分支。
|
||||
7. **部署 (Deploy)**: 合并到 `main` 分支后,可以立即通过 CI/CD 流水线自动部署到生产环境。
|
||||
|
||||
#### 4.5.2 高效的代码审查 (Code Review)
|
||||
|
||||
代码审查是 Pull Request 流程中最具价值的环节。一个高效的代码审查过程不仅能发现潜在的缺陷,还能促进技术交流。
|
||||
|
||||
1. **审查的基石: 保持PR小而专注**
|
||||
|
||||
高效代码审查的首要原则是保持Pull Request 的规模**小而专注**。一个庞大的PR会让审查者难以进行深入、有意义的审查。因此,开发者应该养成将大型任务分解为一系列小而独立的 PR 的习惯。
|
||||
|
||||
2. **作者的职责 (Author's Responsibility)**
|
||||
|
||||
作为PR的作者,要为审查者创造一个良好的审查体验:
|
||||
|
||||
* **清晰的描述:** 提供一个清晰、简洁的 PR 标题和详细的描述,说明“为什么”需要这个更改。
|
||||
* **小而专注的变更:** 确保 PR 只解决一个问题或实现一个单一的功能。
|
||||
* **自我审查:** 在请求他人审查之前,自己先通读一遍 PR 的代码差异。
|
||||
* **提供测试用例:** 为新功能或错误修复提供相应的自动化测试用例。
|
||||
|
||||
3. **审查者的职责 (Reviewer's Responsibility)**
|
||||
|
||||
审查者是代码质量的守护者,他们的职责是提供建设性的、尊重的反馈:
|
||||
|
||||
* **及时响应:** 当收到审查请求时,应尽快响应。
|
||||
* **全面审查:** 从功能性、逻辑性、可读性、性能、安全性和一致性等多个维度对代码进行评估。
|
||||
* **建设性的反馈:** 提供具体、可操作的建议,而不是模糊的批评。
|
||||
* **保持尊重:** 代码审查是技术交流,而非人身攻击。
|
||||
|
||||
#### 4.5.3 在Git平台中置团队与审查角色
|
||||
|
||||
1. **团队管理与权限配置**
|
||||
|
||||
在GitHub/GitCode/Gitee中,团队(Team)是管理组织成员权限的核心单元。以下是典型仓库层面的角色和权限:
|
||||
|
||||
| 角色 (Role) | 主要权限与职责 | 适用对象 |
|
||||
| :--- | :--- | :--- |
|
||||
| **读取 (Read)** | 可以查看、克隆仓库代码,创建和评论Issue与PR,但无法推送代码。| 外部贡献者、文档作者 |
|
||||
| **分类 (Triage)** | 拥有“读取”权限,并额外可以管理Issue和PR的标签、里程碑和负责人。| 非核心维护者、项目经理 |
|
||||
| **写入 (Write)** | 拥有“分类”权限,并可以推送代码、创建和合并PR、创建发布版本。 | **核心开发者** |
|
||||
| **维护 (Maintain)** | 拥有“写入”权限,并可以管理仓库的设置(如分支保护规则)、Webhook等。| 技术负责人、资深维护者 |
|
||||
| **管理员 (Admin)** | 拥有仓库的完全控制权,包括删除仓库、管理协作者权限等敏感操作。 | 仅限项目所有者 |
|
||||
|
||||
2. **代码审查角色与分配机制**
|
||||
|
||||
在 Pull Request (PR) 工作流中,主要通过 **Reviewers**(审查者)和 **Assignees**(负责人)这两个角色来组织代码审查过程。
|
||||
|
||||
* **审查者 (Reviewers):** 负责评估代码的质量、逻辑、性能和可维护性,并提供反馈、建议或请求修改。
|
||||
* **负责人 (Assignees):** 更侧重于任务的分配和跟踪,通常是 PR 的创建者,负责推动和解决审查中提出的问题。
|
||||
|
||||
例如,GitHub提供了灵活的分配审查者方式,包括手动分配、团队请求、使用 `CODEOWNERS` 文件自动分配等。
|
||||
|
||||
3. **分支保护规则 (Branch Protection Rules)**
|
||||
|
||||
分支保护规则是Git平台中用于强制执行高质量协作流程的最强大工具之一。它允许仓库管理员为特定分支(通常是 `main` 分支)设置一系列强制要求,以防止未经验证的代码被直接推送或合并。
|
||||
|
||||
| 规则名称 | 功能描述 |
|
||||
| :--- | :--- |
|
||||
| `Require a pull request before merging` | **禁止直接向受保护分支推送代码**。 |
|
||||
| `Require approvals` | 设置PR在被合并前必须获得的批准数量。 |
|
||||
| `Dismiss stale PR approvals when new commits are pushed` | 当新的提交被推送到 PR 时,**之前已有的批准将被撤销**,要求重新审查。 |
|
||||
| `Require review from code owners` | 如果PR修改了 `CODEOWNERS` 文件中指定的代码,则必须经过所有者的批准。 |
|
||||
| `Require status checks to pass before merging` | 要求PR必须通过所有必需的 CI/CD 状态检查(如自动化测试)。 |
|
||||
| `Require branches to be up to date before merging` | 在合并PR之前,要求该PR的分支必须与目标分支保持最新。 |
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:Git 的高级应用
|
||||
|
||||
### 4.6 Git在企业与科研中的应用
|
||||
|
||||
随着软件工程和数据科学的发展,Git 的应用早已超越了单纯的代码版本控制,深入到企业级 DevOps实践和科研领域的 “可复现性” 革命中。在企业环境中,Git与CI/CD、基础设施即代码(IaC)等理念结合,催生了 **GitOps** 这一高效的运维模式。而在教育和科研领域,Git 及其生态系统工具正被用作解决 **“可复现性危机”** 的关键技术,通过精确记录实验的每一步,确保研究成果的透明、可信和可重复。
|
||||
|
||||
#### 4.6.1 企业级DevOps与GitOps
|
||||
|
||||
GitOps作为DevOps 理念的一种具体实践和演进,将Git提升到了核心地位,成为整个系统基础设施和应用程序状态的 **“唯一事实来源”(Single Source of Truth)**。
|
||||
|
||||
1. **GitOps在 DevOps 中的角色**
|
||||
|
||||
GitOps引入了一种 **“拉取”(Pull)机制** 来解决传统的 CI/CD 流程中依赖工具直接 “推送”(Push)变更到生产环境的问题。
|
||||
|
||||
- **核心思想:** 将基础设施(如 Kubernetes 的 YAML 文件)和应用程序的部署配置以代码的形式存储在 **Git 仓库**中。
|
||||
- **工作流程:**
|
||||
1. 开发者通过向 Git 仓库提交一个 **Pull Request** 来声明对环境状态的期望变更。
|
||||
2. PR 合并后,一个部署在集群内部的 **“操作员”(Operator)** 组件(如 Flux 或 Argo CD)会检测到 Git 仓库中的状态变更。
|
||||
3. 该 “操作员” 会自动将集群的实际状态 **“拉取”** 到与 Git 仓库中声明的期望状态保持一致。
|
||||
|
||||
这种模式带来了更强的**安全性、可审计性与回滚能力**,并能有效防止配置漂移(Configuration Drift)。
|
||||
|
||||
2. **GitOps的角色转变**
|
||||
|
||||
GitOps的引入带来了团队角色的深刻转变:
|
||||
|
||||
* **从“运维”到“平台工程”:** 运维团队的角色的核心转变为构建和维护一个稳定、高效、自动化的交付平台(即 GitOps 系统本身)。
|
||||
* **从“开发”到“全生命周期所有者”:** 开发团队通过提交 PR 直接驱动部署流程,实践了 **“谁构建,谁运行”(You build it, you run it)** 的理念,对应用的全生命周期拥有更强的 **ownership**。
|
||||
* **协作模式的演进:** 开发与运维双方围绕同一个 Git 仓库进行工作,所有的变更、讨论和决策都通过 PR 和代码审查来完成,真正实现了 DevOps 所倡导的“打破部门墙”的目标。
|
||||
|
||||
#### 4.6.2 Git在教育与科研中的新角色: 解决“可复现性危机”
|
||||
|
||||
在现代科学研究中,**可复现性(Reproducibility)**是衡量研究成果可靠性的黄金标准。Git,特别是与GitHub等平台的结合,正逐渐成为解决这一危机的核心工具。它不仅仅是一个代码版本控制系统,更是一个能够完整记录、追溯和共享整个研究过程的 **“数字实验笔记本”**。
|
||||
|
||||
1, **Git作为终极“数字实验笔记本”**
|
||||
|
||||
将Git用作“数字实验笔记本” 的核心思想,是将研究项目的所有组成部分——包括源代码、数据、分析脚本、实验结果等——都纳入版本控制的范畴。
|
||||
|
||||
2. **科研项目的结构化目录设计**
|
||||
|
||||
一个精心设计的项目目录结构是实现科研可复现性的第一步。一个被广泛推荐的结构是 **“金字塔形目录架构”**:
|
||||
|
||||
```
|
||||
Research_Project/
|
||||
├── 0_Admin/ # 行政管理 (Git 管理)
|
||||
├── 1_Development/ # 代码开发
|
||||
│ └── src/
|
||||
├── 2_Data/ # 数据资产 (DVC 管理)
|
||||
├── 3_Analysis/ # 分析报告 (Jupyter Notebook)
|
||||
├── 4_Communication/ # 学术交流
|
||||
└── 5_Knowledge_Base/ # 知识库
|
||||
```
|
||||
|
||||
这种结构为版本控制和协作提供了清晰的框架,确保项目的每个方面都被系统地记录和管理。
|
||||
|
||||
3. **全流程追溯系统建设**
|
||||
|
||||
在建立了清晰的目录结构后,下一步是构建一个全流程追溯系统,确保研究过程中的每一步骤都能被精确地记录和关联。
|
||||
|
||||
* **Git Hooks 应用:** 可以利用 Git 的钩子(Hooks)功能实现自动化,例如通过 `post-commit` 钩子,在每次提交后自动生成一个调试报告模板,并将提交详细信息记录下来。
|
||||
* **数据/模型跟踪:** 在数值实验阶段,可以使用 \*\*DVC(Data Version Control)\*\*等工具来跟踪数据流水线和实验结果,实现 **“论⽂图表 ←→ 代码版本 ←→ 实验数据”** 的强关联。
|
||||
|
||||
为了最大化 Git 在科研中的效用,可以将其与其他智能工具链集成:
|
||||
|
||||
* **知识图谱集成:** 使用知识图谱工具(如 Roam Research)构建项目内的概念网络,通过双向链接将相关的代码文件、实验报告和论文笔记自动关联起来。
|
||||
* **高效协作:** Git 平台(如 GitHub)提供的 Pull Request 机制和 Project Boards,将 Git 从一个单纯的版本控制工具,提升为**集项目管理、知识共享和团队协作于一体的综合性科研平台**。
|
||||
|
||||
**实践案例: 从实验室到论文**
|
||||
|
||||
Git和GitHub在科研中的应用已经渗透到各个环节:
|
||||
|
||||
* **顶尖研究团队:** 许多顶尖研究团队(如鹏城实验室、上海人工智能实验室)将代码、模型和数据开源在 GitHub 上,促进了学术界的交流与合作。
|
||||
* **可复现性典范:** 从西安交通利物浦大学肖继民教授团队公开发布的数十个研究项目,到北京大学数据与智能实验室(PKU-DAIR)为新手科研人员准备的入门指南仓库,这些案例都雄辩地证明了 Git 和 GitHub 已经成为现代科研不可或缺的基础设施。
|
||||
|
||||
-----
|
||||
|
||||
## 第四部分 互动与讨论
|
||||
|
||||
|
||||
## 🎯活动形式
|
||||
|
||||
小组讨论(4–5人),每组选择一个主题,讨论10分钟后,每组用1张便利贴回答输出讨论结论。
|
||||
|
||||
## ❓小组讨论问题
|
||||
|
||||
1. Git的内容寻址对象模型(Blob、Tree、Commit、Tag)如何保证数据的完整性和高效存储?请结合实际操作举例说明。
|
||||
2. 在团队协作中,如何利用Git的分支策略和Pull Request机制提高代码质量和开发效率?你认为哪些最佳实践最关键?
|
||||
3. 持续集成(CI)和持续交付/部署(CD)在现代软件开发中扮演什么角色?Git事件如何驱动CI/CD流水线的自动化?
|
||||
4. GitOps作为一种基于Git的运维模式,如何改变传统运维团队和开发团队的角色分工?它带来了哪些安全性和审计性的提升?
|
||||
|
||||
## 🌟 讲师总结引导
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
本章从“命令使用”进入“理解系统”,让学生真正掌握 Git 为什么这样设计、底层如何运行、为什么它能支撑全球软件协作。通过对对象模型、图结构、历史管理和协作流程的学习,学生从“记命令”转向“理解模型”,学会在复杂场景下作出正确的版本管理与协作决策。
|
||||
|
||||
掌握本章的关键知识点后,学生将能够:
|
||||
|
||||
| 学习维度 | 关联知识点 |
|
||||
| :--- | :--- |
|
||||
| **知识点** | <ul><li>**底层架构**:掌握 Git 的核心是一个基于内容寻址(Content-Addressable)的键值数据库,由四种不可变对象(Blob、Tree、Commit、Tag)构成。<li>**历史结构**:理解 Git 的项目历史是一个有向无环图(DAG),由 Commit 节点和 Parent 引用构成,保证了历史的安全性和可追溯性。<li>**版本范式**:理解Git存储的范式是快照而非差异**,以及默克尔树结构如何保证数据完整性。<li>**高级撤销**:掌握 `git restore`(文件级安全)、`git reset`(本地历史重写)和 `git revert`(公共历史安全)这三个核心撤销命令的机制与边界。</ul> |
|
||||
| **能力点** | <ul><li>**历史策划**:理解 `git rebase -i` 是 **复制和重放** 操作,用于策划本地提交历史,并能评估其在公共分支上的风险。<li>**自动化集成**:理解 Git 事件(Push/PR)作为 CI/CD 流水线**触发器**的角色,并掌握 GitHub Flow 的协作流程。<li>**高级应用**:分析 **GitOps**的**“拉取”(Pull)机制**,理解 Git 作为"唯一事实来源"实现声明式运维的原理。<li>可复现性:认识 Git 在科研中作为 “数字实验笔记本” 的作用,并能理解其在解决**可复现性危机**中的价值。</ul> |
|
||||
| **素养点** | <ul><li>**系统思维**:掌握 Git 的“道”(设计哲学)而非仅仅是“术”(命令),学会在复杂场景下作出正确的版本管理与协作决策。<li>**安全意识**:理解Commit的不可变性和 SHA-1的重要性,建立对历史操作的风险意识。<li>**DevOps 思维**:理解 Git 如何与 CI/CD 深度融合,支持现代软件交付的快速、可靠与可重复。</ul> |
|
||||
|
||||
---
|
||||
|
||||
## 附录 A:教师教学指南
|
||||
|
||||
### 1. 教学重点
|
||||
|
||||
本章的教学核心是引导学员实现从 **Git 命令使用者** 到 **系统理解者** 的转变,教学应侧重于Git的设计思想和高级应用场景。
|
||||
|
||||
* **底层架构与原理:** 重点讲解 Git 的核心是一个基于**内容寻址(Content-Addressable)** 的键值数据库,并由四种对象(Blob、Tree、Commit、Tag)构成。强调 Git 存储的范式是**快照而非差异**,以及 Commit 对象通过 DAG(有向无环图)结构连接历史。
|
||||
* **高级历史操作:** 必须清晰区分 `git restore`、`git reset` 和 `git revert` 这三个“撤销”命令的功能边界和对工作目录、暂存区、HEAD 的影响。强调 `git rebase -i` 是 **复制和重放** 操作,会创建新的 SHA-1,并用于**策划提交历史**。
|
||||
* **自动化与协作:** 重点讲解 Git 事件(Push/PR)作为 CI/CD 流水线**触发器**的角色。理解**GitHub Flow** 为例子的协作流程,以及通过**分支保护规则**(如要求审批、CI 检查)强制执行质量规范。
|
||||
* **前沿应用:** 介绍 **GitOps 范式**,理解 Git 作为**“唯一事实来源”**的地位和其通过 **“拉取”(Pull)机制** 实现声明式运维的原理。介绍 Git 在科研中作为 **“数字实验笔记本”**,解决**可复现性危机**的应用。
|
||||
|
||||
### 2. 教学难点
|
||||
|
||||
* **DAG 与对象引用:** 学员难以从文件系统视角转换到 Git 的图数据库视角,对 Commit-Tree-Blob 构成的默克尔树(Merkle tree)哈希引用关系理解模糊。
|
||||
* **撤销命令的区分与安全性:** `restore`、`reset`、`revert` 三个命令的机制、功能边界及对 HEAD 的影响容易混淆。难以理解 `restore` 永远不会更新 HEAD 的安全特性。
|
||||
* **Rebase 的 “复制” 机制:** 难以理解为什么 Rebase 会改变 Commit 的 SHA-1,及其与 Merge 的本质区别,以及在公共分支上操作的风险。
|
||||
* **GitOps 的 “拉取” 模型:** 从传统的 CI/CD “推送”(Push)部署模式转换到 GitOps 的 “拉取”(Pull)声明式运维模式存在认知障碍。
|
||||
|
||||
### 3. 常见问题 (FAQ)
|
||||
|
||||
- 为什么 Git 要用 SHA-1 哈希值来命名文件?
|
||||
- `git stash` 只是一个补丁文件吗?如果不是,它如何记住暂存区和工作区的状态?
|
||||
- 在团队协作中,我已经把分支推到远程了,还能用 `git rebase -i` 整理提交吗?
|
||||
- 为什么 `git restore` 这么安全?它和 `git reset --hard` 有什么根本区别?
|
||||
- 持续交付(CD)和持续部署(CD)到底有什么区别?
|
||||
|
||||
---
|
||||
|
||||
## 附录B:课程讲义术语表(按英文字母排序)
|
||||
|
||||
- **Blob** 是Git中的二进制大对象,专门用于存储文件的原始内容,不包含文件名或任何元数据。它是Git内容寻址存储的基础。
|
||||
- **Branch(分支)** 是Git中用于并行开发的指针,指向一系列提交,支持多条开发线的独立演进。
|
||||
- **CI/CD** 指持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery/Deployment),是一套自动化构建、测试和发布的软件开发实践。
|
||||
- **Commit(提交)** 是Git中的版本快照对象,包含项目某一时刻的完整文件状态及元数据信息,如作者、时间和父提交。
|
||||
- **Content-Addressable(内容寻址)** 是Git通过内容的哈希值作为唯一标识进行存储和检索的机制,保证数据的完整性和去重。
|
||||
- **Git** 是一个分布式版本控制系统,支持多人协作开发和高效管理代码历史。
|
||||
- **GitOps** 是一种基于Git的运维模式,通过将基础设施和应用配置以代码形式存储在Git仓库,实现自动化运维和配置管理。
|
||||
- **HEAD** 是指向当前检出分支最新提交的指针,代表当前工作状态。
|
||||
- **Lightweight Tag(轻量标签)** 是Git中仅作为提交引用的简单标签,适用于临时标记。
|
||||
- **Merge(合并)** 是将两个分支的历史合并生成新的提交,整合不同开发线的改动。
|
||||
- **Packfile** 是Git将多个对象打包存储的文件格式,用于优化磁盘空间和访问效率。
|
||||
- **Pull Request(拉取请求)** 是请求将代码变更合并到目标分支的流程,包含代码审查和讨论环节。
|
||||
- **Rebase(变基)** 是重新应用提交到新的基底的操作,用于优化提交历史结构。
|
||||
- **Restore** 是Git中用于安全撤销工作目录和暂存区更改的命令,不影响提交历史。
|
||||
- **SHA-1** 是Git使用的哈希算法,生成40位十六进制字符串,用于唯一标识对象内容。
|
||||
- **Stash** 是Git中用于临时保存当前工作目录和暂存区未提交更改的机制,方便切换分支。
|
||||
- **Tag(标签)** 是Git中用于标记特定提交的对象,分为轻量标签和附注标签。
|
||||
- **Tree(树对象)** 表示Git中的目录结构,包含指向Blob或子Tree的引用。
|
||||
- **Working Directory(工作目录)** 是用户实际操作的文件目录,包含当前文件的状态。
|
||||
- **zlib压缩** 是Git使用的压缩算法,用于减少对象存储空间。
|
||||
- **图数据库模型** 是Git内部结构的抽象,视为对象和引用构成的有向无环图(DAG),支持复杂版本历史管理。
|
||||
- **代码审查** 是通过Pull Request对代码进行评审的过程,确保代码质量和团队协作。
|
||||
- **附注标签(Annotated Tag)** 是包含标签信息和签名的完整Git对象,适用于正式发布。
|
||||
- **分支保护规则** 是仓库设置的限制,用于确保分支代码质量和合并流程的规范执行。
|
||||
- **知识图谱** 是关联项目内代码、文档和笔记的概念网络,提升科研和开发的系统化管理。
|
||||
|
||||
---
|
||||
|
||||
## 许可声明
|
||||
|
||||
本文档采用 [知识共享署名--相同方式共享 4.0 国际许可协议 (CC BY--SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 进行许可, © 2025 Gitconomy Research社区。
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 580">
|
||||
<!-- 背景 -->
|
||||
<rect width="800" height="580" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="40" font-family="Arial, sans-serif" font-size="24" fill="#333" text-anchor="middle" font-weight="bold">数字公共产品关键特征</text>
|
||||
|
||||
<!-- 中心背景 - 更大的六边形背景 -->
|
||||
<polygon points="400,210 470,245 470,315 400,350 330,315 330,245" fill="#E8EFF9" stroke="#B0C4DE" stroke-width="1" />
|
||||
|
||||
<!-- 中心形状 - 六边形数字公共产品 -->
|
||||
<polygon points="400,230 450,260 450,310 400,340 350,310 350,260" fill="#0056D6" />
|
||||
<text x="400" y="275" font-family="Arial, sans-serif" font-size="18" fill="white" text-anchor="middle" font-weight="bold">数字</text>
|
||||
<text x="400" y="300" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle">公共产品</text>
|
||||
|
||||
<!-- 特征节点和连接线 - 等距分布 -->
|
||||
<!-- 开源许可 - 上方 -->
|
||||
<line x1="400" y1="230" x2="400" y2="180" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="400" cy="130" r="50" fill="#E1701A" />
|
||||
<text x="400" y="125" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">开源许可</text>
|
||||
<text x="400" y="145" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">Open Source</text>
|
||||
<text x="400" y="75" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">使用开源、开放内容或公共领域许可</text>
|
||||
|
||||
<!-- 无害原则 - 右上 -->
|
||||
<line x1="450" y1="260" x2="500" y2="220" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="550" cy="170" r="50" fill="#7E2E84" />
|
||||
<text x="550" y="165" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">无害原则</text>
|
||||
<text x="550" y="185" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">Do No Harm</text>
|
||||
<text x="550" y="100" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="550" dy="0">设计和使用不应造成伤害</tspan>
|
||||
<tspan x="550" dy="15">符合道德标准</tspan>
|
||||
</text>
|
||||
|
||||
<!-- 开放标准 - 右下 -->
|
||||
<line x1="450" y1="310" x2="500" y2="350" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="550" cy="400" r="50" fill="#0E9AA7" />
|
||||
<text x="550" y="395" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">开放标准</text>
|
||||
<text x="550" y="415" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">Open Standards</text>
|
||||
<text x="550" y="470" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="550" dy="0">采用开放标准保证</tspan>
|
||||
<tspan x="550" dy="15">互操作性和兼容性</tspan>
|
||||
</text>
|
||||
|
||||
<!-- 可持续发展 - 下方 -->
|
||||
<line x1="400" y1="340" x2="400" y2="390" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="400" cy="440" r="50" fill="#3DA35D" />
|
||||
<text x="400" y="435" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">可持续发展</text>
|
||||
<text x="400" y="455" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">SDGs</text>
|
||||
<text x="400" y="510" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="400" dy="0">支持联合国可持续发展目标(SDGs)</tspan>
|
||||
<tspan x="400" dy="15">解决全球性挑战</tspan>
|
||||
</text>
|
||||
|
||||
<!-- 数据主权 - 左下 -->
|
||||
<line x1="350" y1="310" x2="300" y2="350" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="250" cy="400" r="50" fill="#F39237" />
|
||||
<text x="250" y="395" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">数据主权</text>
|
||||
<text x="250" y="415" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">Data Sovereignty</text>
|
||||
<text x="250" y="470" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="250" dy="0">用户拥有对其数据的</tspan>
|
||||
<tspan x="250" dy="15">控制权和选择权</tspan>
|
||||
</text>
|
||||
|
||||
<!-- 隐私保护 - 左上 -->
|
||||
<line x1="350" y1="260" x2="300" y2="220" stroke="#90a4ae" stroke-width="2" />
|
||||
<circle cx="250" cy="170" r="50" fill="#D72638" />
|
||||
<text x="250" y="165" font-family="Arial, sans-serif" font-size="14" fill="white" text-anchor="middle" font-weight="bold">隐私保护</text>
|
||||
<text x="250" y="185" font-family="Arial, sans-serif" font-size="10" fill="white" text-anchor="middle">Privacy</text>
|
||||
<text x="250" y="100" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="250" dy="0">保护用户数据和隐私</tspan>
|
||||
<tspan x="250" dy="15">符合相关法规</tspan>
|
||||
</text>
|
||||
|
||||
<!-- DPGA框 - 与中间元素居中对齐 -->
|
||||
<g>
|
||||
<rect x="135" y="245" width="140" height="70" rx="5" ry="5" fill="#f0f0f0" stroke="#ddd" />
|
||||
<text x="205" y="265" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">数字公共产品联盟</text>
|
||||
<text x="205" y="285" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">(DPGA)</text>
|
||||
<text x="205" y="305" font-family="Arial, sans-serif" font-size="9" fill="#666" text-anchor="middle">
|
||||
<tspan x="205" dy="0">成立于2019年</tspan>
|
||||
<tspan x="205" dy="12">建立DPG标准和登记处</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="400" y="560" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
|
|
@ -0,0 +1,98 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100%" height="100%" viewBox="0 0 1200 850" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.title { font-size: 20px; font-weight: bold; fill: #111; text-anchor: middle; }
|
||||
.subtitle { font-size: 14px; fill: #444; text-anchor: middle; }
|
||||
.field-title { font-size: 18px; font-weight: bold; fill: #005A9C; }
|
||||
.category-title { font-size: 14px; font-weight: bold; fill: #333; }
|
||||
.item-text { font-size: 13px; fill: #444; }
|
||||
.info-box { stroke: #ccc; stroke-width: 1; }
|
||||
.connector { stroke: #555; stroke-width: 1.5; marker-end: url(#arrowhead); }
|
||||
.license-text { font-size: 14px; fill: #666; text-anchor: middle; }
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto" markerUnits="strokeWidth">
|
||||
<path d="M0,0 L0,6 L8,3 z" fill="#555" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<g id="central-hub">
|
||||
<rect x="450" y="325" width="300" height="150" rx="10" ry="10" fill="#f5f5f5" class="info-box" />
|
||||
<text x="600" y="380" class="title">开源精神与方法</text>
|
||||
<text x="600" y="405" class="subtitle">
|
||||
<tspan x="600">透明、协作、用户自由</tspan>
|
||||
<tspan x="600" dy="1.4em">等核心原则</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<line x1="450" y1="350" x2="380" y2="260" class="connector" />
|
||||
<line x1="750" y1="350" x2="820" y2="260" class="connector" />
|
||||
<line x1="450" y1="450" x2="380" y2="540" class="connector" />
|
||||
<line x1="750" y1="450" x2="820" y2="540" class="connector" />
|
||||
|
||||
<g id="osh">
|
||||
<rect x="50" y="50" width="450" height="210" rx="8" ry="8" fill="#E8F8F5" class="info-box" />
|
||||
<text x="70" y="80" class="field-title">1. 开源硬件 (Open Source Hardware, OSH)</text>
|
||||
<text x="70" y="110" class="category-title">理念延伸:</text>
|
||||
<text x="80" y="130" class="item-text">
|
||||
<tspan x="80" dy="0em">• “源代码”表现为产品的设计文件(电路图、机械制图等)。</tspan>
|
||||
</text>
|
||||
<text x="70" y="155" class="category-title">意义与影响:</text>
|
||||
<text x="80" y="175" class="item-text">
|
||||
<tspan x="80" dy="0em">• 民主化实体制造,点燃全球“创客运动”。</tspan>
|
||||
</text>
|
||||
<text x="70" y="200" class="category-title">典型案例:</text>
|
||||
<text x="80" y="220" class="item-text">• Arduino</text>
|
||||
</g>
|
||||
|
||||
<g id="oer">
|
||||
<rect x="700" y="50" width="450" height="210" rx="8" ry="8" fill="#FEF9E7" class="info-box" />
|
||||
<text x="720" y="80" class="field-title">2. 开放教育资源 (OER)</text>
|
||||
<text x="720" y="110" class="category-title">理念延伸:</text>
|
||||
<text x="730" y="130" class="item-text">
|
||||
<tspan x="730" dy="0em">• “源代码”是教学材料本身(教科书、课程大纲等)。</tspan>
|
||||
</text>
|
||||
<text x="720" y="155" class="category-title">精神与方法:</text>
|
||||
<text x="730" y="175" class="item-text">
|
||||
<tspan x="730" dy="0em">• 核心精神是知识普惠,方法被精炼为“5R”原则。</tspan>
|
||||
</text>
|
||||
<text x="720" y="200" class="category-title">典型案例:</text>
|
||||
<text x="730" y="220" class="item-text">• MIT OpenCourseWare</text>
|
||||
</g>
|
||||
|
||||
<g id="science">
|
||||
<rect x="50" y="540" width="450" height="210" rx="8" ry="8" fill="#F4ECF7" class="info-box" />
|
||||
<text x="70" y="570" class="field-title">3. 开放科学 (Open Science)</text>
|
||||
<text x="70" y="600" class="category-title">理念延伸:</text>
|
||||
<text x="80" y="620" class="item-text">
|
||||
<tspan x="80" dy="0em">• 整个科研流程(方法、数据、出版物)都成为可被审视的“源代码”。</tspan>
|
||||
</text>
|
||||
<text x="70" y="645" class="category-title">意义与影响:</text>
|
||||
<text x="80" y="665" class="item-text">
|
||||
<tspan x="80" dy="0em">• 对科研“可复现性危机”的直接回应,通过全球协作加速创新。</tspan>
|
||||
</text>
|
||||
<text x="70" y="690" class="category-title">典型案例:</text>
|
||||
<text x="80" y="710" class="item-text">• Plan S 倡议</text>
|
||||
</g>
|
||||
|
||||
<g id="dpg">
|
||||
<rect x="700" y="540" width="450" height="210" rx="8" ry="8" fill="#FDEDEC" class="info-box" />
|
||||
<text x="720" y="570" class="field-title">4. 数字公共产品 (DPG)</text>
|
||||
<text x="720" y="600" class="category-title">理念延伸:</text>
|
||||
<text x="730" y="620" class="item-text">
|
||||
<tspan x="730" dy="0em">• 有助于实现联合国可持续发展目标的开源软件、数据、AI模型等。</tspan>
|
||||
</text>
|
||||
<text x="720" y="645" class="category-title">意义与影响:</text>
|
||||
<text x="730" y="665" class="item-text">
|
||||
<tspan x="730" dy="0em">• 为中低收入国家提供构建数字基础设施的蓝图,避免技术锁定。</tspan>
|
||||
</text>
|
||||
<text x="720" y="690" class="category-title">典型案例:</text>
|
||||
<text x="730" y="710" class="item-text">• DHIS2 (全球公共卫生管理平台)</text>
|
||||
</g>
|
||||
|
||||
<text x="600" y="820" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
|
|
@ -0,0 +1,169 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 940 600">
|
||||
<!-- 背景 -->
|
||||
<rect width="940" height="600" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="450" y="40" font-family="Arial, sans-serif" font-size="28" fill="#333" text-anchor="middle" font-weight="bold">开放运动的融合与演变</text>
|
||||
|
||||
<!-- 时间轴背景 -->
|
||||
<rect x="100" y="490" width="700" height="4" fill="#ddd" rx="2" ry="2"/>
|
||||
|
||||
<!-- 时间节点 -->
|
||||
<circle cx="150" cy="492" r="8" fill="#4285f4"/>
|
||||
<text x="150" y="520" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle">1990s-2000s</text>
|
||||
<text x="150" y="540" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">开源软件起步</text>
|
||||
|
||||
<circle cx="300" cy="492" r="8" fill="#4285f4"/>
|
||||
<text x="300" y="520" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle">2000s-2010s</text>
|
||||
<text x="300" y="540" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">多领域扩展</text>
|
||||
|
||||
<circle cx="450" cy="492" r="8" fill="#4285f4"/>
|
||||
<text x="450" y="520" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle">2010s-2020s</text>
|
||||
<text x="450" y="540" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">生态系统融合</text>
|
||||
|
||||
<circle cx="600" cy="492" r="8" fill="#4285f4"/>
|
||||
<text x="600" y="520" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle">2020s-2025+</text>
|
||||
<text x="600" y="540" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">AI交织与制度化</text>
|
||||
|
||||
<circle cx="750" cy="492" r="8" fill="#4285f4"/>
|
||||
<text x="750" y="520" font-family="Arial, sans-serif" font-size="14" fill="#333" text-anchor="middle">2025+</text>
|
||||
<text x="750" y="540" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">全球挑战解决方案</text>
|
||||
|
||||
<!-- 融合阶段 - 已调整垂直居中 - 移到其他元素下面 -->
|
||||
<g>
|
||||
<ellipse cx="480" cy="300" rx="130" ry="170" fill="#E8EFF9" stroke="#B0C4DE" stroke-width="2" opacity="0.7"/>
|
||||
<text x="480" y="190" font-family="Arial, sans-serif" font-size="18" fill="#333" text-anchor="middle" font-weight="bold">开放创新生态系统</text>
|
||||
<text x="480" y="215" font-family="Arial, sans-serif" font-size="12" fill="#666" text-anchor="middle">各领域互相支持与共生</text>
|
||||
|
||||
<line x1="440" y1="240" x2="440" y2="380" stroke="#90a4ae" stroke-width="2" stroke-dasharray="5,3"/>
|
||||
<circle cx="440" y="260" r="6" fill="#4285f4"/>
|
||||
<circle cx="440" y="300" r="6" fill="#ea4335"/>
|
||||
<circle cx="440" y="340" r="6" fill="#fbbc05"/>
|
||||
<!-- 移除了绿色圆点 -->
|
||||
|
||||
<text x="455" y="265" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="start">开源软件提供科研工具</text>
|
||||
<text x="455" y="305" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="start">开放科学产生开放数据</text>
|
||||
<text x="455" y="345" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="start">开放数据促进教育普及</text>
|
||||
<text x="455" y="385" font-family="Arial, sans-serif" font-size="11" fill="#333" text-anchor="start">开放教育培养新一代贡献者</text>
|
||||
</g>
|
||||
|
||||
<!-- 开放领域及其演变 -->
|
||||
<!-- 开源硬件 -->
|
||||
<g>
|
||||
<rect x="280" y="150" width="120" height="60" rx="10" ry="10" fill="#ea4335" opacity="0.8"/>
|
||||
<text x="340" y="180" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">开源硬件</text>
|
||||
<text x="340" y="200" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">Open Hardware</text>
|
||||
</g>
|
||||
|
||||
<!-- 开放教育 -->
|
||||
<g>
|
||||
<rect x="280" y="230" width="120" height="60" rx="10" ry="10" fill="#fbbc05" opacity="0.8"/>
|
||||
<text x="340" y="260" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">开放教育</text>
|
||||
<text x="340" y="280" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">Open Education</text>
|
||||
</g>
|
||||
|
||||
<!-- 开源软件 - 已重新定位居中 -->
|
||||
<g>
|
||||
<rect x="130" y="270" width="120" height="60" rx="10" ry="10" fill="#4285f4" opacity="0.8"/>
|
||||
<text x="190" y="300" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">开源软件</text>
|
||||
<text x="190" y="320" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">Open Source</text>
|
||||
</g>
|
||||
|
||||
<!-- 开放科学 -->
|
||||
<g>
|
||||
<rect x="280" y="310" width="120" height="60" rx="10" ry="10" fill="#34a853" opacity="0.8"/>
|
||||
<text x="340" y="340" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">开放科学</text>
|
||||
<text x="340" y="360" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">Open Science</text>
|
||||
</g>
|
||||
|
||||
<!-- 数字公共产品 -->
|
||||
<g>
|
||||
<rect x="280" y="390" width="120" height="60" rx="10" ry="10" fill="#9c27b0" opacity="0.8"/>
|
||||
<text x="340" y="420" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">数字公共产品</text>
|
||||
<text x="340" y="440" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">Digital Public Goods</text>
|
||||
</g>
|
||||
|
||||
<!-- 未来发展趋势 -->
|
||||
<g>
|
||||
<rect x="650" y="130" width="160" height="70" rx="10" ry="10" fill="#0056D6" opacity="0.8"/>
|
||||
<text x="730" y="160" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">制度化与主流化</text>
|
||||
<text x="730" y="180" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">从边缘走向核心</text>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="650" y="220" width="160" height="70" rx="10" ry="10" fill="#7E2E84" opacity="0.8"/>
|
||||
<text x="730" y="250" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">开放治理模式</text>
|
||||
<text x="730" y="270" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">可持续协作机制</text>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="650" y="310" width="160" height="70" rx="10" ry="10" fill="#E1701A" opacity="0.8"/>
|
||||
<text x="730" y="340" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">AI与开放的交织</text>
|
||||
<text x="730" y="360" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">重塑创新范式</text>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="650" y="400" width="160" height="70" rx="10" ry="10" fill="#3DA35D" opacity="0.8"/>
|
||||
<text x="730" y="430" font-family="Arial, sans-serif" font-size="16" fill="white" text-anchor="middle" font-weight="bold">全球挑战解决方案</text>
|
||||
<text x="730" y="450" font-family="Arial, sans-serif" font-size="12" fill="white" text-anchor="middle">气候变化、公共卫生</text>
|
||||
</g>
|
||||
|
||||
<!-- 连接线 - 调整了开源软件的连接 -->
|
||||
<!-- 从开源软件到其他领域 -->
|
||||
<line x1="250" y1="300" x2="280" y2="180" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="250" y1="300" x2="280" y2="260" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="250" y1="300" x2="280" y2="340" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="250" y1="300" x2="280" y2="420" stroke="#90a4ae" stroke-width="2"/>
|
||||
|
||||
<!-- 从多领域到融合 -->
|
||||
<line x1="400" y1="180" x2="440" y2="240" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="400" y1="260" x2="440" y2="270" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="400" y1="340" x2="440" y2="330" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="400" y1="420" x2="440" y2="370" stroke="#90a4ae" stroke-width="2"/>
|
||||
|
||||
<!-- 从融合到未来趋势 -->
|
||||
<line x1="580" y1="230" x2="650" y2="165" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="580" y1="270" x2="650" y2="255" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="580" y1="330" x2="650" y2="345" stroke="#90a4ae" stroke-width="2"/>
|
||||
<line x1="580" y1="380" x2="650" y2="435" stroke="#90a4ae" stroke-width="2"/>
|
||||
|
||||
<!-- 关键案例框 - 调整了位置 -->
|
||||
<g>
|
||||
<rect x="15" y="250" width="100" height="110" rx="5" ry="5" fill="#f0f0f0" stroke="#ddd" />
|
||||
<text x="65" y="270" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">开源软件案例</text>
|
||||
<text x="65" y="295" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="65" dy="0">Linux</tspan>
|
||||
<tspan x="65" dy="15">Apache</tspan>
|
||||
<tspan x="65" dy="15">TensorFlow</tspan>
|
||||
<tspan x="65" dy="15">Kubernetes</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="150" y="340" width="100" height="110" rx="5" ry="5" fill="#f0f0f0" stroke="#ddd" />
|
||||
<text x="200" y="360" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">开放领域典范</text>
|
||||
<text x="200" y="385" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="200" dy="0">Arduino (硬件)</tspan>
|
||||
<tspan x="200" dy="15">MIT OCW (教育)</tspan>
|
||||
<tspan x="200" dy="15">Plan S (科学)</tspan>
|
||||
<tspan x="200" dy="15">DHIS2 (公共产品)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="830" y="230" width="100" height="110" rx="5" ry="5" fill="#f0f0f0" stroke="#ddd" />
|
||||
<text x="880" y="250" font-family="Arial, sans-serif" font-size="12" fill="#333" text-anchor="middle" font-weight="bold">未来趋势标志</text>
|
||||
<text x="880" y="275" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
<tspan x="880" dy="0">开源 LLM</tspan>
|
||||
<tspan x="880" dy="15">开放气候数据</tspan>
|
||||
<tspan x="880" dy="15">去中心化治理</tspan>
|
||||
<tspan x="880" dy="15">全球开源基础设施</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="450" y="580" font-family="Arial, sans-serif" font-size="10" fill="#666" text-anchor="middle">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,75 @@
|
|||
<svg width="800" height="750" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
.title { font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif; font-size: 24px; font-weight: bold; text-anchor: middle; fill: #212529; }
|
||||
.subtitle { font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif; font-size: 16px; text-anchor: middle; fill: #495057; }
|
||||
.foundation-box { fill: #f8f9fa; stroke: #adb5bd; stroke-width: 1.5; }
|
||||
.foundation-text { font-size: 16px; font-weight: bold; fill: #495057; text-anchor: middle; }
|
||||
.oer-center { fill: #e7f5ff; stroke: #1c7ed6; stroke-width: 2; }
|
||||
.oer-text { font-size: 20px; font-weight: bold; fill: #1864ab; text-anchor: middle; }
|
||||
.r5-node { fill: #fff; stroke: #5f3dc4; stroke-width: 2; }
|
||||
.r5-text { font-size: 16px; font-weight: bold; fill: #5f3dc4; text-anchor: middle; }
|
||||
.r5-subtext { font-size: 12px; fill: #495057; text-anchor: middle; }
|
||||
.actor-text { font-size: 18px; font-weight: bold; fill: #087f5b; text-anchor: middle; }
|
||||
.arrow-path { fill: none; stroke: #ced4da; stroke-width: 2.5; marker-end: url(#arrowhead); }
|
||||
.license-text { font-size: 14px; fill: #666; text-anchor: middle; }
|
||||
</style>
|
||||
<marker id="arrowhead" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#ced4da" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="45" class="title">开放教育模式 (OER 5R原则)</text>
|
||||
<text x="400" y="95" class="subtitle">构建全球知识共享地</text>
|
||||
|
||||
<rect x="220" y="600" width="350" height="50" rx="10" class="foundation-box" />
|
||||
<text x="400" y="630" class="foundation-text">法律基石: 开放许可 (CreativeCommons)</text>
|
||||
|
||||
<circle cx="400" cy="380" r="80" class="oer-center" />
|
||||
<text x="400" y="375" class="oer-text">开放教育资源</text>
|
||||
<text x="400" y="400" class="oer-text">(OER)</text>
|
||||
|
||||
<text x="100" y="380" class="actor-text">教育者</text>
|
||||
<text x="700" y="380" class="actor-text">学习者</text>
|
||||
<path d="M 150,380 C 200,280 250,230 350,230" stroke="#a6a6a6" stroke-width="1.5" fill="none" stroke-dasharray="5,5" />
|
||||
<path d="M 650,380 C 600,280 550,230 450,230" stroke="#a6a6a6" stroke-width="1.5" fill="none" stroke-dasharray="5,5" />
|
||||
<path d="M 150,380 C 200,480 250,530 350,530" stroke="#a6a6a6" stroke-width="1.5" fill="none" stroke-dasharray="5,5" />
|
||||
<path d="M 650,380 C 600,480 550,530 450,530" stroke="#a6a6a6" stroke-width="1.5" fill="none" stroke-dasharray="5,5" />
|
||||
|
||||
|
||||
<path d="M 400 200 A 180 180 0 1 1 247.8 263.6" class="arrow-path" />
|
||||
<path d="M 247.8 263.6 A 180 180 0 1 1 247.8 496.4" class="arrow-path" />
|
||||
<path d="M 247.8 496.4 A 180 180 0 1 1 400 560" class="arrow-path" />
|
||||
<path d="M 400 560 A 180 180 0 1 1 552.2 496.4" class="arrow-path" />
|
||||
<path d="M 552.2 496.4 A 180 180 0 1 1 400 200" class="arrow-path" />
|
||||
|
||||
<g transform="translate(400, 200)">
|
||||
<circle cx="0" cy="0" r="45" class="r5-node"/>
|
||||
<text x="0" y="-5" class="r5-text">保留</text>
|
||||
<text x="0" y="15" class="r5-subtext">(Retain)</text>
|
||||
</g>
|
||||
<g transform="translate(247.8, 263.6)">
|
||||
<circle cx="0" cy="0" r="45" class="r5-node"/>
|
||||
<text x="0" y="-5" class="r5-text">重用</text>
|
||||
<text x="0" y="15" class="r5-subtext">(Reuse)</text>
|
||||
</g>
|
||||
<g transform="translate(247.8, 496.4)">
|
||||
<circle cx="0" cy="0" r="45" class="r5-node"/>
|
||||
<text x="0" y="-5" class="r5-text">修改</text>
|
||||
<text x="0" y="15" class="r5-subtext">(Revise)</text>
|
||||
</g>
|
||||
<g transform="translate(552.2, 496.4)">
|
||||
<circle cx="0" cy="0" r="45" class="r5-node"/>
|
||||
<text x="0" y="-5" class="r5-text">混合</text>
|
||||
<text x="0" y="15" class="r5-subtext">(Remix)</text>
|
||||
</g>
|
||||
<g transform="translate(552.2, 263.6)">
|
||||
<circle cx="0" cy="0" r="45" class="r5-node"/>
|
||||
<text x="0" y="-5" class="r5-text">再分发</text>
|
||||
<text x="0" y="15" class="r5-subtext">(Redistribute)</text>
|
||||
</g>
|
||||
|
||||
<text x="50%" y="700" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
|
|
@ -0,0 +1,63 @@
|
|||
<svg width="100%" height="100%" viewBox="0 0 600 720" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.main-title { font-size: 24px; font-weight: bold; text-anchor: middle; }
|
||||
.box { stroke-width: 1.5; rx: 8; ry: 8; }
|
||||
.box-title { font-size: 16px; font-weight: bold; }
|
||||
.item-text { font-size: 14px; }
|
||||
.arrow { stroke: #333; stroke-width: 2; marker-end: url(#arrowhead); }
|
||||
.arrow-text { font-size: 14px; font-style: italic; text-anchor: middle; fill: #444; }
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#333" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<text x="300" y="50" class="main-title">开放硬件 (Open Source Hardware)要素</text>
|
||||
|
||||
<g id="source-code-box">
|
||||
<rect x="100" y="100" width="400" height="120" fill="#EBF5FB" stroke="#005A9C" class="box" />
|
||||
<text x="120" y="130" class="box-title">1. 核心要素:硬件的“源代码”</text>
|
||||
<text x="130" y="160" class="item-text">
|
||||
<tspan x="130" dy="0em">• 电路图</tspan>
|
||||
<tspan x="130" dy="1.5em">• 机械制图</tspan>
|
||||
<tspan x="130" dy="1.5em">• 材料清单</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<line x1="300" y1="220" x2="300" y2="270" class="arrow" />
|
||||
<text x="300" y="250" class="arrow-text">公开发布与开放授权</text>
|
||||
|
||||
<g id="rights-box">
|
||||
<rect x="100" y="270" width="400" height="140" fill="#FEF9E7" stroke="#D4AC0D" class="box" />
|
||||
<text x="120" y="300" class="box-title">2. 赋予社区的权利</text>
|
||||
<text x="130" y="330" class="item-text">
|
||||
<tspan x="130" dy="0em">• 研究 (Study)</tspan>
|
||||
<tspan x="130" dy="1.5em">• 修改 (Modify)</tspan>
|
||||
<tspan x="130" dy="1.5em">• 制造 (Manufacture)</tspan>
|
||||
<tspan x="130" dy="1.5em">• 销售 (Sell)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<line x1="300" y1="410" x2="300" y2="460" class="arrow" />
|
||||
<text x="300" y="440" class="arrow-text">带来</text>
|
||||
|
||||
<g id="impact-box">
|
||||
<rect x="50" y="460" width="500" height="200" fill="#E8F8F5" stroke="#16A085" class="box" />
|
||||
<text x="70" y="490" class="box-title">3. 产生的影响与成果</text>
|
||||
<text x="80" y="520" class="item-text">
|
||||
<tspan x="80" dy="0em">• 极大地降低了硬件创造的门槛。</tspan>
|
||||
<tspan x="80" dy="1.5em">• 推动了实体制造的民主化。</tspan>
|
||||
<tspan x="80" dy="1.5em">• 赋予每个人成为创造者的可能。</tspan>
|
||||
<tspan x="80" dy="1.5em">• 激发了全球“创客运动”(Maker Movement)。</tspan>
|
||||
</text>
|
||||
<rect x="70" y="600" width="460" height="40" fill="#fff" stroke="#555" stroke-dasharray="3,3" />
|
||||
<text x="80" y="625" class="item-text" font-weight="bold">典型案例:Arduino</text>
|
||||
</g>
|
||||
|
||||
<text x="300" y="700" font-size="12px" fill="#888" text-anchor="middle">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
|
@ -0,0 +1,82 @@
|
|||
<svg width="100%" height="100%" viewBox="0 0 800 870" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.main-title { font-size: 24px; font-weight: bold; text-anchor: middle; fill: #333; }
|
||||
.center-text { font-size: 24px; fill: white; text-anchor: middle; font-weight: bold; }
|
||||
.center-subtext { font-size: 16px; fill: white; text-anchor: middle; }
|
||||
.node-text { font-size: 16px; fill: white; text-anchor: middle; font-weight: bold; }
|
||||
.node-subtext { font-size: 12px; fill: white; text-anchor: middle; }
|
||||
.annotation-text { font-size: 11px; fill: #666; }
|
||||
.connector { stroke: #90a4ae; stroke-width: 2; }
|
||||
.license-text { font-size: 12px; fill: #666; text-anchor: middle; }
|
||||
</style>
|
||||
|
||||
<rect width="100%" height="100%" fill="#f8f9fa"/>
|
||||
|
||||
<text x="400" y="60" class="main-title">开放科学关键特征</text>
|
||||
|
||||
<g id="center">
|
||||
<circle cx="400" cy="430" r="100" fill="#4285f4" />
|
||||
<text x="400" y="425" class="center-text">开放科学</text>
|
||||
<text x="400" y="450" class="center-subtext">Open Science</text>
|
||||
</g>
|
||||
|
||||
<g id="node-group">
|
||||
<line x1="400" y1="330" x2="400" y2="240" class="connector" />
|
||||
<circle cx="400" cy="180" r="60" fill="#ea4335" />
|
||||
<text x="400" y="175" class="node-text">开放获取</text>
|
||||
<text x="400" y="195" class="node-subtext">Open Access</text>
|
||||
<text x="400" y="110" class="annotation-text" text-anchor="middle">研究出版物免费,不设付费墙</text>
|
||||
|
||||
<line x1="479" y1="370" x2="574" y2="299" class="connector" />
|
||||
<circle cx="600" cy="270" r="60" fill="#fbbc05" />
|
||||
<text x="600" y="265" class="node-text">开放数据</text>
|
||||
<text x="600" y="285" class="node-subtext">Open Data</text>
|
||||
<text x="680" y="250" class="annotation-text" text-anchor="start">
|
||||
<tspan x="680" dy="0">遵循FAIR原则:</tspan>
|
||||
<tspan x="680" dy="1.2em">(可查找、可访问、</tspan>
|
||||
<tspan x="680" dy="1.2em">可互操作、可重用)</tspan>
|
||||
</text>
|
||||
|
||||
<line x1="495" y1="455" x2="594" y2="520" class="connector" />
|
||||
<circle cx="620" cy="550" r="60" fill="#fbbc05" />
|
||||
<text x="620" y="545" class="node-text">公民科学</text>
|
||||
<text x="620" y="565" class="node-subtext">Citizen Science</text>
|
||||
<text x="690" y="545" class="annotation-text" text-anchor="start">
|
||||
<tspan x="690" dy="0">公众参与</tspan>
|
||||
<tspan x="690" dy="1.2em">科学过程</tspan>
|
||||
</text>
|
||||
|
||||
<line x1="443" y1="521" x2="482" y2="628" class="connector" />
|
||||
<circle cx="490" cy="660" r="60" fill="#34a853" />
|
||||
<text x="490" y="655" class="node-text">开放方法</text>
|
||||
<text x="490" y="675" class="node-subtext">Open Methods</text>
|
||||
<text x="490" y="750" class="annotation-text" text-anchor="middle">研究设计与实验过程透明化</text>
|
||||
|
||||
<line x1="357" y1="521" x2="318" y2="628" class="connector" />
|
||||
<circle cx="310" cy="660" r="60" fill="#4285f4" />
|
||||
<text x="310" y="655" class="node-text">开放源码</text>
|
||||
<text x="310" y="675" class="node-subtext">Open Source</text>
|
||||
<text x="310" y="750" class="annotation-text" text-anchor="middle">科研软件和分析工具代码开源</text>
|
||||
|
||||
<line x1="305" y1="455" x2="206" y2="520" class="connector" />
|
||||
<circle cx="180" cy="550" r="60" fill="#ea4335" />
|
||||
<text x="180" y="540" class="node-text">
|
||||
<tspan x="180">开放同行评审</tspan>
|
||||
</text>
|
||||
<text x="180" y="565" class="node-subtext">Open Peer Review</text>
|
||||
<text x="110" y="550" class="annotation-text" text-anchor="end">透明的评审过程</text>
|
||||
|
||||
<line x1="321" y1="370" x2="226" y2="299" class="connector" />
|
||||
<circle cx="200" cy="270" r="60" fill="#34a853" />
|
||||
<text x="200" y="265" class="node-text">开放教育</text>
|
||||
<text x="200" y="285" class="node-subtext">Open Education</text>
|
||||
<text x="120" y="260" class="annotation-text" text-anchor="end">
|
||||
<tspan x="120" dy="0">教学材料可自由</tspan>
|
||||
<tspan x="120" dy="1.2em">访问与再分发</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<text x="400" y="820" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
|
|
@ -0,0 +1,62 @@
|
|||
<svg width="100%" height="100%" viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.main-title { font-size: 24px; font-weight: bold; text-anchor: middle; }
|
||||
.layer-text { font-size: 18px; font-weight: bold; fill: #333; text-anchor: middle; }
|
||||
.box-title { font-size: 16px; font-weight: bold; fill: #005A9C; }
|
||||
.category-title { font-size: 14px; font-weight: bold; fill: #333; }
|
||||
.item-text { font-size: 13px; fill: #444; }
|
||||
.info-box { stroke-width: 1; }
|
||||
.connector { stroke: #555; stroke-width: 1.5; marker-end: url(#arrowhead); }
|
||||
.license-text { font-size: 12px; fill: #888; text-anchor: middle; }
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#555" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<text x="600" y="60" class="main-title">开源核心 (Open Core) 商业模式示意图</text>
|
||||
|
||||
<g id="onion-diagram">
|
||||
<circle cx="300" cy="400" r="250" fill="#E8F8F5" stroke="#16A085" stroke-width="1.5" />
|
||||
<text x="300" y="200" class="layer-text">商业服务</text>
|
||||
|
||||
<circle cx="300" cy="400" r="170" fill="#FEF9E7" stroke="#D4AC0D" stroke-width="1.5" />
|
||||
<text x="300" y="290" class="layer-text">专有附加组件/企业版</text>
|
||||
|
||||
<circle cx="300" cy="400" r="90" fill="#EBF5FB" stroke="#005A9C" stroke-width="1.5" />
|
||||
<text x="300" y="410" class="layer-text">开源核心</text>
|
||||
</g>
|
||||
|
||||
<g id="info-boxes">
|
||||
<rect x="750" y="140" width="370" height="150" rx="8" ry="8" fill="#E8F8F5" stroke="#16A085" class="info-box" />
|
||||
<text x="770" y="170" class="box-title">外层: 商业服务</text>
|
||||
<text x="770" y="200" class="category-title">描述:</text>
|
||||
<text x="780" y="220" class="item-text">• 围绕产品的增值服务。</text>
|
||||
<text x="770" y="245" class="category-title">例子:</text>
|
||||
<text x="780" y="265" class="item-text">• 企业级技术支持、专业培训、咨询服务。</text>
|
||||
|
||||
<rect x="750" y="325" width="370" height="150" rx="8" ry="8" fill="#FEF9E7" stroke="#D4AC0D" class="info-box" />
|
||||
<text x="770" y="355" class="box-title">中间层: 专有附加组件/企业版</text>
|
||||
<text x="770" y="385" class="category-title">描述:</text>
|
||||
<text x="780" y="405" class="item-text">• 高级功能、付费获取、满足企业级需求。</text>
|
||||
<text x="770" y="430" class="category-title">例子:</text>
|
||||
<text x="780" y="450" class="item-text">• GitLab 的高级安全与合规功能, MongoDB 的高级加密与审计。</text>
|
||||
|
||||
<rect x="750" y="510" width="370" height="150" rx="8" ry="8" fill="#EBF5FB" stroke="#005A9C" class="info-box" />
|
||||
<text x="770" y="540" class="box-title">核心 (最内层): 开源核心</text>
|
||||
<text x="770" y="570" class="category-title">描述:</text>
|
||||
<text x="780" y="590" class="item-text">• 基础功能、免费获取、社区驱动、吸引开发者。</text>
|
||||
<text x="770" y="615" class="category-title">例子:</text>
|
||||
<text x="780" y="635" class="item-text">• GitLab 社区版的基础功能, MongoDB 社区版。</text>
|
||||
</g>
|
||||
|
||||
<line x1="465" y1="215" x2="750" y2="215" class="connector" />
|
||||
<line x1="550" y1="400" x2="750" y2="400" class="connector" />
|
||||
<line x1="465" y1="585" x2="750" y2="585" class="connector" />
|
||||
|
||||
<text x="600" y="750" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区。
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
|
|
@ -0,0 +1,177 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100%" height="100%" viewBox="0 0 3400 1400" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.spine { stroke: #333; stroke-width: 3; }
|
||||
.main-bone { stroke: #333; stroke-width: 2; }
|
||||
.main-title { font-size: 40px; font-weight: bold; fill: #111; text-anchor: middle; }
|
||||
.stage-title { font-size: 22px; font-weight: bold; fill: #005A9C; text-anchor: middle; }
|
||||
.category-title { font-size: 18px; font-weight: bold; fill: #333; }
|
||||
.item-text { font-size: 15px; fill: #444; }
|
||||
.info-block { stroke: #ccc; stroke-width: 1; border-radius: 8px; }
|
||||
.license-text { font-size: 16px; fill: #666; text-anchor: middle; }
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="0" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#333" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<text x="1700" y="90" class="main-title">开源运动演变路线图</text>
|
||||
|
||||
<line x1="50" y1="700" x2="3350" y2="700" class="spine" marker-end="url(#arrowhead)" />
|
||||
|
||||
<g id="stage1">
|
||||
<rect x="100" y="140" width="420" height="490" rx="8" ry="8" fill="#E8F8F5" class="info-block" />
|
||||
<line x1="310" y1="630" x2="310" y2="700" class="main-bone" />
|
||||
<text x="310" y="180" class="stage-title">
|
||||
<tspan x="310">萌芽期: 黑客文化</tspan>
|
||||
<tspan x="310" dy="1.4em">(1960s-1970s)</tspan>
|
||||
</text>
|
||||
<text x="130" y="260" class="category-title">主要特征:</text>
|
||||
<text x="140" y="290" class="item-text">
|
||||
<tspan x="140" dy="0em">• 坚信“所有信息都应免费”</tspan>
|
||||
<tspan x="140" dy="1.5em">• 崇尚“亲手实践的准则”</tspan>
|
||||
<tspan x="140" dy="1.5em">• 为满足现实需求而非商业利益而共享代码</tspan>
|
||||
</text>
|
||||
<text x="130" y="375" class="category-title">关键人物:</text>
|
||||
<text x="140" y="405" class="item-text">• 理查德·格林布拉特, 比尔·高斯珀等</text>
|
||||
<text x="130" y="435" class="category-title">社区/组织:</text>
|
||||
<text x="140" y="465" class="item-text">• MIT人工智能实验室 (AI Lab)</text>
|
||||
</g>
|
||||
|
||||
<g id="stage2">
|
||||
<rect x="560" y="770" width="420" height="490" rx="8" ry="8" fill="#EBF5FB" class="info-block" />
|
||||
<line x1="770" y1="770" x2="770" y2="700" class="main-bone" />
|
||||
<text x="770" y="810" class="stage-title">
|
||||
<tspan x="770">奠基期: 自由软件运动</tspan>
|
||||
<tspan x="770" dy="1.4em">(1980s)</tspan>
|
||||
</text>
|
||||
<text x="590" y="890" class="category-title">主要特征:</text>
|
||||
<text x="600" y="920" class="item-text">
|
||||
<tspan x="600" dy="0em">• 提出“四大基本自由”,强调用户权利</tspan>
|
||||
<tspan x="600" dy="1.5em">• 开创“Copyleft” (著佐权)法律概念</tspan>
|
||||
<tspan x="600" dy="1.5em">• 基于道德与伦理的社会运动</tspan>
|
||||
</text>
|
||||
<text x="590" y="1010" class="category-title">关键人物:</text>
|
||||
<text x="600" y="1040" class="item-text">• 理查德·斯托曼 (Richard Stallman)</text>
|
||||
<text x="590" y="1070" class="category-title">项目/组织:</text>
|
||||
<text x="600" y="1100" class="item-text">
|
||||
<tspan x="600" dy="0em">• GNU项目 (1983)</tspan>
|
||||
<tspan x="600" dy="1.5em">• 自由软件基金会 (FSF) (1985)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="stage3">
|
||||
<rect x="1020" y="140" width="420" height="490" rx="8" ry="8" fill="#FEF9E7" class="info-block" />
|
||||
<line x1="1230" y1="630" x2="1230" y2="700" class="main-bone" />
|
||||
<text x="1230" y="180" class="stage-title">
|
||||
<tspan x="1230">发展期: Linux诞生与结合</tspan>
|
||||
<tspan x="1230" dy="1.4em">(1990s)</tspan>
|
||||
</text>
|
||||
<text x="1050" y="260" class="category-title">主要特征:</text>
|
||||
<text x="1060" y="290" class="item-text">
|
||||
<tspan x="1060" dy="0em">• GNU系统与Linux内核结合</tspan>
|
||||
<tspan x="1060" dy="1.5em">• 诞生了第一个完整的自由操作系统</tspan>
|
||||
</text>
|
||||
<text x="1050" y="350" class="category-title">关键人物:</text>
|
||||
<text x="1060" y="380" class="item-text">• 林纳斯·托瓦兹 (Linus Torvalds)</text>
|
||||
<text x="1050" y="420" class="category-title">代表项目:</text>
|
||||
<text x="1060" y="450" class="item-text">
|
||||
<tspan x="1060">• Debian, Apache, MySQL, PostgreSQL</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="stage4">
|
||||
<rect x="1480" y="770" width="420" height="490" rx="8" ry="8" fill="#F4ECF7" class="info-block" />
|
||||
<line x1="1690" y1="770" x2="1690" y2="700" class="main-bone" />
|
||||
<text x="1690" y="810" class="stage-title">
|
||||
<tspan x="1690">变革期: “开源”概念提出</tspan>
|
||||
<tspan x="1690" dy="1.4em">(1998)</tspan>
|
||||
</text>
|
||||
<text x="1510" y="890" class="category-title">主要特征:</text>
|
||||
<text x="1520" y="920" class="item-text">
|
||||
<tspan x="1520" dy="0em">• 为商业世界量身定制的“营销活动”</tspan>
|
||||
<tspan x="1520" dy="1.5em">• 强调实用和技术优势,而非道德责任</tspan>
|
||||
<tspan x="1520" dy="1.5em">• 发布《开源定义》(OSD)作为标准</tspan>
|
||||
</text>
|
||||
<text x="1510" y="1010" class="category-title">关键人物:</text>
|
||||
<text x="1520" y="1040" class="item-text">
|
||||
<tspan x="1520" dy="0em">• 埃里克·雷蒙 (Eric S. Raymond)</tspan>
|
||||
<tspan x="1520" dy="1.5em">• 布鲁斯·佩伦斯 (Bruce Perens)</tspan>
|
||||
</text>
|
||||
<text x="1510" y="1100" class="category-title">组织:</text>
|
||||
<text x="1520" y="1130" class="item-text">• 开放源代码促进会 (OSI)</text>
|
||||
</g>
|
||||
|
||||
<g id="stage5">
|
||||
<rect x="1940" y="140" width="420" height="490" rx="8" ry="8" fill="#FFF5E1" class="info-block" />
|
||||
<line x1="2150" y1="630" x2="2150" y2="700" class="main-bone" />
|
||||
<text x="2150" y="180" class="stage-title">
|
||||
<tspan x="2150">成熟期: 商业开源的演进</tspan>
|
||||
<tspan x="2150" dy="1.4em">(2000s-现在)</tspan>
|
||||
</text>
|
||||
<text x="1970" y="250" class="category-title">主要特征:</text>
|
||||
<text x="1980" y="275" class="item-text">
|
||||
<tspan x="1980" dy="0em">• 解决“如何从免费产品中盈利”的商业悖论</tspan>
|
||||
<tspan x="1980" dy="1.5em">• 风险投资驱动,开源初创公司兴起</tspan>
|
||||
<tspan x="1980" dy="1.5em">• 大型云服务商成为主要参与者和竞争者</tspan>
|
||||
</text>
|
||||
<text x="1970" y="350" class="category-title">关键组织:</text>
|
||||
<text x="1980" y="375" class="item-text">• Apache基金会, Linux基金会, Eclipse基金会</text>
|
||||
<text x="1970" y="405" class="category-title">商业模式演进:</text>
|
||||
<text x="1980" y="430" class="item-text">
|
||||
<tspan x="1980" dy="0em">1. 订阅与保障模型 (代表: Red Hat)</tspan>
|
||||
<tspan x="1980" dy="1.5em">2. 开源核心模型 (代表: GitLab, MongoDB)</tspan>
|
||||
<tspan x="1980" dy="1.5em">3. 防御浪潮/新许可证 (代表: SSPL, BSL)</tspan>
|
||||
</text>
|
||||
<text x="1970" y="510" class="category-title">代表项目:</text>
|
||||
<text x="1980" y="535" class="item-text">
|
||||
<tspan x="1980" dy="0em">• Hadoop, Kubernetes, MongoDB</tspan>
|
||||
<tspan x="1980" dy="1.5em">• Elasticsearch, GitLab</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="stage6">
|
||||
<rect x="2400" y="770" width="420" height="490" rx="8" ry="8" fill="#E8F8F5" class="info-block" />
|
||||
<line x1="2610" y1="770" x2="2610" y2="700" class="main-bone" />
|
||||
<text x="2610" y="810" class="stage-title">
|
||||
<tspan x="2610">开放生态: 开源精神的延伸</tspan>
|
||||
<tspan x="2610" dy="1.4em">(2010-现在)</tspan>
|
||||
</text>
|
||||
<text x="2430" y="890" class="category-title">理念延伸领域:</text>
|
||||
<text x="2440" y="920" class="item-text">
|
||||
<tspan x="2440" dy="0em">• 开源硬件 (OSH): 设计文件开源</tspan>
|
||||
<tspan x="2440" dy="1.5em"> (代表: Arduino)</tspan>
|
||||
<tspan x="2440" dy="2.5em">• 开放教育资源 (OER): 教学材料开源</tspan>
|
||||
<tspan x="2440" dy="1.5em"> (代表: MIT OpenCourseWare)</tspan>
|
||||
<tspan x="2440" dy="2.5em">• 开放科学: 科研流程与数据开放</tspan>
|
||||
<tspan x="2440" dy="1.5em"> (代表: Plan S)</tspan>
|
||||
<tspan x="2440" dy="2.5em">• 数字公共产品 (DPG): 发展领域的开源基建</tspan>
|
||||
<tspan x="2440" dy="1.5em"> (代表: DHIS2)</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="stage7">
|
||||
<rect x="2860" y="140" width="420" height="490" rx="8" ry="8" fill="#FDEDEC" class="info-block" />
|
||||
<line x1="3070" y1="630" x2="3070" y2="700" class="main-bone" />
|
||||
<text x="3070" y="180" class="stage-title">
|
||||
<tspan x="3070">新挑战: AI时代的“开放”定义</tspan>
|
||||
<tspan x="3070" dy="1.4em">(当代)</tspan>
|
||||
</text>
|
||||
<text x="2890" y="260" class="category-title">主要特征:</text>
|
||||
<text x="2900" y="290" class="item-text">
|
||||
<tspan x="2900" dy="0em">• “源”的概念扩展至代码、权重和训练数据</tspan>
|
||||
<tspan x="2900" dy="1.5em">• “开放权重”模式引发与真正开源的争论</tspan>
|
||||
<tspan x="2900" dy="1.5em">• 出现“开放洗白” (openwashing) 现象</tspan>
|
||||
</text>
|
||||
<text x="2890" y="375" class="category-title">关键组织:</text>
|
||||
<text x="2900" y="405" class="item-text">• OSI (正在制定开源AI定义)</text>
|
||||
<text x="2890" y="435" class="category-title">项目/案例:</text>
|
||||
<text x="2900" y="465" class="item-text">• Meta Llama模型及其争议许可证</text>
|
||||
</g>
|
||||
|
||||
<text x="1700" y="1350" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100%" height="100%" viewBox="0 0 1000 750" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.main-title { font-size: 28px; font-weight: bold; fill: #111; text-anchor: middle; }
|
||||
.header-title { font-size: 22px; font-weight: bold; fill: #fff; text-anchor: middle; }
|
||||
.category-title { font-size: 16px; font-weight: bold; fill: #333; text-anchor: middle; }
|
||||
.item-text { font-size: 14px; fill: #444; }
|
||||
.divider { stroke: #ccc; stroke-width: 1.5; }
|
||||
.license-text { font-size: 14px; fill: #666; text-anchor: middle; }
|
||||
</style>
|
||||
|
||||
<text x="500" y="50" class="main-title">OSD vs. OSAID</text>
|
||||
|
||||
<rect x="50" y="100" width="440" height="50" rx="5" ry="5" fill="#005A9C" />
|
||||
<text x="270" y="132" class="header-title">开源定义 (OSD)</text>
|
||||
|
||||
<rect x="510" y="100" width="440" height="50" rx="5" ry="5" fill="#0c7b64" />
|
||||
<text x="730" y="132" class="header-title">开源AI定义 (OSAID)</text>
|
||||
|
||||
<line x1="50" y1="250" x2="950" y2="250" class="divider"/>
|
||||
<rect x="50" y="160" width="900" height="80" fill="none"/>
|
||||
<text y="205" x="500" class="category-title">核心对象</text>
|
||||
<text x="80" y="205" class="item-text">
|
||||
<tspan x="270" text-anchor="middle">传统软件</tspan>
|
||||
</text>
|
||||
<text x="540" y="205" class="item-text">
|
||||
<tspan x="730" text-anchor="middle">人工智能 (AI) / 机器学习 (ML) 系统</tspan>
|
||||
</text>
|
||||
|
||||
<line x1="50" y1="380" x2="950" y2="380" class="divider"/>
|
||||
<rect x="50" y="260" width="900" height="110" fill="none"/>
|
||||
<text y="320" x="500" class="category-title">“源”的定义</text>
|
||||
<text x="80" y="290" class="item-text" text-anchor="middle">
|
||||
<tspan x="270" font-weight="bold">源代码</tspan>
|
||||
<tspan x="270" dy="1.4em">即程序员编写的、人类可读的指令。</tspan>
|
||||
</text>
|
||||
<text x="540" y="280" class="item-text" text-anchor="middle">
|
||||
<tspan x="730" font-weight="bold">重建系统所需的所有组件:</tspan>
|
||||
<tspan x="730" dy="1.5em">• 模型架构 (代码)</tspan>
|
||||
<tspan x="730" dy="1.5em">• 训练后的模型权重 (参数)</tspan>
|
||||
<tspan x="730" dy="1.5em">• 训练数据信息 (透明度要求)</tspan>
|
||||
</text>
|
||||
|
||||
<line x1="50" y1="520" x2="950" y2="520" class="divider"/>
|
||||
<rect x="50" y="390" width="900" height="120" fill="none"/>
|
||||
<text y="455" x="500" class="category-title">核心原则</text>
|
||||
<text x="80" y="430" class="item-text">
|
||||
<tspan x="270" text-anchor="middle">授予用户自由查看、使用、修改和</tspan>
|
||||
<tspan x="270" text-anchor="middle" dy="1.4em">重新分发软件的权利。</tspan>
|
||||
<tspan x="270" text-anchor="middle" dy="1.8em">(聚焦于用户的“四大自由”)</tspan>
|
||||
</text>
|
||||
<text x="540" y="430" class="item-text">
|
||||
<tspan x="730" text-anchor="middle">提供所有必要的组件,以便一个有技能的人</tspan>
|
||||
<tspan x="730" text-anchor="middle" dy="1.4em">能够“重建一个基本等效的系统”。</tspan>
|
||||
<tspan x="730" text-anchor="middle" dy="1.8em">(聚焦于系统的“可复现性”)</tspan>
|
||||
</text>
|
||||
|
||||
<rect x="50" y="530" width="900" height="120" fill="none"/>
|
||||
<text y="595" x="500" class="category-title">解决的问题</text>
|
||||
<text x="80" y="580" class="item-text">
|
||||
<tspan x="270" text-anchor="middle">旨在应对“闭源/专有软件”对用户</tspan>
|
||||
<tspan x="270" text-anchor="middle" dy="1.4em">自由的限制。</tspan>
|
||||
</text>
|
||||
<text x="540" y="580" class="item-text">
|
||||
<tspan x="730" text-anchor="middle">旨在应对AI系统的“黑箱”特性、</tspan>
|
||||
<tspan x="730" text-anchor="middle" dy="1.4em">组件复杂性以及数据不透明的问题。</tspan>
|
||||
</text>
|
||||
|
||||
<text x="50%" y="700" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -0,0 +1,95 @@
|
|||
<svg width="100%" height="100%" viewBox="0 0 800 900" xmlns="http://www.w3.org/2000/svg" font-family="sans-serif">
|
||||
<style>
|
||||
.main-title { font-size: 24px; font-weight: bold; text-anchor: middle; }
|
||||
.node-rect { fill: #EBF5FB; stroke: #005A9C; stroke-width: 1.5; }
|
||||
.node-stadium { fill: #FEF9E7; stroke: #D4AC0D; stroke-width: 1.5; }
|
||||
.node-diamond { fill: #E8F8F5; stroke: #16A085; stroke-width: 1.5; }
|
||||
.node-value-main { fill: #FDEDEC; stroke: #C0392B; stroke-width: 1.5; }
|
||||
.node-value-item { fill: #f5f5f5; stroke: #555; stroke-width: 1; }
|
||||
.node-text { font-size: 14px; text-anchor: middle; }
|
||||
.node-text-italic { font-size: 12px; font-style: italic; text-anchor: middle; }
|
||||
.edge-text { font-size: 12px; fill: #444; text-anchor: middle; }
|
||||
.connector { stroke: #333; stroke-width: 1.5; marker-end: url(#arrowhead); }
|
||||
.license-text { font-size: 14px; fill: #666; text-anchor: middle; }
|
||||
.value-wrapper { fill: #fafafa; stroke: #a0a0a0; stroke-width: 1; stroke-dasharray: 5,5; }
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" fill="#333" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<text x="400" y="60" class="main-title">RedHat开源商业价值实现示意图</text>
|
||||
|
||||
<g id="node-A">
|
||||
<rect x="250" y="120" width="300" height="80" rx="5" ry="5" class="node-rect" />
|
||||
<text x="400" y="150" class="node-text">
|
||||
<tspan x="400">上游社区项目</tspan>
|
||||
<tspan x="400" dy="1.4em">(如 Fedora)</tspan>
|
||||
</text>
|
||||
<text x="400" y="185" class="node-text-italic">快速创新、前沿技术</text>
|
||||
</g>
|
||||
|
||||
<g id="node-B">
|
||||
<rect x="275" y="250" width="250" height="70" rx="35" ry="35" class="node-stadium" />
|
||||
<text x="400" y="280" class="node-text">红帽公司</text>
|
||||
<text x="400" y="305" class="node-text-italic">筛选、加固、测试、集成</text>
|
||||
</g>
|
||||
|
||||
<g id="node-C">
|
||||
<rect x="300" y="360" width="200" height="50" rx="5" ry="5" class="node-rect" />
|
||||
<text x="400" y="390" class="node-text">企业级产品 (RHEL)</text>
|
||||
</g>
|
||||
|
||||
<g id="node-D">
|
||||
<path d="M 400 450 L 460 490 L 400 530 L 340 490 Z" class="node-diamond" />
|
||||
<text x="400" y="495" class="node-text">企业客户</text>
|
||||
</g>
|
||||
|
||||
<g id="node-E">
|
||||
<rect x="300" y="570" width="200" height="50" rx="5" ry="5" class="node-value-main" />
|
||||
<text x="400" y="600" class="node-text">获得的价值</text>
|
||||
</g>
|
||||
|
||||
<g id="value-group">
|
||||
<rect x="45" y="670" width="710" height="90" rx="10" ry="10" class="value-wrapper" />
|
||||
|
||||
<g id="node-F">
|
||||
<rect x="65" y="690" width="140" height="50" rx="5" ry="5" class="node-value-item" />
|
||||
<text x="135" y="720" class="node-text">专家技术支持</text>
|
||||
</g>
|
||||
|
||||
<g id="node-G">
|
||||
<rect x="215" y="690" width="160" height="50" rx="5" ry="5" class="node-value-item" />
|
||||
<text x="295" y="720" class="node-text">安全保障与合规认证</text>
|
||||
</g>
|
||||
|
||||
<g id="node-H">
|
||||
<rect x="385" y="690" width="180" height="50" rx="5" ry="5" class="node-value-item" />
|
||||
<text x="475" y="720" class="node-text">庞大的软硬件认证生态</text>
|
||||
</g>
|
||||
|
||||
<g id="node-I">
|
||||
<rect x="575" y="690" width="160" height="50" rx="5" ry="5" class="node-value-item" />
|
||||
<text x="655" y="720" class="node-text">法律保障与管理工具</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<line x1="400" y1="200" x2="400" y2="250" class="connector" />
|
||||
<text x="400" y="228" class="edge-text">红帽公司贡献与筛选</text>
|
||||
|
||||
<line x1="400" y1="320" x2="400" y2="360" class="connector" />
|
||||
|
||||
<line x1="400" y1="410" x2="400" y2="450" class="connector" />
|
||||
|
||||
<line x1="400" y1="530" x2="400" y2="570" class="connector" />
|
||||
<text x="400" y="553" class="edge-text">购买订阅</text>
|
||||
|
||||
<line x1="400" y1="620" x2="400" y2="670" class="connector" />
|
||||
|
||||
<text x="400" y="850" class="license-text">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
|
|
@ -0,0 +1,132 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 640">
|
||||
<!-- 背景 -->
|
||||
<rect width="800" height="640" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="50" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">从"市集"到"道路与桥梁"的视角转变</text>
|
||||
<text x="400" y="80" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#666">开源生态系统二十年间的成熟与演变</text>
|
||||
|
||||
<!-- 上部时间线 -->
|
||||
<line x1="150" y1="120" x2="650" y2="120" stroke="#ccc" stroke-width="4"/>
|
||||
<circle cx="200" cy="120" r="8" fill="#e17055"/>
|
||||
<circle cx="600" cy="120" r="8" fill="#0984e3"/>
|
||||
<text x="200" y="105" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#e17055">1997年</text>
|
||||
<text x="600" y="105" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#0984e3">2020年代</text>
|
||||
|
||||
<!-- 左侧:市集模式 -->
|
||||
<g transform="translate(200, 200)">
|
||||
<!-- 市集图标 -->
|
||||
<circle cx="0" cy="0" r="70" fill="#fff" stroke="#e17055" stroke-width="3"/>
|
||||
|
||||
<!-- 市集内部元素 -->
|
||||
<rect x="-40" y="-30" width="20" height="20" fill="#e17055" fill-opacity="0.2" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-10" y="-40" width="25" height="25" fill="#e17055" fill-opacity="0.3" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="20" y="-25" width="15" height="15" fill="#e17055" fill-opacity="0.4" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-30" y="5" width="15" height="15" fill="#e17055" fill-opacity="0.5" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-5" y="15" width="20" height="20" fill="#e17055" fill-opacity="0.3" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="25" y="10" width="15" height="15" fill="#e17055" fill-opacity="0.4" stroke="#e17055" stroke-width="1"/>
|
||||
|
||||
<!-- 连线表示交互 -->
|
||||
<line x1="-30" y1="-20" x2="-10" y2="-25" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="15" y1="-30" x2="20" y2="-25" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="-30" y1="5" x2="-5" y2="15" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="15" y1="20" x2="25" y2="15" stroke="#e17055" stroke-width="1"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="95" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="#e17055">市集模式</text>
|
||||
<text x="0" y="115" font-family="Arial, sans-serif" font-size="14" font-style="italic" text-anchor="middle" fill="#666">The Bazaar Model</text>
|
||||
</g>
|
||||
|
||||
<!-- 右侧:道路与桥梁 -->
|
||||
<g transform="translate(600, 200)">
|
||||
<!-- 基础设施图标 -->
|
||||
<circle cx="0" cy="0" r="70" fill="#fff" stroke="#0984e3" stroke-width="3"/>
|
||||
|
||||
<!-- 桥梁 -->
|
||||
<path d="M-40,-20 C-30,-40 30,-40 40,-20" fill="none" stroke="#0984e3" stroke-width="3"/>
|
||||
<line x1="-40" y1="-20" x2="-40" y2="20" stroke="#0984e3" stroke-width="3"/>
|
||||
<line x1="40" y1="-20" x2="40" y2="20" stroke="#0984e3" stroke-width="3"/>
|
||||
|
||||
<!-- 道路 -->
|
||||
<rect x="-50" y="20" width="100" height="10" fill="#0984e3" fill-opacity="0.3"/>
|
||||
<line x1="-45" y1="25" x2="45" y2="25" stroke="#fff" stroke-width="1" stroke-dasharray="5,3"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="95" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="#0984e3">道路与桥梁</text>
|
||||
<text x="0" y="115" font-family="Arial, sans-serif" font-size="14" font-style="italic" text-anchor="middle" fill="#666">Roads and Bridges</text>
|
||||
</g>
|
||||
|
||||
<!-- 中央箭头 -->
|
||||
<g transform="translate(400, 200)">
|
||||
<path d="M-120,0 L120,0" stroke="#666" stroke-width="2" stroke-dasharray="6,3"/>
|
||||
<polygon points="110,-10 130,0 110,10" fill="#666"/>
|
||||
<text x="0" y="-15" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#666">视角转变</text>
|
||||
</g>
|
||||
|
||||
<!-- 比较表格 -->
|
||||
<g transform="translate(400, 350)">
|
||||
<!-- 表格框架 -->
|
||||
<rect x="-350" y="0" width="700" height="200" fill="#fff" stroke="#ddd" stroke-width="1" rx="5" ry="5"/>
|
||||
|
||||
<!-- 表头 -->
|
||||
<rect x="-350" y="0" width="160" height="40" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="-190" y="0" width="270" height="40" fill="#e17055" fill-opacity="0.1" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="80" y="0" width="270" height="40" fill="#0984e3" fill-opacity="0.1" stroke="#ddd" stroke-width="1"/>
|
||||
|
||||
<text x="-270" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">对比维度</text>
|
||||
<text x="-55" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#e17055">市集模式</text>
|
||||
<text x="215" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#0984e3">道路与桥梁</text>
|
||||
|
||||
<!-- 行1:核心焦点 -->
|
||||
<rect x="-350" y="40" width="160" height="40" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="-190" y="40" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="80" y="40" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
|
||||
<text x="-270" y="65" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">核心焦点</text>
|
||||
<text x="-55" y="65" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#666">软件的生产与调试</text>
|
||||
<text x="215" y="65" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#666">软件的消费与维护</text>
|
||||
|
||||
<!-- 行2:时代背景 -->
|
||||
<rect x="-350" y="80" width="160" height="40" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="-190" y="80" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="80" y="80" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
|
||||
<text x="-270" y="105" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">时代背景</text>
|
||||
<text x="-55" y="105" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#666">个人电脑与早期互联网时代</text>
|
||||
<text x="215" y="105" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#666">云计算、SaaS和平台经济时代</text>
|
||||
|
||||
<!-- 行3:核心观点 -->
|
||||
<rect x="-350" y="120" width="160" height="40" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="-190" y="120" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="80" y="120" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
|
||||
<text x="-270" y="145" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">核心观点</text>
|
||||
<text x="-55" y="139" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">"人多力量大",更多的参与者</text>
|
||||
<text x="-55" y="155" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">能更快发现并修复错误</text>
|
||||
<text x="215" y="139" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">"依赖是无形的",广泛的依赖并未转化</text>
|
||||
<text x="215" y="155" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">为对等的支持,导致系统性风险</text>
|
||||
|
||||
<!-- 行4:提出的问题 -->
|
||||
<rect x="-350" y="160" width="160" height="40" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="-190" y="160" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
<rect x="80" y="160" width="270" height="40" fill="#fff" stroke="#ddd" stroke-width="1"/>
|
||||
|
||||
<text x="-270" y="185" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">提出的问题</text>
|
||||
<text x="-55" y="179" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">如何组织大规模的、</text>
|
||||
<text x="-55" y="195" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">分布式的开发?</text>
|
||||
<text x="215" y="179" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">如何为关键的、被广泛依赖的</text>
|
||||
<text x="215" y="195" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">开源项目提供可持续的支持?</text>
|
||||
</g>
|
||||
|
||||
<!-- 底部总结 -->
|
||||
<g transform="translate(400, 570)">
|
||||
<rect x="-350" y="-20" width="700" height="40" rx="5" ry="5" fill="#f5f5f5" stroke="#ddd" stroke-width="1"/>
|
||||
<text x="0" y="5" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">
|
||||
从业余爱好者的生产狂欢到数字社会基础设施的可持续性危机
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="400" y="620" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.0 KiB |
|
|
@ -0,0 +1,157 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 860">
|
||||
<!-- 背景 -->
|
||||
<rect width="890" height="840" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="50" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">大教堂与市集:两种软件开发模式</text>
|
||||
<text x="400" y="80" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#666">基于Eric S. Raymond 1997年的经典著作</text>
|
||||
|
||||
<!-- 分隔线 -->
|
||||
<line x1="400" y1="100" x2="400" y2="500" stroke="#ddd" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
|
||||
<!-- 左侧:大教堂模式 -->
|
||||
<g transform="translate(200, 130)">
|
||||
<!-- 大教堂图标 -->
|
||||
<path d="M0,140 L0,60 L40,20 L80,60 L80,140 Z" fill="#6c5ce7" fill-opacity="0.2" stroke="#6c5ce7" stroke-width="2"/>
|
||||
<path d="M30,140 L30,80 L40,70 L50,80 L50,140 Z" fill="#6c5ce7" fill-opacity="0.4" stroke="#6c5ce7" stroke-width="1"/>
|
||||
<path d="M10,100 L20,90 L20,100 Z" fill="none" stroke="#6c5ce7" stroke-width="1"/>
|
||||
<path d="M60,100 L70,90 L70,100 Z" fill="none" stroke="#6c5ce7" stroke-width="1"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="40" y="170" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="#6c5ce7">大教堂模式</text>
|
||||
<text x="40" y="190" font-family="Arial, sans-serif" font-size="16" font-style="italic" text-anchor="middle" fill="#666">Cathedral Model</text>
|
||||
</g>
|
||||
|
||||
<!-- 右侧:市集模式 -->
|
||||
<g transform="translate(600, 130)">
|
||||
<!-- 市集图标 -->
|
||||
<rect x="-60" y="20" width="30" height="30" fill="#e17055" fill-opacity="0.2" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-20" y="10" width="40" height="40" fill="#e17055" fill-opacity="0.3" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="30" y="15" width="35" height="35" fill="#e17055" fill-opacity="0.2" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-40" y="60" width="25" height="25" fill="#e17055" fill-opacity="0.4" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-5" y="65" width="30" height="30" fill="#e17055" fill-opacity="0.3" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="35" y="60" width="20" height="20" fill="#e17055" fill-opacity="0.5" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-55" y="95" width="35" height="35" fill="#e17055" fill-opacity="0.3" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="-10" y="105" width="30" height="30" fill="#e17055" fill-opacity="0.4" stroke="#e17055" stroke-width="1"/>
|
||||
<rect x="30" y="90" width="25" height="25" fill="#e17055" fill-opacity="0.2" stroke="#e17055" stroke-width="1"/>
|
||||
|
||||
<!-- 连线 -->
|
||||
<line x1="-45" y1="35" x2="-20" y2="30" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="20" y1="30" x2="30" y2="35" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="-40" y1="60" x2="-20" y2="50" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="20" y1="50" x2="35" y2="60" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="-15" y1="65" x2="-5" y2="65" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="25" y1="65" x2="35" y2="65" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="-40" y1="85" x2="-20" y2="95" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="-20" y1="95" x2="-10" y2="105" stroke="#e17055" stroke-width="1"/>
|
||||
<line x1="20" y1="95" x2="30" y2="90" stroke="#e17055" stroke-width="1"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="170" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="#e17055">市集模式</text>
|
||||
<text x="0" y="190" font-family="Arial, sans-serif" font-size="16" font-style="italic" text-anchor="middle" fill="#666">Bazaar Model</text>
|
||||
</g>
|
||||
|
||||
<!-- 特点比较:大教堂 -->
|
||||
<g transform="translate(40, 350)">
|
||||
<!-- 特点1 -->
|
||||
<circle cx="20" cy="0" r="8" fill="#6c5ce7"/>
|
||||
<text x="40" y="5" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">集中规划</text>
|
||||
<text x="60" y="25" font-family="Arial, sans-serif" font-size="14" fill="#666">由核心架构师预先设计整体蓝图</text>
|
||||
|
||||
<!-- 特点2 -->
|
||||
<circle cx="20" cy="50" r="8" fill="#6c5ce7"/>
|
||||
<text x="40" y="55" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">层级结构</text>
|
||||
<text x="60" y="75" font-family="Arial, sans-serif" font-size="14" fill="#666">明确的责任分工和决策链</text>
|
||||
|
||||
<!-- 特点3 -->
|
||||
<circle cx="20" cy="100" r="8" fill="#6c5ce7"/>
|
||||
<text x="40" y="105" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">周期性发布</text>
|
||||
<text x="60" y="125" font-family="Arial, sans-serif" font-size="14" fill="#666">相对较长的开发周期,整体性发布</text>
|
||||
|
||||
<!-- 特点4 -->
|
||||
<circle cx="20" cy="150" r="8" fill="#6c5ce7"/>
|
||||
<text x="40" y="155" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">有限参与</text>
|
||||
<text x="60" y="175" font-family="Arial, sans-serif" font-size="14" fill="#666">开发团队相对封闭</text>
|
||||
|
||||
<!-- 优势 -->
|
||||
<rect x="0" y="210" width="320" height="30" rx="5" ry="5" fill="#6c5ce7" fill-opacity="0.1" stroke="#6c5ce7" stroke-width="1"/>
|
||||
<text x="160" y="230" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">优势</text>
|
||||
|
||||
<circle cx="20" cy="260" r="6" fill="#6c5ce7" fill-opacity="0.6"/>
|
||||
<text x="40" y="265" font-family="Arial, sans-serif" font-size="14" fill="#666">架构一致性高</text>
|
||||
|
||||
<circle cx="20" cy="290" r="6" fill="#6c5ce7" fill-opacity="0.6"/>
|
||||
<text x="40" y="295" font-family="Arial, sans-serif" font-size="14" fill="#666">质量控制严格</text>
|
||||
|
||||
<circle cx="20" cy="320" r="6" fill="#6c5ce7" fill-opacity="0.6"/>
|
||||
<text x="40" y="325" font-family="Arial, sans-serif" font-size="14" fill="#666">发展路径可预测</text>
|
||||
</g>
|
||||
|
||||
<!-- 特点比较:市集 -->
|
||||
<g transform="translate(440, 350)">
|
||||
<!-- 特点1 -->
|
||||
<circle cx="20" cy="0" r="8" fill="#e17055"/>
|
||||
<text x="40" y="5" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">演进式发展</text>
|
||||
<text x="60" y="25" font-family="Arial, sans-serif" font-size="14" fill="#666">"先发布,再完善"(Release early, release often)</text>
|
||||
|
||||
<!-- 特点2 -->
|
||||
<circle cx="20" cy="50" r="8" fill="#e17055"/>
|
||||
<text x="40" y="55" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">分散决策</text>
|
||||
<text x="60" y="75" font-family="Arial, sans-serif" font-size="14" fill="#666">多中心、去中心化的协作网络</text>
|
||||
|
||||
<!-- 特点3 -->
|
||||
<circle cx="20" cy="100" r="8" fill="#e17055"/>
|
||||
<text x="40" y="105" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">频繁迭代</text>
|
||||
<text x="60" y="125" font-family="Arial, sans-serif" font-size="14" fill="#666">快速、小步骤的持续改进</text>
|
||||
|
||||
<!-- 特点4 -->
|
||||
<circle cx="20" cy="150" r="8" fill="#e17055"/>
|
||||
<text x="40" y="155" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#333">开放参与</text>
|
||||
<text x="60" y="175" font-family="Arial, sans-serif" font-size="14" fill="#666">"眼多bug浅"(Given enough eyeballs, all bugs are shallow)</text>
|
||||
|
||||
<!-- 优势 -->
|
||||
<rect x="0" y="210" width="320" height="30" rx="5" ry="5" fill="#e17055" fill-opacity="0.1" stroke="#e17055" stroke-width="1"/>
|
||||
<text x="160" y="230" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">优势</text>
|
||||
|
||||
<circle cx="20" cy="260" r="6" fill="#e17055" fill-opacity="0.6"/>
|
||||
<text x="40" y="265" font-family="Arial, sans-serif" font-size="14" fill="#666">创新速度快</text>
|
||||
|
||||
<circle cx="20" cy="290" r="6" fill="#e17055" fill-opacity="0.6"/>
|
||||
<text x="40" y="295" font-family="Arial, sans-serif" font-size="14" fill="#666">适应性强</text>
|
||||
|
||||
<circle cx="20" cy="320" r="6" fill="#e17055" fill-opacity="0.6"/>
|
||||
<text x="40" y="325" font-family="Arial, sans-serif" font-size="14" fill="#666">广泛的社区参与</text>
|
||||
</g>
|
||||
|
||||
<!-- 代表项目 -->
|
||||
<g transform="translate(50, 180)">
|
||||
<text x="0" y="0" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#6c5ce7">典型代表:</text>
|
||||
<text x="0" y="25" font-family="Arial, sans-serif" font-size="14" fill="#666">GNU Emacs (早期)</text>
|
||||
<text x="0" y="50" font-family="Arial, sans-serif" font-size="14" fill="#666">Apache HTTP Server</text>
|
||||
<text x="0" y="70" font-family="Arial, sans-serif" font-size="14" fill="#666">(早期)</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(750, 180)">
|
||||
<text x="0" y="0" font-family="Arial, sans-serif" font-size="16" font-weight="bold" fill="#e17055">典型代表:</text>
|
||||
<text x="0" y="25" font-family="Arial, sans-serif" font-size="14" fill="#666">Linux内核</text>
|
||||
<text x="0" y="50" font-family="Arial, sans-serif" font-size="14" fill="#666">Python软件包生态</text>
|
||||
</g>
|
||||
|
||||
<!-- 现代演变 -->
|
||||
<rect x="150" y="700" width="500" height="100" rx="10" ry="10" fill="#f5f5f5" stroke="#ddd" stroke-width="2"/>
|
||||
<text x="400" y="725" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#333">现代演变:边界模糊化</text>
|
||||
|
||||
<g transform="translate(200, 760)">
|
||||
<circle cx="0" cy="0" r="6" fill="#333"/>
|
||||
<text x="20" y="5" font-family="Arial, sans-serif" font-size="14" fill="#333">混合模式:许多现代项目(如Kubernetes)兼具两种特性</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(200,780)">
|
||||
<circle cx="0" cy="0" r="6" fill="#333"/>
|
||||
<text x="20" y="5" font-family="Arial, sans-serif" font-size="14" fill="#333">阶段性转换:项目在不同发展阶段可能在两种模式间切换</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 - 更新后的版权信息 -->
|
||||
<text x="400" y="840" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.9 KiB |
|
|
@ -0,0 +1,82 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 630">
|
||||
<!-- 背景 -->
|
||||
<rect width="800" height="630" fill="#f8f9fa" rx="10" ry="10" />
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="40" font-family="Arial" font-size="24" font-weight="bold" text-anchor="middle" fill="#333">CLA 与 DCO 详细比较</text>
|
||||
|
||||
<!-- CLA 部分 -->
|
||||
<rect x="50" y="80" width="320" height="460" fill="#e3f2fd" stroke="#1e88e5" stroke-width="2" rx="8" ry="8" />
|
||||
<text x="210" y="110" font-family="Arial" font-size="20" font-weight="bold" text-anchor="middle" fill="#1565c0">CLA</text>
|
||||
<text x="210" y="135" font-family="Arial" font-size="14" text-anchor="middle" font-style="italic" fill="#333">贡献者许可协议</text>
|
||||
|
||||
<!-- DCO 部分 -->
|
||||
<rect x="430" y="80" width="320" height="460" fill="#e8f5e9" stroke="#43a047" stroke-width="2" rx="8" ry="8" />
|
||||
<text x="590" y="110" font-family="Arial" font-size="20" font-weight="bold" text-anchor="middle" fill="#2e7d32">DCO</text>
|
||||
<text x="590" y="135" font-family="Arial" font-size="14" text-anchor="middle" font-style="italic" fill="#333">开发者原创声明</text>
|
||||
|
||||
<!-- CLA 内容 -->
|
||||
<g font-family="Arial" font-size="14" fill="#333">
|
||||
<!-- 法律性质 -->
|
||||
<text x="70" y="170" font-weight="bold">法律性质:</text>
|
||||
<text x="70" y="190">正式法律合同,具有约束力</text>
|
||||
|
||||
<!-- 实施方式 -->
|
||||
<text x="70" y="230" font-weight="bold">实施方式:</text>
|
||||
<text x="70" y="250">贡献前一次性签署独立文件</text>
|
||||
<text x="70" y="270">需项目方存储和管理签署记录</text>
|
||||
|
||||
<!-- 授权范围 -->
|
||||
<text x="70" y="310" font-weight="bold">授权范围:</text>
|
||||
<text x="70" y="330">明确的版权和专利授权</text>
|
||||
<text x="70" y="350">可能包含再许可权</text>
|
||||
|
||||
<!-- 优点 -->
|
||||
<text x="70" y="390" font-weight="bold">主要优点:</text>
|
||||
<text x="70" y="410">最高的法律确定性</text>
|
||||
<text x="70" y="430">允许项目未来更改许可证</text>
|
||||
|
||||
<!-- 适用场景 -->
|
||||
<text x="70" y="470" font-weight="bold">适用场景:</text>
|
||||
<text x="70" y="490">企业主导的商业项目</text>
|
||||
<text x="70" y="510">基金会托管的大型项目</text>
|
||||
</g>
|
||||
|
||||
<!-- DCO 内容 -->
|
||||
<g font-family="Arial" font-size="14" fill="#333">
|
||||
<!-- 法律性质 -->
|
||||
<text x="450" y="170" font-weight="bold">法律性质:</text>
|
||||
<text x="450" y="190">个人声明/认证,非合同性质</text>
|
||||
|
||||
<!-- 实施方式 -->
|
||||
<text x="450" y="230" font-weight="bold">实施方式:</text>
|
||||
<text x="450" y="250">每次Git提交时添加签名行</text>
|
||||
<text x="450" y="270">集成于现有开发工作流</text>
|
||||
|
||||
<!-- 授权范围 -->
|
||||
<text x="450" y="310" font-weight="bold">授权范围:</text>
|
||||
<text x="450" y="330">确认有权以项目许可提交代码</text>
|
||||
<text x="450" y="350">无明确专利条款</text>
|
||||
|
||||
<!-- 优点 -->
|
||||
<text x="450" y="390" font-weight="bold">主要优点:</text>
|
||||
<text x="450" y="410">极低的贡献门槛</text>
|
||||
<text x="450" y="430">社区友好,基于信任</text>
|
||||
|
||||
<!-- 适用场景 -->
|
||||
<text x="450" y="470" font-weight="bold">适用场景:</text>
|
||||
<text x="450" y="490">社区驱动的开源项目</text>
|
||||
<text x="450" y="510">个人开发者的小型项目</text>
|
||||
</g>
|
||||
|
||||
<!-- 典型案例 -->
|
||||
<rect x="90" y="530" width="240" height="25" fill="#bbdefb" rx="5" ry="5" />
|
||||
<text x="210" y="547" font-family="Arial" font-size="12" text-anchor="middle">典型案例: Apache项目, Google开源项目</text>
|
||||
|
||||
<rect x="470" y="530" width="240" height="25" fill="#c8e6c9" rx="5" ry="5" />
|
||||
<text x="590" y="547" font-family="Arial" font-size="12" text-anchor="middle">典型案例: Linux内核, Git</text>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="400" y="600" font-family="Arial" font-size="12" text-anchor="middle" fill="#555">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
|
@ -0,0 +1,80 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 770">
|
||||
<!-- 背景 -->
|
||||
<rect x="0" y="0" width="1000" height="770" fill="#f8f9fa" />
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="500" y="50" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">开源许可证类型比较</text>
|
||||
|
||||
<!-- 两个主要区域 -->
|
||||
<rect x="50" y="80" width="425" height="630" rx="15" fill="#e6f3ff" stroke="#2b73b1" stroke-width="2" />
|
||||
<rect x="525" y="80" width="425" height="630" rx="15" fill="#fff0e6" stroke="#d86b27" stroke-width="2" />
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="262.5" y="120" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="#2b73b1">互惠型许可 (Copyleft)</text>
|
||||
<text x="737.5" y="120" font-family="Arial, sans-serif" font-size="24" font-weight="bold" text-anchor="middle" fill="#d86b27">宽松型许可 (Permissive)</text>
|
||||
|
||||
<!-- 传播型许可图标 -->
|
||||
<circle cx="262.5" cy="170" r="30" fill="#2b73b1" />
|
||||
<path d="M245.5 170 A17 17 0 1 0 262.5 153 L262.5 170 Z" fill="white" />
|
||||
<path d="M279.5 170 A17 17 0 1 1 262.5 187 L262.5 170 Z" fill="white" />
|
||||
|
||||
<!-- 宽松型许可图标 - 新图标:开放的锁 -->
|
||||
<circle cx="737.5" cy="170" r="30" fill="#d86b27" />
|
||||
<g transform="translate(720, 156) scale(0.8)">
|
||||
<!-- 锁身 -->
|
||||
<rect x="12" y="18" width="22" height="20" rx="2" fill="white" />
|
||||
<!-- 锁环 - 开放状态 -->
|
||||
<path d="M8,18 L8,12 C8,5.5 14,0 23,0 C32,0 38,5.5 38,12 L38,18" stroke="white" stroke-width="4" fill="none" stroke-linecap="round" />
|
||||
<!-- 锁孔 -->
|
||||
<circle cx="23" cy="26" r="3" fill="#d86b27" />
|
||||
</g>
|
||||
|
||||
<!-- 传播型许可特点 -->
|
||||
<text x="80" y="230" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">核心特性:</text>
|
||||
<text x="100" y="260" font-family="Arial, sans-serif" font-size="16" fill="#333">• 衍生作品必须采用相同许可证发布</text>
|
||||
<text x="100" y="290" font-family="Arial, sans-serif" font-size="16" fill="#333">• 强调代码的自由与共享</text>
|
||||
<text x="100" y="320" font-family="Arial, sans-serif" font-size="16" fill="#333">• 具有"传染性",确保衍生品保持开源</text>
|
||||
|
||||
<!-- 宽松型许可特点 -->
|
||||
<text x="555" y="230" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">核心特性:</text>
|
||||
<text x="575" y="260" font-family="Arial, sans-serif" font-size="16" fill="#333">• 施加限制最少,仅要求保留版权声明</text>
|
||||
<text x="575" y="290" font-family="Arial, sans-serif" font-size="16" fill="#333">• 允许衍生作品以任何形式发布(含闭源)</text>
|
||||
<text x="575" y="320" font-family="Arial, sans-serif" font-size="16" fill="#333">• 最大化软件的采用率和传播范围</text>
|
||||
|
||||
<!-- 传播型许可优势 -->
|
||||
<text x="80" y="370" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">促进因素:</text>
|
||||
<text x="100" y="400" font-family="Arial, sans-serif" font-size="16" fill="#333">• 确保所有改进回馈社区</text>
|
||||
<text x="100" y="430" font-family="Arial, sans-serif" font-size="16" fill="#333">• 防止代码被私有化</text>
|
||||
<text x="100" y="460" font-family="Arial, sans-serif" font-size="16" fill="#333">• 创建自我延续的自由软件生态</text>
|
||||
|
||||
<text x="80" y="500" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">限制因素:</text>
|
||||
<text x="100" y="530" font-family="Arial, sans-serif" font-size="16" fill="#333">• 可能影响某些商业应用模式</text>
|
||||
<text x="100" y="560" font-family="Arial, sans-serif" font-size="16" fill="#333">• 需考虑许可证兼容性问题</text>
|
||||
<text x="100" y="590" font-family="Arial, sans-serif" font-size="16" fill="#333">• 企业集成时需更多法律审查</text>
|
||||
|
||||
<!-- 宽松型许可优势 -->
|
||||
<text x="555" y="370" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">促进因素:</text>
|
||||
<text x="575" y="400" font-family="Arial, sans-serif" font-size="16" fill="#333">• 便于商业公司采纳和参与</text>
|
||||
<text x="575" y="430" font-family="Arial, sans-serif" font-size="16" fill="#333">• 支持多样化的使用场景</text>
|
||||
<text x="575" y="460" font-family="Arial, sans-serif" font-size="16" fill="#333">• 较高的许可证兼容性</text>
|
||||
|
||||
<text x="555" y="500" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">考量因素:</text>
|
||||
<text x="575" y="530" font-family="Arial, sans-serif" font-size="16" fill="#333">• 改进可能不会回馈到原始项目</text>
|
||||
<text x="575" y="560" font-family="Arial, sans-serif" font-size="16" fill="#333">• 公共贡献可能被商业化而无需回报</text>
|
||||
<text x="575" y="590" font-family="Arial, sans-serif" font-size="16" fill="#333">• 可能导致生态系统多样化发展</text>
|
||||
|
||||
<!-- 传播型许可典型例子 -->
|
||||
<text x="80" y="630" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">代表许可证:</text>
|
||||
<text x="100" y="660" font-family="Arial, sans-serif" font-size="16" fill="#333">• GPL系列 (GPLv2, GPLv3, AGPL)</text>
|
||||
<text x="100" y="685" font-family="Arial, sans-serif" font-size="16" fill="#333">• 实例: Linux内核, WordPress, GNU工具</text>
|
||||
|
||||
<!-- 宽松型许可典型例子 -->
|
||||
<text x="555" y="630" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#333">代表许可证:</text>
|
||||
<text x="575" y="660" font-family="Arial, sans-serif" font-size="16" fill="#333">• MIT, Apache 2.0, BSD系列</text>
|
||||
<text x="575" y="685" font-family="Arial, sans-serif" font-size="16" fill="#333">• 实例: React, Vue.js, Apache HTTP Server</text>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="50%" y="750" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
|
|
@ -0,0 +1,93 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 780" style="font-family: Arial, sans-serif;">
|
||||
<rect width="1000" height="780" fill="#f8f9fa" />
|
||||
|
||||
<text x="500" y="40" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">开源协作的规则与法律框架总揽</text>
|
||||
|
||||
<rect x="50" y="80" width="400" height="520" rx="10" fill="#e3f2fd" stroke="#1565c0" stroke-width="2" />
|
||||
<rect x="550" y="80" width="400" height="520" rx="10" fill="#e8f5e9" stroke="#2e7d32" stroke-width="2" />
|
||||
|
||||
<text x="250" y="110" font-size="24" font-weight="bold" text-anchor="middle" fill="#1565c0">无形的文化与规范</text>
|
||||
<text x="750" y="110" font-size="24" font-weight="bold" text-anchor="middle" fill="#2e7d32">有形的法律工具</text>
|
||||
|
||||
<rect x="80" y="130" width="340" height="240" rx="8" fill="#bbdefb" stroke="#1565c0" stroke-width="1" />
|
||||
<text x="250" y="155" font-size="18" font-weight="bold" text-anchor="middle">开源文化的四大核心理念</text>
|
||||
|
||||
<circle cx="120" cy="190" r="25" fill="#1565c0" />
|
||||
<text x="120" y="195" font-size="14" font-weight="bold" text-anchor="middle" fill="white">开放</text>
|
||||
<text x="160" y="185" font-size="14" text-anchor="start">透明度,所有人都能看到源代码</text>
|
||||
<text x="160" y="205" font-size="14" text-anchor="start">创造集体智慧的基础:"Linus定律"</text>
|
||||
|
||||
<circle cx="120" cy="240" r="25" fill="#1565c0" />
|
||||
<text x="120" y="245" font-size="14" font-weight="bold" text-anchor="middle" fill="white">协作</text>
|
||||
<text x="160" y="235" font-size="14" text-anchor="start">跨越地理、组织的分布式合作</text>
|
||||
<text x="160" y="255" font-size="14" text-anchor="start">"社区胜于代码" - 精英治理模式</text>
|
||||
|
||||
<circle cx="120" cy="290" r="25" fill="#1565c0" />
|
||||
<text x="120" y="295" font-size="14" font-weight="bold" text-anchor="middle" fill="white">共享</text>
|
||||
<text x="160" y="285" font-size="14" text-anchor="start">知识的无障碍流动,网络效应</text>
|
||||
<text x="160" y="305" font-size="14" text-anchor="start">避免重复造轮子,放大价值</text>
|
||||
|
||||
<circle cx="120" cy="340" r="25" fill="#1565c0" />
|
||||
<text x="120" y="345" font-size="14" font-weight="bold" text-anchor="middle" fill="white">贡献</text>
|
||||
<text x="160" y="335" font-size="14" text-anchor="start">循环的燃料,形成良性生态</text>
|
||||
<text x="160" y="355" font-size="14" text-anchor="start">多种形式:代码、文档、翻译、支持</text>
|
||||
|
||||
<rect x="80" y="380" width="340" height="80" rx="8" fill="#bbdefb" stroke="#1565c0" stroke-width="1" />
|
||||
<text x="250" y="405" font-size="18" font-weight="bold" text-anchor="middle">社区礼仪与治理</text>
|
||||
<rect x="100" y="420" width="300" height="30" rx="5" fill="#90caf9" />
|
||||
<text x="250" y="440" font-size="14" font-weight="bold" text-anchor="middle">行为准则 (Code of Conduct)</text>
|
||||
|
||||
<rect x="80" y="470" width="340" height="80" rx="8" fill="#bbdefb" stroke="#1565c0" stroke-width="1" />
|
||||
<text x="250" y="495" font-size="18" font-weight="bold" text-anchor="middle">协作模型</text>
|
||||
<rect x="100" y="510" width="140" height="30" rx="5" fill="#90caf9" />
|
||||
<text x="170" y="530" font-size="14" font-weight="bold" text-anchor="middle">大教堂模式</text>
|
||||
<rect x="260" y="510" width="140" height="30" rx="5" fill="#90caf9" />
|
||||
<text x="330" y="530" font-size="14" font-weight="bold" text-anchor="middle">市集模式</text>
|
||||
|
||||
<rect x="580" y="130" width="340" height="200" rx="8" fill="#c8e6c9" stroke="#2e7d32" stroke-width="1" />
|
||||
<text x="750" y="155" font-size="18" font-weight="bold" text-anchor="middle">出站许可 (Outbound License)</text>
|
||||
<rect x="600" y="175" width="300" height="140" rx="5" fill="#a5d6a7" />
|
||||
<text x="750" y="195" font-size="16" font-weight="bold" text-anchor="middle" fill="#1b5e20">许可证类型</text>
|
||||
<rect x="615" y="210" width="130" height="90" rx="5" fill="#81c784" />
|
||||
<text x="680" y="230" font-size="14" font-weight="bold" text-anchor="middle">互惠型(Copyleft)</text>
|
||||
<text x="680" y="250" font-size="12" text-anchor="middle">GPL, AGPL, LGPL</text>
|
||||
<text x="680" y="270" font-size="12" text-anchor="middle">保证衍生作品开源</text>
|
||||
<text x="680" y="290" font-size="12" text-anchor="middle">构建共享公地</text>
|
||||
<rect x="755" y="210" width="130" height="90" rx="5" fill="#81c784" />
|
||||
<text x="820" y="230" font-size="14" font-weight="bold" text-anchor="middle">宽松型(Permissive)</text>
|
||||
<text x="820" y="250" font-size="12" text-anchor="middle">MIT, Apache, BSD</text>
|
||||
<text x="820" y="270" font-size="12" text-anchor="middle">允许闭源商业使用</text>
|
||||
<text x="820" y="290" font-size="12" text-anchor="middle">最大化代码采用</text>
|
||||
|
||||
<rect x="580" y="340" width="340" height="200" rx="8" fill="#c8e6c9" stroke="#2e7d32" stroke-width="1" />
|
||||
<text x="750" y="365" font-size="18" font-weight="bold" text-anchor="middle">入站贡献 (Inbound Contributions)</text>
|
||||
<rect x="600" y="385" width="300" height="140" rx="5" fill="#a5d6a7" />
|
||||
<text x="750" y="405" font-size="16" font-weight="bold" text-anchor="middle" fill="#1b5e20">贡献机制</text>
|
||||
<rect x="615" y="420" width="130" height="90" rx="5" fill="#81c784" />
|
||||
<text x="680" y="440" font-size="14" font-weight="bold" text-anchor="middle">CLA</text>
|
||||
<text x="680" y="460" font-size="12" text-anchor="middle">贡献者许可协议</text>
|
||||
<text x="680" y="480" font-size="12" text-anchor="middle">高法律确定性</text>
|
||||
<text x="680" y="500" font-size="12" text-anchor="middle">企业友好,门槛高</text>
|
||||
<rect x="755" y="420" width="130" height="90" rx="5" fill="#81c784" />
|
||||
<text x="820" y="440" font-size="14" font-weight="bold" text-anchor="middle">DCO</text>
|
||||
<text x="820" y="460" font-size="12" text-anchor="middle">开发者原创声明</text>
|
||||
<text x="820" y="480" font-size="12" text-anchor="middle">极低贡献门槛</text>
|
||||
<text x="820" y="500" font-size="12" text-anchor="middle">社区友好,轻量化</text>
|
||||
|
||||
<rect x="580" y="550" width="340" height="30" rx="8" fill="#c8e6c9" stroke="#2e7d32" stroke-width="1" />
|
||||
<text x="750" y="570" font-size="14" font-weight="bold" text-anchor="middle">知识产权基础:版权、专利与商标</text>
|
||||
|
||||
<path d="M450 250 C500 250, 500 250, 535 250" stroke="#555" stroke-width="3" fill="none" />
|
||||
<path d="M450 400 C500 400, 500 400, 535 400" stroke="#555" stroke-width="3" fill="none" />
|
||||
<polygon points="535,245 550,250 535,255" fill="#555" />
|
||||
<polygon points="535,395 550,400 535,405" fill="#555" />
|
||||
<text x="500" y="235" font-size="14" font-weight="bold" text-anchor="middle">相互支持</text>
|
||||
<text x="500" y="385" font-size="14S" font-weight="bold" text-anchor="middle">相互影响</text>
|
||||
|
||||
<rect x="150" y="630" width="700" height="90" rx="10" fill="#fff3e0" stroke="#e65100" stroke-width="2" />
|
||||
<text x="500" y="655" font-size="18" font-weight="bold" text-anchor="middle" fill="#e65100">开源协作的整体法律框架</text>
|
||||
<text x="500" y="685" font-size="14" text-anchor="middle">入站策略(从贡献者获得的权利) 必须支撑 出站策略(向用户授予的权利)</text>
|
||||
<text x="500" y="705" font-size="14" text-anchor="middle">许可证选择是项目战略决策,塑造社区文化、参与模式和商业潜力</text>
|
||||
|
||||
<text x="50%" y="760" font-family="Arial" font-size="10" text-anchor="middle" fill="#555">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
|
|
@ -0,0 +1,135 @@
|
|||
<svg width="1250" height="800" viewBox="0 0 1250 800" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<defs>
|
||||
<linearGradient id="grad-blue" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#3b82f6; stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#60a5fa; stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient id="grad-green" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#16a34a; stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#4ade80; stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient id="grad-orange" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#f97316; stop-opacity:1" />
|
||||
<stop offset="100%" style="stop-color:#fb923c; stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
|
||||
<feOffset dx="2" dy="2" result="offsetblur"/>
|
||||
<feComponentTransfer>
|
||||
<feFuncA type="linear" slope="0.5"/>
|
||||
</feComponentTransfer>
|
||||
<feMerge>
|
||||
<feMergeNode/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<style>
|
||||
.main-title { font-size: 32px; font-weight: bold; text-anchor: middle; fill: #1f2937; }
|
||||
.subtitle { font-size: 18px; text-anchor: middle; fill: #4b5563; }
|
||||
.center-box { fill: #f9fafb; stroke: #6b7280; stroke-width: 2; rx:15; ry:15; filter: url(#shadow); }
|
||||
.center-title { font-size: 24px; font-weight: bold; text-anchor: middle; fill: #111827; }
|
||||
.center-desc { font-size: 14px; font-style: italic; text-anchor: middle; fill: #4b5563; }
|
||||
.branch-title-box { rx: 8; ry: 8; }
|
||||
.branch-title { font-size: 20px; font-weight: 600; fill: white; text-anchor: middle; }
|
||||
.card { fill: #ffffff; stroke: #e5e7eb; stroke-width: 1.5; rx: 8; ry: 8; }
|
||||
.card-title { font-size: 17px; font-weight: 600; fill: #1f2937; }
|
||||
.card-text { font-size: 14px; fill: #4b5563; }
|
||||
.card-highlight { font-weight: 600; fill: #374151; }
|
||||
.connector { stroke: #9ca3af; stroke-width: 2.5; fill: none; }
|
||||
</style>
|
||||
|
||||
<title>开源许可证如何塑造协作与商业</title>
|
||||
|
||||
<text x="625" y="50" class="main-title">开源许可证如何塑造协作与商业</text>
|
||||
<text x="625" y="80" class="subtitle">许可证的条款在开源协作与商业的动态平衡中发挥着决定性作用</text>
|
||||
|
||||
<g id="foundation-hub" transform="translate(475, 120)">
|
||||
<rect width="300" height="130" class="center-box" />
|
||||
<path d="M 120 40 L 140 60 L 120 80 M 180 40 L 160 60 L 180 80" stroke="#374151" stroke-width="5" fill="none" stroke-linecap="round"/>
|
||||
<text x="150" y="105" class="center-title">开源许可证</text>
|
||||
</g>
|
||||
|
||||
<path class="connector" d="M 625 250 V 280 L 225 280 V 310"/>
|
||||
<path class="connector" d="M 625 250 V 310"/>
|
||||
<path class="connector" d="M 625 250 V 280 L 1025 280 V 310"/>
|
||||
|
||||
<g id="collaboration-column" transform="translate(75, 320)">
|
||||
<rect width="300" height="45" fill="url(#grad-blue)" class="branch-title-box"/>
|
||||
<text x="150" y="30" class="branch-title">协作的法律架构</text>
|
||||
<g transform="translate(0, 55)">
|
||||
<rect width="300" height="360" class="card"/>
|
||||
<g transform="translate(15, 15)">
|
||||
<path d="M 15 10 L 15 25 L 5 15 L 25 15 Z M 15 0 C 23.28 0, 30 6.72, 30 15 C 30 23.28, 23.28 30, 15 30 C 6.72 30, 0 23.28, 0 15 C 0 6.72, 6.72 0, 15 0 Z" fill="#3b82f6" opacity="0.2"/>
|
||||
<text x="35" y="18" class="card-title">1. 创建“法律安全港”</text>
|
||||
<text class="card-text">
|
||||
<tspan x="35" y="43">明确IP归属与使用权限,消除</tspan>
|
||||
<tspan x="35" y="61">因版权默认归属贡献者个人</tspan>
|
||||
<tspan x="35" y="79">而产生的法律风险。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(15, 125)">
|
||||
<path d="M 5 5 L 15 15 M 15 5 L 5 15 M 25 25 L 30 20 M 20 30 L 25 25" stroke="#3b82f6" stroke-width="3" stroke-linecap="round" opacity="0.3"/>
|
||||
<text x="35" y="18" class="card-title">2. 降低交易成本</text>
|
||||
<text class="card-text">
|
||||
<tspan x="35" y="43">作为<tspan class="card-highlight">“通用合同”</tspan>,避免单独</tspan>
|
||||
<tspan x="35" y="61">的法律谈判,使大规模协作成为可能。</tspan>
|
||||
</text>
|
||||
</g><!-- 许可声明 -->
|
||||
<text x="50%" y="750" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="business-column" transform="translate(475, 320)">
|
||||
<rect width="300" height="45" fill="url(#grad-green)" class="branch-title-box"/>
|
||||
<text x="150" y="30" class="branch-title">商业的引擎</text>
|
||||
<rect x="0" y="55" width="300" height="360" class="card"/>
|
||||
<g transform="translate(15, 70)">
|
||||
<text x="0" y="15" class="card-title">1. 开放核心 (Open Core)</text>
|
||||
<text class="card-text">
|
||||
<tspan x="15" y="40">依赖: <tspan class="card-highlight">宽松型许可 (如 Apache 2.0)</tspan></tspan>
|
||||
<tspan x="15" y="58">允许在开源核心上构建闭源商业产品。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(15, 170)">
|
||||
<text x="0" y="15" class="card-title">2. 双重许可 (Dual-Licensing)</text>
|
||||
<text class="card-text">
|
||||
<tspan x="15" y="40">依赖: <tspan class="card-highlight">强Copyleft许可 (如 GPL)</tspan></tspan>
|
||||
<tspan x="15" y="58">将GPL的“限制性”作为商业杠杆。</tspan>
|
||||
<tspan x="15" y="76">案例: <tspan class="card-highlight">MySQL</tspan></tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(15, 275)">
|
||||
<text x="0" y="15" class="card-title">3. 付费支持与服务</text>
|
||||
<text class="card-text">
|
||||
<tspan x="15" y="40">依赖: <tspan class="card-highlight">许可选择灵活</tspan></tspan>
|
||||
<tspan x="15" y="58">软件本身开源,围绕其提供专业服务。</tspan>
|
||||
<tspan x="15" y="76">案例: <tspan class="card-highlight">Red Hat</tspan></tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="governance-column" transform="translate(875, 320)">
|
||||
<rect width="300" height="45" fill="url(#grad-orange)" class="branch-title-box"/>
|
||||
<text x="150" y="30" class="branch-title">赋能治理与社区</text>
|
||||
<rect x="0" y="55" width="300" height="360" class="card"/>
|
||||
<g transform="translate(15, 70)">
|
||||
<text x="0" y="15" class="card-title">设定“游戏规则”,影响社区文化</text>
|
||||
<text class="card-text">
|
||||
<tspan x="15" y="43">• <tspan class="card-highlight">仁慈的独裁者 (BDFL):</tspan> 体现创始人</tspan>
|
||||
<tspan x="28" y="61">哲学理念 (如 Linus 与 GPLv2)。</tspan>
|
||||
<tspan x="15" y="86">• <tspan class="card-highlight">精英治理 (Meritocracy):</tspan> 为企业参与</tspan>
|
||||
<tspan x="28" y="104">提供法律保障 (如 ASF 与 Apache 2.0)。</tspan>
|
||||
<tspan x="15" y="129">• <tspan class="card-highlight">基金会模式:</tspan> 提供中立法律实体。</tspan>
|
||||
<tspan x="15" y="146">• <tspan class="card-highlight">企业主导模式:</tspan> 公司主导开源项目的</tspan>
|
||||
<tspan x="28" y="164">开发和决策。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="50%" y="780" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.6 KiB |
|
|
@ -0,0 +1,161 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 670">
|
||||
<!-- 背景 -->
|
||||
<rect width="900" height="670" fill="#f8f9fa" />
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="450" y="40" font-family="Arial, sans-serif" font-size="24" text-anchor="middle" font-weight="bold" fill="#333">开源协作的整体法律框架:出站许可与入站贡献</text>
|
||||
|
||||
<!-- 中心项目 -->
|
||||
<rect x="375" y="200" width="150" height="100" rx="10" fill="#4285f4" />
|
||||
<text x="450" y="245" font-family="Arial, sans-serif" font-size="20" text-anchor="middle" fill="white" font-weight="bold">开源项目</text>
|
||||
<text x="450" y="270" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white">代码库</text>
|
||||
|
||||
<!-- 贡献者 -->
|
||||
<rect x="125" y="210" width="120" height="80" rx="10" fill="#34a853" />
|
||||
<text x="185" y="250" font-family="Arial, sans-serif" font-size="18" text-anchor="middle" fill="white" font-weight="bold">贡献者</text>
|
||||
<text x="185" y="270" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="white">个人/企业开发者</text>
|
||||
|
||||
<!-- 用户 -->
|
||||
<rect x="655" y="210" width="120" height="80" rx="10" fill="#ea4335" />
|
||||
<text x="715" y="250" font-family="Arial, sans-serif" font-size="18" text-anchor="middle" fill="white" font-weight="bold">用户</text>
|
||||
<text x="715" y="270" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="white">个人/企业/衍生项目</text>
|
||||
|
||||
<!-- 入站贡献箭头 -->
|
||||
<path d="M245 250 L375 250" stroke="#34a853" stroke-width="3" fill="none" marker-end="url(#greenArrow)" />
|
||||
<text x="310" y="235" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#34a853" font-weight="bold">入站贡献</text>
|
||||
<text x="310" y="280" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#34a853" font-style="italic">"我该如何</text>
|
||||
<text x="310" y="295" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#34a853" font-style="italic">向你贡献代码?"</text>
|
||||
|
||||
<!-- 出站许可箭头 -->
|
||||
<path d="M525 250 L655 250" stroke="#ea4335" stroke-width="3" fill="none" marker-end="url(#redArrow)" />
|
||||
<text x="590" y="235" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#ea4335" font-weight="bold">出站许可</text>
|
||||
<text x="590" y="280" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#ea4335" font-style="italic">"你可以用</text>
|
||||
<text x="590" y="295" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#ea4335" font-style="italic">我的代码做什么?"</text>
|
||||
|
||||
<!-- 法律API标签 -->
|
||||
<rect x="375" y="320" width="150" height="25" rx="12" fill="#673ab7" fill-opacity="0.7" />
|
||||
<text x="450" y="337" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white" font-weight="bold">项目的"法律API"</text>
|
||||
|
||||
<!-- 箭头标记定义 -->
|
||||
<defs>
|
||||
<marker id="greenArrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#34a853" />
|
||||
</marker>
|
||||
<marker id="redArrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#ea4335" />
|
||||
</marker>
|
||||
<marker id="blueArrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#4285f4" />
|
||||
</marker>
|
||||
<marker id="purpleArrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#673ab7" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- 入站贡献机制详情 -->
|
||||
<rect x="40" y="370" width="330" height="200" rx="10" fill="#e8f5e9" stroke="#34a853" stroke-width="2" />
|
||||
<text x="205" y="395" font-family="Arial, sans-serif" font-size="18" text-anchor="middle" fill="#333" font-weight="bold">入站贡献机制</text>
|
||||
<text x="205" y="415" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555" font-style="italic">项目的"贡献之门"与"法律防火墙"</text>
|
||||
|
||||
<!-- 中间的文字描述区域 -->
|
||||
<rect x="380" y="370" width="140" height="200" rx="10" fill="#f0f0f0" stroke="#673ab7" stroke-width="1" stroke-dasharray="5,3" />
|
||||
<text x="450" y="395" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#333" font-weight="bold">宪法性质</text>
|
||||
<text x="450" y="420" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">双向法律阀门</text>
|
||||
<text x="450" y="445" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">• 定义社区用户权利</text>
|
||||
<text x="450" y="470" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">• 规定贡献规则</text>
|
||||
<text x="450" y="495" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">• 构建治理结构</text>
|
||||
<text x="450" y="520" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">• 确立商业准则</text>
|
||||
<text x="450" y="545" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">• 控制代码流动</text>
|
||||
|
||||
<!-- CLA部分 - 调整边距 -->
|
||||
<rect x="60" y="430" width="140" height="130" rx="5" fill="#c8e6c9" stroke="#34a853" stroke-width="1" />
|
||||
<text x="130" y="450" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#333" font-weight="bold">CLA</text>
|
||||
<text x="130" y="470" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">贡献者许可协议</text>
|
||||
<text x="130" y="490" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 高法律确定性</text>
|
||||
<text x="130" y="510" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 版权许可/转让</text>
|
||||
<text x="130" y="530" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 专利授权</text>
|
||||
<text x="130" y="550" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 企业友好</text>
|
||||
|
||||
<!-- DCO部分 - 调整边距 -->
|
||||
<rect x="210" y="430" width="140" height="130" rx="5" fill="#c8e6c9" stroke="#34a853" stroke-width="1" />
|
||||
<text x="280" y="450" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#333" font-weight="bold">DCO</text>
|
||||
<text x="280" y="470" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">开发者原创声明</text>
|
||||
<text x="280" y="490" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 低贡献门槛</text>
|
||||
<text x="280" y="510" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 逐次提交认证</text>
|
||||
<text x="280" y="530" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• 社区友好</text>
|
||||
<text x="280" y="550" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• "Signed-off-by"</text>
|
||||
|
||||
<!-- 出站许可机制详情 -->
|
||||
<rect x="530" y="370" width="330" height="200" rx="10" fill="#fce4ec" stroke="#ea4335" stroke-width="2" />
|
||||
<text x="695" y="395" font-family="Arial, sans-serif" font-size="18" text-anchor="middle" fill="#333" font-weight="bold">出站许可类型</text>
|
||||
<text x="695" y="415" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555" font-style="italic">项目的"公开声明"与"产品包装"</text>
|
||||
|
||||
<!-- 宽松型许可 - 调整边距 -->
|
||||
<rect x="550" y="430" width="90" height="130" rx="5" fill="#f8bbd0" stroke="#ea4335" stroke-width="1" />
|
||||
<text x="595" y="450" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#333" font-weight="bold">宽松型</text>
|
||||
<text x="595" y="470" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">(Permissive)</text>
|
||||
<text x="595" y="490" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• MIT</text>
|
||||
<text x="595" y="510" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• Apache 2.0</text>
|
||||
<text x="595" y="530" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• BSD</text>
|
||||
<text x="595" y="550" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">最大化采用</text>
|
||||
|
||||
<!-- 弱互惠型许可 - 调整边距 -->
|
||||
<rect x="650" y="430" width="90" height="130" rx="5" fill="#f8bbd0" stroke="#ea4335" stroke-width="1" />
|
||||
<text x="695" y="450" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#333" font-weight="bold">弱互惠型</text>
|
||||
<text x="695" y="470" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">(Weak Copyleft)</text>
|
||||
<text x="695" y="490" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• LGPL</text>
|
||||
<text x="695" y="510" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• MPL</text>
|
||||
<text x="695" y="530" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• EPL</text>
|
||||
<text x="695" y="550" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">平衡采用与共享</text>
|
||||
|
||||
<!-- 强互惠型许可 - 调整边距 -->
|
||||
<rect x="750" y="430" width="90" height="130" rx="5" fill="#f8bbd0" stroke="#ea4335" stroke-width="1" />
|
||||
<text x="795" y="450" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="#333" font-weight="bold">强互惠型</text>
|
||||
<text x="795" y="470" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">(Strong Copyleft)</text>
|
||||
<text x="795" y="490" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• GPL</text>
|
||||
<text x="795" y="510" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• AGPL</text>
|
||||
<text x="795" y="530" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="#333">• SSPL</text>
|
||||
<text x="795" y="550" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#333">强制代码共享</text>
|
||||
|
||||
<!-- 宪法功能 -->
|
||||
<rect x="375" y="130" width="150" height="30" rx="15" fill="#673ab7" />
|
||||
<text x="450" y="150" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white" font-weight="bold">项目"宪法"功能</text>
|
||||
|
||||
<!-- 宪法功能元素 - 文字分两行 -->
|
||||
<circle cx="350" cy="90" r="25" fill="#673ab7" />
|
||||
<text x="350" y="85" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">定义</text>
|
||||
<text x="350" y="100" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">权利</text>
|
||||
|
||||
<circle cx="400" cy="90" r="25" fill="#673ab7" />
|
||||
<text x="400" y="85" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">规定</text>
|
||||
<text x="400" y="100" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">规则</text>
|
||||
|
||||
<circle cx="450" cy="90" r="25" fill="#673ab7" />
|
||||
<text x="450" y="85" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">构建</text>
|
||||
<text x="450" y="100" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">治理</text>
|
||||
|
||||
<circle cx="500" cy="90" r="25" fill="#673ab7" />
|
||||
<text x="500" y="85" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">确立</text>
|
||||
<text x="500" y="100" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">商业</text>
|
||||
|
||||
<circle cx="550" cy="90" r="25" fill="#673ab7" />
|
||||
<text x="550" y="85" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">控制</text>
|
||||
<text x="550" y="100" font-family="Arial, sans-serif" font-size="11" text-anchor="middle" fill="white" font-weight="bold">流动</text>
|
||||
|
||||
<!-- 连接线 -->
|
||||
<path d="M350 115 L370 130" stroke="#673ab7" stroke-width="2" fill="none" />
|
||||
<path d="M400 115 L400 130" stroke="#673ab7" stroke-width="2" fill="none" />
|
||||
<path d="M450 115 L450 130" stroke="#673ab7" stroke-width="2" fill="none" />
|
||||
<path d="M500 115 L500 130" stroke="#673ab7" stroke-width="2" fill="none" />
|
||||
<path d="M550 115 L530 130" stroke="#673ab7" stroke-width="2" fill="none" />
|
||||
|
||||
<path d="M450 160 L450 200" stroke="#4285f4" stroke-width="2" fill="none" marker-end="url(#blueArrow)" />
|
||||
|
||||
<!-- 协同关系区域 -->
|
||||
<rect x="75" y="590" width="750" height="30" rx="15" fill="#4285f4" fill-opacity="0.1" stroke="#4285f4" stroke-width="1" />
|
||||
<text x="450" y="610" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#333" font-weight="bold">核心原则:入站权利必须支撑出站承诺</text>
|
||||
|
||||
<!-- 版权声明 -->
|
||||
<text x="450" y="650" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666" font-style="italic">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,104 @@
|
|||
<svg width="900" height="1120" viewBox="0 0 900 1120" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<style>
|
||||
.title { font-family: Arial, sans-serif; font-size: 28px; text-anchor: middle; font-weight: bold; fill: #333; }
|
||||
.subtitle { font-family: Arial, sans-serif; font-size: 18px; text-anchor: middle; font-weight: bold; fill: #333; }
|
||||
.main-box { rx: 10; ry: 10; stroke-width: 2; fill-opacity: 0.1; }
|
||||
.flow-box { rx: 10; ry: 10; }
|
||||
.text { font-family: Arial, sans-serif; font-size: 15px; fill: #333; }
|
||||
.subtext { font-family: Arial, sans-serif; font-size: 13px; fill: #555; }
|
||||
.highlight { font-family: Arial, sans-serif; font-weight: bold; fill: #c0392b; }
|
||||
.connector { stroke: #666; stroke-width: 2.5; fill: none; marker-end: url(#arrowhead); }
|
||||
</style>
|
||||
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#666" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<rect width="900" height="1200" fill="#f8f9fa" />
|
||||
|
||||
<text x="450" y="50" class="title">开放数据许可:解锁信息价值的完整框架</text>
|
||||
|
||||
<g id="legal-status-foundation">
|
||||
<rect x="50" y="90" width="800" height="130" class="main-box" fill="#fef9e7" stroke="#f1c40f"/>
|
||||
<text x="450" y="120" class="subtitle">逻辑起点: 为何需要专门的数据许可?</text>
|
||||
<rect x="150" y="145" width="280" height="60" rx="5" fill="white" stroke="#ccc"/>
|
||||
<text x="290" y="170" text-anchor="middle" class="text">版权法保护: 数据库结构</text>
|
||||
<text x="290" y="190" text-anchor="middle" class="subtext">(作为“汇编作品”)</text>
|
||||
<rect x="470" y="145" width="280" height="60" rx="5" fill="white" stroke="#ccc"/>
|
||||
<text x="610" y="170" text-anchor="middle" class="text">数据库特殊权利: 保护实质性投资</text>
|
||||
<text x="610" y="190" text-anchor="middle" class="subtext">(在获取/验证数据上的投入)</text>
|
||||
</g>
|
||||
|
||||
<path d="M 450 220 V 270" class="connector"/>
|
||||
|
||||
<g id="macro-flow">
|
||||
<rect x="100" y="270" width="150" height="70" class="flow-box" fill="#4285f4" />
|
||||
<text x="175" y="310" font-size="18" text-anchor="middle" fill="white">数据源</text>
|
||||
<path d="M250 305 L325 305" class="connector"/>
|
||||
<rect x="325" y="270" width="250" height="70" class="flow-box" fill="#34a853" />
|
||||
<text x="450" y="310" font-size="18" text-anchor="middle" fill="white">许可选择 (决策点)</text>
|
||||
<path d="M575 305 L650 305" class="connector"/>
|
||||
<rect x="650" y="270" width="150" height="70" class="flow-box" fill="#ea4335" />
|
||||
<text x="725" y="310" font-size="18" text-anchor="middle" fill="white">数据发布</text>
|
||||
</g>
|
||||
|
||||
<path d="M 450 340 V 380" class="connector" stroke="#34a853"/>
|
||||
|
||||
<g id="license-details">
|
||||
<rect x="50" y="380" width="800" height="300" class="main-box" fill="#e8f6f3" stroke="#1abc9c" />
|
||||
<text x="450" y="410" class="subtitle">核心许可选项: 开放数据共享 (ODC) 套件</text>
|
||||
|
||||
<rect x="80" y="440" width="240" height="220" rx="5" fill="white" stroke="#ccc"/>
|
||||
<text x="200" y="465" text-anchor="middle" class="text" style="font-weight:bold;">ODbL</text>
|
||||
<text x="200" y="485" text-anchor="middle" class="subtext highlight">相同方式共享</text>
|
||||
<line x1="100" y1="500" x2="300" y2="500" stroke="#1abc9c"/>
|
||||
<text x="100" y="525" class="subtext" xml:space="preserve">• 署名 (Attribute)</text>
|
||||
<text x="100" y="555" class="subtext" xml:space="preserve">• 相同方式共享 (Share-Alike)</text>
|
||||
<text x="100" y="585" class="subtext" xml:space="preserve">• 保持开放 (Keep Open)</text>
|
||||
<text x="200" y="625" text-anchor="middle" class="subtext" style="font-style:italic;">案例: OpenStreetMap</text>
|
||||
|
||||
<rect x="330" y="440" width="240" height="220" rx="5" fill="white" stroke="#ccc"/>
|
||||
<text x="450" y="465" text-anchor="middle" class="text" style="font-weight:bold;">ODC-By</text>
|
||||
<text x="450" y="485" text-anchor="middle" class="subtext highlight">宽松型许可</text>
|
||||
<line x1="350" y1="500" x2="550" y2="500" stroke="#1abc9c"/>
|
||||
<text x="350" y="525" class="subtext" xml:space="preserve">• 署名 (Attribute)</text>
|
||||
<text x="450" y="585" text-anchor="middle" class="subtext" style="font-style:italic;">类比: MIT, CC-BY</text>
|
||||
|
||||
<rect x="580" y="440" width="240" height="220" rx="5" fill="white" stroke="#ccc"/>
|
||||
<text x="700" y="465" text-anchor="middle" class="text" style="font-weight:bold;">PDDL</text>
|
||||
<text x="700" y="485" text-anchor="middle" class="subtext highlight">贡献至公共领域</text>
|
||||
<line x1="600" y1="500" x2="800" y2="500" stroke="#1abc9c"/>
|
||||
<text x="600" y="525" class="subtext" xml:space="preserve">• 放弃所有版权和特殊权利</text>
|
||||
<text x="700" y="585" text-anchor="middle" class="subtext" style="font-style:italic;">最大程度的开放</text>
|
||||
</g>
|
||||
|
||||
<path d="M 450 680 V 720" class="connector"/>
|
||||
|
||||
<g id="distinction-note">
|
||||
<rect x="50" y="720" width="800" height="150" class="main-box" fill="#fdf2e9" stroke="#e67e22" />
|
||||
<text x="450" y="750" class="subtitle" fill="#d35400">重要提醒: “容器”与“内容”的双重许可</text>
|
||||
<text x="450" y="785" text-anchor="middle" class="text">ODC许可应用于 <tspan font-weight="bold">数据库本身 (容器)</tspan>,但不自动适用于 <tspan font-weight="bold">其中的单个内容 (内容物)</tspan>。</text>
|
||||
<text x="450" y="810" text-anchor="middle" class="subtext">示例:数据库结构可以用 ODbL 许可,但其中的每张图片可以保留各自的版权或许可 (如 CC-BY-NC)。</text>
|
||||
<text x="450" y="840" text-anchor="middle" class="highlight">使用者必须同时核实并遵守数据库和其内容的双重许可!</text>
|
||||
</g>
|
||||
|
||||
<path d="M 450 870 V 910" class="connector" stroke="#ea4335"/>
|
||||
|
||||
<g id="use-cases">
|
||||
<rect x="50" y="910" width="800" height="130" class="main-box" fill="#eaf2f8" stroke="#4285f4" />
|
||||
<text x="450" y="940" class="subtitle">价值实现: 开放数据的使用场景</text>
|
||||
<rect x="130" y="970" width="180" height="50" rx="5" fill="#4285f4" fill-opacity="0.3" />
|
||||
<text x="220" y="1000" font-size="16" text-anchor="middle" fill="#333">学术研究</text>
|
||||
<rect x="360" y="970" width="180" height="50" rx="5" fill="#4285f4" fill-opacity="0.3" />
|
||||
<text x="450" y="1000" font-size="16" text-anchor="middle" fill="#333">商业应用</text>
|
||||
<rect x="590" y="970" width="180" height="50" rx="5" fill="#4285f4" fill-opacity="0.3" />
|
||||
<text x="680" y="1000" font-size="16" text-anchor="middle" fill="#333">政府透明</text>
|
||||
</g>
|
||||
|
||||
<path d="M725 340 C 850 450, 850 800, 725 910" stroke="#ea4335" stroke-width="2.5" fill="none" stroke-dasharray="8,8" marker-end="url(#arrowhead)"/>
|
||||
<text x="800" y="625" font-family="Arial, sans-serif" font-size="14" fill="#ea4335" font-style="italic" transform="rotate(90 800,625)">数据价值流动</text>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="50%" y="1100" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
|
|
@ -0,0 +1,101 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 700">
|
||||
<!-- 背景 -->
|
||||
<rect width="840" height="700" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="40" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">开源的四大核心理念价值闭环</text>
|
||||
|
||||
<!-- 中心圆环 -->
|
||||
<circle cx="400" cy="350" r="180" fill="none" stroke="#ddd" stroke-width="60" stroke-opacity="0.3"/>
|
||||
<circle cx="400" cy="350" r="180" fill="none" stroke="#333" stroke-width="4"/>
|
||||
<circle cx="400" cy="350" r="140" fill="none" stroke="#333" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
|
||||
<!-- 中心Logo - 代码符号 -->
|
||||
<g transform="translate(400, 350)">
|
||||
<circle r="80" fill="#f8f9fa" stroke="#333" stroke-width="2"/>
|
||||
<!-- 代码符号 < > -->
|
||||
<text x="0" y="5" font-family="Courier New, monospace" font-size="50" font-weight="bold" text-anchor="middle" fill="#333"></></text>
|
||||
<text x="0" y="40" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle">开源精神</text>
|
||||
</g>
|
||||
|
||||
<!-- 开放 Openness -->
|
||||
<g transform="translate(400, 180)">
|
||||
<circle r="60" fill="#4285F4"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="white">开放</text>
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white">Openness</text>
|
||||
|
||||
<!-- 历史标签 -->
|
||||
<g transform="translate(0, -90)">
|
||||
<rect x="-80" y="-20" width="160" height="40" rx="20" ry="20" fill="#4285F4" fill-opacity="0.2" stroke="#4285F4" stroke-width="1"/>
|
||||
<text x="0" y="5" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">源于70年代黑客文化</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 协作 Collaboration -->
|
||||
<g transform="translate(580, 350)">
|
||||
<circle r="60" fill="#EA4335"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="white">协作</text>
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white">Collaboration</text>
|
||||
|
||||
<!-- 历史标签 -->
|
||||
<g transform="translate(90, 0)">
|
||||
<rect x="-20" y="-20" width="160" height="40" rx="20" ry="20" fill="#EA4335" fill-opacity="0.2" stroke="#EA4335" stroke-width="1"/>
|
||||
<text x="65" y="5" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">Linux模式(1991年)</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 共享 Sharing -->
|
||||
<g transform="translate(400, 520)">
|
||||
<circle r="60" fill="#FBBC05"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="white">共享</text>
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white">Sharing</text>
|
||||
|
||||
<!-- 历史标签 -->
|
||||
<g transform="translate(0, 90)">
|
||||
<rect x="-80" y="-20" width="160" height="40" rx="20" ry="20" fill="#FBBC05" fill-opacity="0.2" stroke="#FBBC05" stroke-width="1"/>
|
||||
<text x="0" y="5" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">GPL许可证(1989年)</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 贡献 Contribution -->
|
||||
<g transform="translate(220, 350)">
|
||||
<circle r="60" fill="#34A853"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="22" font-weight="bold" text-anchor="middle" fill="white">贡献</text>
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="14" text-anchor="middle" fill="white">Contribution</text>
|
||||
|
||||
<!-- 历史标签 -->
|
||||
<g transform="translate(-90, 0)">
|
||||
<rect x="-140" y="-20" width="160" height="40" rx="20" ry="20" fill="#34A853" fill-opacity="0.2" stroke="#34A853" stroke-width="1"/>
|
||||
<text x="-65" y="5" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">GitHub革命(2008年)</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- 内涵说明 -->
|
||||
<g transform="translate(130, 180)">
|
||||
<rect x="-120" y="-25" width="240" height="50" rx="10" ry="10" fill="#4285F4" fill-opacity="0.1" stroke="#4285F4" stroke-width="1"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle">开放——一切的前提</text>
|
||||
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">代码可见、透明、无障碍准入</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(670, 180)">
|
||||
<rect x="-120" y="-25" width="240" height="50" rx="10" ry="10" fill="#EA4335" fill-opacity="0.1" stroke="#EA4335" stroke-width="1"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle">协作——实现的方式</text>
|
||||
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">分布式参与、社区共治</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(670, 520)">
|
||||
<rect x="-120" y="-25" width="240" height="50" rx="10" ry="10" fill="#FBBC05" fill-opacity="0.1" stroke="#FBBC05" stroke-width="1"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle">共享——价值的传播</text>
|
||||
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">自由传播、避免重复造轮子</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(130, 520)">
|
||||
<rect x="-120" y="-25" width="240" height="50" rx="10" ry="10" fill="#34A853" fill-opacity="0.1" stroke="#34A853" stroke-width="1"/>
|
||||
<text x="0" y="-5" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle">贡献——循环的燃料</text>
|
||||
<text x="0" y="15" font-family="Arial, sans-serif" font-size="12" text-anchor="middle">回馈社区、持续改进</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="400" y="680" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
|
|
@ -0,0 +1,165 @@
|
|||
<svg width="1200" height="1340" viewBox="0 0 1200 1340" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<defs>
|
||||
<linearGradient id="grad-p" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#3b82f6;" />
|
||||
<stop offset="100%" style="stop-color:#60a5fa;" />
|
||||
</linearGradient>
|
||||
<linearGradient id="grad-w" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#f97316;" />
|
||||
<stop offset="100%" style="stop-color:#fb923c;" />
|
||||
</linearGradient>
|
||||
<linearGradient id="grad-s" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#ef4444;" />
|
||||
<stop offset="100%" style="stop-color:#f87171;" />
|
||||
</linearGradient>
|
||||
<linearGradient id="grad-tapr" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#8b5cf6;" />
|
||||
<stop offset="100%" style="stop-color:#a78bfa;" />
|
||||
</linearGradient>
|
||||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
||||
<feGaussianBlur in="SourceAlpha" stdDeviation="4"/>
|
||||
<feOffset dx="3" dy="3" result="offsetblur"/>
|
||||
<feComponentTransfer>
|
||||
<feFuncA type="linear" slope="0.3"/>
|
||||
</feComponentTransfer>
|
||||
<feMerge>
|
||||
<feMergeNode/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<style>
|
||||
.main-title { font-size: 32px; font-weight: bold; text-anchor: middle; fill: #111827; }
|
||||
.section-title { font-size: 24px; font-weight: 600; text-anchor: middle; fill: #1f2937; }
|
||||
.subsection-title { font-size: 20px; font-weight: 600; fill: #374151;}
|
||||
|
||||
.def-card { fill: #f9fafb; stroke: #d1d5db; stroke-width: 1.5; rx: 12; ry: 12; }
|
||||
.def-card-title { font-size: 18px; font-weight: bold; fill: #1f2937; }
|
||||
.def-card-text { font-size: 15px; fill: #374151; }
|
||||
.def-card-highlight { font-weight: 600; fill: #111827; }
|
||||
|
||||
.license-header-box { rx: 8; ry: 8; }
|
||||
.license-header-text { font-size: 20px; font-weight: 600; fill: white; text-anchor: middle; }
|
||||
.license-card { fill: #ffffff; stroke-width: 1.5; rx: 8; ry: 8; }
|
||||
.license-card-text { font-size: 15px; fill: #374151; }
|
||||
.footer-text { font-size: 12px; text-anchor: middle; fill: #6b7280; }
|
||||
</style>
|
||||
|
||||
<title>开源硬件许可的关键定义与类型</title>
|
||||
|
||||
<text x="600" y="50" class="main-title">开源硬件 (OSH) 许可的关键定义与类型</text>
|
||||
|
||||
<g id="definitions" transform="translate(50, 100)">
|
||||
<text x="550" y="25" class="section-title">核心定义</text>
|
||||
<rect x="0" y="50" width="1100" height="260" class="def-card" />
|
||||
|
||||
<g transform="translate(40, 75)">
|
||||
<text x="0" y="20" class="def-card-title">1. 什么是开源硬件 (OSH)?</text>
|
||||
<text class="def-card-text">
|
||||
<tspan x="15" y="50">物理对象的设计规范,其许可方式允许任何人学习、修改、制造和分发这些设计及其衍生的实体产品。</tspan>
|
||||
<tspan x="15" y="75">涵盖任何有形的物理制品,如机械、生物材料等,不仅限于电子设备。</tspan>
|
||||
<tspan x="15" y="100">核心在于其<tspan class="def-card-highlight">“源文件”</tspan>的可及性 (如CAD文件、电路原理图等)。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(40, 190)">
|
||||
<text x="0" y="20" class="def-card-title">2. 关键法律基础 (与软件许可的根本区别)</text>
|
||||
<text class="def-card-text">
|
||||
<tspan x="15" y="50">软件许可主要建立在<tspan class="def-card-highlight">版权法</tspan>之上,而硬件是<tspan class="def-card-highlight">版权与专利法</tspan>的双重结构。</tspan>
|
||||
<tspan x="30" y="75">• <tspan class="def-card-highlight">版权</tspan>:保护硬件的“设计文档”(源文件)的表达形式。</tspan>
|
||||
<tspan x="30" y="100">• <tspan class="def-card-highlight">专利</tspan>:保护功能性发明本身 (设备的工作原理),是更强有力的法律工具。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="license-types" transform="translate(0, 450)">
|
||||
<text x="600" y="25" class="section-title">主流开源硬件许可类型</text>
|
||||
|
||||
<g transform="translate(50, 80)">
|
||||
<text y="0" class="subsection-title">互惠型 / Copyleft 许可</text>
|
||||
<g transform="translate(0, 25)">
|
||||
<g>
|
||||
<rect width="350" height="50" fill="url(#grad-s)" class="license-header-box"/>
|
||||
<text x="175" y="32" class="license-header-text">CERN-OHL-S (强互惠型)</text>
|
||||
<rect y="50" width="350" height="280" class="license-card" stroke="#f87171" filter="url(#shadow)"/>
|
||||
<text x="20" y="90" class="license-card-text">
|
||||
<tspan x="20" y="90" font-weight="bold">核心特征:</tspan>
|
||||
<tspan x="35" y="115">• 硬件领域的“强版”Copyleft。</tspan>
|
||||
<tspan x="35" y="140">• 限制性最强的变体。</tspan>
|
||||
<tspan x="20" y="175" font-weight="bold">衍生品规则:</tspan>
|
||||
<tspan x="35" y="200">• 互惠义务<tspan font-weight="bold">延申</tspan>至集成了该组件</tspan>
|
||||
<tspan x="35" y="225"> 的<tspan font-weight="bold">整个大型硬件系统</tspan>。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(375, 0)">
|
||||
<rect width="350" height="50" fill="url(#grad-w)" class="license-header-box"/>
|
||||
<text x="175" y="32" class="license-header-text">CERN-OHL-W (弱互惠型)</text>
|
||||
<rect y="50" width="350" height="280" class="license-card" stroke="#fb923c" filter="url(#shadow)"/>
|
||||
<text x="20" y="90" class="license-card-text">
|
||||
<tspan x="20" y="90" font-weight="bold">核心特征:</tspan>
|
||||
<tspan x="35" y="115">• 引入“弱版”的Copyleft概念。</tspan>
|
||||
<tspan x="20" y="150" font-weight="bold">衍生品规则:</tspan>
|
||||
<tspan x="35" y="175">• 仅对<tspan font-weight="bold">许可组件本身</tspan>的修改需要开源。</tspan>
|
||||
<tspan x="35" y="200">• 互惠义务<tspan font-weight="bold">不延申</tspan>至包含该组件的</tspan>
|
||||
<tspan x="35" y="225"> 更大型系统。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(750, 0)">
|
||||
<rect width="350" height="50" fill="url(#grad-tapr)" class="license-header-box"/>
|
||||
<text x="175" y="32" class="license-header-text">TAPR OHL</text>
|
||||
<rect y="50" width="350" height="280" class="license-card" stroke="#a78bfa" filter="url(#shadow)"/>
|
||||
<text x="20" y="90" class="license-card-text">
|
||||
<tspan x="20" y="90" font-weight="bold">核心特征:</tspan>
|
||||
<tspan x="35" y="115">• 受软件GPL启发,是经典的Copyleft许可。</tspan>
|
||||
<tspan x="20" y="150" font-weight="bold">衍生品规则:</tspan>
|
||||
<tspan x="35" y="175">• 要求任何修改或衍生作品</tspan>
|
||||
<tspan x="35" y="200"> <tspan font-weight="bold">必须</tspan>在相同的TAPR OHL下发布。</tspan>
|
||||
<tspan x="20" y="235" font-weight="bold">战略目标:</tspan>
|
||||
<tspan x="35" y="260">• 确保硬件设计及其改进永久保持开放。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g transform="translate(50, 480)">
|
||||
<text y="0" class="subsection-title">宽松型 / Permissive 许可</text>
|
||||
<g transform="translate(0, 25)">
|
||||
<g>
|
||||
<rect width="537.5" height="50" fill="url(#grad-p)" class="license-header-box"/>
|
||||
<text x="268.75" y="32" class="license-header-text">CERN-OHL-P (宽松型)</text>
|
||||
<rect y="50" width="537.5" height="280" class="license-card" stroke="#60a5fa" filter="url(#shadow)"/>
|
||||
<text x="20" y="90" class="license-card-text">
|
||||
<tspan x="20" y="90" font-weight="bold">核心特征:</tspan>
|
||||
<tspan x="35" y="115">• 限制最少的许可。</tspan>
|
||||
<tspan x="35" y="140">• 核心要求是保留版权等声明。</tspan>
|
||||
<tspan x="20" y="175" font-weight="bold">衍生品规则:</tspan>
|
||||
<tspan x="35" y="200">• 允许基于开放设计创造并分发</tspan>
|
||||
<tspan x="35" y="225"> <tspan font-weight="bold">闭源的、专有的</tspan>衍生硬件产品。</tspan>
|
||||
<tspan x="20" y="260" font-weight="bold">战略目标:</tspan>
|
||||
<tspan x="35" y="285">• 最大化行业采纳与商业集成。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(562.5, 0)">
|
||||
<rect width="537.5" height="50" fill="url(#grad-p)" class="license-header-box"/>
|
||||
<text x="268.75" y="32" class="license-header-text">Solderpad Hardware License</text>
|
||||
<rect y="50" width="537.5" height="280" class="license-card" stroke="#60a5fa" filter="url(#shadow)"/>
|
||||
<text x="20" y="90" class="license-card-text">
|
||||
<tspan x="20" y="90" font-weight="bold">核心特征:</tspan>
|
||||
<tspan x="35" y="115">• 基于Apache 2.0,商业友好。</tspan>
|
||||
<tspan x="35" y="140">• 包含明确的<tspan font-weight="bold">专利授权</tspan>条款。</tspan>
|
||||
<tspan x="20" y="175" font-weight="bold">衍生品规则:</tspan>
|
||||
<tspan x="35" y="200">• <tspan font-weight="bold">不要求</tspan>衍生作品必须开源。</tspan>
|
||||
<tspan x="35" y="225">• 允许将设计用于<tspan font-weight="bold">闭源的、专有的</tspan>产品。</tspan>
|
||||
<tspan x="20" y="260" font-weight="bold">战略目标:</tspan>
|
||||
<tspan x="35" y="285">• 降低商业公司使用的法律和合规门槛。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<text x="600" y="1320" class="footer-text">本作品采用CC-BY-SA 4.0国际许可协议进行许可, 2025 Gitconomy Research社区。</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,134 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 760">
|
||||
<!-- 背景 -->
|
||||
<rect width="800" height="760" fill="#f8f9fa" rx="10" ry="10"/>
|
||||
|
||||
<!-- 标题 -->
|
||||
<text x="400" y="50" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">道路与桥梁:云计算时代的开源新挑战</text>
|
||||
<text x="400" y="80" font-family="Arial, sans-serif" font-size="16" text-anchor="middle" fill="#666">基于Nadia Eghbal的开创性研究</text>
|
||||
|
||||
<!-- 主要隐喻图解 -->
|
||||
<!-- 桥梁和道路背景 -->
|
||||
<rect x="100" y="120" width="600" height="160" fill="#e3f2fd" rx="5" ry="5"/>
|
||||
|
||||
<!-- 桥梁 -->
|
||||
<path d="M150,160 C150,140 250,140 250,160" fill="none" stroke="#0277bd" stroke-width="10"/>
|
||||
<path d="M250,160 C250,140 350,140 350,160" fill="none" stroke="#0277bd" stroke-width="10"/>
|
||||
<path d="M350,160 C350,140 450,140 450,160" fill="none" stroke="#0277bd" stroke-width="10"/>
|
||||
<path d="M450,160 C450,140 550,140 550,160" fill="none" stroke="#0277bd" stroke-width="10"/>
|
||||
<line x1="150" y1="160" x2="150" y2="240" stroke="#0277bd" stroke-width="10"/>
|
||||
<line x1="550" y1="160" x2="550" y2="240" stroke="#0277bd" stroke-width="10"/>
|
||||
|
||||
<!-- 道路 -->
|
||||
<rect x="100" y="240" width="600" height="40" fill="#90a4ae"/>
|
||||
<line x1="100" y1="260" x2="700" y2="260" stroke="white" stroke-width="2" stroke-dasharray="20,20"/>
|
||||
|
||||
<!-- 云服务卡车 -->
|
||||
<g transform="translate(600, 230)">
|
||||
<rect x="-40" y="-20" width="80" height="30" fill="#673ab7" rx="5" ry="5"/>
|
||||
<rect x="-50" y="10" width="100" height="20" fill="#673ab7"/>
|
||||
<circle cx="-30" cy="30" r="10" fill="#424242"/>
|
||||
<circle cx="30" cy="30" r="10" fill="#424242"/>
|
||||
<text x="0" y="0" font-family="Arial, sans-serif" font-size="12" font-weight="bold" text-anchor="middle" fill="white">云服务商</text>
|
||||
<text x="0" y="23" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="white">$$$ 利润</text>
|
||||
</g>
|
||||
|
||||
<!-- 中小公司汽车 -->
|
||||
<g transform="translate(500, 245)">
|
||||
<rect x="-25" y="-15" width="50" height="25" fill="#2196f3" rx="5" ry="5"/>
|
||||
<circle cx="-15" cy="10" r="5" fill="#424242"/>
|
||||
<circle cx="15" cy="10" r="5" fill="#424242"/>
|
||||
<text x="0" y="0" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="white">企业用户</text>
|
||||
</g>
|
||||
|
||||
<!-- 个人用户小车 -->
|
||||
<g transform="translate(420, 245)">
|
||||
<rect x="-20" y="-10" width="40" height="20" fill="#4caf50" rx="5" ry="5"/>
|
||||
<circle cx="-10" cy="10" r="4" fill="#424242"/>
|
||||
<circle cx="10" cy="10" r="4" fill="#424242"/>
|
||||
<text x="0" y="3" font-family="Arial, sans-serif" font-size="8" font-weight="bold" text-anchor="middle" fill="white">个人用户</text>
|
||||
</g>
|
||||
|
||||
<!-- 维护者角色 -->
|
||||
<g transform="translate(180, 270)">
|
||||
<circle cx="0" cy="0" r="15" fill="#f44336"/>
|
||||
<rect x="-10" y="-20" width="20" height="15" fill="#f44336"/>
|
||||
<text x="0" y="30" font-family="Arial, sans-serif" font-size="12" font-weight="bold" text-anchor="middle" fill="#f44336">志愿维护者</text>
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#666">(极少数)</text>
|
||||
</g>
|
||||
|
||||
<!-- 隐喻解释 -->
|
||||
<g transform="translate(400, 340)">
|
||||
<rect x="-300" y="-15" width="600" height="70" rx="5" ry="5" fill="#eeeeee"/>
|
||||
<text x="0" y="15" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#333">
|
||||
开源项目如同公共基础设施,被广泛使用但维护资源严重不足
|
||||
</text>
|
||||
<text x="0" y="35" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">
|
||||
云服务商从开源中获取巨额利润,但往往没有为其维护提供对等回馈
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<!-- 三大挑战版块 -->
|
||||
<g transform="translate(100, 420)">
|
||||
<!-- 看不见的劳动 -->
|
||||
<rect x="0" y="0" width="150" height="130" rx="5" ry="5" fill="#ffebee" stroke="#f44336" stroke-width="2"/>
|
||||
<text x="75" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#f44336">看不见的劳动</text>
|
||||
<text x="75" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">关键项目往往由</text>
|
||||
<text x="75" y="70" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">极少数志愿者维护</text>
|
||||
<text x="75" y="90" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">导致维护者普遍</text>
|
||||
<text x="75" y="110" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">职业倦怠</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(325, 420)">
|
||||
<!-- 公地悲剧 -->
|
||||
<rect x="0" y="0" width="150" height="130" rx="5" ry="5" fill="#e8f5e9" stroke="#4caf50" stroke-width="2"/>
|
||||
<text x="75" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#4caf50">公地悲剧</text>
|
||||
<text x="75" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">商业公司广泛受益</text>
|
||||
<text x="75" y="70" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">却很少系统性回馈</text>
|
||||
<text x="75" y="90" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">典型的"搭便车"</text>
|
||||
<text x="75" y="110" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">问题</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(550, 420)">
|
||||
<!-- 系统性风险 -->
|
||||
<rect x="0" y="0" width="150" height="130" rx="5" ry="5" fill="#fff3e0" stroke="#ff9800" stroke-width="2"/>
|
||||
<text x="75" y="25" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#ff9800">系统性风险</text>
|
||||
<text x="75" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">基础设施失修</text>
|
||||
<text x="75" y="70" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">导致严重安全漏洞</text>
|
||||
<text x="75" y="90" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">如Heartbleed和</text>
|
||||
<text x="75" y="110" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">Log4j事件</text>
|
||||
</g>
|
||||
|
||||
<!-- 实例:Heartbleed -->
|
||||
<g transform="translate(250, 195)">
|
||||
<circle cx="0" cy="0" r="20" fill="#f44336" fill-opacity="0.2" stroke="#f44336" stroke-width="2"/>
|
||||
<text x="0" y="5" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#f44336">漏洞</text>
|
||||
<text x="100" y="0" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#f44336">OpenSSL Heartbleed</text>
|
||||
<text x="100" y="20" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">全球2/3的网络服务器受影响</text>
|
||||
<text x="100" y="35" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">仅由少数志愿者维护</text>
|
||||
</g>
|
||||
|
||||
<!-- 未来方向 -->
|
||||
<rect x="150" y="670" width="500" height="30" rx="5" ry="5" fill="#e8eaf6" stroke="#3f51b5" stroke-width="1"/>
|
||||
<text x="400" y="690" font-family="Arial, sans-serif" font-size="14" font-weight="bold" text-anchor="middle" fill="#3f51b5">
|
||||
迫切需要建立可持续的、公平的维护和回馈机制
|
||||
</text>
|
||||
|
||||
<!-- 许可证演变 -->
|
||||
<g transform="translate(400, 590)">
|
||||
<text x="0" y="0" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">许可证的演变</text>
|
||||
<line x1="-200" y1="15" x2="200" y2="15" stroke="#ddd" stroke-width="2"/>
|
||||
<circle cx="-150" cy="15" r="8" fill="#4caf50"/>
|
||||
<circle cx="0" cy="15" r="8" fill="#ff9800"/>
|
||||
<circle cx="150" cy="15" r="8" fill="#f44336"/>
|
||||
<text x="-150" y="35" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">传统开源许可证</text>
|
||||
<text x="-150" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">(GPL, MIT)</text>
|
||||
<text x="0" y="35" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">云时代新挑战</text>
|
||||
<text x="0" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">"分发"义务被规避</text>
|
||||
<text x="150" y="35" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">新型许可证尝试</text>
|
||||
<text x="150" y="50" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#666">(MongoDB SSPL)</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可声明 -->
|
||||
<text x="400" y="740" font-family="Arial, sans-serif" font-size="10" text-anchor="middle" fill="#666">本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.8 KiB |
|
|
@ -0,0 +1,130 @@
|
|||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 780">
|
||||
<!-- 背景 -->
|
||||
<rect x="0" y="0" width="1000" height="780" fill="#f8f9fa" />
|
||||
|
||||
<!-- 标题 - Y坐标保持50 -->
|
||||
<text x="500" y="50" font-family="Arial, sans-serif" font-size="28" font-weight="bold" text-anchor="middle" fill="#333">开源许可证的本质与作用</text>
|
||||
|
||||
<!-- 中心元素:许可证文档 - Y坐标调整为更下方 -->
|
||||
<g transform="translate(435, 250)">
|
||||
<!-- 许可证文档背景 -->
|
||||
<rect x="0" y="0" width="130" height="170" rx="5" fill="#fff" stroke="#333" stroke-width="2" />
|
||||
<!-- 文档内容线条 -->
|
||||
<line x1="15" y1="30" x2="115" y2="30" stroke="#333" stroke-width="1.5" />
|
||||
<line x1="15" y1="50" x2="115" y2="50" stroke="#333" stroke-width="1.5" />
|
||||
<line x1="15" y1="70" x2="115" y2="70" stroke="#333" stroke-width="1.5" />
|
||||
<line x1="15" y1="90" x2="115" y2="90" stroke="#333" stroke-width="1.5" />
|
||||
<line x1="15" y1="110" x2="115" y2="110" stroke="#333" stroke-width="1.5" />
|
||||
<line x1="15" y1="130" x2="80" y2="130" stroke="#333" stroke-width="1.5" />
|
||||
<!-- 许可证印章 -->
|
||||
<circle cx="90" cy="140" r="15" fill="#e74c3c" />
|
||||
<text x="90" y="145" font-family="Arial, sans-serif" font-size="8" font-weight="bold" text-anchor="middle" fill="white">OSI</text>
|
||||
</g>
|
||||
|
||||
<!-- 许可证标签 -->
|
||||
<text x="500" y="450" font-family="Arial, sans-serif" font-size="20" font-weight="bold" text-anchor="middle" fill="#333">开源许可证</text>
|
||||
<text x="500" y="475" font-family="Arial, sans-serif" font-size="14" font-style="italic" text-anchor="middle" fill="#555">从版权默认到明确授权的法律桥梁</text>
|
||||
|
||||
<!-- 四个关键作用(围绕中心的四个方向) -->
|
||||
|
||||
<!-- 1. 法律合同 -->
|
||||
<g transform="translate(250, 170)">
|
||||
<!-- 背景圆形 -->
|
||||
<circle cx="0" cy="0" r="100" fill="#3498db" fill-opacity="0.2" stroke="#3498db" stroke-width="2" />
|
||||
<!-- 图标:天平 -->
|
||||
<g transform="translate(-30, -40) scale(0.12)">
|
||||
<rect x="0" y="160" width="500" height="20" rx="10" fill="#3498db" />
|
||||
<rect x="230" y="0" width="40" height="160" rx="5" fill="#3498db" />
|
||||
<circle cx="125" cy="200" r="50" fill="#3498db" />
|
||||
<circle cx="375" cy="200" r="50" fill="#3498db" />
|
||||
</g>
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#3498db">法律合同</text>
|
||||
<!-- 描述 -->
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">建立权利义务关系</text>
|
||||
<text x="0" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">明确授权和责任边界</text>
|
||||
</g>
|
||||
|
||||
<!-- 2. 社会契约 -->
|
||||
<g transform="translate(750, 170)">
|
||||
<!-- 背景圆形 -->
|
||||
<circle cx="0" cy="0" r="100" fill="#2ecc71" fill-opacity="0.2" stroke="#2ecc71" stroke-width="2" />
|
||||
<!-- 图标:握手 -->
|
||||
<g transform="translate(-35, -30) scale(0.7)">
|
||||
<path d="M0,0 C20,10 40,20 50,40 C60,20 80,10 100,0" fill="none" stroke="#2ecc71" stroke-width="8" stroke-linecap="round" />
|
||||
</g>
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#2ecc71">社会契约</text>
|
||||
<!-- 描述 -->
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">宣告项目价值观</text>
|
||||
<text x="0" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">定义期望的协作模式</text>
|
||||
</g>
|
||||
|
||||
<!-- 3. 风险管理工具 -->
|
||||
<g transform="translate(250, 530)">
|
||||
<!-- 背景圆形 -->
|
||||
<circle cx="0" cy="0" r="100" fill="#e67e22" fill-opacity="0.2" stroke="#e67e22" stroke-width="2" />
|
||||
<!-- 图标:盾牌 -->
|
||||
<g transform="translate(-10, -45) scale(0.5)">
|
||||
<path d="M0,0 L50,0 L50,60 L25,80 L0,60 Z" fill="none" stroke="#e67e22" stroke-width="8" />
|
||||
</g>
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#e67e22">风险管理工具</text>
|
||||
<!-- 描述 -->
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">提供可预测的法律环境</text>
|
||||
<text x="0" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">降低协作的法律摩擦</text>
|
||||
</g>
|
||||
|
||||
<!-- 4. 哲学宣言 -->
|
||||
<g transform="translate(750, 530)">
|
||||
<!-- 背景圆形 -->
|
||||
<circle cx="0" cy="0" r="100" fill="#9b59b6" fill-opacity="0.2" stroke="#9b59b6" stroke-width="2" />
|
||||
<!-- 图标:思想灯泡 -->
|
||||
<g transform="translate(-10, -45) scale(0.5)">
|
||||
<circle cx="25" cy="25" r="25" fill="none" stroke="#9b59b6" stroke-width="8" />
|
||||
<line x1="25" y1="60" x2="25" y2="80" stroke="#9b59b6" stroke-width="8" stroke-linecap="round" />
|
||||
</g>
|
||||
<!-- 标题 -->
|
||||
<text x="0" y="20" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#9b59b6">哲学宣言</text>
|
||||
<!-- 描述 -->
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">反映对自由与共享的理解</text>
|
||||
<text x="0" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#333">体现创建者的价值观</text>
|
||||
</g>
|
||||
|
||||
<!-- 连接线 - 调整端点以避免重叠 -->
|
||||
<line x1="430" y1="305" x2="330" y2="225" stroke="#3498db" stroke-width="2" stroke-dasharray="5,5" />
|
||||
<line x1="570" y1="305" x2="665" y2="225" stroke="#2ecc71" stroke-width="2" stroke-dasharray="5,5" />
|
||||
<line x1="430" y1="360" x2="330" y2="475" stroke="#e67e22" stroke-width="2" stroke-dasharray="5,5" />
|
||||
<line x1="570" y1="360" x2="665" y2="475" stroke="#9b59b6" stroke-width="2" stroke-dasharray="5,5" />
|
||||
|
||||
<!-- 知识产权三要素 -->
|
||||
<g transform="translate(500, 600)">
|
||||
<text x="0" y="-10" font-family="Arial, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" fill="#333">知识产权三要素</text>
|
||||
|
||||
<!-- 版权圆圈 -->
|
||||
<circle cx="-120" cy="50" r="40" fill="#f1c40f" fill-opacity="0.2" stroke="#f1c40f" stroke-width="2" />
|
||||
<text x="-120" y="45" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">版权</text>
|
||||
<text x="-120" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">基础</text>
|
||||
|
||||
<!-- 专利圆圈 -->
|
||||
<circle cx="0" cy="50" r="40" fill="#f1c40f" fill-opacity="0.2" stroke="#f1c40f" stroke-width="2" />
|
||||
<text x="0" y="45" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">专利</text>
|
||||
<text x="0" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">主动防御</text>
|
||||
|
||||
<!-- 商标圆圈 -->
|
||||
<circle cx="120" cy="50" r="40" fill="#f1c40f" fill-opacity="0.2" stroke="#f1c40f" stroke-width="2" />
|
||||
<text x="120" y="45" font-family="Arial, sans-serif" font-size="16" font-weight="bold" text-anchor="middle" fill="#333">商标</text>
|
||||
<text x="120" y="65" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">保留权利</text>
|
||||
</g>
|
||||
|
||||
<!-- 底部说明 -->
|
||||
<text x="500" y="720" font-family="Arial, sans-serif" font-size="14" font-style="italic" text-anchor="middle" fill="#777">
|
||||
"开源许可证不仅是法律文件,更是开源社区为应对不断变化的商业和法律环境而进化出的动态治理工具"
|
||||
</text>
|
||||
|
||||
<!-- 许可说明 -->
|
||||
<text x="500" y="760" font-family="Arial, sans-serif" font-size="12" text-anchor="middle" fill="#555">
|
||||
本作品采用 CC-BY-SA 4.0 国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
|
|
@ -0,0 +1,207 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 820" font-family="Arial, sans-serif">
|
||||
<rect width="1600" height="820" fill="#ffffff" />
|
||||
|
||||
<text x="800" y="40" font-size="22" font-weight="800" text-anchor="middle" fill="#111827">Git的数据结构和工作原理</text>
|
||||
|
||||
<defs>
|
||||
<marker id="arrow-main" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto" fill="#2563EB">
|
||||
<polygon points="0 0, 10 3.5, 0 7" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<g id="working-directory" transform="translate(50,80)">
|
||||
<rect x="0" y="0" width="280" height="220" rx="10" ry="10" fill="#DBEAFE" stroke="#3B82F6" stroke-width="2"/>
|
||||
<rect x="10" y="10" width="260" height="35" rx="5" ry="5" fill="#3B82F6" />
|
||||
<text x="140" y="33" font-size="16" font-weight="bold" text-anchor="middle" fill="white">工作区 (Working Directory)</text>
|
||||
<text x="140" y="65" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">可见的项目文件目录</text>
|
||||
|
||||
<rect x="30" y="80" width="50" height="50" rx="3" ry="3" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="55" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">file.txt</text>
|
||||
|
||||
<rect x="100" y="80" width="50" height="50" rx="3" ry="3" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="125" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">app.js</text>
|
||||
|
||||
<rect x="170" y="80" width="50" height="50" rx="3" ry="3" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="195" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">style.css</text>
|
||||
|
||||
<rect x="30" y="150" width="190" height="40" rx="3" ry="3" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="125" y="165" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">其他项目文件...</text>
|
||||
<text x="125" y="180" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">(用户直接编辑的区域)</text>
|
||||
</g>
|
||||
|
||||
<g id="staging-area" transform="translate(430,80)">
|
||||
<rect x="0" y="0" width="280" height="220" rx="10" ry="10" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<rect x="10" y="10" width="260" height="35" rx="5" ry="5" fill="#34D399" />
|
||||
<text x="140" y="33" font-size="16" font-weight="bold" text-anchor="middle" fill="white">暂存区 (Staging Area)</text>
|
||||
<text x="140" y="65" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">.git/index 索引文件</text>
|
||||
|
||||
<rect x="30" y="80" width="50" height="50" rx="3" ry="3" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="55" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">file.txt</text>
|
||||
<text x="55" y="120" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">(已暂存)</text>
|
||||
|
||||
<rect x="100" y="80" width="50" height="50" rx="3" ry="3" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="125" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">app.js</text>
|
||||
<text x="125" y="120" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">(已暂存)</text>
|
||||
|
||||
<rect x="190" y="100" width="70" height="30" rx="3" ry="3" fill="#FEF9C3" stroke="#FACC15" stroke-width="1"/>
|
||||
<text x="225" y="115" font-size="11" font-weight="normal" text-anchor="middle" fill="#374151">未跟踪文件</text>
|
||||
<text x="225" y="125" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">不在此区域</text>
|
||||
|
||||
<text x="140" y="170" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">临时存储准备提交的更改</text>
|
||||
<text x="140" y="185" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">类似"购物车"功能</text>
|
||||
</g>
|
||||
|
||||
<g id="repository" transform="translate(810,80)">
|
||||
<rect x="0" y="0" width="320" height="220" rx="10" ry="10" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<rect x="10" y="10" width="300" height="35" rx="5" ry="5" fill="#60A5FA" />
|
||||
<text x="160" y="33" font-size="16" font-weight="bold" text-anchor="middle" fill="white">版本库 (Repository)</text>
|
||||
<text x="160" y="65" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">.git/objects 数据库</text>
|
||||
|
||||
<circle cx="80" cy="100" r="25" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<text x="80" y="100" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">Commit</text>
|
||||
<text x="80" y="110" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">C1a3b5</text>
|
||||
|
||||
<circle cx="160" cy="100" r="25" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<text x="160" y="100" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">Commit</text>
|
||||
<text x="160" y="110" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">D2e4f6</text>
|
||||
|
||||
<circle cx="240" cy="100" r="25" fill="#EFF6FF" stroke="#60A5FA" stroke-width="2"/>
|
||||
<text x="240" y="100" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">Commit</text>
|
||||
<text x="240" y="110" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">E3g5h7</text>
|
||||
|
||||
<line x1="105" y1="100" x2="135" y2="100" stroke="#2563EB" stroke-width="2"/>
|
||||
<line x1="185" y1="100" x2="215" y2="100" stroke="#2563EB" stroke-width="2"/>
|
||||
|
||||
<rect x="130" y="140" width="60" height="20" rx="3" ry="3" fill="#60A5FA"/>
|
||||
<text x="160" y="155" font-size="11" font-weight="normal" text-anchor="middle" fill="white">master</text>
|
||||
|
||||
<rect x="200" y="140" width="60" height="20" rx="3" ry="3" fill="#60A5FA"/>
|
||||
<text x="230" y="155" font-size="11" font-weight="normal" text-anchor="middle" fill="white">HEAD</text>
|
||||
|
||||
<text x="160" y="185" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">永久存储所有版本历史</text>
|
||||
</g>
|
||||
|
||||
<g id="remote-repo" transform="translate(1230,80)">
|
||||
<rect x="0" y="0" width="220" height="220" rx="10" ry="10" fill="#F0FDF4" stroke="#34D399" stroke-width="2"/>
|
||||
<rect x="10" y="10" width="200" height="35" rx="5" ry="5" fill="#34D399" />
|
||||
<text x="110" y="33" font-size="16" font-weight="bold" text-anchor="middle" fill="white">远程仓库 (Remote)</text>
|
||||
<text x="110" y="65" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">GitHub/GitLab/Gitee</text>
|
||||
|
||||
<rect x="30" y="80" width="50" height="50" rx="3" ry="3" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="55" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">main</text>
|
||||
|
||||
<rect x="100" y="80" width="50" height="50" rx="3" ry="3" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="125" y="105" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">develop</text>
|
||||
|
||||
<rect x="30" y="150" width="120" height="40" rx="3" ry="3" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="90" y="165" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">远程分支...</text>
|
||||
<text x="90" y="180" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">团队共享</text>
|
||||
</g>
|
||||
|
||||
<g id="connectors">
|
||||
<path d="M 330 150 L 430 150" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<text x="380" y="120" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">git add</text>
|
||||
<text x="380" y="135" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">添加文件到暂存区</text>
|
||||
|
||||
<path d="M 430 180 L 330 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,3" marker-end="url(#arrow-main)"/>
|
||||
<text x="380" y="200" font-size="11" font-weight="bold" text-anchor="middle" fill="#374151">git restore --staged</text>
|
||||
<text x="380" y="215" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">从暂存区撤回</text>
|
||||
|
||||
<path d="M 710 150 L 810 150" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<text x="760" y="120" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">git commit</text>
|
||||
<text x="760" y="135" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">提交到版本库</text>
|
||||
|
||||
<path d="M 810 180 L 710 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,3" marker-end="url(#arrow-main)"/>
|
||||
<text x="760" y="200" font-size="11" font-weight="bold" text-anchor="middle" fill="#374151">git reset</text>
|
||||
<text x="760" y="215" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">从版本库撤回</text>
|
||||
|
||||
<path d="M 970 300 L 970 350 L 190 350 L 190 300" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,3" marker-end="url(#arrow-main)" fill="none"/>
|
||||
<text x="580" y="325" font-size="11" font-weight="bold" text-anchor="middle" fill="#374151">git checkout</text>
|
||||
<text x="580" y="340" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">检出文件到工作区</text>
|
||||
|
||||
<path d="M 1130 150 L 1230 150" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<text x="1180" y="120" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">git push</text>
|
||||
<text x="1180" y="135" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">推送到远程</text>
|
||||
|
||||
<path d="M 1230 180 L 1130 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,3" marker-end="url(#arrow-main)"/>
|
||||
<text x="1180" y="200" font-size="11" font-weight="bold" text-anchor="middle" fill="#374151">git pull/fetch</text>
|
||||
<text x="1180" y="215" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">从远程拉取</text>
|
||||
</g>
|
||||
|
||||
<g id="object-model" transform="translate(50,380)">
|
||||
<rect x="0" y="0" width="1400" height="140" rx="10" ry="10" fill="#DBEAFE" stroke="#3B82F6" stroke-width="2"/>
|
||||
<text x="700" y="25" font-size="16" font-weight="bold" text-anchor="middle" fill="#111827">Git对象模型与数据存储</text>
|
||||
|
||||
<rect x="50" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="150" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">Blob对象</text>
|
||||
<text x="150" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">存储文件内容</text>
|
||||
<text x="150" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">SHA-1哈希标识</text>
|
||||
|
||||
<rect x="350" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="450" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">Tree对象</text>
|
||||
<text x="450" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">存储目录结构</text>
|
||||
<text x="450" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">指向Blob和子Tree</text>
|
||||
|
||||
<rect x="650" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="750" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">Commit对象</text>
|
||||
<text x="750" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">存储提交信息</text>
|
||||
<text x="750" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">指向Tree和父Commit</text>
|
||||
|
||||
<rect x="950" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="1050" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">Tag对象</text>
|
||||
<text x="1050" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">标记特定版本</text>
|
||||
<text x="1050" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">指向Commit对象</text>
|
||||
|
||||
<line x1="250" y1="70" x2="350" y2="70" stroke="#2563EB" stroke-width="1"/>
|
||||
<line x1="550" y1="70" x2="650" y2="70" stroke="#2563EB" stroke-width="1"/>
|
||||
<line x1="850" y1="70" x2="950" y2="70" stroke="#2563EB" stroke-width="1"/>
|
||||
|
||||
<text x="700" y="125" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">所有对象存储在 .git/objects目录中,通过SHA-1哈希值唯一标识和检索</text>
|
||||
</g>
|
||||
|
||||
<g id="workflow" transform="translate(50,570)">
|
||||
<rect x="0" y="0" width="1400" height="160" rx="10" ry="10" fill="#DBEAFE" stroke="#3B82F6" stroke-width="2"/>
|
||||
<text x="700" y="25" font-size="16" font-weight="bold" text-anchor="middle" fill="#111827">Git核心工作流程</text>
|
||||
|
||||
<rect x="50" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="150" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">步骤 1</text>
|
||||
<text x="150" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">工作区修改文件</text>
|
||||
<text x="150" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">git status 查看状态</text>
|
||||
|
||||
<rect x="300" y="40" width="200" height="60" rx="5" ry="5" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="400" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">步骤 2</text>
|
||||
<text x="400" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">git add 到暂存区</text>
|
||||
<text x="400" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">git diff 比较差异</text>
|
||||
|
||||
<rect x="550" y="40" width="200" height="60" rx="5" ry="5" fill="#EFF6FF" stroke="#60A5FA" stroke-width="1"/>
|
||||
<text x="650" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">步骤 3</text>
|
||||
<text x="650" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">git commit 到版本库</text>
|
||||
<text x="650" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">创建新提交对象</text>
|
||||
|
||||
<rect x="800" y="40" width="200" height="60" rx="5" ry="5" fill="#F0FDF4" stroke="#34D399" stroke-width="1"/>
|
||||
<text x="900" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">步骤 4</text>
|
||||
<text x="900" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">git push 到远程</text>
|
||||
<text x="900" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">团队协作共享</text>
|
||||
|
||||
<rect x="1050" y="40" width="200" height="60" rx="5" ry="5" fill="#FEF9C3" stroke="#FACC15" stroke-width="1"/>
|
||||
<text x="1150" y="60" font-size="12" font-weight="bold" text-anchor="middle" fill="#374151">步骤 5</text>
|
||||
<text x="1150" y="75" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">分支管理与合并</text>
|
||||
<text x="1150" y="90" font-size="11" font-weight="normal" text-anchor="middle" fill="#6B7280">解决冲突等</text>
|
||||
|
||||
<path d="M 250 70 L 300 70" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<path d="M 500 70 L 550 70" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<path d="M 750 70 L 800 70" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
<path d="M 1000 70 L 1050 70" stroke="#2563EB" stroke-width="2" marker-end="url(#arrow-main)"/>
|
||||
|
||||
<text x="700" y="120" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">
|
||||
<tspan font-weight="bold">分布式架构:</tspan>每个开发者拥有完整的仓库副本,支持离线工作
|
||||
</text>
|
||||
<text x="700" y="135" font-size="12" font-weight="normal" text-anchor="middle" fill="#374151">
|
||||
<tspan font-weight="bold">完整性保证:</tspan>通过SHA-1哈希校验确保内容完整性
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<text x="800" y="800" font-size="12" font-weight="normal" text-anchor="middle" fill="#64748B">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
|
@ -0,0 +1,131 @@
|
|||
<svg width="1200" height="800" xmlns="http://www.w3.org/2000/svg" font-family="Arial, sans-serif">
|
||||
|
||||
<rect width="1200" height="800" fill="#ffffff" />
|
||||
|
||||
<text x="600" y="30" text-anchor="middle" font-size="22" font-weight="800" fill="#111827">Git分支管理逻辑示意图图</text>
|
||||
|
||||
<rect x="40" y="50" width="1160" height="700" fill="#DBEAFE" stroke="#3B82F6" stroke-width="2"/>
|
||||
|
||||
<defs>
|
||||
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#2563EB"/>
|
||||
</marker>
|
||||
<marker id="arrowhead-highlight" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#FACC15"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<g id="legend">
|
||||
<text x="100" y="80" font-size="16" font-weight="bold" fill="#111827">图例说明:</text>
|
||||
|
||||
<line x1="100" y1="100" x2="200" y2="100" stroke="#60A5FA" stroke-width="3"/>
|
||||
<text x="220" y="105" font-size="12" font-weight="normal" fill="#374151">主分支 (master)</text>
|
||||
|
||||
<line x1="350" y1="100" x2="450" y2="100" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5"/>
|
||||
<text x="470" y="105" font-size="12" font-weight="normal" fill="#374151">合并操作</text>
|
||||
|
||||
<rect x="600" y="95" width="50" height="20" rx="3" fill="#FACC15" />
|
||||
<text x="610" y="110" font-size="12" font-weight="bold" fill="#374151">HEAD</text>
|
||||
<text x="660" y="105" font-size="12" font-weight="normal" fill="#374151">当前所在位置</text>
|
||||
|
||||
<line x1="100" y1="130" x2="200" y2="130" stroke="#FACC15" stroke-width="2"/>
|
||||
<text x="220" y="135" font-size="12" font-weight="normal" fill="#374151">高亮分支 (release/hotfix)</text>
|
||||
|
||||
<circle cx="350" cy="130" r="5" fill="#60A5FA"/>
|
||||
<text x="370" y="135" font-size="12" font-weight="normal" fill="#374151">提交点</text>
|
||||
</g>
|
||||
|
||||
<line x1="100" y1="180" x2="1000" y2="180" stroke="#6B7280" stroke-width="1" stroke-dasharray="2,2"/>
|
||||
<text x="50" y="175" font-size="11" fill="#6B7280">时间轴 →</text>
|
||||
|
||||
<g id="commits">
|
||||
<circle cx="150" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="145" y="170" font-size="11" fill="#6B7280">A</text>
|
||||
<circle cx="250" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="245" y="170" font-size="11" fill="#6B7280">B</text>
|
||||
<circle cx="350" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="345" y="170" font-size="11" fill="#6B7280">C</text>
|
||||
<circle cx="450" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="445" y="170" font-size="11" fill="#6B7280">D</text>
|
||||
<circle cx="550" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="545" y="170" font-size="11" fill="#6B7280">E</text>
|
||||
<circle cx="650" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="645" y="170" font-size="11" fill="#6B7280">F</text>
|
||||
<circle cx="750" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="745" y="170" font-size="11" fill="#6B7280">G</text>
|
||||
<circle cx="850" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="845" y="170" font-size="11" fill="#6B7280">H</text>
|
||||
<circle cx="950" cy="180" r="5" fill="#60A5FA"/>
|
||||
<text x="945" y="170" font-size="11" fill="#6B7280">I</text>
|
||||
</g>
|
||||
|
||||
<g id="master-branch">
|
||||
<path d="M 150 180 L 950 180" stroke="#60A5FA" stroke-width="3" fill="none"/>
|
||||
<rect x="940" y="160" width="60" height="20" rx="3" fill="#60A5FA" />
|
||||
<text x="950" y="175" font-size="12" fill="white">master</text>
|
||||
<text x="1010" y="185" font-size="11" fill="#6B7280">主分支:稳定版本,用于生产环境</text>
|
||||
</g>
|
||||
|
||||
<g id="develop-branch">
|
||||
<path d="M 250 180 L 250 230 L 950 230" stroke="#3B82F6" stroke-width="3" fill="none"/>
|
||||
<rect x="940" y="210" width="60" height="20" rx="3" fill="#3B82F6" />
|
||||
<text x="950" y="225" font-size="12" fill="white">develop</text>
|
||||
<text x="1010" y="235" font-size="11" fill="#6B7280">开发分支:集成新功能,日常开发</text>
|
||||
<path d="M 950 230 L 950 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="feature-branch">
|
||||
<path d="M 350 230 L 350 280 L 550 280" stroke="#34D399" stroke-width="2" fill="none"/>
|
||||
<rect x="540" y="260" width="60" height="20" rx="3" fill="#34D399" />
|
||||
<text x="550" y="275" font-size="12" fill="white">feature-x</text>
|
||||
<text x="1010" y="285" font-size="11" fill="#6B7280">特性分支:开发单个功能</text>
|
||||
<path d="M 550 280 L 550 230" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
|
||||
<g id="head-pointer">
|
||||
<rect x="540" y="220" width="60" height="20" rx="3" fill="#FACC15" />
|
||||
<text x="550" y="235" font-size="12" font-weight="bold" fill="#374151">HEAD</text>
|
||||
<path d="M 570 240 L 570 260" stroke="#FACC15" stroke-width="2" marker-end="url(#arrowhead-highlight)"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="bugfix-branch">
|
||||
<path d="M 450 230 L 450 330 L 550 330" stroke="#34D399" stroke-width="2" fill="none"/>
|
||||
<rect x="540" y="310" width="60" height="20" rx="3" fill="#34D399" />
|
||||
<text x="550" y="325" font-size="12" fill="white">bugfix-1</text>
|
||||
<text x="1010" y="335" font-size="11" fill="#6B7280">Bug修复分支:修复测试中的Bug</text>
|
||||
<path d="M 550 330 L 550 230" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="release-branch">
|
||||
<path d="M 650 230 L 650 380 L 850 380" stroke="#FACC15" stroke-width="2" fill="none"/>
|
||||
<rect x="840" y="360" width="70" height="20" rx="3" fill="#FACC15" />
|
||||
<text x="850" y="375" font-size="12" fill="#374151">release-1.0</text>
|
||||
<text x="1010" y="385" font-size="11" fill="#6B7280">发布分支:准备发布,测试</text>
|
||||
<path d="M 850 380 L 850 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
<path d="M 850 380 L 850 230" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="hotfix-branch">
|
||||
<path d="M 750 180 L 750 430 L 850 430" stroke="#FACC15" stroke-width="2" fill="none"/>
|
||||
<rect x="840" y="410" width="60" height="20" rx="3" fill="#FACC15" />
|
||||
<text x="850" y="425" font-size="12" fill="#374151">hotfix-1</text>
|
||||
<text x="1010" y="435" font-size="11" fill="#6B7280">热修复分支:紧急修复生产Bug</text>
|
||||
<path d="M 850 430 L 850 180" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
<path d="M 850 430 L 850 230" stroke="#2563EB" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrowhead)"/>
|
||||
</g>
|
||||
|
||||
<g id="annotations">
|
||||
<rect x="70" y="500" width="1100" height="230" fill="#DBEAFE" stroke="#3B82F6" stroke-width="1"/>
|
||||
<text x="100" y="530" font-size="16" font-weight="bold" fill="#111827">Git分支管理流程说明:</text>
|
||||
<text x="100" y="560" font-size="12" font-weight="normal" fill="#374151">1. <tspan font-weight="bold">主分支 (master)</tspan>: 代表生产环境稳定代码,仅通过发布或热修复更新。</text>
|
||||
<text x="100" y="590" font-size="12" font-weight="normal" fill="#374151">2. <tspan font-weight="bold">开发分支 (develop)</tspan>: 集成所有新功能,是日常开发的主线。</text>
|
||||
<text x="100" y="620" font-size="12" font-weight="normal" fill="#374151">3. <tspan font-weight="bold">特性分支 (feature)</tspan>: 从develop创建,完成功能后合并回develop(通过Pull Request)。</text>
|
||||
<text x="100" y="650" font-size="12" font-weight="normal" fill="#374151">4. <tspan font-weight="bold">发布分支 (release)</tspan>: 从develop创建,用于测试和版本准备,完成后合并到master和develop。</text>
|
||||
<text x="100" y="680" font-size="12" font-weight="normal" fill="#374151">5. <tspan font-weight="bold">热修复分支 (hotfix)</tspan>: 从master创建,紧急修复后同步到master和develop。</text>
|
||||
<text x="100" y="710" font-size="12" font-weight="normal" fill="#374151">6. <tspan font-weight="bold">HEAD</tspan> 是一个特殊指针,指向您当前所在的本地分支(如本图所示的 'feature-x')。</text>
|
||||
</g>
|
||||
|
||||
<text x="600" y="780" font-size="12" font-weight="normal" text-anchor="middle" fill="#64748B">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.1 KiB |
|
|
@ -0,0 +1,171 @@
|
|||
<svg width="1200" height="960" xmlns="http://www.w3.org/2000/svg" font-family="Arial, sans-serif" viewBox="0 0 1200 960">
|
||||
|
||||
<rect width="1200" height="900" fill="#ffffff" />
|
||||
|
||||
<defs>
|
||||
<marker id="arrow-main" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto" fill="#2563EB">
|
||||
<polygon points="0 0, 10 3.5, 0 7" />
|
||||
</marker>
|
||||
<marker id="arrow-highlight" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto" fill="#FACC15">
|
||||
<polygon points="0 0, 10 3.5, 0 7" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<style>
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; text-anchor: middle; }
|
||||
.title-text { font-size: 16px; font-weight: bold; fill: #111827; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.small-text { font-size: 11px; font-weight: normal; fill: #6B7280; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; text-anchor: middle; }
|
||||
|
||||
/* 规范 Sec 3: 元素样式 */
|
||||
.card-background { fill: #DBEAFE; stroke: #3B82F6; stroke-width: 2; rx: 15; }
|
||||
|
||||
/* 分支与提交 */
|
||||
.line-main { stroke: #60A5FA; stroke-width: 3; fill: none; }
|
||||
.commit-main { fill: #EFF6FF; stroke: #60A5FA; stroke-width: 2; }
|
||||
.label-main { fill: #60A5FA; }
|
||||
|
||||
.line-feature { stroke: #34D399; stroke-width: 2; fill: none; }
|
||||
.commit-feature { fill: #F0FDF4; stroke: #34D399; stroke-width: 2; }
|
||||
.label-feature { fill: #34D399; }
|
||||
|
||||
.commit-merge { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2; }
|
||||
|
||||
.label-head { fill: #FACC15; }
|
||||
|
||||
.connector { stroke: #2563EB; stroke-width: 2; fill: none; marker-end: url(#arrow-main); }
|
||||
.connector-dashed { stroke: #2563EB; stroke-width: 2; fill: none; stroke-dasharray: 5, 5; marker-end: url(#arrow-main); }
|
||||
</style>
|
||||
|
||||
<text x="600" y="40" class="main-title-text">Git Merge 合并策略 (Fast-Forward vs Three-Way)</text>
|
||||
|
||||
<g id="fast-forward-section" transform="translate(50, 80)">
|
||||
<rect class="card-background" width="1100" height="350" />
|
||||
|
||||
<text x="30" y="40" class="title-text">1. Fast-Forward (快进合并)</text>
|
||||
<text x="30" y="65" class="body-text">
|
||||
当目标分支 (master) 在特性分支 (feature) 创建后没有产生任何新的提交时发生。
|
||||
</text>
|
||||
<text x="30" y="85" class="body-text">
|
||||
结果:Git 不会创建新的合并提交,只是简单地将 master 分支的指针“快进”到 feature 分支的最新提交。历史保持线性。
|
||||
</text>
|
||||
|
||||
<g id="ff-before" transform="translate(100, 120)">
|
||||
<text x="130" y="30" class="title-text">合并前 (Before)</text>
|
||||
<text x="110" y="50" class="small-text">(执行: git checkout master)</text>
|
||||
|
||||
<circle cx="100" cy="150" r="15" class="commit-main" />
|
||||
<text x="93" y="155" class="small-text">C1</text>
|
||||
<circle cx="250" cy="150" r="15" class="commit-feature" />
|
||||
<text x="243" y="155" class="small-text">C2</text>
|
||||
|
||||
<path d="M 115 150 L 235 150" class="line-feature" />
|
||||
|
||||
<rect x="70" y="100" width="60" height="20" rx="3" class="label-main" />
|
||||
<text x="78" y="115" font-size="12" fill="white">master</text>
|
||||
|
||||
<rect x="220" y="100" width="60" height="20" rx="3" class="label-feature" />
|
||||
<text x="228" y="115" font-size="12" fill="white">feature</text>
|
||||
|
||||
<rect x="0" y="100" width="60" height="20" rx="3" class="label-head" />
|
||||
<text x="10" y="115" font-size="12" fill="#374151" font-weight="bold">HEAD</text>
|
||||
<path d="M 30 120 L 30 140 L 70 140" stroke="#FACC15" stroke-width="2" fill="none" marker-end="url(#arrow-highlight)" />
|
||||
</g>
|
||||
|
||||
<path d="M 450 230 L 550 230" class="connector" />
|
||||
<text x="460" y="220" class="body-text" fill="#2563EB" font-weight="bold">git merge feature</text>
|
||||
|
||||
<g id="ff-after" transform="translate(650, 120)">
|
||||
<text x="130" y="30" class="title-text">合并后 (After)</text>
|
||||
<text x="110" y="50" class="small-text">(master 指针被快进)</text>
|
||||
|
||||
<circle cx="100" cy="150" r="15" class="commit-main" />
|
||||
<text x="93" y="155" class="small-text">C1</text>
|
||||
<circle cx="250" cy="150" r="15" class="commit-main" /> <text x="243" y="155" class="small-text">C2</text>
|
||||
|
||||
<path d="M 115 150 L 235 150" class="line-main" /> <rect x="220" y="100" width="60" height="20" rx="3" class="label-main" />
|
||||
<text x="228" y="115" font-size="12" fill="white">master</text>
|
||||
|
||||
<rect x="290" y="100" width="60" height="20" rx="3" class="label-feature" />
|
||||
<text x="298" y="115" font-size="12" fill="white">feature</text>
|
||||
|
||||
<rect x="150" y="100" width="60" height="20" rx="3" class="label-head" />
|
||||
<text x="160" y="115" font-size="12" fill="#374151" font-weight="bold">HEAD</text>
|
||||
<path d="M 180 120 L 180 140 L 220 140" stroke="#FACC15" stroke-width="2" fill="none" marker-end="url(#arrow-highlight)" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="three-way-section" transform="translate(50, 480)">
|
||||
<rect class="card-background" width="1100" height="420" />
|
||||
|
||||
<text x="30" y="40" class="title-text">2. Three-Way Merge (三方合并)</text>
|
||||
<text x="30" y="65" class="body-text">
|
||||
当目标分支 (master) 和特性分支 (feature) 在分叉后,各自都有了新的提交时发生。
|
||||
</text>
|
||||
<text x="30" y="85" class="body-text">
|
||||
结果:Git 会找到三个点(共同祖先C1、master终点C2、feature终点C3),并创建一个全新的“合并提交”(M1)。历史变得非线性。
|
||||
</text>
|
||||
|
||||
<g id="3way-before" transform="translate(100, 120)">
|
||||
<text x="130" y="30" class="title-text">合并前 (Before)</text>
|
||||
<text x="110" y="50" class="small-text">(分支已各自发展)</text>
|
||||
|
||||
<circle cx="100" cy="150" r="15" class="commit-main" />
|
||||
<text x="93" y="155" class="small-text">C1</text>
|
||||
<circle cx="250" cy="150" r="15" class="commit-main" />
|
||||
<text x="243" y="155" class="small-text">C2</text>
|
||||
<circle cx="250" cy="220" r="15" class="commit-feature" />
|
||||
<text x="243" y="225" class="small-text">C3</text>
|
||||
|
||||
<path d="M 115 150 L 235 150" class="line-main" />
|
||||
<path d="M 115 158 L 235 212" class="line-feature" />
|
||||
|
||||
<rect x="220" y="100" width="60" height="20" rx="3" class="label-main" />
|
||||
<text x="228" y="115" font-size="12" fill="white">master</text>
|
||||
|
||||
<rect x="220" y="250" width="60" height="20" rx="3" class="label-feature" />
|
||||
<text x="228" y="265" font-size="12" fill="white">feature</text>
|
||||
|
||||
<rect x="150" y="100" width="60" height="20" rx="3" class="label-head" />
|
||||
<text x="160" y="115" font-size="12" fill="#374151" font-weight="bold">HEAD</text>
|
||||
<path d="M 180 120 L 180 140 L 220 140" stroke="#FACC15" stroke-width="2" fill="none" marker-end="url(#arrow-highlight)" />
|
||||
</g>
|
||||
|
||||
<path d="M 450 230 L 550 230" class="connector" />
|
||||
<text x="460" y="220" class="body-text" fill="#2563EB" font-weight="bold">git merge feature</text>
|
||||
|
||||
<g id="3way-after" transform="translate(650, 120)">
|
||||
<text x="130" y="30" class="title-text">合并后 (After)</text>
|
||||
<text x="110" y="50" class="small-text">(创建了新的合并提交 M1)</text>
|
||||
|
||||
<circle cx="100" cy="150" r="15" class="commit-main" />
|
||||
<text x="93" y="155" class="small-text">C1</text>
|
||||
<circle cx="250" cy="150" r="15" class="commit-main" />
|
||||
<text x="243" y="155" class="small-text">C2</text>
|
||||
<circle cx="250" cy="220" r="15" class="commit-feature" />
|
||||
<text x="243" y="225" class="small-text">C3</text>
|
||||
<circle cx="350" cy="150" r="15" class="commit-merge" />
|
||||
<text x="343" y="155" class="small-text">M1</text>
|
||||
|
||||
<path d="M 115 150 L 235 150" class="line-main" />
|
||||
<path d="M 115 158 L 235 212" class="line-feature" />
|
||||
<path d="M 265 150 L 335 150" class="line-main" />
|
||||
<path d="M 265 212 L 335 158" class="connector-dashed" />
|
||||
|
||||
<rect x="320" y="100" width="60" height="20" rx="3" class="label-main" />
|
||||
<text x="328" y="115" font-size="12" fill="white">master</text>
|
||||
|
||||
<rect x="220" y="250" width="60" height="20" rx="3" class="label-feature" />
|
||||
<text x="228" y="265" font-size="12" fill="white">feature</text>
|
||||
|
||||
<rect x="250" y="100" width="60" height="20" rx="3" class="label-head" />
|
||||
<text x="260" y="115" font-size="12" fill="#374151" font-weight="bold">HEAD</text>
|
||||
<path d="M 280 120 L 280 140 L 320 140" stroke="#FACC15" stroke-width="2" fill="none" marker-end="url(#arrow-highlight)" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<text x="600" y="940" class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.5 KiB |
|
|
@ -0,0 +1,108 @@
|
|||
<svg width="900" height="540" viewBox="0 0 900 540" xmlns="http://www.w3.org/2000/svg" style="background-color: white;" font-family="Noto Sans, sans-serif">
|
||||
<defs>
|
||||
<style>
|
||||
.card-background { fill: #DBEAFE; stroke: #3B82F6; stroke-width: 2px; }
|
||||
.main-box { fill: #EFF6FF; stroke: #60A5FA; stroke-width: 2px; }
|
||||
.highlight-box { fill: #FEF9C3; stroke: #FACC15; stroke-width: 2px; }
|
||||
.highlight-icon-stroke { stroke: #D97706; }
|
||||
.highlight-icon-fill { fill: #D97706; }
|
||||
.main-title-text { font-size: 22px; font-weight: 800; fill: #111827; text-anchor: middle; }
|
||||
.title-text { font-size: 16px; font-weight: bold; fill: #111827; text-anchor: middle; }
|
||||
.body-text { font-size: 12px; font-weight: normal; fill: #374151; }
|
||||
.body-text-bold { font-size: 12px; font-weight: bold; fill: #374151; }
|
||||
.small-text { font-size: 11px; font-weight: normal; fill: #6B7280; }
|
||||
.license-text { font-size: 12px; font-weight: normal; fill: #64748B; text-anchor: middle; }
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<text x="450" y="50" class="main-title-text">版本控制基础</text>
|
||||
|
||||
<g id="definition-importance">
|
||||
<rect x="30" y="80" width="260" height="400" rx="10" class="card-background" />
|
||||
<text x="160" y="115" class="title-text">定义 & 重要性</text>
|
||||
|
||||
<text x="45" y="150" class="body-text-bold">版本控制是什么?</text>
|
||||
<text x="45" y="170" class="body-text">
|
||||
<tspan x="45" dy="1.4em">是记录文件内容变化,</tspan>
|
||||
<tspan x="45" dy="1.4em">以便将来查阅特定版本</tspan>
|
||||
<tspan x="45" dy="1.4em">修订情况的系统。</tspan>
|
||||
</text>
|
||||
|
||||
<text x="45" y="260" class="body-text-bold">为何重要?</text>
|
||||
<text x="45" y="280" class="body-text">
|
||||
<tspan x="45" dy="1.4em">• 团队协作的基石</tspan>
|
||||
<tspan x="45" dy="1.4em">• 完整的历史与可追溯性</tspan>
|
||||
<tspan x="45" dy="1.4em">• 高效调试</tspan>
|
||||
<tspan x="45" dy="1.4em">• 安全网与可逆性</tspan>
|
||||
<tspan x="45" dy="1.4em">• DevOps加速器</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g id="evolution-timeline">
|
||||
<rect x="320" y="80" width="260" height="400" rx="10" class="card-background" />
|
||||
<text x="450" y="115" class="title-text">技术发展路线图</text>
|
||||
|
||||
<g transform="translate(340, 140)">
|
||||
<rect width="220" height="90" rx="8" class="main-box"/>
|
||||
<text x="15" y="25" class="body-text-bold">第一代: 本地VCS</text>
|
||||
<text x="15" y="45" class="small-text">
|
||||
<tspan x="15" dy="1.2em">如: RCS, SCCS</tspan>
|
||||
<tspan x="15" dy="1.2em">核心局限: 无法团队协作。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(340, 250)">
|
||||
<rect width="220" height="90" rx="8" class="main-box"/>
|
||||
<text x="15" y="25" class="body-text-bold">第二代: 集中式VCS (CVCS)</text>
|
||||
<text x="15" y="45" class="small-text">
|
||||
<tspan x="15" dy="1.2em">如: SVN, CVS</tspan>
|
||||
<tspan x="15" dy="1.2em">核心局限: 单点故障。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<g transform="translate(340, 360)">
|
||||
<rect width="220" height="90" rx="8" class="highlight-box"/>
|
||||
<text x="15" y="25" class="body-text-bold">第三代: 分布式VCS (DVCS)</text>
|
||||
<text x="15" y="45" class="small-text">
|
||||
<tspan x="15" dy="1.2em">如: Git, Mercurial</tspan>
|
||||
<tspan x="15" dy="1.2em">核心优势: 无单点故障,支持离线。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<g id="tools-focus">
|
||||
<rect x="610" y="80" width="260" height="400" rx="10" class="card-background" />
|
||||
<text x="740" y="115" class="title-text">主流工具:Git</text>
|
||||
|
||||
<g transform="translate(630, 140)">
|
||||
<text x="20" y="20" class="body-text">
|
||||
<tspan x="20" dy="1.4em">Git是第三代VCS的巅峰之作,由</tspan>
|
||||
<tspan x="20" dy="1.4em">Linus Torvalds于2005年为管理</tspan>
|
||||
<tspan x="20" dy="1.4em">Linux内核开发而创造。</tspan>
|
||||
</text>
|
||||
</g>
|
||||
|
||||
<text x="630" y="235" class="body-text-bold">Git的核心优势:</text>
|
||||
<text x="630" y="255" class="body-text">
|
||||
<tspan x="630" dy="1.4em">• 速度 (Speed)</tspan>
|
||||
<tspan x="630" dy="1.4em">• 强大的分支与合并</tspan>
|
||||
<tspan x="630" dy="1.4em">• 完全分布式</tspan>
|
||||
<tspan x="630" dy="1.4em">• 能高效处理大型项目</tspan>
|
||||
</text>
|
||||
|
||||
<circle cx="740" cy="390" r="40" class="highlight-box"/>
|
||||
<g transform="translate(740, 390)" class="highlight-icon-stroke" stroke-width="4" stroke-linecap="round">
|
||||
<path d="M -20 0 L 0 -20 L 20 0" fill="none" class="highlight-icon-stroke"/>
|
||||
<line x1="0" y1="-20" x2="0" y2="20" class="highlight-icon-stroke"/>
|
||||
<circle cx="-20" cy="0" r="6" class="highlight-icon-fill" stroke="none"/>
|
||||
<circle cx="0" cy="-20" r="6" class="highlight-icon-fill" stroke="none"/>
|
||||
<circle cx="20" cy="0" r="6" class="highlight-icon-fill" stroke="none"/>
|
||||
<circle cx="0" cy="20" r="6" class="highlight-icon-fill" stroke="none"/>
|
||||
</g>
|
||||
<text x="740" y="445" class="small-text" text-anchor="middle">强大的分支能力是其核心</text>
|
||||
</g>
|
||||
|
||||
<text x="450" y="520" class="license-text">
|
||||
本作品采用CC-BY-SA 4.0国际许可协议进行许可,© 2025 Gitconomy Research社区
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |