2018年10月13日下午,开源微服务项目ServiceComb的团队邀请Apache基金会高管,与国内Apache项目开发者相聚于上海。针对开发者所关心的主题进行了深入的交流。讨论问题主要包括:

  • 如何从Apache软件基金会孵化器毕业成为顶级项目
  • 对于构建持续增长的社区,有何建议?
  • 项目的提交者和PMC成员不够活跃,我应该怎么办?
  • 发版投票过程漫长,如何保持正确的发版“姿势”?
  • 如何使用开源软件进行商业化?

下面提到的嘉宾分别为:

Justin Mclean,Apache孵化器主席
Roman Shaposhnik,Apache董事会董事
Craig Russell,Apache秘书长
姜宁,Apache CXF项目作者,Apache ServiceComb项目负责人
吴晟,Apache Skywalking项目作者
史少锋,Apache Kylin核心开发者兼PMC
张天伦,Apache Gearpump项目committer

姜宁:今天咱们聚集了国内大部分的Apache相关项目的committer,这些项目包括Beam、ServiceComb、Dubbo、Gearpump、Griffin、Kerlin、Skywalking和Weex。这些Apache项目大部分都还在孵化器中孵化,同时还有一些准备进入Apache孵化的项目。

我在2006年9月作为Apache CXF 项目初始 committer与Apache软件基金会结缘,2011年1月正式成为 Apache基金会成员。我作为基金会项目导师(Mentor)参与了多个来自中国的Apache孵化器项目。2017年,我作为项目负责人推动ServiceComb进入Apache 孵化器进行孵化,现在 ServiceComb已经很快就要从Apache孵化器毕业了。

虽然参与了许多Apache开源项目,坦白地说我对Apache的项目孵化流程并未有系统化全面的理解。直到ServiceComb这个项目,我经历了寻找Mentor,捐赠协议签署,迁移项目,孵化器发版,以及毕业准备这些流程之后,才对Apache孵化器孵化流程有了更加深刻的认识。

就在刚刚的交流中,我发现大家最关心的问题就是如何从Apache孵化器毕业。 我们今天邀请到远道而来的Apache Member,Roman,Justin,Craig,和国内Apache项目开发者一起分享他们有关Apache孵化器孵化经验,以及开源相关的感悟。

如何从Apache软件基金会孵化器毕业成为顶级项目

Justin:从Apache孵化器毕业,首要为孵化项目构建一个社区,项目毕业意味着很多事情,比如要保持开发者的多样性,项目贡献者不能仅仅来自一个公司。此外,还应该尝试小版本发布(make micro releases)。

Roman:发布版本时,除了项目本身,还有许多合规性工作(mechanical stuff)要做,例如开源协议,发版签名,发版投票等等。项目进入孵化器后,要尽快尝试发布第一个版本。许多孵化项目(podling)都想在发布版本时中搞定这样或那样的功能,我总是跟他们说,没关系,项目不一定能够跑起来,甚至不一定能成功编译,一定要先把合规性问题解决,然后再专注于功能开发。

Justin:没错,要尽早发版、多做发版。

姜宁:发布版本尽管痛苦,但是要尽早去做。ServiceComb在发布第一个版本时,团队也非常痛苦,但是经历过这个阶段,后面会变得越来越顺利。

总结:孵化器毕业要点解读

构建社区
ASF一直坚信好的软件是由强大的社区构建出来的。诚然,代码是一个软件社区的重中之重,但Apache之道”Community over code”同样强调社区的重要性。它意味着我们的行事方式,如何看待彼此,如何进行决策,甚至如何编写代码。健康、互相尊重的社区非常重要,这不仅让社区的开发者有被尊重的感觉,也会带来切实的好处。一个健康、多样、包容的社区,可以促进项目不断成长,可持续发展。甚至,有助于用开源技术提供服务的公司获得商业上的成功。

保持贡献者多样性
ASF非常强调多样性原则。 大部分开源软件项目都是创新型项目,多样性保证了开源项目的持续创新, 也保证了社区的健康发展。 开源项目鼓励所有个体或公司参与, 让他们感觉能对项目有所掌控,或者会对项目产生一定影响。这样可以保证意见的多样性、用户的多样性、系统的的多样性。Apache项目通常是要求有三个以上不同公司的人参与开发,以保证项目不会因为其中某个公司的退出而终止。

尽早、尽量多的进行版本发布

对于构建持续增长的社区,有何建议?

