我们是新的GitHub一代?GitHub塑造了新式开源文化?嗯,看看十几年开源控、Getable CTO Mikeal Rogers 是怎么说的吧:

  GitHub本来想做一个开源软件协作平台,结果做着做着就成了一个兼容并包、不仅仅是照顾程序员的平台。现在,这个平台也成了各类艺术家、建筑生产商、各大公司、甚至各大城市使用的平台。

  例如,芝加哥市前阵子就宣布了一项公告:“假如本市出现新的自行车道、公路或建筑物,那么人人都可修改GitHub上的数据。”另外,有些人则将家装项目放到了GitHub上,有家律师事务所也在前几天宣布,他们会将早期创业公司的融资相关法律文件全放到上面——而在去年,另有一个神人甚至将整个德国的法律全搬到了GitHub上。当然了,GitHub现在依然是那些用Node.js做AR无人机、或者是用jQuery做网站的程序员光顾的地方。

去中心化的一场革命

  大部分人听到开源的第一反应是“民主、分散、和平等”,想到所有人一起做东西,做出来给所有人用。

  但实际情况并非如此。大部分的开源软件都是由那些享有一定特权的一小撮人创建并维护的——即专业的开发人员,而这些人又只会跟同个圈子、同个水平的一帮人互动(后者与前者尽管很像,但又足够不同到可持相异观点供双方争论)。

  在GitHub出来以前,我会花很多时间去思考、讨论如何最好地管理开源项目,因为这类项目的协同成本太高了。这个成本高到什么程度呢?当一个项目做得不错,又发展成一个规模不小的社区时,我们发现,最好的办法是让项目继续庞大臃肿下去,而不是拆分成规模更小的项目。但这里面就会有这样一个问题,项目变得越大越复杂,个体就越难对其作出贡献。所以就不得不有特定的一群会员,或者说所谓的“委员会成员”,被任命专门管理和生产项目,这也经常导致项目实际的消费人群和项目创作者之间的信息裂缝和信息断层。

  但GitHub的“去中心化”开源模式则让这种裂缝渐渐弥合,让开源不再聚焦“项目”本身,而是越发彰显个体特色。此话怎讲?

  GitHub上的整个工作流程设计相当个人化。每个GitHub用户都有一个自己的账号,而他们发布的所有资料都会隶属于这个层级以下。假如某些人需要对某个项目做出修复,他们只要“fork”(将项目分叉),即在自己的名下拷贝一个原项目的副本,进行相应的加工即可。

  这种工作流程是非常强大的:因为它鼓励了个体用户去对一个他人已创建的项目做修修补补,而他们对该项目的所有权和控制权丝毫不亚于一个由自己最先创建的项目。在这种新式的开源文化下,所有用户都能拥有自己的身份和定位。而GitHub实际上也已经成为互联网上协作式内容生产(peer-based production)最大的身份提供商,不仅仅是在代码方面。

  我自己就做了十多年的开源项目贡献者,但现在的开源文化跟当年的一个很大不同是——我不再是某个项目的“会员”——而仅仅是某个项目的使用者。使用者的一个很大特点就是,人人都可为项目贡献“一点点”自己的力量。在我消费、使用的各种各样的小项目中,我就会跟项目维护者有一些更小层面的互动,而且保持一周几次。

  但更大的一种趋势其实来自另一个方向:作为我自己的项目的发起者,现在我会收到有很多闻所未闻的人发来的关于这些项目的小代码。

