解秘开源与社区

点击查看目录

前言

开源已经无处不在,当下已经很难找到一款软件是完全和开源没有任何关系的了。开源软件,正在成为现代社会的基础设施。

“Open up your phone. Your social media, your news, your medical records, your bank: they are all using free and public code.” - Nadia Eghbal 《Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure》

开源,并非与你不相关,并非离你很遥远,开源就在你身边!

而谈到开源软件的开发模式,不得不提及 Eric S.Raymond 在其著名的论文《大教堂与集市》中论证了开源的软件工程理论。如他所定义的 Linus 定律:众目睽睽之下,Bug 将无处藏身,模块化、去中心化、快速发布快速反馈等等是可行的,Kernel 就是成功的案例。

随着 Linux、Apache、Perl/Python/PHP、MySQL/PostgreSQL 等开源技术的崛起,以及技术的更新迭代,开源已经不再是稀缺,而是一种过剩,架构师在最初构建业务系统的时候,面临的不是创造,而是选择。于是开源项目又有了新的优势:

可以让业务快速的搭建原型 几乎以零成本的方式来进行 让产品迅速进入市场,获得及时反馈

开源社区

开源的理论知识或许太过深奥、晦涩。接下来我就接地气地讨论下面几个实际问题:

  • 为什么要加入开源社区?
  • 加入社区的门槛有哪些?
  • 加入社区你能做什么?
  • 加入社区如何正确互动提问?
  • 加入社区有哪些收益?

为什么要加入开源社区?

本文开篇说到过,开源已经无处不在,不管你是从事架构、开发、运维、算法还是产品、运营,只要你从事计算机与互联网相关工作,总有“一款”开源社区适合你,你可以从该社区中获益。

加入社区的门槛有哪些?

最近在邀请身边的朋友加入社区时,偶尔发现有人这样回答:我现在水平还不够,等以后知识水平提升了再加入吧。如果这位是在诚实地回答,我想告诉你的是,加入开源社区原则上并没有门槛。不限于其经验水平、性别、性别认同和表达、性取向、残疾、个人外貌、体型、人种、种族、年龄、宗教或国籍等。如果一定要在加上一个门槛的话,我希望你能有参与社区建设的热情、你懂得社交的基本礼仪、你有一定责任心与荣辱感,你能遵守社区的行为准则与国家地区的法律法规!

加入社区你能做什么?

很重要的一点,加入社区的个体可以做什么,可以在其中扮演怎样的角色!这个可能需要看社区本身的性质。如果是开源项目官方社区,加入社区后,你可以参与讨论如何贡献代码,参与技术方案的决策,当然也可以参与“疑难杂症”的讨论或者提问。如果社区的性质是终端用户社区,比如某个技术领域或者某个开源项目在中国的本地社区,那么加入社区你有很多事可以做,包括但不限于:

  • 参与技术话题讨论与交流
  • 参与官方文档汉化活动(翻译)
  • 参与或协办线上线下活动
  • 技术文章(原创/翻译)投稿
  • 在社区内进行技术分享
  • 参与社区组织的电子书的写作
  • 参与社区网站的构建和维护
  • 宣传自己热爱的开源项目
  • 其它

正如第二点所说,加入社区本身没有门槛,但是加入社区后具体能做些什么取决于个体本身的水平和能力。社区是由个体组成,社区伴随个体共同成长。

值得一提的是,很多人加入社区长期处于潜水状态,我这里强烈建议这部分群体浮出水面。被动接受地知识不易于真正吸纳,参与讨论,最终将知识产出反馈给社区,这样才能形成良性循环。另外有一部分人加入社区后,只有工作中遇到问题时才活跃起来,在社区中提问,其它社区活动也不参与,也没有任何反馈,这样单方面索取的行为不利于社区的发展,久而久之,社区就不再有知识产出了,自己也很难从社区中获得提升。

加入社区如何正确互动提问?

紧接上面的话题,大部分参与开源社区主要的活动就是参与互动或者提问。

