多学科视角下探索开源Github、Git初步学习
Think
1.Github 作为现今最主流的代码托管平台、协作平台甚至是“社交平台”,本身是闭源的。一方面,它是和大多数开发者连接最紧密的开源阵地,另一方面,拥有传统“黑客精神”的人认为将用户身份绑定这样一个闭源平台上恰恰与开源背道而驰。请从早期自由软件运动与现代开源模式变迁的视角,谈一谈你对上述两种认知的理解。
2.在拓展阅读《开放式协作》第二章中国根据用户增长和贡献者增长将所有项目分为了四种类型,它们分别具有怎样的特征?请在每一个类型下推荐一两个你了解或接触过的开源项目。
Note
Github是一家为开源项目提供托管服务的公司。
少部分的人承担了大部分的代码工作,不能依靠传统的方法,即“更多的参与”,这会让维护者不知措。
与传统的大型整体软件项目和围绕着它们所兴起的繁荣社区相反,npm软件包的设计是小型且模块化的,这导致每个项目需要更少的维护者,而且维护者与它们编写的代码形成暂时的关系。当今,维护者、贡献者和用户的关系将更轻松,更易处理。
Git
是一个版本控制系统,可用于监控一个项目在不同时期的状态。下面来看看基本的使用。
Git Bash 是一个终端模拟器,允许用户在Windows上像Linux、Mac一样与 Git 进行交互。
打开下载好的 git bash.
查看版本
git --version
创建一个文件夹作为实验环境
cd d:
mkdir gitPractice
cd gitPractice
pwd
初始化,使 git 开始跟踪
git init
检查状态
git status
写入第一个数据
echo "hack my herat" > file.txt
ls
explorer .
打开当前文件夹
查看 file.txt 文件,确实写入了内容
关闭文件,用 Git 将其保存为一个特定版本
git add file.txt
git commit -m "Version1"
git status
现在,追加一些内容
echo "I like u." >> file.txt
git status
注意到文件已经改变了
提交这个版本
git add file.txt
git commit -m "Version2"
git status
git add file.txt
这个命令将文件 file.txt 的更改暂存到下一次提交中。它告诉 Git 你希望将 file.txt 的更改包含到下一个快照(提交)中。
git commit -m “Version2”
这个命令会创建一个新的提交,包含之前暂存的更改。-m 参数允许你直接在命令行中提供提交信息。在这里,提交信息是 “Version2”。
如果你想暂存工作目录中的所有更改,可以使用 git add . 而不是指定单个文件。
在提交之前,如果你想查看工作目录和暂存区的状态,可以运行 git status。
clear
清屏
如果想查看文件版本的变动过程
可以git log
当生成一个 commit 时,Git 会分配唯一的哈希值。
现在,展示生成的低于个 commit.
git show c71b82537a342be63c0c7f303b96b9b641a496bc
恢复到某版本
git log
git reset --hard <commit-hash>
例如:'git reset -git reset --hard a1b2c3d
这会直接将工作目录和暂存区恢复到指定提交的状态。
更多内容有待补充。
Github
这里不多说了,会基本使用就行
github文档
开源项目结构
Github仓库元素
- Code:仓库的代码文件和目录,可以查看、编辑、下载或上传代码。
- Issues:仓库的问题和反馈,可以创建、跟踪或关闭问题。
- Pull requests:仓库的合并请求,可以提交、审查或合并代码。
- Discussion:仓库讨论区,可以创建、运行或管理任务。
- Actions:仓库的自动化工作流程,可以创建或运行任务。
- Projects:仓库项目管理工具,可以组织或监控进度。
- Security:仓库的安全设置和报告,可以检测修复漏洞。
- Insights:仓库数据分析和可视化,可以查看比较性能。
Result
一、
早期自由软件运动与现代开源模式的变迁视角
1. 早期自由软件运动的核心理念
自由软件运动由理查德·斯托曼(Richard Stallman)于1983年发起,其核心理念是保障用户的四大自由:使用自由、研究自由、分发自由和改进自由。斯托曼强调,软件的自由是一种道德权利,而不仅仅是技术选择。自由软件基金会(FSF)通过GNU项目和GPL许可证,推动了这一理念的实践,旨在创建一个完全自由的操作系统。
2. 现代开源模式的兴起
开源软件运动兴起于1998年,其目标是通过公开源代码来提高软件的质量和可靠性,而非仅仅强调道德自由。开源倡议(OSI)定义了开源软件的十条标准,强调协作、透明和技术优势。开源模式的成功在于其与商业模式的结合,例如Linux、Apache等项目的广泛应用。
3. GitHub的闭源属性与开源社区的矛盾
GitHub作为一个闭源平台,却成为了全球最大的开源代码托管和协作平台。这种矛盾可以从以下两个视角理解:
- 开源阵地:GitHub通过提供强大的版本控制、协作工具和社区支持,极大地降低了开源项目的参与门槛,吸引了全球开发者共同贡献。
- 与“黑客精神”的冲突:传统“黑客精神”强调自由、开放和去中心化,而GitHub的闭源属性及其对用户身份的绑定,被认为与这种精神背道而驰。这种集中化的平台可能限制用户的自由,并带来潜在的商业控制风险。
4. 两种认知的辩证分析
- 支持GitHub作为开源阵地的观点:
- GitHub通过技术工具和社区生态,极大地推动了开源软件的普及和创新。
- 它为开发者提供了一个全球化的协作平台,使得开源项目能够更高效地管理和分发。
- 批评GitHub闭源属性的观点:
- GitHub的闭源属性与其托管的开源项目形成了鲜明对比,可能削弱开源运动的道德基础。
- 集中化的平台可能导致权力过度集中,违背了开源运动的去中心化精神。
5. 未来趋势与平衡点
- 混合模式的探索:未来可能会出现更多混合模式,例如部分闭源、部分开源的项目,以平衡商业利益与社区贡献。
- 去中心化平台的兴起:随着区块链等技术的发展,去中心化的代码托管平台可能成为新的选择,更好地契合“黑客精神”。
结论
GitHub作为闭源平台与开源社区的紧密联系,反映了现代开源模式的复杂性和多样性。尽管其闭源属性与传统“黑客精神”存在冲突,但其对开源生态的推动作用不可忽视。未来,如何在商业利益与开源理念之间找到平衡点,将是开源运动持续发展的关键。
二、
在《开放式协作》第二章中,根据用户增长和贡献者增长,开源项目被分为四种类型。每种类型具有不同的特征,以下是详细分析及对应的开源项目推荐:
1. 高用户增长、高贡献者增长
特征:
- 这类项目通常具有广泛的用户基础和活跃的贡献者社区。
- 项目本身具有较高的技术价值或社会影响力,能够吸引大量用户和开发者参与。
- 社区治理结构清晰,贡献流程透明,能够有效管理大规模的协作。
- 项目通常有明确的目标和路线图,能够持续吸引新用户和贡献者。
推荐项目:
- Linux Kernel:作为全球最知名的开源项目之一,Linux Kernel 拥有庞大的用户群体和活跃的开发者社区。其开放的协作模式和透明的治理结构吸引了全球开发者的参与。
- Kubernetes:云原生领域的核心项目,Kubernetes 凭借其强大的功能和广泛的应用场景,吸引了大量企业和开发者参与贡献。
2. 高用户增长、低贡献者增长
特征:
- 这类项目用户数量庞大,但贡献者数量相对较少。
- 项目可能具有较高的技术门槛,或者贡献流程复杂,导致普通用户难以参与开发。
- 项目通常由核心团队主导,贡献者集中在少数核心开发者手中。
- 用户更多是“消费者”而非“生产者”,依赖核心团队提供更新和维护。
推荐项目:
- VS Code:作为一款流行的代码编辑器,VS Code 拥有大量用户,但其核心开发主要由微软团队主导,外部贡献者相对较少。
- React:Facebook 开发的前端框架,React 拥有庞大的用户群体,但核心开发主要由 Facebook 团队控制,外部贡献者的参与度相对有限。
3. 低用户增长、高贡献者增长
特征:
- 这类项目用户数量较少,但贡献者数量较多。
- 项目可能专注于特定领域或技术,用户群体较为小众,但开发者社区活跃。
- 项目通常具有较高的技术深度或创新性,能够吸引技术爱好者参与贡献。
- 贡献者可能是项目的核心用户,他们既是开发者也是使用者。
推荐项目:
- Rust:Rust 是一门系统编程语言,虽然用户群体相对较小,但其开发者社区非常活跃,贡献者数量众多。
- Homebrew:macOS 的包管理工具,Homebrew 的用户群体相对集中,但其贡献者社区非常活跃,持续为项目提供更新和改进。
4. 低用户增长、低贡献者增长
特征:
- 这类项目用户和贡献者数量都较少。
- 项目可能处于早期阶段,或者专注于非常小众的领域。
- 项目可能缺乏明确的治理结构或贡献流程,导致难以吸引用户和开发者。
- 项目的发展依赖于少数核心开发者的持续投入。
推荐项目:
- Trac:一款轻量级的项目管理工具,Trac 的用户和贡献者数量相对较少,但其功能简洁实用,适合小型团队使用。
- DooTask:一款轻量级的任务管理工具,DooTask 的用户群体较小,但其开源特性使其在小团队中具有一定的影响力。
总结
这四种类型反映了开源项目在不同发展阶段和用户-贡献者关系中的多样性。无论是高用户增长还是高贡献者增长,开源项目的成功都离不开社区的活跃和治理的透明性。对于希望参与开源的用户和开发者来说,选择适合自己兴趣和能力的项目类型至关重要。