民主升起在“去中心化”

  GitHub的第一版在一件事情上做得很好:他们让个体发布代码——而非雪藏代码——变得比过去简单很多。这也使得很多很有影响力的项目,比如说Ruby on Rails的项目,可以很快地迁移到GitHub上来。

  但接下来发生的事情实际更有趣:人们开始在GitHub上发布除代码以外的其他东西,几乎无所不包...不夸张地说,在GitHub上推代码就变得跟发微博一样简单。通过降低用户的进入成本、并让用户在开源项目中更方便地展开协作、贡献力量,GitHub将“协作式生产”(peer production)的范围扩大到普通用户。

  所以,GitHub式的开源文化降低了所有人的“创造门槛”——今天,对于那些富有创造力但又不具备深度技术知识的人来说,他们可以使用各类简单又易于理解的软件实现创意。而在过去,他们必须、而且只能具备深度的技术知识以参与到大型开源项目中。

  而平台上发起者、贡献者和消费者这三类身份的日益弥合也使得那些更轻巧、更易懂的项目逐渐获得更高的关注度——也催生了一批长尾的内容贡献。举个例子,在2012年9月全月,超过半数的GitHub活跃用户都发布了5次以内的更改,而有22%(约4.4万)用户的更改次数只有一次(明显的长尾趋势)。

这种开源软件“业余化、平民化”的趋势也有明显的好处,如下:

  1.让软件变得更易用

  不能做到“傻瓜易用”(fit and finish)一直是开源软件的一个问题。这类软件的说明文档和网页设计通常都是乱糟糟的,产品的可用性也很差——尤其是跟很多专有的同类产品相比。

  但现在,因为贡献门槛的逐步降低,那些对技术不那么在行的用户就可将上述的几个方面逐渐优化,以方便自己对这类软件的使用。而这就意味着那些原本诡异的报错消息现在变得越来越像人话,简单修改一两行CSS就会让网页在一些更老的浏览器和手机上渲染。

  所以说,在新的开源文化下,人们希望自己不用成为技术专家就可方便地使用技术,“易用性”获得了全所未有的关注和重视。

  2.规避过度“工程化”

  工程师们往往乐于接受挑战,要是能给他们更多的机会解决问题,他们就越有可能想到聪明的解决方案——假如这类解决方案的终端消费者跟这些工程师一样,对技术有很好的理解,又会像他们一样因为有更聪明的方法解决老问题而激动不已,那一切都没问题。

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

  3.支持一个更大的生态系统

  以我自己频繁使用的Node.js为例,这种编程语言定义了足够简单的语法结构(patterns),使得人人都可以编写独立的小型函数库,并按自己的意愿发布。在这个生态系统中,每个人都可以独立享受当中的价值,无需协作。这就跟一些大型、垂直、拥有大量工具和功能、需要在特定环境下(比如说Cocoa和iOS)使用的栈(比如像ember, Dojo,YUI这样的集成的插件系统)形成了鲜明对比。

  但在开源环境下,如之前提到的Node.js,我们就可以看到一些更小的 API空间轻松使用该生态系统中的其他资源,避开协调(比如用jQuery或node的标准回调模式来回调API)。开发者与开发者、库与库之间的协调越少,就越利于我们创造价值。

  总结下来就是,GitHub让新一代的年轻人更方便地协作、创造和生产。很多开发者可能会因为过去那种正规开源文化(如“委员会圈子”、需要纠结使用哪种授权模式)的消弭而大唱挽歌——但开源的未来已经掌握在那群无所顾忌、大步向前的新一代人手中。

  从这个角度来说,GitHub不仅仅是一个工具,它在创造一种全新的文化。

