写点什么

GitHub 引起开源“平民化”变革

2013 年 3 月 31 日

GitHub 作为一个协作平台已经逐渐成为国内外开源社区的首选,最近,开源社区的元老、Getable 公司的首席技术官 Mikeal撰文分析了GitHub 带来的开源变革,强调了平民化的重要性,并指出这种价值观下诞生的软件通常都易于客户使用、不会过度“工程化”,并且支撑了较大的软件生态系统。

Mikeal 指出,在 GitHub 诞生之前,开源软件并不如大家预期的那样民主和平等:

事实并非如此,大多数开源软件都有一些享有特权的一少部分开发人员来创建和维护的,这些人只是和同一级别的少数的圈内人打交道。

在 GitHub 出现以前,我会想尽办法如何更好地管理和维护开源项目,因为这种开源项目的协作成本比较高。例如,当一个项目做的挺好,又发展到一个不小规模的社区时,我们就会发现,最好的办法就是继续维护臃肿的项目存在下去,而无法分拆成小范围的子项目。随之而来的问题是,项目变得越来越复杂,单个开发者很难对此作出想做的贡献。所以,就像我刚才说的,只有一小部分人来专门管理和维护开源项目,这也导致在项目的实际使用者和维护者之间存在的信息鸿沟。

但 GitHub 的“平民化”模式让这个问题得到了很好的解决,让更多的开发者获得了贡献的机会和可能。原因在于:

GitHub 的流程设计非常人性化。每个开发者都可以在 GitHub 上注册自己的账号,其中包括自己的所有资料。如果有人想修复某个项目,只需要执行 Fork 操作,即在自己的工作目录下拷贝一个原项目副本,然后修改代码即可。

这种工作流程非常强大:因为它鼓励了个体开发者去对一个他人已创建的项目做修改,而他们对该项目的所有权和控制权丝毫不亚于一个由自己首先创建的项目。在这种新颖的开源文化下,所有开发者都能拥有自己的地位和肯定。而 GitHub 实际上也已经成为互联网协作开发最大的服务商。

Mikeal 自己做了十多年的开源项目贡献者,但现在的开源文化跟当年的一个很大不同是——他不再是某个项目的“特定成员”——而仅仅是某个项目的使用者。使用者的一个很大特点就是,人人都可为项目贡献“一份”自己的力量。在 Mikeal 消费、使用的各种各样的小项目中,他会跟项目维护者有一些更具体的互动,而且保持一周几次。 但更多的一种趋势其实来自另一个方向:作为 Mikeal 自己的项目的发起者,现在他会收到很多陌生开发者发来的关于这些项目的代码变更。

Mikeal 认为 GitHub 的第一版在一件事情上做得不错:它让个人开发者发布代码变得比过去简单很多。这也使得许多很有影响力的项目,比如说 Ruby on Rails 的项目,可以很快地迁移到 GitHub 上来。但接下来发生的事情实际更有趣:人们开始在 GitHub 上发布除源代码以外的其他东西,几乎无所不包……不夸张地说,在 GitHub 上发布代码就变得跟发 Twitter 一样简单。通过降低用户的进入门槛并让用户在开源项目中更方便地展开协作、贡献力量,GitHub 将协作开发的范围扩大到普通开发者。

GitHub 模式下的开源软件具备哪些优点呢?Mikeal 认为主要有以下三点:

软件更加易用

长期以来,开源软件的一个主要问题是“见好就收”,相比许多同类商业软件来说,开源软件的文档说明、网站设计和通用性都比较糟糕。

但是现在,随着贡献门槛的降低,技术水平不高的用户可以在使用开源软件的同时改善这些问题(这就意味着那些原本诡异的报错消息现在变得越来越人性化,简单修改一两行 CSS 就会让网页在一些更老的浏览器和移动平台上可用)。在新的开源软件模式下,大家可以使用技术,而且不一定要成为专家。易用性永远是最重要的。

避免过度“工程化”

工程师们总是乐于接受挑战,要是能给他们更多的机会解决问题,他们就越有可能想到更完美的解决方案——假如这类解决方案的用户跟这些工程师一样,对技术有很好的掌握,又会像他们一样因为有更聪明的方法解决老问题而感到兴奋,那一切都没问题。

但问题在于,业余爱好者只喜欢那些在他们眼中理所当然、显而易见的解决方案,一旦某个问题已经得到解决,他们就很少会回过头去重新审视这个问题。因为业余爱好者只会利用那些最显而易见的解决方案做东西,这就迫使开发人员不得不去寻找简单而接地气的解决方案来解决难题。

