跳至正文

什麼是開源? 🌟

GitHub、Linux、React... 你經常聽到「開源」這個詞與這些詞一起出現。什麼是開源,為什麼它很重要?讓我們用簡單的方式為初學者解釋!

用日常生活比喻開源

讓我們把開源比作食譜分享

食譜的故事 👨‍🍳

保密食譜(專有軟體):

著名餐廳的秘密食譜
→ 沒人能看到 🔒
→ 只能在那家餐廳吃到
→ 無法修改/改進

開放食譜(開源):

公開的食譜
→ 任何人都能看 📖
→ 可以在家製作
→ 可以根據自己的口味修改
→ 可以分享改進的食譜

開源也是一樣的!

公開原始碼
→ 任何人都可以查看、使用和修改
→ 共同發展

開源的定義

開源(Open Source)

  • 原始碼公開的軟體
  • 任何人都可以自由地:
    • 查看(Read) 👀
    • 使用(Use) 💻
    • 修改(Modify) ✏️
    • 分發(Distribute) 📤

開源 vs 專有軟體

專有軟體(Proprietary Software)

例子:Windows、Photoshop、MS Office

特點:
❌ 原始碼不公開
❌ 無法修改
❌ 有授權費用
✅ 商業支援
✅ 統一的體驗

開源軟體

例子:Linux、Firefox、VS Code

特點:
✅ 原始碼公開
✅ 可以自由修改
✅ 大多免費
✅ 社群支援
✅ 透明度

為什麼要建立開源?

1. 協作與創新 🤝

全球開發者共同開發
→ 更快的發展
→ 多樣的想法

2. 品質提升 🔍

許多人審查程式碼
→ 快速發現錯誤
→ 發現安全漏洞

3. 學習與成長 📚

可以看到實際程式碼並學習
→ 初學者學習資料
→ 累積經驗

4. 降低成本 💰

可以免費使用
→ 個人/企業降低成本

5. 自由與獨立性 🕊️

不依賴於單一公司
→ 保證持續發展

著名的開源專案

作業系統

Linux 🐧
- 伺服器和Android的基礎
- 全球96%的伺服器使用

Android 🤖
- 智慧型手機作業系統
- 基於Linux

網頁瀏覽器

Firefox 🦊
Chromium(Chrome的基礎)

開發工具

VS Code 💻
- 微軟建立的程式碼編輯器
- 最受歡迎的編輯器

Git 📦
- 版本管理工具
- 所有開發者都在使用

程式語言/框架

Python 🐍
Node.js
React ⚛️
Vue.js
TensorFlow 🤖

資料庫

PostgreSQL 🐘
MySQL
MongoDB

開源授權

授權 = 使用規則

1. MIT授權(最自由) ✨

- 可商業使用 ✅
- 可修改 ✅
- 可分發 ✅
- 可轉換為專有軟體 ✅
- 條件:僅需標註授權

例子:jQuery、React、Node.js

2. Apache 2.0授權

- 與MIT類似,但
- 明確授予專利權
- 條件:授權 + 標註修改內容

例子:Android、TensorFlow

3. GPL(GNU通用公共授權條款) 🔄

- 修改的程式碼也必須公開
- "Copyleft"(著作權所有)
- 不能轉換為專有軟體

例子:Linux、WordPress

4. BSD授權

- 與MIT一樣自由
- 條件最小化

例子:FreeBSD

授權比較

授權商業使用修改轉換為專有軟體程式碼公開義務
MIT
Apache 2.0
GPL✅ 必須
BSD

GitHub與開源

什麼是GitHub? 🐙

開源之家
- 程式碼託管
- 協作平台
- 全球最大的開源社群

GitHub術語

Repository(儲存庫):

專案儲存空間
例子:facebook/react

Star ⭐:

類似於「按讚」
受歡迎的專案 = 星星多

Fork 🍴:

複製專案
→ 帶到自己的帳戶
→ 可以修改

Pull Request(PR) 📬:

請求將自己修改的程式碼
合併到原始專案

Issue 🐛:

錯誤報告
功能建議
問題

為開源做貢獻

第1步:開始

1. 建立GitHub帳戶
2. 找到感興趣的專案
3. 給專案點Star ⭐
4. 閱讀README

