开源十问, 社区新人快速上手指南
点击上方“开源社”关注我们
| 转载自:华为开源| 编辑:刘雪洁| 设计:宋传琪| 责编:沈于蓝
刚接触开源的你,可能还有很多困惑。别担心,SegmentFault 思否通过调查问卷的方式收集了开发者对于开源的十大问题,
第一次接触开源,我该从何处入手?
没有基础,如何在开源社区做贡献?
哪些开源项目是值得关注、有前景的?
怎么才算加入开源社区?
如何成长为开源社区的大牛?
怎样深度参与开源项目?
开发者如何通过参与开源项目提升技术?
项目捐给开源软件基金会与不捐开源软件给基金会,有什么区别?
开源社区如何能持续发展?
开放治理对社区的成长到底意味着什么?
来自 openEuler 社区的开源大咖马全一回答道,“想干的事情、适合干的事情和最终能干的事情是否匹配,是决定将来工作是否幸福的关键。”选择一个适合自己的开源项目至关重要。
那么具体应该如何选择适合自己的开源项目呢?可以考虑以下四个方面:
1. 技术趋势,综合考虑技术趋势发展,选择一个有前景的技术方向才能在未来的竞争中获得优势。
2. 个人技术领域,需要开发者认真评估自身技术栈,选择和自身能力、兴趣爱好匹配的开源项目,只有真正有兴趣投入的技术领域才能最大的发挥开发者的能动性,也才有机会获得更大的成功。
3. 合理调配投入时间,在工作、生活和家庭之间需要合理平衡投入,通过合理规划可支配时间,保证对技术领域的研究和投入,只有持续的参与开源项目,才能从开源中获得优厚的回报。
4. 建立开发者关系,和社区内的核心开发人员建立紧密的联系,良好的开发者关系有利于扩展人脉,为在开源项目的发展建立扎实的基础
作为开源社区里活跃着的年轻开发者,华东师范大学、X-lab 实验室成员夏小雅表示:“新人对于一个社区是格外珍贵的,在邮件列表、会议中收到的回应和鼓励也会非常多,这一点我深有体会。”所以千万不要觉得自己是一个“后来者”就羞于表达。不懂就问、勇于表达、刷脸熟、主动请求帮助,积极参与讨论、活跃贡献是享受开源的第一步。
想要为开源项目贡献代码,确实需要一定的技术功底。但没有基础就不能为开源社区做贡献了吗?并不是!Apache北京本土社区发起人姜宁强调,除了提交软件代码,还有很多参与开源贡献的方式。作为新手区的我们,可以先参与一些翻译和本地化、文档撰写、设计等工作,这些非代码贡献对于项目也同等重要,还能帮助我们快速和社区大牛熟悉起来,加深对开源项目的理解。
在新手如何参与开源这一问题上,马全一也给出了一些建议:
写代码远远不够,开发者需要善用搜索引擎。同时与社区大牛建立沟通联系,去了解各类开源开发问题; 仔细观察,深入思考。搜索引擎及社区大牛给出答案后,你能不能看到东西,能不能思考,这一点很重要; 穷举法。有时候思考的结果不见得对,你可以把所有的可能试一遍; 写文章。输出是最好的输入,如果你能够给别人讲明白这件事情,你自己对这个问题就是理解的; 参与社区活动。
挑选值得关注、有前景的开源项目需要考虑多种因素,比如技术和社区运营是否前沿 ——
技术的前沿性既涵盖技术本身的先进性,还体现在支撑该项技术的底层技术是否先进。比如开源软件的基础设施是否主流、开源,这决定了项目的开放性、透明性和可持续性。
社区运营的前沿性体现在社区是否有完整的治理机制,是否具备多样性,有很多企业参与项目贡献,社区玩家是否覆盖完整的产业链。此外,在挑选项目时,我们还需要关注社区贡献者的活跃度。
另外,开源项目是否在基金会也是一个重要的考量要素。 当然,在选择值得关注的项目时,每个开发者本身都是带着自己的兴趣和待解决问题的。找到自己感兴趣的项目,开发者才能支撑自己投入更多时间做这件事。 目前,开源社区涵盖大量项目,如 Vue.js、React.js、Angular 等前端项目,Django、Spring-Boot、next.js等后端框架,TensorFlow、PyTorch 等机器学习框架,还有华为 MindSpore、KubeEdge 等新秀项目。
2. 当你开始在该项目的邮件列表 (mailing list) 里参与讨论并提供补丁、文档和建议,就会成功晋升为开发者(Developer)或贡献者 (Contributor )
3. 当你不断修炼 (提交 Bug 报告、贡献代码、参与邮件列表讨论、参与社区建设),就有可能受邀成为提交者(Committer)或维护者(Maintainer)
4. 成为有影响力的贡献者后,可能会进一步被推选进入该开源项目的技术决策委员会等,更深度参与开源项目的管理与决策
每个社区的文化和风格其实各不相同,如果把“加入”开源社区看作一个动作,那么之前你在不经意间,使用开源社区某一个项目,就可以当做是加入开源社区的开端。
Apache 软件基金会首位华人董事,Apache SkyWalking 创始人吴晟向我们介绍 —— 开源社区的大牛,往往是已经把开源的技术、品牌和宣传,变成职业化的一群人。 他们以开源的模式进行广泛的协作和共赢。因此他们在开源社区的设计、开发、跨社区合作和基金会工作中,展现出高人一等的职业性素养,以及开源爱好者无法比拟的超长投入时间。 类似大家熟悉的一万小时定律,在开源圈子也同样成立。当这些爱好变成了职业性,在高强度的投入后,其他人会看到他们异乎寻常的成长速度。 所以,确保自己有足够的时间来从事开源。让自己参与的开源成为经济正向循环的一环,才能成为大家眼里所谓的「大牛」。 但与此同时,我并不建议大家去过分追求成为「大牛」。毕竟开源在职业化、商业化之外,也可以给贡献者带来属于自己的成就感和满足感。并不是每个人都需要成为一个职业开源人,普通开发者和爱好者也能享受到开源协作的乐趣。 此外,姜宁强调,对于普通开发者而言,如果你梦想有一天成为开源社区的大牛,要从勇敢承担开源项目的核心任务开始,在不断贡献中获得成长。 开源社联合创始人刘天栋补充道“这个社会有提出问题的人,有制造问题的人,但是更需要的是解决问题的人。当我们参与到开源贡献里,协助他人解决问题的时候,不但能更好的实现自我,也能够让他人更快的认识我们的价值,成为他人眼中的「大牛」。而我们参与开源贡献的经历就是我们最有价值的履历表。”
第六问:怎样深度参与开源项目?
成为核心贡献者拥有代码仓库直接写入权限?
入选项目委员会会直接参与开源项目的管理与决策?
或者哪怕只修复过一次代码核心 BUG?……
这个问题见仁见智,业内并没有一个绝对标准。 作为潜伏在各大社区的开源大咖,SegmentFault 思否创始人、 CTO 祁宁表示 “其实,开发者并不需要把「深度」二字看得过于沉重—— 实际上国际上很多知名的开源大咖也都是在某次不经意的贡献中「入坑」开源的,或许第一次只是为了收获一件社区周边、或是使用开源软件过程中的顺手为之。随后才逐渐深入接触、持续贡献,从 Contributor 到 Maintainer。”所以深度参与开源项目和成为开源大牛一样,都是一个循序渐进、水到渠成的过程。 但需要强调的是,如果你期待深度参与某一开源项目,或者成为某一项目的核心成员,一定要多思考、多维度贡献 —— 当你除了贡献代码、解决 issue 以外,也在开始思考项目的价值、规划项目的前景时,就离深度参与不远了。
许多开发者,特别是应届毕业生,大多面临缺少大型、高质量项目开发经验的困境。较为成熟的开源项目,很多已具备一定的生产环境应用经验,参与贡献的开发者可以深入项目,理解、学习优秀的代码逻辑、架构设计等,收获宝贵的研发经验。 我们都知道,作为一名开发者,学习与解决问题的能力至关重要,开源项目可以给予每位参与者充分的锻炼空间。具体来说,提升技术的方式大致分为以下几种:
关注社区动态,紧跟技术潮流新方向,向技术选型库中装填新「弹药」; 阅读开源项目中的高质量源码,研究代码逻辑,在日常工作中学以致用; 持续贡献文档,通过提交 PR、贡献 Issues 等方式,提升书面表达能力; 通过邮件列表,issue或者代码审查的方式与社区前辈交流, 学习他们的研发经验,提升视野; 与使用者多交流,根据反馈不断优化项目,更好地理解产品、了解用户需求; 学会提问,在开源社区中,不是所有问题都能够得到答案。提问者需要把问题的上下文环境讲清楚,并且尽量谦虚的表达才可能得到帮助,当你学会提问,沟通的能力势必也会提升不少。
第八问:项目捐给开源软件基金会与不捐开源软件给基金会,有什么区别
第九问:开源社区如何能持续发展?
openEuler 社区品牌宣传委员会主席梁冰向我们介绍,一个开源社区能否获得持续发展,关键要看以下四个关键指标:
1. 任何社区运营的关键指标都是开发者开发者是社区的灵魂,开发者的数量和质量决定了这个社区的项目的数量和质量。
2. 第二个指标是CODE我们有了高质量和高数量开发者,自然会有开发者带来高质量的代码。
3. 第三个指标是用户案例任何一个开源社区对自己所有的定义,都取决于用户对你的定义。只有你有足够多的用户才能反馈使用中的具体需求,对项目形成一个非常正向的推动。这其实跟你做产品营销是一样的,一个产品没有用户就活不下来,一个开源项目没有用户也是活不下来的。
4. 第四个是文档就像产品需要手册一样,如果开源项目没有很好的文档,很多开发者来了无从下手。所以对于一个成熟、友好的社区,一定要有一套文档去指导大家如何用,如何参与,如何来贡献。 管理和运营社区是开源项目持续发展的核心,一个健康、友好的社区需要完整的治理制度,公平开放的社区氛围,这可以不断吸引新的贡献者加入。当然,资金、资源、基金会的帮助也对开源项目的持续发展有很大帮助,不过最重要的还是项目核心团队不断地努力与持续的投入。
以上十问是否解答了你心中对开源的困惑呢?春风十里,不如代码和你。开源大势所趋,快和我们一起上车吧!
开源社简介
开源社成立于2014年,是由志愿贡献于开源事业的个人成员,依“贡献、共识、共治”原则,所组成的厂商中立、公益非营利的开源社区,是最早以“开源治理、国际接轨、社区发展、开源项目”为使命的开源社区。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,旨在共创健康可持续发展的开源生态,并推动中国开源社区成为全球开源体系的积极参与及贡献者。
相关阅读 | Related Reading
我所理解的开源软件供应链安全
我们在夏风和煦的BBQ 期待与您来一场开源盛会的畅聊
《大咖说开源第二季》三、四期
欢迎大家点击阅读原文,关注开源社官网!