点击上方“开源社”关注我们

| 作者:tisonkun

| 转载自:夜天之书

| 编辑:黄欣宜

| 设计:刘颖洁

| 责编:王玥敏

近年来,以阿里巴巴、小米和华为为首的一批公司在开源社区中的活跃,以及在招聘条件上明确加入优先录用具有开源经验的候选人,使得开源软件、开源社区以及具体到个人参与社区的方法和收益成为了业内热议的话题。

我有幸在实习及工作中深度参与到 Apache Flink 社区中,并在社区成长一年之后加入到 Committer 团队里;又在转换到业务为主的工作以后,根据自己的经验和热情成为了 Apache Curator 项目的 Committer 和 PMC 成员。时常有同学问我开源社区该怎么参与,社区和工作之间的平衡应该要怎么做的问题。我虽然算不得经验丰富,有些理解也尚浅薄,但是也确实觉得开源社区对软件开发有实际的好处,值得分享。

这篇文章先简要的回答怎么参与社区的问题,再谈谈开源社区给黑客,也就是热爱代码的开发者们带来了什么。


诚如《社区运营的艺术》一书中所说,开源社区本质上是开发开源软件的人所形成的群体,其主要标志是社区成员在社区中建立的归属感。参与开源社区,本质上是在社区中找到自己的位置,建立自己的归属感,并将自己融入到别人对社区的归属感的定义中去。

因此,参与开源社区的方法,说一千道一万,首要的是建立自己对社区的认同。如果自己都反感某个社区,或者以社区为工具而不是归属,怎么能努力参与其中呢?基于对社区的认同,才能说服自己付出时间和精力获取社区的认同,而社区的认同实际上是一种社交经济。

是的,参与开源社区的要点和参与任何社区的要点一样,最重要的是社区中的社交货币,也就是那些对人们日常生活有重大影响的可感受到的东西。例如信誉、伙伴关系、同情心和成员之间的社会交往。开源社区的参与并不因为它围绕着开源软件展开而有所不同,只是在社交货币的具体表现上体现为以对开源软件的贡献为核心而已。

我在一篇早期的文章《如何参与 Apache 社区》中以交流技巧为开头,以兴趣使然为结尾,就是强调主动和社会交往的重要性。具体的实践技巧非常简单,想想看你要如何参与一次团体游戏或者读书研讨?只要表现出你的兴趣和基础的能力,参与其中并展现自己,为团体做出贡献就可以了。在社区中,这个贡献可以从文档和注释开始,因为这能够帮助你快速的了解社区。尽量不要在一个地方呆着,但是要花主要的时间在一个地方钻研。因为在单点上更容易集中精力做出贡献,积累社交货币,而广泛地交游才能让你把握住社区的走向。主动承担社区 RoadMap 上关键的职责,如果不知道是什么或者怎么做,就去问。这样才能和开源社区一起成长。没有人会拒绝一个能力合格而积极主动的贡献者。

对于工作和社区的所谓平衡问题,我曾说过要写一篇短文来讨论,但是细想之后发现其实一句话就能说清楚。因为根本不存在需要刻意平衡的点。如果你的工作就是运营或者发展开源社区,例如著名社区的主要贡献公司,那么你的工作就是社区工作,并不冲突;如果你的工作建立在开源社区的成果之上的,那将你的工作成果在组织同意的情况下贡献给开源社区,或者解答社区中的问题,都是与工作有益无害的;如果你的工作和开源社区不太搭边,那参与开源社区就是纯粹的个人行为,这跟工作时间完成工作又有什么冲突的呢?

对于最后这一点稍作解释。软件开发不是割裂的,不是说你精力投入在公司工作中,就对开源社区的贡献一无所用,也不是说精力投入在社区工作中,就必然影响公司工作。关于后者,下面我会讨论开源之风给黑客带来的影响,关于前者,这很显然。开源社区大多围绕开源软件而展开,软件开发是共通的,开源软件也只有能够很好的解决业界的问题才有扩大其影响面的机会。工作中遇到的问题可以成为开源软件功能扩展的方向,工作中归纳的方法可以成为开源软件优化的方案,工作中积累的经验当然可以在开源软件的开发中迁移和演绎。


聊完这些,我们再看看本文的标题,即开源社区给黑客带来了什么?标题我想了很久,称呼码农或者程序员,总有种把自己约束在职位上的不爽快感;称呼开发者,又跟开源社区叠字。还是用黑客最爽快,虽然黑客在时代的流变下有 cracker 的别指,但是秉承《黑客与画家》以及《大教堂与集市》的用法,黑客( hacker )还是指热爱并精通程序设计的人。

开源软件的解释与布道近来在国内也是甚嚣尘上( exactly )。我无意于代表某种严谨的定义,也没想着坐而论道。只是作为一个实际的一线开发人员,分享我所看到、体会到的东西。