GitHub一代:我们都是开源控的更多相关文章

  1. Win10 UWP开发系列——开源控件库:UWPCommunityToolkit

    在开发应用的过程中,不可避免的会使用第三方类库.之前用过一个WinRTXamlToolkit.UWP,现在微软官方发布了一个新的开源控件库—— UWPCommunityToolkit 项目代码托管在G ...

  2. 开源整理:Android App新手指引开源控件

    开源整理:Android App新手指引开源控件 一个App第一次与用户接触或者发生大版本更新时,常常会用户进行新手引导,而一个好的新手指引,往往能够方便新用户快速了解操作你的应用功能.新手指引的重要 ...

  3. Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目

    Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...

  4. 2018上半年GitHub上最热门的开源项目

    关注GitHub的人都知道,这个平台上面有太多优秀的值得学习的开源项目了,这里总结了2018上半年GitHub上最热门的开源项目. 1: tensorflow https://github.com/t ...

  5. .Net 开源控件 NPlot使用小结

    NPlot是一款非常难得的.Net平台下的图表控件,能做各种曲线图,柱状图,饼图,散点图,股票图等,而且它免费又开源,使用起来也非常符合程序员的习惯.授权方式为BSD许可证. 下载链接: http:/ ...

  6. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  7. [原创][开源]SunnyUI.Net, C# .Net WinForm开源控件库、工具类库、扩展类库、多页面开发框架

    SunnyUI.Net, 基于 C# .Net WinForm 开源控件库.工具类库.扩展类库.多页面开发框架 Blog: https://www.cnblogs.com/yhuse Gitee: h ...

  8. Android一个炫酷的树状图组织架构图开源控件实现过程

    Android一个炫酷的树状图组织架构图开源控件 文章目录 [1 简介] [2 效果展示] [3 使用步骤] [4 实现基本布局流程] [5 实现自由放缩及拖动] [6 实现添加删除及节点动画] [7 ...

  9. GitHub上不错的Android开源项目(三)

    收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...

随机推荐

  1. Android 高仿微信支付密码输入控件

    像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现这个功能. 老样子,投篮需要找准角度,变成需要理清思路.对于这个"小而美"的控件,我们思 ...

  2. 负载均衡算法(四)IP Hash负载均衡算法

    /// <summary> /// IP Hash负载均衡算法 /// </summary> public static class IpHash { static Dicti ...

  3. 【TypeScript】如何在TypeScript中使用async/await,让你的代码更像C#。

    [TypeScript]如何在TypeScript中使用async/await,让你的代码更像C#. async/await 提到这个东西,大家应该都很熟悉.最出名的可能就是C#中的,但也有其它语言也 ...

  4. node(redis)

    给出node下redis操作的简单例子: var redis = require("redis"), client = redis.createClient(6379,'127.0 ...

  5. UWP?UWP! - Build 2015有些啥?(2)

    UWP?UWP! - Build 2015有些啥? Build 2015圆满落幕了,不知大家有多少人刷夜看了直播呢?不管怎么说,想必各位都很好奇在这场微软开发者盛宴上,Microsoft又发布了什么令 ...

  6. AMD加载器实现笔记(三)

    上一篇文章中我们为config添加了baseUrl和packages的支持,那么这篇文章中将会看到对shim与paths的支持. 要添加shim与paths,第一要务当然是了解他们的语义与用法.先来看 ...

  7. Windows 安装 MongoDB 服务

    第一步 以管理员权限打开命令提示符 按Windows+R键(Ctrl和Alt中间的那个,有微软Logo的键),输入cmd打开命令提示符 第二步 创建数据库目录. 使用mkdir命令,创建数据库的目录和 ...

  8. 换个角度理解云计算之MapReduce(二)

    接上篇 3.Combiner操作 前面讲完Map操作,总结一下就是:一个大文件,分成split1~5,对应于Map1~5,每一个Map处理一个split,每一个split的每一行,会用每一个Map的m ...

  9. STSdb,最强纯C#开源NoSQL和虚拟文件系统 4.0 RC2 支持C/S架构

    STSdb是什么 再来说明一下STSdb是什么:STSdb是C#写的开源嵌入式数据库和虚拟文件系统,支持实时索引,性能是同类产品的几倍到几十倍,访问官方网站. 温故知新 之前发了文章<STSdb ...

  10. node.js调试

    用了几天node.js感觉很新奇,但是调试问题实在是愁煞人,开始的时候懒的学习调试方法,看看异常内容就可以了,但随着代码复杂程度的上升,并不是所有错误都是语法错误了,不调试搞不定了,只好搜搜资料,学习 ...