参与社区互动其实也是一个社交活动,需要个人把握社交分寸,遵守基本的社交礼仪。不可接受的参与者行为包括但不限于:讨论问题上升到人身攻击,挑衅、侮辱或贬低性评论、公开或私下骚扰、未经允许发布他人私人信息、未经允许发布广告或者其它不良信息、无故刷屏刷帖从而占用公共资源等。

另外,在社区里提问或者发起相关技术话题讨论是被鼓励的,但是提问也是一门艺术,需要提问着好好把握。有一个知名 Github 项目 How-To-Ask-Questions-The-Smart-Way对提问的智慧进行完整的整理,我这里简单整理几点如下:

  • 提问之前先尝试自己通过各种手段搜索答案,包括但不限于百度、谷歌、相关技术论坛、技术手册等。当你提出问题的时候,请先表明你已经做了上述的努力;这将有助于树立你并不是一个不劳而获且浪费别人的时间的提问者。
  • 提问时,使用清晰、正确、精准的语句描述问题,话不在多而在精。无效的问题,往往浪费大家的时间去阅读和理解,并且可能没有人去给你解答,因此清楚明确地表达你的问题以及需求至关重要。
  • 提问时要有一定的礼貌,尤其通过社区向个人提问时至关重要。虽然同为社区成员,但往往素不相识,别人没有义务一定要给你解决问题,尤其当该问题需要花费不少时间去梳理和解答。向个人提问时,一般需要首先做个自我介绍,然后礼貌地请教问题,不管问题最终是否得到解答,都能够表示感谢。尤其当你有一串的问题待解决,客气一点肯定会增加你得到有用回应的机会。

加入社区有哪些收益?

简单来说,加入社区,肯定是有利可图的,你能够收获知识与成长、收获人脉、以及其它长期收益。

  • 收获知识与成长。长期参与社区技术话题讨论,阅读社区提供的学习资源,参与社区活动,甚至直接给开源项目提交 PR,久而久之,在该领域的知识水平与解决问题的能力就会得到提升。以社区里面的技术达人为目标或者榜样,往往能督促个人朝着正确的方向快速前进。
  • 收获人脉。有一句俗话,参与开源社区就是混技术圈子的。在这个圈子里,你能找到志同道合的人,结交更多的朋友。三人行,必有我师焉。圈子里面技术大牛如云,结交和认识社区里面的技术达人,除了向强者学习之外,还有利于扩展自己的人脉资源,人脉多了,路就越走越宽了。
  • 收获影响力与认同感。一旦积极参与了社区活动,包括技术博客投稿,参与社区技术文档撰写,个人的技术影响力也会逐步提升,同时也会有更多人对你表示赞同与尊敬。替人解疑答惑,不仅自己的知识得到巩固和传播,也能收获别人的感激之情。
  • 其它长期收益。加入社区的收益往往很难在短期之内显现,而且即使你投入很多,也很难获得物质上的回报。如果你把目光放长远,你会发现,加入社区的长期收益有很多,包括个人技术影响力的提升、自身技术视野的提升、社交水平的提升,对于一些公司和部门来说,长期活跃在开源社区也能有助于职业的晋升。
  • 更多的收益取决于你愿意贡献多少精力在开源上。

写在最后

对于广大中国开发者而言,终端用户开源社区是最容易接触的,也是最容易从中受益的。终端用户,这里指开源项目的最终收益者/使用者。而终端用户社区即由一群终端用户成立的社区。对于这样的社区,一般的宗旨为:拥抱开源、反馈开源。终端用户开源社区不仅仅是对开源项目与技术的传播、布道、交流,也会引导社区成员在力所能及的前提之下对开源项目进行反馈,包括提 bug,提交 PR,参与项目重要决策或设计等等。

在开发者真正拥抱开源的同时,一个开放、多样且极具成长空间的开源社区不该被错过,它将为开发者回馈更大的价值。无论是社区本身,还是参与其中的众多开发者,相信都能在良性的互动中,相互促进,获得快速且长足的发展。

罗广明

罗广明

字节跳动

编辑本页