开源社区的冲击或者说工程师的开源文化,在开发者的圈子里至少带来了良好的流程规范、优秀的代码参考以及广泛的自由信念。

良好的流程规范说的是开源社区的代码开发规范、代码评审规范、提议发起和投票规范以及软件发布规范。这在某些方面是因为社区更有可能由优秀的技术人员主导,而不是公司利益所驱动。不少社区的束缚更少,更愿意尝试新的流程和规范。这使得一线开发人员观察和总结出来的经验有了实验的场所,并最终在得到验证后在公司业务的研发上落实。好的流程和规范能够改善开发者的工作体验,这一点应当毋庸置疑。

其实,软件行业不过是一个出现还不超过百年的新兴行业,如今却要和机械、土木这种数百年的传统行业一起成为工业时代的支柱。这个行业本身尚待总结和验证的经验有太多太多,而开源社区作为一块创新的试验田,倾向于更信任的、更简洁的流程规范,无疑是软件行业向更人性化、更公平化发展的好趋势。

这些年来,删除无用代码、采用版本管理,强制代码评审、完善单元测试,重视技术方案、推广敏捷开发,实践小步快跑、落地持续集成,这些现在已经成为业内共识的规范,很有许多是从 Linux、Apache、Perl 以及其他开源社区所尝试和流传开来的。谁又能说现在的开发者没有享受到开源社区的发展带来的好处呢?

优秀的代码参考无需多言。这是一个很明显的现象,如果你的代码会被别人看到、会被别人评审,更直接的说,垃圾代码的合并请求会被否决、垃圾代码的作者会被议论,那么开发者对自己的代码质量就会有更高的自我要求。同时,垃圾代码也能够被社区中的贡献者所修正。

虽然我经常调侃 Flink 的代码,但是过度的面向对象和异步化代码确实在我需要这方面的帮助的时候提供了典型且有效的指导。另外诸如 Spark 和 Etcd 也是各自领域以及语言的代表作,以至于有段时间人们提起 Scala 会跟 Spark 混淆起来,而 Etcd 则是了解 Go 语言程序设计的比复杂的 Kubernetes/Docker 更亲民的实例。

从开源软件的代码中学习设计模式,归纳普遍问题的一般解法,对自己代码水平的精进显然是大有裨益。在业务开发中我们总是很容易重复发明解决方案。重复造轮子的坏处从公司利益角度来看主要并不在于浪费时间,反正都是在预定时间内完成工作,而是解决方案通常是需要长期完善的。不使用已有的成熟方案,反而靠自己拍脑袋瞎想,很多时候是在给自己埋坑。开源社区有的是成熟的解决方案,即使解决方案存在缺陷,那也更有可能被社区成员反馈。已知的问题总不比未知深坑可怕。

最后也是我最钟情于这个行业的一点,就是开源社区的运作方式所表达出来的广泛的自由信念。

曾几何时,我们自然地以为华贵的服饰和稀有的食材只有特权阶级才能享受的起,工匠和学者只把自己的经验学识由血缘或师徒纽带传承,甚至还要留一手。但是随着时代的发展,如诗中所言【旧时王谢堂前燕,飞入寻常百姓家】,我们已经进入到了一个文明高度发展,自由和平等被高度重视的时代。软件的未来,必定不是某家公司所垄断的命运。

开源软件在中国的发展很快遇到了抄袭、滥用的问题,但是正如书影音作品在版权保护之下自由流通一样,开源软件在中国或者任何地方,都将在软件协议的保护下自由的分发。软件作为后工业时代的核心生产力,绝对不会也不应该成为私有物品,所有的人都应该平等的享受软件行业高速发展带来的红利。开源社区的蓬勃发展,证明了自由将赋予软件更旺盛的生命力。

软件自由流通的实现,不应该像普罗米修斯盗火一样伴随着巨大的牺牲,而应该在工程师的开源文化潜移默化当中成为共识。我们开发软件,是为了改善人的生活,为了社会的发展。软件开发的经验和结果,自然应该自由地流通在社会上。

开源社简介

开源社是由国内外支持开源的企业,社区及个人,依“贡献,共识,共治”原则,所组织的厂商中立、纯志愿者、非营利的开源联盟,旨在共创健康可持续发展的开源生态体系,并推动中国开源社区成为全球开源软件的积极参与及贡献者。我们专注于开源治理、国际接轨、社区发展和开源项目。

相关阅读 | Related Reading

“请保持清醒:开源是和世界同步的绝佳机会!”

COSCon'20 讲师征集令

开源特训营 - Lesson 3 - 项目启动