Justin:要让大家觉得自己是受欢迎的。当有人在邮件列表中提问时,我通常会分配PMC成员关注问题,并咨询提问者是否还需要其他帮助,或者有其他问题,我把这个作为日常工作。这样也有利于开发者从用户变成提交者甚至PMC成员。良好的文档可以让大家更容易使用你的项目。而文档的缺失则可能造成用户的流失,人们编译编译代码,就再也不使用这个项目了,因为项目上手太难了。

Roman:良好的文档确实非常重要。此外,我也有其他方面的建议。Apache软件基金会参与了一些项目,吸引了不少开贡献者。我们一直指导Google代码夏令营活动,夏令营由Google赞助,帮开发者更好的发展他们自己的项目。如果你可以让自己的社区参加类似的活动,对于社区建设无疑是有很大帮助的。因为大家来自中国的社区,我也建议一些中国的大公司,例如华为,也可以举办类似的学生项目,学生是一个项目最好的新鲜血液。

Justin:在会议中分享项目、建立技术博客也是不错的方式。

吴晟:Skywalking是中国开发者发起的一个Apache孵化项目,刚加入孵化时只有15个committer,而现在,代码层面的提交者已经达到了70人。我们提倡大家提交小的改动,这样很容易提交代码来做贡献,所以我们每次发布版本都会吸引一些开发者。当我们没有太多精力投入到测试时,我们会吸引开发者来提供测试,他们可以提交集成测试结果,可以提交测试模型,只要保持正确的编程风格,PMC的成员就可以进行审查,并合并代码。

Justin:这里我想多提一点,很多项目过于注重质量。有些Apache项目收到一些代码不太完美的提交,就直接丢弃了这些提交,然后自己从头搞起。其实这并没有关系,如果你收到了不太完美的PR,可以请社区成员帮忙改进质量。另外,在JIRA或Github上浏览issue时,如果发现一些比较简单的issue,你可以加个”easy to fix”标签,告诉大家这个issue比较容易解决,这样也可以吸引人来贡献。

吴晟:没错,我们也会跟踪一些讨论,有些时候我们可能会考虑过于理想的方案。但是好的项目有时候并不完全是完美的代码决定的,还要考虑不同的场景。这样项目才能不断壮大。

姜宁:我也谈谈自己的感受,我非常赞同Justin所说的“Low the bar”。我在参与Apache Camel项目开发时,它已经非常成熟了,但是我们还采用先提交后Review的方式进开发。 有很多人为Camel提交Patch,我们从来不说“No”。有些人提交的代码质量可能并不太好,我们还是会接受这些补丁,让贡献者觉得自己得到认可。这样,开发者就不会想“啊,我还不够优秀,还无法成为committer,我提交的补丁也不够好,那我还是不提交补丁了。” 在我们合入代码时候,我们也会顺道帮助修复一下补丁上面的问题。 顺便说一句,Apache Camel现在有200多个组件,目前项目只有大概4,5个人在维护,很大程度上是得益与这种降低社区门槛的方式。

总结:构建社区的建议

  • 让大家觉得自己是受欢迎的。
  • 编写良好的文档,降低初学者入门难度。
  • 参与或组织类似Google代码夏令营的学生项目。
  • 在技术会议中分享项目经验,建立技术博客传播技术。
  • 提倡小的改动,乐于接受他人的贡献,乐于帮助改进质量,让开发者更容易参与社区贡献。

项目的提交者和PMC成员不够活跃,我应该怎么办?

史少锋:有些开发者成为提交者后就消失了,有时候PMC成员也不能非常及时的审查提交,有没有什么规则推动大家活跃起来?

Justin:我觉得提交者或者PMC成员不活跃并不是问题,不是所有人都必须活跃。但是如果项目的导师不活跃就是问题了,因为导师要指导项目,告诉项目成员正确的做事方法。我们没办法为提交者和PMC成员制定“(及时反馈的)规则”,这样对他们要求太高了。我们应该降低门槛,让更多人参与进来。

Roman:通常,每个项目的PMC都有VP(Vice President),VP主要负责合规性相关的工作,向Apache董事会汇报,但是VP也要担当起项目的领导者角色。即便所有其他PMC成员都在沉睡,VP也是唯一要保持清醒的人。VP是默认的那个要回答问题的人,当然不是技术相关的问题,而是回答管理流程相关的问题。如果邮件列表无人响应,你要写信给VP,告诉他,“嘿,大家似乎都睡着了,我们应该怎么办呢?”。VP有权利做出改变,他可以组织大家开始审查提交,让大家醒过来。

总结:PMC沉睡了怎么办

  • Apache基金会是个公益组织,不能通过强制要求来约束成员。
  • 可以通过降低门槛,让更多人可以参与进来,解决社区响应不及时的问题。
  • VP承担项目领导责任,要时刻保持活跃。遇到问题可以向VP寻求帮助

