我们是新的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. js for 循环中的 变量问题。

    今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点) ...

  2. java提高篇(十五)-----关键字final

    在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是“这部分是无法修改的”.不想被改变的原因有两个:效率.设计.使用到fi ...

  3. JavaScript思维导图—正则表达式

    JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/

  4. [ACM_几何] F. 3D Triangles (三维三角行相交)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/A 题目大意:给出三维空间两个三角形三个顶点,判断二者是否有公共 ...

  5. Java枚举类型getClass和getDeclaringClass区别(未完待续)

    Java中的枚举类型有getClass()和getDeclaringClass()两个方法,在通常情况下这两个方法返回的类型一样,在某些场景下会有不同的表现 参照 http://stackoverfl ...

  6. 30分钟带你快速入门MySQL教程

    这是一篇真正适合初学者的MySQL数据库入门文章,哪怕你从来没有接触过数据库,或者说你从来没有听说过有数据库这东西,请一定要相信我,我当时就是这么过来的. 如果你刚开始接触MySQL数据库,或者你需要 ...

  7. redis常用命令小结

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/107.html?1455867352 1.redis-benchmarkr ...

  8. MVVM架构~knockoutjs系列之扩展ajax验证~验证输入数据是否与后台数据相等

    返回目录 在看这篇文章之前,你有必要先看我之前的文章,之前文章是将一个方法以参数的形式传给KO,然后返回一个真假值,去做验证,这类似于面向对象语言里的委托,在JS里我们叫它回调方法,本篇文章与前一文章 ...

  9. svn:previous operation has not finished

    svn提交遇到一个恶心的问题,cleanup也不行. 错误如下: Previous operation has not finished; run 'cleanup' if it was interr ...

  10. fir.im Weekly - 可能是 iOS 审核最全面的解决方案

    ipv6 被拒绝,后台定位被拒绝--让很多国内 iOS 开发者心力交瘁.这是一份关于 iOS 审核的终极免费方案,作者iOSWang对最近iOS 审核被拒问题给出了比较全面的方案:Solve-App- ...