《开源思索集》一聊聊Github的方法与哲学

简介:

本节书摘来异步社区《开源思索集》一书中的第1章,作者: 庄表伟 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

聊聊Github的方法与哲学

开源思索集
开源已经是一场革命,但是在开源的发展历史上,其实依然在不断地发展,甚至革命。简单地回顾一下:

最早的开源,仅仅是把自己的源代码开放出来,或者让别人用磁带复制带走,或者放在Server上供人下载。

再后来,关于这个项目的代码与功能,就浮现出来了两个问题:代码大家都能改,如何整理与汇总各自的工作成果?功能大家都有想法,最后应该做成什么样?

于是,源代码版本管理工具与各种在线讨论的方式,开始了一轮又一轮的演进。具体的项目就不再一一列举,但是其中最大的一次创新,就是从集中式版本管理走向了分布式版本管理。如果说Github有自己的哲学,它的来源,首先是分布式开发的理念。

分布式开发与分布式版本管理:没有一个核心的版本库,意味着没有任何一个人、任何一个组织是核心,每个人都可以在自己的机器上保留全部的版本树,并且不断发展自己的版本。一个人的代码,既可以贡献给A,也可以贡献给B,一切自由。

随着Linux开发的哲学,被逐步地传播开来,才有了Github的出现。最初的Github的最大的贡献,是将这种无中心,多分支的开发模式,Web化、常态化了。一键就能够fork自己的分支,然后可以跟原有的分支毫无关联,也可以非常方便地提交pull request,这就带来了更加频繁的分裂,**使得分裂常态化了。
**
原来的开源社区,我改了代码,希望能够贡献给社区,需要穿越种种障碍,如果社区不接受,最后我只能逼不得已,自己开一个新的分支,变成一个新的项目。在分裂是异常的状态下,分裂是罪恶的,是不应该的,是会带来阵痛的。当分裂变得常态化,pull request也变得常态化,分分合合,以每天N次的速度发生,恰恰因为如此,它不再是一种罪恶,而是一种健康的、向上的、以更快速度进步的模式。大家不再是在一个版本下,各自贡献,而是在各自的版本下,独立发展,想分就分,想合就合。

这背后折射出的哲学,可以这样总结:如果将分裂视为罪恶,而力图用各种方法去阻止,总会碰到各种各样的新的困难。如果反其道而行之,通过技术手段尽可能地方便分裂与合并,这反而是满足了真正的需求。(阻止分裂,其实是在压抑开发过程中存在的真实需求)所以,尽力满足真实的需求,才有可能获得成功。

随着这样的模式,变得常态化,然后Github才被称为一个社区,fork/pull request也从一种开发行为变成了一种社交行为。于是,程序员们发现,最好的交流,正是通过源代码来交流,一切的讲道理都不如用源代码来讲道理。这恰恰是程序员们最习惯,也最喜欢的一种交流方式。这当然也是因为满足了真实的需求。甚至我们可以说,Github创造了真实的需求

随后的事情是顺理成章的,程序员们泡在Github上,自然想在Github上做所有的事情,这不必再过多分析了。

相关文章
|
8天前
|
存储 JavaScript 网络架构
【开源图床】使用Typora+PicGo+Github+CDN搭建个人博客图床
【开源图床】使用Typora+PicGo+Github+CDN搭建个人博客图床
25 3
|
29天前
|
人工智能 文字识别 异构计算
关于github开源ocr项目的疑问
小白尝试Python OCR学习,遇到报错。尝试Paddle OCR部署失败,Tesseract OCR在Colab误操作后恢复失败。EasyOCR在Colab和阿里天池Notebook成功,但GPU资源不足。其他平台部署不顺,决定使用WebUI或阿里云轻应用。求教OCR项目部署到本地及简单OCR项目推荐。
26 2
|
30天前
|
Web App开发 前端开发 数据库
推荐GitHub上开源的一款独立开发者出海技术栈和工具合集
推荐GitHub上开源的一款独立开发者出海技术栈和工具合集
|
1月前
|
机器学习/深度学习 人工智能 API
『GitHub项目圈选06』推荐5款本周 超火 的开源AI项目
『GitHub项目圈选06』推荐5款本周 超火 的开源AI项目
|
1月前
|
自然语言处理 并行计算 PyTorch
GitHub 开源神器 Bark模型,让文本转语音更简单!
GitHub 开源神器 Bark模型,让文本转语音更简单!
|
1月前
|
数据采集 人工智能 Rust
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
『GitHub项目圈选周刊01』一款构建AI数字人项目开源了!自动实现音视频同步!
159 0
|
1月前
|
机器学习/深度学习 JSON 自然语言处理
新一代开源语音库CoQui TTS冲到了GitHub 20.5k Star
新一代开源语音库CoQui TTS冲到了GitHub 20.5k Star
|
1月前
|
数据采集 JSON 小程序
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
|
1月前
|
SQL JavaScript Java
StarCoder 2:GitHub Copilot本地开源LLM替代方案
GitHub CoPilot拥有超过130万付费用户,部署在5万多个组织中,是世界上部署最广泛的人工智能开发工具。使用LLM进行编程辅助工作不仅提高了生产力,而且正在永久性地改变数字原住民开发软件的方式,我也是它的付费用户之一。
126 0
|
1月前
|
Java jenkins 测试技术
GitHub排名第一《lntellij IDEA软件开发与应用实战手册》限时开源
IntelliJ IDEA简称IDEA,是Java语言的集成开发环境,在业界被公认为是最好的Java开发工具之一 讲解IntelliJ IDEA的诸多使用技巧,但事实上想要覆盖所有的操作要点是不可能的事情,因此笔者挑选了一些需要掌握及建议掌握的知识内容。
40 0