在Apache软件基金会的组织结构中,Apache董事会根据基金会的管理原则,负责管理和监督对外合作的商业和事务,包括基金、知识资产、注册商标等。每个Apache项目都有一个PMC(项目管理委员会),负责项目的管理和监督,并定期向Apache董事会汇报项目情况。PMC有一位主席(Chairperson),也被称为该项目的Vice President,简称VP。VP由董事会指定,是董事会和项目之间的接口人,负责项目汇报、同时与PMC一同保证项目和代码遵从法规、管理商标事务、管理邮件列表等合规性问题,发展新的Committer和PMC成员。

发版投票过程漫长,如何保持正确的发版“姿势”?

张天伦:发版投票需要经过至少72+72个小时,过程非常漫长,又担心犯错误导致投票过少进而导致发版失败。并且,有时候发起投票,响应的人比较少。

Justin:犯一次错误没关系,可以向导师寻求帮助以避免重复多次犯错误。在开始的一两次发版中,有一些错误很正常,但是后续的版本发布就会越来越顺利。如果发版时响应人数比较少,可以直接在邮件列表中提醒孵化器项目管理委员会(IPMC)成员,特别是导师,进行投票。

Roman:我想大家对敏捷开发都比较熟悉,敏捷开发提倡小幅度的改动,多进行更新。如果你的项目遵循敏捷开发方式,将对版本发布大有裨益。我指导项目孵化时,除了首次发版需要在合规性方面花费很多时间,后面的版本尽量在每个月或每两个月发布一次,新版本不一定要加入很多功能,每月发一次版本,更容易让IPMC的成员审查新版本的变动。因此,首次发版,解决合规性问题,然后尽快发版,多做发版。

Justin:另外,可以将新版本改动写入版本说明中,可以让审查工作变得轻松很多。

Roman:没错,小幅度迭代也可以帮你构建社区。社区贡献者提交的补丁越小,越容易进行审查。

总结:Apache孵化器发布版本的要点

  • 不要担心在发版时犯错误,大胆的向导师和IPMC成员寻求帮助,但要避免犯重复的错误
  • 借鉴敏捷开发模式,小版本迭代,频繁更新
  • 首次发版扫除一切合规性问题,后续版本专注功能和质量
  • 让版本更新更容易审查

如何使用开源软件进行商业化?

Roman:开源商业化的模式是多种多样的。红帽(RedHat)就是一个很成功的例子,他们用开源收益颇丰。也有一些新的公司,例如我曾工作过的Cloudera,利用开源赚钱,至少赚到了买下Hortonworks公司的钱(众人笑)。

我大致可以列出3种开源商业化的模式。首先,几乎所有云服务厂商都使用开源产品,将其变成服务来进行营利,这就是一个很常见的商业化模式。例如,我很惊喜地看到华为云的流服务使用了Apache Flink,这就是华为使用开源盈利的方式。

另外一种比较传统但应用广泛的商模式,以开源软件为核心构建产品,并提供额外的组件和技术。这些额外的部分不一定是开源的。例如你的产品可以用Apache项目作为核心,然后加入GPL协议的组件,再加上一些私有的组件,然后就可以像微软出售Windows系统,或者Adobe出售Adobe Creative Suite那样盈利了。

第三种商业化模式,就是基于开源软件提供差异化的集成服务或者解决方案。将开源软件集成为一个更大的系统,提供给客户以进行营利。你可以运营一个专业的服务公司,用开源软件帮助用户简化业务。例如,你的公司服务于酒店或工厂,帮他们实现自动化运维。客户并不在乎你用什么软件或技术,他们只关心端到端的方案能够顺利实施。你的公司使用开源软件,可以按照自己的需求进行优化,也避免了收费的商业软件侵占你的利润。

Craig:在培训行业,经常有公司需要培训自己的员工来学习、使用Apache软件。我们曾短暂的考虑过和商业公司合作提供培训服务,然后与商业公司分享利润。但是这个念头只是一闪而过就被我们否决了,这样会与提供Apache软件培训服务的人形成竞争,这样有悖于Apache厂商中立的原则。所以,如果你想通过开源软件培训来盈利,大胆去做,这也是一个不错的开源商业化模式。

总结:开源商业化的几种方式

  • 用开源软件提供服务,例如那些云服务厂商
  • 基于开源软件提供额外的收费功能
  • 利用开源软件提供集成服务,并提供商业支持
  • 开展开源软件的培训服务

关于Apache基金会

