阅读更多

8顶
0踩

开源软件

转载新闻 Github 引领的开源革命

2013-03-25 14:10 by 副主编 WnouM 评论(6) 有9662人浏览
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 式的开源文化降低了所有人的“创造门槛”——今天,对于那些富有创造力但又不具备深度技术知识的人来说,他们可以使用各类简单又易于理解的软件实现创意。而在过去,他们必须、而且只能具备深度的技术知识以参与到大型开源项目中。

而平台上发起者、贡献者和消费者这三类身份的日益弥合也使得那些更轻巧、更易懂的项目逐渐获得更高的关注度——也催生了一批长尾的内容贡献。

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

1.  让软件变得更易用

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

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

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



2.  规避过度“工程化”

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

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

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

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

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

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

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

Via Wired
  • 大小: 24.7 KB
  • 大小: 14.6 KB
来自: 36氪
8
0
评论 共 6 条 请登录后发表评论
6 楼 wushexu 2013-03-28 11:32
hbbbs 写道
如果只是说给大家每人一个画板让人可以随意画,就是 开源软件业余化、平民化 的话,那今后的开源软件大家都不一定敢用了。

这样的一个开源软件 用之前要去做代码检查,检查是否有隐藏的BUG,各种压力测试,那开源软件谁还敢用呢。


说开源业余化、平民化我也是不认同的。优秀的作品从来都是精英做出来的,优秀的软件也是。
我认同github是一种文化,这种文化有很大的积极意义。它让人们更容易的了解开源,参与开源(贡献大小则与个人能力有关),使优秀的作品能有更大的影响,更高的声誉(fork数量就是一个标志)。

开源就是协作,互相学习。一个人不了解别人的想法,不看别人的代码,不管fork出来多少哦,是不会真正对开源有什么贡献的。
如果你有好的想法,想贡献到主干,应该事先和作者沟通,看有没有别人或者作者有同样的想法,是不是别人已经在实施了。
5 楼 hbbbs 2013-03-28 08:50
如果只是说给大家每人一个画板让人可以随意画,就是 开源软件业余化、平民化 的话,那今后的开源软件大家都不一定敢用了。

这样的一个开源软件 用之前要去做代码检查,检查是否有隐藏的BUG,各种压力测试,那开源软件谁还敢用呢。
4 楼 hbbbs 2013-03-28 08:45
wushexu 写道
github是每个人更容易的参与开源。每个人都可以fork,你fork出来,做得好了,合并到主干。不合并也没关系(如有些理念不同),只要你够好,人们可能直
欢迎提意见,欢迎fork。


  感觉这样会有两种结果:
1、你fork出来,别人不敢用也不敢合并。除非有很好的沟通,作者的思想和理念大家都非常清楚,开发出来的才会有合并的可能。

2、变成Android的版本一样,失去控制。

这篇文章的作者的真正意思到底是怎样的?
如果只是说给大家每人一个画板让人可以随意画,“开源软件业余化、平民化”这个评价言过其实了。
3 楼 wushexu 2013-03-27 14:06
github是每个人更容易的参与开源。每个人都可以fork,你fork出来,做得好了,合并到主干。不合并也没关系(如有些理念不同),只要你够好,人们可能直接找你而不找主干了。


我刚开源了一个rails项目:项目管理平台。我自己开发的,已在公司使用一年多。

https://github.com/wushexu/rpmp
欢迎提意见,欢迎fork。
2 楼 hbbbs 2013-03-26 19:11
不是特别明白说的意思。。到底是说开源使门槛降低了,还是GITHUB使门槛降低了。。

“只要“fork”(将项目分叉)”,fork后自己一个人用吗,将来合并到主干吗?
1 楼 1927105 2013-03-25 16:13
不能做到“傻瓜易用”(fit and finish)一直是开源软件的一个问题。

