Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
119 lines (53 loc) · 9.57 KB

File metadata and controls

119 lines (53 loc) · 9.57 KB
Copy raw file
Download raw file
Outline
Edit and raw actions

分享和开源精神值得俱备

1.什么是开源,为什么要开源?

那么你正准备拥抱开源吗?恭喜你,开源世界欣赏你的贡献。接下来让我们聊聊什么是开源,我们为什么要开源。

2.“开源”意味着什么?

当一个项目开源后,意味着 不论什么目的,所有人都可以浏览,使用,修改和分发你的项目。

开源非常的强大。因为它降低了使用的门槛,使新奇的思想得到快速的传播。

来理解它如何工作,想象下你的朋友正在吃便当,这时你带来了樱桃派。

  • 每个人都会想要樱桃派(使用

  • 这个派引起了一场轰动!周围的人会想知道你的烹饪方法(浏览

  • 有一位朋友Alex是一名糕点师,他会建议少放一点糖(修改

  • 另外一位朋友Lisa要求使用它作为下个星期的晚餐(分发

同样的,闭源就像是你去餐厅必须付钱才能吃樱桃派。但是,餐厅不会告诉你樱桃派的烹饪方法。如果你恰好抄袭了他们的派,并以你自己的名义出售,那么餐厅将会采取行动抵制你。

3.开源是否意味着免费?

开源最吸引之处就是它不用花钱。然而免费只是开源的价值的一个副产品。

因为 开源协议要求开源项目可以被任何人出于几乎任何目的使用,修改和分享,这些项目一般都是免费的。如果有些开源项目需要付费使用,任何人都可以合法地使用其免费版。

开源精神里最重要的,是拿来主义

这和大部分人的想法不一样。开源需要贡献、需要付出,但在贡献和付出之前,首要的是去了解、去使用已经存在的。

比如前端工程师,会经常使用模板,天天用着,会有不爽,就会想着自己去写一个模板引擎。直接去写一个没什么不对,但更好的方式是,先去开源社区搜索下同类产品。看自己的想法,是否已经有人实现了,看自己的想法中,哪些是靠谱的,哪些是不太靠谱的。

注意不要去做「纯调研」,除非你已经是这方面的专家,有过体系化的研究和深入。「纯调研」是指,找到类似的产品,浅尝辄止地跑跑 demo,就开始出表格,横向比较优劣。更笨但更有效地做法是,直接去用,比如我们选择了 Handlebars ,在项目真正使用过程中,才能深触地感受到 Handlebars 的优点及其缺点。有过这么一段深入使用经验后,类似的前端模板引擎,比如 MustacheHogan 等,也有大概清楚个七七八八了。

拿来主义不光能省去开发成本,还能让你扩充见识和想法,而不会成为井底之蛙还茫然自得。

在开源世界里,参与比主导更重要

遵循拿来主义,可以让你更懂得他人。在这过程中,会有欣赏、感谢,也会有抱怨、想法。

前端 DOM 操作类库中,很多公司包括支付宝都选择了 jQuery。使用过程中,jQuery 的一些 API 的设计非常赞,一些内部实现也非常漂亮。遇到这些让人欣赏的点时,别忘了将自己的感想写下来。那怕是一篇博文,或是跟朋友闲聊时的只言片语,所有这些,都是参与,都是正能量的传播。社区的赞誉,可以给 jQuery 开发团队最大的鼓励。很多坚持,是因为有肯定。

当然,jQuery 只要存在一天,就一定存在不足。比如 dataAPI 变化,比如动画不支持纯 CSS3 方式,还有 Sizzle 也并非那么完美。所有这些「缺点」,你遇到的 bug,你踩过的坑,当你有好的想法或解决方案时,不要忘记反馈给社区。jQuery 有详细的反馈渠道,一般成熟的开源社区都会有。比如托管在 GitHub 上的项目,一般都可以通过 Issues 给社区提交你的想法,甚至可以通过 Pull Request 直接提交你修改过的代码。

参与进去,可以让你更懂得美,懂得感恩之心,懂得回馈之情。这在过程中,你的功力,往往也会大增。不光是技术上的进步,还包括英语读写能力。在人性沟通上,你也会收获很多,这是无价的财富。

拿来主义是开源的第一步,参与则是开源中最漫长的一步。开发自己主导的项目不是必须的,除非你真的有很好的想法,同时刚好有旺盛的精力,否则不要轻易开始,那不代表什么,往往什么也不是。比如 Sea.js,如果 RequireJS 当初能接受我的建议,或者 FlyScript 的作者不退隐江湖,那么就不会有 Sea.js。让一些事情自然地发生,让豆瓣从土壤中发芽。更多地去享受参与,保持简单与自然。

开源的是社区,代码仅是很小的一部分

虽然代码很重要,但在开源项目里,源码只是重要的因素之一。

除了代码,还有文档、测试用例、Issues 管理、版本发布、升级策略、书籍、视频等等。jQueryBackboneAngularJS 等成熟项目,成熟的是社区,而不是源码。好的社区,是在 Google 中一搜索,就能找到不少资料。好的社区,是你踩过的坑,经常已经有人也踩过并整理分享出来了。

社区的形成很难,需要核心团队澎湃持久的激情,还需要天时、地利、人和。jQuery 已经形成庞大的社区,但其兄弟 YUI3 的社区,一直不是很成气候。两三年前,我想找 YUI3 的总体设计文档,以及部分组件的设计文档,搜索了很多很多地方,最后给原作者发信,依旧都未能找到我想要的资料。但 jQuery,基本每个细节,都能比较轻松地就找到相关资料和讨论。

没有社区的开源项目,其源码会一直停留在「孤芳自赏」阶段。几年前的 KISSY,还有百度的 Tangram,个人觉得都停留在初始阶段,发展很难。有社区的开源项目,其源码会活起来,会自我不断进化升华。我参与过的一个典型项目是 Backbone,倘若你现在再回过头去看 Backbone 最初提交的代码,与现在的相比,真心会觉得有点挫了。最让人不可思议的是,Backbone 最初很挫的代码,在社区的参与下,在不断的讨论和 Pull Request 中,现在已经演化成非常高质量的代码,甚至每一小段代码里,都能说出一个故事来。我现在依旧非常关注 Backbone 的每一次代码变化,特别是自己修改过的部分。从其他人的修改中,能收获很多很多。

Backbone 的例子,也展示了一个更好的开源方式:有了好的想法,就分享出来,最初的代码展现基本的思路就好,然后通过社区的参与,不断往前演化,让大家都成为开发者,群体的力量远大于个体。个人英雄式的开源方式,已经过时了,就像 sourceforge.net 一样。加入我的开源社区,也给自己一个分享开源和拿来开源的机会。

最后,知易行难。上面的道理或许大家都懂,真要做到,则是一场修行。MJLN 也才刚刚上路,旅途中,有杭州西湖惬意的微风,也有萨哈沙漠般的烈日当头。好在,选择了,就不怕远。

在分享和开源嘉年华中切莫走入误区

我曾在简书上看过一篇文章,意思如果写文章只盯着阅读量和打赏,就会慢慢的开始焦虑,渐渐地失去写作的兴趣。我同意他的观点。

我们学习总结,分享和开源自己的技术类作品,也不是为了阅读量,但是有时又难免为阅读量所累,毕竟文章就是分享给人看的,如果写了一个东西,来来回回没人看,心里也难免有点失落。但是如果有人看,有人留下评论,有个时候就会萌生 大家都挺关注这个事情的,明天再写一篇更加详细的分享给大家。

而且阅读量这个东西在保证准确的前提下,是一个文章(作品)质量的硬指标,读者也难免将阅读量和文章质量联系在一起。就像在 GitHub 上找框架关注 Star 数一样,读者在找一个知识的时候,同一个关键词搜出来的结果,一个有 十万+ 的阅读量,一个阅读量只有 十来个,你会优先选择打开哪一个?

我想说的是,开源是一种精神,分享是一种美德。千里马和伯乐都是有的。有实力有风格的牛人也是有的。猴子尚且有分享和团协精神,你为什么 不行动起来「为何甘心败于拖延症」。不做「大牛」,做只「猴子」也不错。

程序猿的独白

是谁改变了世界?

每个国家,人们最终尊敬的,必定是那些真正创造财富的人,而不是那些空言大话的人。程序员不但创造财富,而且努力提高创造财富的效率。所以,作为一个程序员,应该感到自信和自豪。

我有一个梦想
  • 码农呆子、怪人也有资格获得总统奖章、国会金质奖章以及其他能够承认他们贡献的高等级的奖项。

  • 我是一个程序员,我和其他程序员是朋友,不是敌人。我不在别人面前贬低程序员。

  • 程序员是聪明勇敢的,而且我们也很风趣。“内向不是我们的DNA,所以我们并不是生来就内向,我可以调整我的态度和社交能力”。

######## 说明 该内容部分整理摘录于大神的Issues中的一个topic【什么是开源精神 #167】lifesinger/blog#167GitHub开源项目贡献指南中文版

Morty Proxy This is a proxified and sanitized view of the page, visit original site.