关于开源的认知,笔者目前还在比较粗旷的阶段,本文仅结合了对开源概念的基本理解,浅谈项目经理眼里的开源是怎样的。(一个不懂技术的非代码贡献者,是如何看开源的)
一、我理解的开源
---想到开源,我的脑海中会浮现的关键词有:开放、共享、源代码、社区、Apache项目、GitHub、贡献者、用户 等等;那么,让我们一起聊聊它们吧。
开源
开源(Open Source)全称为开放源代码,具有开放/共享的理念和能够流传久远的潜质(这是我认为的两大特点),它的主要协作者被称为“程序员”。
从代码诞生以来,“程序员”是一个伟大的词,他们也有一个更好的称呼 叫 “工程师”。为什么说程序员很伟大呢(甚至非常神奇),因为觉得 他们所创造的“代码”,改变了世界的模样。比如,我打字的电脑,通讯的卫星,以及手机电话等,它们的实现 都离不开一串串的代码。也请试想一下,如果没有代码,没有程序,那么我们现在的世界会是怎样?
从代码诞生以来,“开源”和“闭源”被称为了两个有争议的词。闭源,会使代码所实现的功能会具有竞争力,也为创造者带来应有的收益;开源,具有开放/共享的特质,允许更多的人参与到优秀作品的创造,从而使“开源”之路 走的更宽 也更稳。综上,开源和闭源 其实都是非常重要的部分,它们共同促进了源代码的发展。
为什么我觉得“开源”具有流传久远的潜质呢?试想一下,开源 需要非常多的参与者,但是他们的技术水平参差不齐,这就使得 开源要不断降低参与成本,来让更多人更快融入进来,直到“全民coding”的时代到来!
开源社区
源代码本身是以独立的功能/软件为载体出现在用户面前的,当我们想让更多的人参与进行时,“开源社区”就扮演了重要的角色。-----开源社区是承载开源代码和和开源文化的土壤。
开源项目实践
举一个例子:Apache APISIX
Apache APISIX 是一个优秀的开源项目。和传统网关相比,它是一个动态、实时、高性能的 API 网关,具有更加丰富的流量管理功能(比如南北向流量处理 灰度发布 服务熔断等)。和其他项目对比,它成长的速度更快,从开始孵化到毕业仅用了1年多的时间;同时,近两年时间里 新增了超过300位的代码贡献者。(可以说是既厉害 又有潜质的项目了~)
-
它的治理模式:
-
设有自己的项目管理委员会(PMC),保证了项目的基本秩序;
-
成员来自不同国家的企业或组织,社区组成具有多元化,也使项目受众群体更广;
-
使用 Apache License 2.0 为开源许可证(一种允许免费商用的开源协议),代码托管在 GitHub 平台(大家可以灵活coding和相互讨论)。
-
大家可以通过代码、文档、布道等方式为社区做贡献,并通过贡献获得属于自己的影响力和个人成长(角色由 contributor 成长为 committer、PMC的过程,也是非常有趣的)。
-
企业版的探索
企业版是开源版的拓展,一方面它能更好的面向企业市场,去服务更多的人/组织;另一方面拓展后会有新需求/实践案例来丰富开源,进而形成反哺,最终完成相互成就。(每个开源用户的任何自定义行为,本质上都是自己的企业版)
开源带来了什么
一个好的“产品”,一定是服务于社会的。我们看下“开源” 为个人、组织、以及源代码的发展 分别带来了什么
-
为用户/组织 带来了无边界的技术交流
-
开源资讯和答疑
-
开源解决方案、更好的服务/产品
-
-
为贡献者带来了学习和实践的机会
-
解决问题的思路,学习成长的机会,工作机遇,人际圈等
-
开源项目(积累社区经验)、影响力、成就感等
-
-
为源代码发展 带来了人才、高质量代码、高实践项目
保证了源代码的高质量自我迭代---沉淀了大量开源项目的实践经验,和无数开源用户的灵感&素材&bugfix等
二、项目经理可以做哪些社区贡献
---开源之果实,是集众多贡献者的智慧成果。它不仅需要代码贡献者参与,同样也需要众多非代码贡献者的参与。这里 我们来看下非代码贡献者可以从哪些方面做贡献,并举例项目经理结合“专业”领域 可以尝试的贡献方法。
非代码的贡献方式
-
写文章/做视频:
比如撰写某个项目的上手指南、踩坑记录、谈谈对开源的看法等等。
-
做翻译
将优秀的文章翻译成不同语言,可以帮助更多的人参考学习;(只要是对这个项目有意义,都是在为它做贡献。)
-
布道&分享
尝试和身边的人交流分享,或者在一些大会上布道开源&开源项目;(分享也可以锻炼自己的表达能力、逻辑思维能力,还可以锻炼自己的胆量~)
-
文档完善
文档是其他人了解项目、上手项目的重要途径,我们可以帮助补充和完善社区的各类文档,甚至尝试搭建一个更好的“知识库”;(这也是一种对小白特别友好的行为)
- 参与社区讨论/开源项目
如果你对一个项目/活动很感兴趣,可以参与到社区的日常交流&活动;(举例Apache APISIX,有:GitHub社区(github.com/apache/apisix)、Slack、QQ群(578997126)、邮件互动等等,里面会有很多的分享、答疑,如 社区周会,技术交流,定期活动)
-
建设本地社区/发起开源项目
如果没有本地社区,你可以作为发起人建设本地社区;( Apache 软件基金会鼓励大家建设 Local Community,比如 ALC Beijing。像其他的技术社区,如:KubeSphere、云原生社区都在积极发展本地社区)
如果觉得一个idea非常棒,也可以尝试发起开源项目。
我为什么要参与贡献
-
个人角度
-
更深入的了解开源项目、开源社区---为个人开源知识学习 提供思考方向和实践经验;
-
参与&组织与开源相关的活动/项目等---可以积累到项目经验、人脉、新的实践与认知;
-
获得更多可能性&机遇---开源背后所代表的源代码开放是一种非常棒的概念,因为它代表着你可以站在巨人的肩膀上看世界,也可以站在每个普通人的视角去感受他们的思维;透过开源,你将拥有更多的可能性!
-
开源角度
开源是一个需要集体参与的“项目”,并非只有贡献代码、修复 bug 才是为开源做贡献。它需要各种行业,各类职业的人来不断丰富它的内容,最终才能让开源走的更远;
比如 产品经理可以思考如何更好的打磨它,架构师可以讨论它的技术框架,UI/UE/设计者可以给出让GitHub更友好的提议、运营可以让社区保持活跃、项目经理可以帮助发起/组织开源项目……等等
结合专业领域,项目经理可以尝试的贡献方式
-
开源之土壤(社区):帮助完善社区制度和服务体系
在评价一个社区好坏的时候,我们不仅看它的上限,也要看它的底限;换言之,一个社区需要基本的准则,才能走的更长远;在这里项目管理者可以发挥在流程管理方面的特长 帮助完善社区制度和服务体系等; -
开源之种子(用户/贡献者):帮助用户/贡献者更好的解决问题和实现自我价值
-
“任务管理”:主动收集贡献者遇到的实际问题 及跟进解决,并对重大issue做定期的回顾复盘;
-
“活动组织”:发起或组织布道 分享 交流会,帮助贡献者排忧解惑,指引方向;
-
发掘“新项目”:组织或寻找更多开源项目/活动,为社区成员提供更多实践机会;(高校活动,企业招聘等 在社区提供更多实践机会----比如“开源之夏”活动)
-
-
开源之果实(源代码/开源文化):帮助传播开源文化和开源知识等
-
源代码的标准化建设;(比如 issue/PR的收集、分析和处理,帮助issue归类 提升解决效率 FAQ规范等)
-
帮助搭建和完善开源的“知识库”和“文化库”,将开源知识、开源文化、开源人员事迹等 进行更好的文档化规范,传播出去,传承下来;
-