Bigo

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 【扩展篇】Eclipse插件的8种安装方式

    本文介绍Eclipse插件开发中,插件的八种安装方式,属个人总结,如有错误欢迎指正交流。

  • gnu-arm-eclipse插件依赖资料-01

    gnu-arm-eclipse插件依赖资料-01,包含st公司主要芯片的信息,压缩包分为四个,本资源为第一个。博客windows+eclipse+gnuarmeclise+jlink平台搭建一文的配套资源,不使用gnuarmeclise插件的朋友勿下。

  • 【Eclipse插件开发】关于插件依赖问题的解决办法和技巧

    eclipse插件开发 插件依赖 plugin dependencies

  • eclipse添加依赖插件

    展开META-INF文件夹,双击MANIFEST.MF文件 在Dependencies中添加Required Plug-ins,一般需要添加的如下: com.teamcenter.rac.aifrcp com.teamcenter.rac.common com.teamcenter.rac.external ...

  • Eclipse 查看 pom.xml 中依赖传递关系

    maven解析pom.xml可以实现依赖传递,即: 项目中声明了pom.xml,该pom.xml中依赖A.jar,B.jar,C.jar 等等。。。 然后会自动将所有依赖jar包中的pom.xml依赖的jar自动加入依赖,这是管理最为方便的一个特点。 但是...

  • gnu-arm-eclipse插件依赖资料-04

    gnu-arm-eclipse插件依赖资料-04,包含st公司主要芯片的信息,压缩包分为四个,本资源为第一个。博客windows+eclipse+gnuarmeclise+jlink平台搭建一文的配套资源,不使用gnuarmeclise插件的朋友勿下。

  • gnu-arm-eclipse插件依赖资料-03

    gnu-arm-eclipse插件依赖资料-03,包含st公司主要芯片的信息,压缩包分为四个,本资源为第一个。博客windows+eclipse+gnuarmeclise+jlink平台搭建一文的配套资源,不使用gnuarmeclise插件的朋友勿下。

  • gnu-arm-eclipse插件依赖资料-02

    gnu-arm-eclipse插件依赖资料-02,包含st公司主要芯片的信息,压缩包分为四个,本资源为第一个。博客windows+eclipse+gnuarmeclise+jlink平台搭建一文的配套资源,不使用gnuarmeclise插件的朋友勿下。

  • java单元测试依赖jar和eclipse插件

    java单元测试 junit powermock mockito ,下载直接引用就行了。

  • eclipse插件开发,贡献一个eclipse插件,一个可以获取插件依赖关系的插件

    在进行eclipse插件开发过程中,一个插件可能依赖于许多插件,PDE提供了关系列举,但是发现没有提供将当前插件依赖的jar包直接导出的功能,此插件分析PDE的插件依赖然后增加jar文件获取

  • Eclipse插件开发

    基础知识 1.Eclipse的架构 architecture=架构 ...工作台和资源访问的API是Eclipse提供的API中最基本的,在插件开发时使用频率较高的API。在这里不做详细的说明,在以后得例子中会出现一些这样的AP

  • Eclipse Html 插件及GEF依赖库

    eclipse html插件的下载和安装 需求:需要在eclipse里面编辑html和jsp,语法高亮和语法提示,自动补全等。 文件包括:Html插件tk.eclipse.plugin.htmleditor_2.2.0.jar;依赖库GEF-ALL-3.7.2.zip;下载链接和安装...

  • lombok插件eclipse用jar包

    lombok插件eclipse用jar包 1将lombok.jar包复制到myeclipse.ini/eclipse.ini所在文件目录2 打开myeclipse.ini/eclipse.ini,在最后添加以下代码并保存:  -Xbootclasspath/a:lombok.jar -javaagent:lombok.jar

  • xtext 2.7.0eclipse插件

    走eclipse的商店或者更新只能下载的最新版本的插件,有些依赖必须老版本的。

  • jdepend eclipse插件

    eclipse查看插件工程依赖关系 eclipse插件开发教程

  • 【Eclipse插件开发】啥是Target Platform

    Eclipse插件开发 PDE Target Platform Eclipse运行时依赖 Eclipse插件开发依赖

  • eclipse java 插件开发_Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    在Eclipse中使用PDE(Plugin Development Environment)进行插件开发。在PDE中为大家准备了几个模板供大家参考。第一步咱们先利用模板制作一个简单的插件作为和PDE的第一次接触。1.生成插件工程通过选择[文件]->...

  • Eclipse插件Java反向生成UML类图,package依赖关系图 ,ModelGoon-4.4.1

    直接将zip解压到eclipse install path / dropins目录下,重启eclipse即可

  • 关于需求变化

    有人说:用户的需求唯一不变的就是变化,以我现在的理解能力 我觉得用户需求变化的主要原因 我们对用户需求的理解在不断的变化,不是需求本身的变化,如果我们一开始就按照5W的方式来 调研,肯定能避免很多问题。现在好像还没有一套完成的方法论来指导调研吧,什么时候能出个 面向对象调研:)

Global site tag (gtag.js) - Google Analytics