支撑较大的软件生态系统

以 Mikeal 自己经常参与的 Node.js 项目为例,Node.js 定义了足够简单的模式,使得人人都可以编写独立的小型函数库,并按自己的意愿发布。在这个生态系统中,每个人都可以利用其中的价值,无需协作。这就跟一些大型的、拥有大量工具和功能、需要在特定商业软件环境下(比如说 Cocoa )使用的软件项目形成了鲜明对比。

在开源环境下,比如 GitHub 上的 Node.js 项目,我们就可以看到一些更低的 API 门槛,让开发者能够利用生态系统的其他价值。

Mikeal 最后总结说:

GitHub 让新一代的开发者更加协作、更具创造性和生产力。许多开发者可能会怀念过去那种正式的开源小组或者委员会,但是新的开源模式已经到来,新一代的开源参与者已经发展壮大,让我们拥抱这种全新的文化吧。

编后语:GitHub 在国内开源、开发社区的影响力也日趋强大,许多国内技术专家或者互联网公司在 GitHub 上都有自己的开源项目,包括代码或者著作。甚至从某种程度上讲,开源项目的参与度体现了一位开发人员的真正技术水平和协作能力。君不见,现在许多招聘条件上都写着“参与开源项目者优先”等类似的语句。这种现象的出现恰恰说明国内技术社区对开源项目和开源参与者的重视和肯定。开源将成为一种身份的象征,你 GitHub 了吗?

2013 年 3 月 31 日 21:352392
用户头像

发布了 501 篇内容, 共 214.3 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
发现更多内容

iOS - CollectionViewCell对应不同flow layout的实例

teoking

ios

大话设计模式 | 4. 装饰模式

Puran

C# 设计模式

帮助小团队实现大梦想 | Atlassian 云产品免费使用

Atlassian

使用 Generic Webhook Trigger 触发 Jenkins 多分支流水线自动化构建

jerry.mei

DevOps 持续集成 jenkins CI/CD 持续交付

[译] 图说前端-图解 React

梦见君笑

前端 前端框架 React 框架 前端训练

看动画学算法之:排序-冒泡排序

程序那些事

算法 动画 排序算法 轻松学

如何搭建Hive 环境

Rayjun

大数据 hive

ARST Week7

时之虫

ARTS 打卡计划

工程规约 - maven统一管理

Man

maven DevOps 工程规约

如何不写一行代码就做出一款游戏来

Lawliet

Vue 游戏开发 游戏制作 游戏开源 前端进阶训练营

阿里花500万年薪招天才黑客?官方回应:这种人得交给警察

程序员生活志

黑客 阿里

如何编写可怕的 Java 代码?

武培轩

Java 编程 程序员 后端

U盘+grub2安装centos8实战

昌安古城

创业使人成长系列 (3)- 如何取个好名字

石云升

创业 成长 取名

[译] 图说前端-图解 React Native

梦见君笑

前端 前端框架 前端进阶训练营 漫画编程

SpringBoot 入门:02 - 实现 MVC

封不羁

Java spring springboot

架构师训练营第六周学习总结

张明森

架构师训练营第六周作业

talen

[译] 图说前端-组件、Prop 和 State

梦见君笑

前端 前端框架 React 前端进阶训练营 漫画编程

ARTS 04 - 使用 Gitlab + Generic Webhook Trigger 触发 Jenkins 自动化构建

jerry.mei

算法 ARTS 打卡计划 CI/CD 函数式编程 Elixir

技术解读:单集群如何做到2万+规模

FI洞见

大数据 FusionInsight 华为云 大集群

修炼我们的智慧之眼

J.Smile

认知提升

如何在 Go 中写出高效的单元测试

_why先生

go testing slideshare

[译] 图解前端-深入理解 Props 和 State

梦见君笑

前端 前端框架 React 前端进阶训练营 漫画编程

list vs tupple

Leetao

Python 数据结构 Python基础知识

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

玛雅密码社区不忘初心 共筑未来通证新经济

Geek_116789

了不起的 Webpack Scope Hoisting 学习指南

pingan8787

Java 前端 webpack

AOP有几种实现方式?

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

如何使用预测性指标衡量敏捷转型的成功?

Atlassian

敏捷开发 开发工具 Atlassian Jira

要不要做一个gif动态图玩一下?

诸葛小猿

GIF ScreenToGif 动态图

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

GitHub引起开源“平民化”变革-InfoQ