Apache软件基金会是一个成立于1999年的非盈利慈善组织,英文名称 Apache Software Foundation,简称 ASF,最早源于开发Apache HTTP服务器的一个爱好者组织“Apache组织”。经过近20年的发展,Apache软件基金会已成为世界上最大的开源基金会,负责监管350多个免费的企业级项目和1.9亿多行的代码,它们作为主干支撑着全球广泛使用的应用程序。

座谈会:Apache基金会那些事儿相关推荐

  1. “为什么中国没有Apache基金会这样的组织?”

    "世界不能没有开源","开源正在杀死软件开发","开源不过是一些理想主义者的美梦","你开源我赞美,要我开源我不干".关 ...

  2. Oracle将NetBeans交给了Apache基金会

    NetBeans社区博客宣布,Oracle正提议将NetBeans平台和IDE的开发委托给Apache基金会,"开放治理模型",并重申了对这个项目的承诺. \\ NetBeans现 ...

  3. Skywalking 结束孵化,成为 Apache 基金会顶级项目

    百度智能云 云生态狂欢季 热门云产品1折起>>>   来自 Apache Skywalking 官方的消息,Apache 基金会宣布 Skywalking 结束孵化,成为基金会顶级项 ...

  4. 所以Apache基金会不受美国法律约束?

    开源中国昨天发布的一篇文章<开源界也要注意,Apache 基金会与 GitHub 都受美国法律约束>引发了开源届乃至整个 IT 行业的热烈讨论,其中有个别声音认为文章的说法有误,甚至制造了 ...

  5. Apache基金会正式宣布新一代分布式对象存储Ozone成为顶级项目

    刚刚获悉,Apache基金董事会通过一致表决,正式批准分布式文件对象存储Ozone从Hadoop社区孵化成功,成为独立的Apache顶级开源项目.这意味着,作为腾讯大数据团队首个参与和主导的开源项目, ...

  6. Apache 基金会宣布 Apache Kylin 成为顶级项目

    Apache软件基金会宣布Apache Kylin成为顶级项目 Apache Kylin是可扩展到PB规模的开源分布式大数据分析引擎,已被应用在eBay,Exponential, 京东,美团,明略数据 ...

  7. Apache 基金会创始成员访谈录 ———— 回顾 Apache 20年历程!

    引言 刚刚过去的2019年是 Apache 基金会成立的20周年,来自Apache 基金会的Sally Khudairi搞了一件事,那就是找找当年的创始成员,除了祝贺之外,就是想听听这些人是持什么样的 ...

  8. 现在Easy Scheduler想贡献给Apache基金会,我们做了一份问卷看下大家的想法,也请大家积极参与,谢谢!

    感谢各位伙伴们长期以来的持续关注和贡献,现在Easy Scheduler想贡献给Apache基金会,我们做了一份问卷看下大家的想法,也请大家积极参与,谢谢! https://wj.qq.com/s2/ ...

  9. apache 基金会 project 概述

    ==================================================== Ambari 是一种基于Web的工具,支持Apache Hadoop集群的供应.管理和监控.A ...

最新文章

  1. java中super用来定义父类,Java中super的几种用法及与this的区别
  2. 【面试 spring】【第七篇】spring的问题
  3. python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
  4. 很气很气——在python中切换selenium中的窗口
  5. jfinal 获得 webapp 文件下文件路径
  6. Android之Camera预览
  7. Python入门——运行python的两种方式变量常量
  8. VC++多线程--进程间通信
  9. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors
  10. java 启动参数 配置_Java运行参数设置
  11. python 安卓库_Python 开发安卓Android及IOS应用库Kivy安装尝试
  12. win10添加uefi linux引导,win10 ubuntu双系统:UEFI GPT和Legacy MBR引导模式
  13. 手机浏览器点击标签出现蓝色背景解决方法
  14. JPS(Jump Point Search)寻路及实现代码分析
  15. 蓝桥杯科学素养刷题和分析
  16. Linux下service xxx start/stop/restart启动服务、关闭服务、重启服务深入理解@
  17. 韩松手机摄影笔记第八课--手机人物摄影
  18. 人工智能 --- Python求解线性和非线性规划问题
  19. 人类算力天花板?1750 亿参数的 AI 模型 GPT-3 引爆硅谷
  20. SpringBoot-端点详解

热门文章

  1. Android 线程池概念及使用
  2. Java泛型中extends T和super T的区别?
  3. STM32初学Keil4编译时出现 Error:Failed to execute 'BIN40/Armcc'
  4. Android自定义View全解
  5. python数据挖掘主要特点_python数据挖掘(从数据集中抽取特征)
  6. Shell引用-逻辑判断
  7. android6.0进入Material Design时代
  8. uniapp处理IOS底部横条安全区域
  9. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
  10. 软工实践第四次作业——团队展示