第2步:從小貢獻開始

初學者也能做的貢獻:

- 修正拼寫錯誤
- 翻譯文件
- 改進文件
- 錯誤報告
- 回答問題

第3步:程式碼貢獻

1. 尋找Issue("good first issue"標籤)
2. Fork專案
3. 修改程式碼
4. 建立Pull Request
5. 接受審查並修改
6. 合併! 🎉

使用開源

npm(Node.js)

# 安裝React
npm install react

# 安裝Express
npm install express

pip(Python)

# 安裝Django
pip install django

# 安裝Pandas
pip install pandas

檢查授權

1. 造訪GitHub儲存庫
2. 檢查LICENSE檔案
3. 在README中檢查授權徽章

開源的優點

對個人

免費使用

免費使用高品質工具

學習機會

看實際程式碼學習

社群

與全球開發者交流

作品集

開源貢獻 = 證明實力

對企業

降低成本

節省授權費用

快速開發

使用經過驗證的函式庫

招募人才

開源貢獻者 = 有實力的開發者

創新

社群的多樣想法

開源的缺點

❌ 支援不足

免費 = 沒有官方支援
依賴社群

❌ 安全風險

任何人都可以看程式碼
→ 容易發現漏洞
(但會快速修復)

❌ 維護

專案可能中止
→ 選擇受歡迎的專案很重要

❌ 學習曲線

文件可能不足
對初學者可能困難

開源成功案例

Linux 🐧

1991年開始
→ 現在全球大多數伺服器使用
→ 數千名貢獻者

WordPress 📝

43%的網站使用
從個人到大企業

React ⚛️

Facebook開源發布
→ 最受歡迎的前端函式庫

VS Code 💻

微軟的開源專案
→ 最受歡迎的程式碼編輯器

開源文化

行為準則(Code of Conduct)

尊重 🤝
友善對待 💕
建設性回饋 ✅
禁止歧視 🚫

Issue編寫禮儀

1. 先搜尋(防止重複)
2. 清晰的標題
3. 說明重現方法
4. 環境資訊(作業系統、版本等)

Pull Request禮儀

1. 分成小單位
2. 寫清楚的說明
3. 包含測試
4. 尊重審查者

常見問題(FAQ)

Q1:開源都是免費的嗎?

A:大多免費,但並非總是如此。

  • 原始碼是公開的
  • 但商業支援可能收費
  • 例如Red Hat Linux

Q2:可以用開源賺錢嗎?

A:可以,有幾種方法!

  • 進階功能收費
  • 技術支援/諮詢
  • 雲端服務
  • 贊助(GitHub Sponsors、Patreon)

Q3:初學者也能為開源做貢獻嗎?

A:當然可以!

  • 修正拼寫錯誤
  • 翻譯文件
  • 錯誤報告
  • 尋找"good first issue"

Q4:可以商業使用開源嗎?

A:取決於授權。

  • MIT、Apache:可以自由使用 ✅
  • GPL:修改的程式碼也要公開 ⚠️
  • 總是要檢查授權!

Q5:開源安全嗎?

A:通常是安全的!

  • 許多人審查程式碼
  • 快速修復錯誤
  • 透明度高

開始使用開源

推薦初學者專案

文件貢獻:

- freeCodeCamp
- MDN Web Docs

對初學者友善:

- first-contributions(練習用)
- awesome lists(新增清單)

工具:

- VS Code
- React

有用的網站

GitHub Explore:github.com/explore
Good First Issue:goodfirstissue.dev
Up For Grabs:up-for-grabs.net

下一步 🚀

理解了開源之後:

  1. Git指令助手 - 學習Git指令
  2. 什麼是API? - 理解開源API
  3. ✅ 建立GitHub帳戶並做出第一次貢獻!

總結

開源是共同建立的軟體! 🌟

要記住的要點:

  • 開源 = 公開的程式碼
  • 任何人都可以查看、使用和修改
  • 必須檢查授權
  • 初學者也可以貢獻
  • 協作與學習的場所

多虧了開源,我們可以免費使用優秀的工具。你也加入開源社群吧! 🚀

從小貢獻開始,不知不覺間你就會成為開源貢獻者!