diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" "b/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" index 35f1e09c42431f7583555d967e59736188aa7427..9a3444bf60ceed9d27c8c5eb742707ce7e4749d9 100644 --- "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" +++ "b/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" @@ -16,4 +16,77 @@ 4. 需求理解能力 5. 模块化思维能力 -就开源社区而言,参与开源可以很好的锻炼程序员的以上5个素养。 \ No newline at end of file +就开源社区而言,参与开源可以很好的锻炼程序员的以上5个素养。 + + +## 前言 + +什么是开源,相信前面的章节已经说的非常清楚了。开源作为一种贡献技术的方式,对整个技术界和开源社区的正向回馈是巨大的。近10年来,越来越多的项目加入了开源界。其中有许许多多的知名开源项目被人所认可和追捧。操作系统 Linux,Android,编辑器Vim,Atom,VsCode,版本管理SVN,GIT,数据库Mysql,MongoDB,Redis,大数据平台Hadoop,ES,Hbase,容器Apache,Nginx,虚拟化软件Docker,K8S。这些列出来只是冰山的一个小角而已,还有很多这种耳熟能详的开源软件,他们共同形成了一个完整的开源生态,现在已经渗透到了各行各业。可以这么说,现在你电脑上用的软件,手机里用的app,你的吃住出行的背后,都有开源项目的支撑。没有了开源项目,这个世界根本不是现在这个样子。 + +随着开源协作这种方式越来越被这个世界所认可,有很多的公司和个人开发者也加入了开源大家庭,他们把自己的技术沉淀,解决方案做成开源项目回馈给开源社区。如今的技术界,正因为有了开源,而变得不再是闭门造车,而是呈现出一种百家争鸣,欣欣向荣的景象。 + + + +开源社区的每一个人都有自己的角色,一般一个大型的开源社区有以下几种角色: + +- 开源领导者 +- 开源维护提交者 +- 开源贡献者 +- 开源使用者 + +那开源的宗旨是什么,有七个理念,分别是:完全自主,高度开放,自发自治,自下而上,自由竞争,赢在声誉,社区赋能。 + +那么每个角色在开源社区内,都能有所收获,下面我们就来聊下,不同的角色会有什么样的收获。 + + + +## 开源领导者&开源维护提交者 + +之所以把这2个角色放一起来说,是因为有很多开源项目这2个角色是重叠的。毕竟像Linux那样拥有一整个开源团队的项目还是少数,很多开源项目的团队就几个人,那么领导者又同时是维护者。 + +领导者这个角色,是对于开源项目的事务有着最终话语权的,这个角色能决定开源项目的发展方向,这个角色得为现有的版本和未来的版本作规划,结合使用者的反馈来决定下一版本该上什么样的特性,这个项目最终能达到的高度和解决什么样的问题。作为这层的角色,你需要去从大局观去考虑,作为项目的领导者,能获得的提升是全方位的,从项目所处的专业领域的发展,到每个特性关联的技术方向,再到怎么在社区内进行推广,怎么持续推进项目的进度。这些实际操作的过程累计的经验,能让你在任何一个项目中都能正确分析和决策,游刃有余。 + + + +而作为维护提交者,是可以直接提交代码到主干的人。这个角色得了解这个项目的所有技术细节。担任核心的开发工作。如果你作为这个角色,必须要对你项目中所使用技术有较深的理解,同时还要对项目架构有一定的设计能力。成为这个角色你能获得的提升有以下几点: + +1)对相关技术知识点的全方位掌握和系统化的思考方式。开源项目的用户是开发者,而开发者会把你的项目用于各种场景,这就和公司级项目比较单一化的场景有所不同,所以你必须考虑到更多的层面去设计你的开源项目,也必须更深的掌握相关知识点。 + +2)自主的学习精神。做开源要面对大量不同的场景,同时也要对你选型的其他开源框架有更深入的了解,自主的学习是每一个开源人的特点。 + +3)开放的心态,你对其他开源作品会有一个开放性的认识,能客观的了解开源的现状,社区的情况。 + +4)敢于竞争,开源的理念有一项就是自由竞争,做开源当然是希望自己的项目成为这个赛道里靠前的项目,自然会涉及到竞争,在完全自由化的开源社区,竞争也是一种良性的循环。 + +5)获得声誉,有更多的人来用你的项目,你自然会获得声誉,这是包装自己比较好的一种方式。 + + + +## 开源贡献者 + +贡献者不光是写代码,如果你参与了某个开源项目,除了可以成为committer之外,你还可以帮助用户解答问题,贡献文档,在邮件列表中参与讨论。 + +成为这个角色获得的提升有这些 + +1)通过了解代码细节获得相关知识,成功的开源项目一定是能帮助开发者解决一块领域的问题的,了解作者如何做到这点的细节会对你有帮助。 + +2)通过贡献文档来获得写文档的能力,代码写好不代表你文档就能写的很好,写代码反映的是你用技术解决问题的能力,而写文档反映的是你书面叙述解决方案的能力。 + +3)交流能力,开源项目面对的用户是其他开发者,开源项目的迭代一定是要使用者参与的。正确的处理使用者的反馈,通过交流听取使用者的建议,会使开源项目处于一个正向的循环中。 + + + +## 开源使用者 + +这个角色作为社区成员,他们最有价值的部分是提出需求、报告缺陷、提出建议。 + +作为使用者,获得的提升有这些 + +1)能关注到开源社区新的技术方向,使用者肯定是认可开源这种协作方式的。长期关注开源社区,能让使用者长期紧跟社区最新的技术方向,这也能让你在选型企业级系统中间件的时候有很多选择。 + +2)通过使用开源项目,获得技术的提升。 + +3)通过提出需求,报告缺陷让你企业级项目里的碰到的问题得到快速解决。也能促进开源项目的迭代。等于是贡献了社区。 + + +