开源社区给黑客带来了什么?相关推荐

  1. 如何系统地资助开源社区的个人开发者?

    开源社区中,全力投入开源项目开发的个人开发者常常会遇到资金问题.为了将给开源社区及其产品带来的贡献转换为对应的收入以维持生活,许多个人开发者通过功德箱,即在个人页面.项目页面或产品交互的某个部分放置捐 ...

  2. 从黑客文化看区块链开源社区的自我组织与成功之道

    来源 | 链闻 ChainNews 撰文 | 李画 原书作者 | 埃里克·斯蒂芬·雷蒙 出品 | 区块链大本营(blockchain_camp) 「要尊重能力,要珍视和捍卫自由.」--罗伯特·安森·海 ...

  3. 还在为多集群管理烦恼吗?RedHat 和蚂蚁、阿里云给开源社区带来了OCM

    简介: 为了让开发者.用户在多集群和混合环境下也能像在单个 Kubernetes 集群平台上一样,使用自己熟悉的开源项目和产品轻松开发功能,RedHat 和蚂蚁.阿里云共同发起并开源了 OCM(Ope ...

  4. 用了这么久开源社区,还搞不明白免费/自由/开源软件?

    在开源社区中,有很多人经常把免费软件.自由软件.开源软件这三个概念混淆在一起. 今天就来和大家谈谈这三个软件到底有什么不一样. 免费软件 用户可以免费使用该软件,但通常会有其他权限的限制: 1.源码不 ...

  5. OpenAnolis开源社区的萌芽与发展

    编者注:10月24日,2020中国开源年会暨阿帕奇中国路演在长沙举行,阿里云智能高级技术运营专家金运通应邀在操作系统分论坛上做了主题为「OpenAnolis开源社区的萌芽与发展」的演讲.本文内容根据其 ...

  6. 麒麟软件副总裁李震宁:中国开源社区是操作系统破局的土壤

    整理 | 小雨青年 "开源"这片培育新技术的土地,孕育出了无数为科技奋斗的软件开发者.麒麟软件通过中国开源社区自身的力量和资源发展壮大,也以自身的强健让这片科技的土地显得更加丰沃. ...

  7. 三代开源社区的协作模式

    一.研发工具与研发模式 据说,人之区别于禽兽,最大的特征在于利用,甚至发明工具.在没有任何其他工具时,我们只能借助于自己的肢体,一旦有了工具之后,我们的能力将会大大的增加. 但是,从另一个角度来看,工 ...

  8. [源生万物以养人,人创区块以报猿]:开源社区与项目激励机制的思考

     戳蓝色字"开源社"关注我们哟! 主讲人刘天栋先生现就任开源社理事长,目前专心投入参与开源社区的相关志愿者工作.在本次论坛上,他会就开源社区与项目激励机制的思考和大家做一些探讨. ...

  9. 欧拉、龙蜥、OpenCloudOS开源社区超前活跃,NextArch、PHP基金会相继成立|开源月报 Vol. 01...

    本文由腾源会精编整理.网罗全球最新开源资讯,精选顶级基金会热点技术,腾源会本期<开源洞察月报>将从社区.企业开源.开源基金会动态.开源安全.优秀开源项目推荐五个方向带大家看11月份的开源大 ...

最新文章

  1. hive导数据到mysql 自增主键出错_老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”...
  2. IDEA如何解决'File is read-only'的问题
  3. [Unity动画]04.Avatar Mask
  4. 太赞了!包邮送 60 本 Python 畅销书!
  5. Opencv实战(一) 视频人数统计(C++ Opencv)前后背景分离方法
  6. 个人作业2——英语学习APP的案例分析
  7. 睡眠音频分割及识别问题(一)
  8. Redis之渐进式rehash
  9. IT程序人生:学会写程序能从事哪些技术岗位?
  10. 大华工业相机使用说明_大华C900系列SSD | 极速传输,不负美名
  11. mongodb mapreduce用法
  12. 如何在Mac上快速签署PDF
  13. 常用滤波算法(转载)
  14. 如何打印计算机文档目录,word怎么把目录显示出来
  15. 最简单的深度学习入门书《动手学深度学习》
  16. AE制作粉笔字特效教程 3分钟快速制作Vlog片头
  17. 彩信SMIL文件学习
  18. LeetCode刷题(45)~位1的个数【布赖恩·克尼根算法】
  19. cad一键卸载工具叫什么_autodesk软件一键卸载工具
  20. Docker镜像瘦身与优化

热门文章

  1. Puzzled Elena
  2. 链表(C++类模板实现)
  3. 微信分享圆角图片有黑色部分
  4. 利用汇编和C语言实现Exynos4412裸机开发系列之实现LED跑马灯(含源码)
  5. python flask 快速搭建 WEB 实战
  6. [MTK项目] 如何客制化谷歌开机向导
  7. Seal库官方示例(三):levels.cpp解析
  8. 【工业互联网】新一代企业数字化整体架构下的工业互联网
  9. 游资92科比到底牛在哪里?
  10. 一文搞懂lookup、vlookup、hlookup函数与index、match函数的使用