blob: 3bdd3f903f9669e23cf426fa9e18b17fd405168f [file] [log] [blame]
<!doctype html>
<!--
Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
<html lang="cn" class="no-js">
<head>
<meta charset="utf-8">
<!-- begin SEO -->
<title>Apache ServiceComb带您对话Apache大咖 - Apache ServiceComb</title>
<meta name="description" content="Apache专家现场解读Apache基金会及孵化器运作模式">
<meta name="author" content="Zhen Ju">
<meta property="og:locale" content="cn">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="Apache ServiceComb带您对话Apache大咖">
<link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/cn/docs/talk-to-apache-experts">
<meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/cn/docs/talk-to-apache-experts">
<meta property="og:description" content="Apache专家现场解读Apache基金会及孵化器运作模式">
<meta name="twitter:site" content="@ServiceComb">
<meta name="twitter:title" content="Apache ServiceComb带您对话Apache大咖">
<meta name="twitter:description" content="Apache专家现场解读Apache基金会及孵化器运作模式">
<meta name="twitter:url" content="">
<meta name="twitter:card" content="summary">
<meta name="twitter:creator" content="@">
<meta property="og:type" content="article">
<meta property="article:published_time" content="2018-11-05T00:00:00+08:00">
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Person",
"name" : "Apache ServiceComb",
"url" : "https://github.com/pages/apache/incubator-servicecomb-website",
"sameAs" : null
}
</script>
<meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
<!-- end SEO -->
<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache ServiceComb Feed">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script src="/assets/vendor/prism/prism.js"></script>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<script src="https://www.apachecon.com/event-images/snippet.js"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<!-- For all browsers -->
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="stylesheet" href="/assets/vendor/prism/prism.css">
<!--[if lte IE 9]>
<style>
/* old IE unsupported flexbox fixes */
.greedy-nav .site-title {
padding-right: 3em;
}
.greedy-nav button {
position: absolute;
top: 0;
right: 0;
height: 100%;
}
</style>
<![endif]-->
<meta http-equiv="cleartype" content="on">
<!-- start custom head snippets -->
<!-- insert favicons. use http://realfavicongenerator.net/ -->
<link href="https://fonts.loli.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
<script src="/assets/js/custom.js"></script>
<!-- end custom head snippets -->
</head>
<body class="layout--single">
<!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
<div class="masthead" onmouseleave="$('#childrenShow').css('display', 'none')">
<div class="masthead__inner-wrap">
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
<a class="site-title active" href="/cn"><img src="https://www.apache.org/img/servicecomb.png"></a>
<ul class="visible-links">
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/cn/">首页</a>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/cn/developers/">项目</a>
</li>
<li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')">
<a href="/cn/docs/users/">文档</a>
<ul id="childrenShow" class="def-children-show-cn" onmouseleave="$('#childrenShow').css('display', 'none')">
<li><a href="/cn/docs/getting-started/" class="">入门指南</a></li>
<li><a href="/cn/docs/users/" class="">用户手册</a></li>
<li><a href="/cn/slides/" class="">大咖视频</a></li>
<li><a href="/cn/faqs/" class="">常见问题</a></li>
</ul>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/cn/year-archive/">博文</a>
</li>
<li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
<a href="/cn/release/">下载</a>
</li>
</ul>
<button><div class="navicon"></div></button>
<ul class="hidden-links hidden"></ul>
<div class="nav-lang">
<a href=/docs/talk-to-apache-experts>English</a>
</div>
</nav>
</div>
</div>
</div>
<div id="main" role="main">
<div class="sidebar sticky">
<div class="back-to-home"><a href="/cn/">首页</a> > Apache ServiceComb带您对话Apache大咖</div>
<div itemscope itemtype="http://schema.org/Person">
<div class="author__content">
<h3 class="author__name" itemprop="name">Zhen Ju</h3>
<p class="author__bio" itemprop="description">
Curious about everything~
</p>
</div>
<div class="author__urls-wrapper">
<button class="btn btn--inverse">关注</button>
<ul class="author__urls social-icons">
<li>
<a href="https://github.com/crystaldust" itemprop="url">
<i class="fa fa-fw fa-chain" aria-hidden="true"></i> 网站
</a>
</li>
<li>
<a href="mailto:juzhenatpku@gmail.com">
<meta itemprop="email" content="juzhenatpku@gmail.com" />
<i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> 电子邮箱
</a>
</li>
<!--
<li>
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
<i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
</a>
</li>
-->
</ul>
</div>
</div>
</div>
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="headline" content="Apache ServiceComb带您对话Apache大咖">
<meta itemprop="description" content="Apache专家现场解读Apache基金会及孵化器运作模式">
<meta itemprop="datePublished" content="November 05, 2018">
<meta itemprop="dateModified" content="November 05, 2018">
<div class="page__inner-wrap">
<header>
<h1 class="page__title" itemprop="headline">Apache ServiceComb带您对话Apache大咖
</h1>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
少于 1 分钟 阅读
</p>
</header>
<section class="page__content" itemprop="text">
<h2 id="apache-servicecomb带您对话apache大咖">Apache ServiceComb带您对话Apache大咖</h2>
<p><em>PMC沉睡了怎么办?首次发版项目不一定能够跑起来,甚至不一定能成功编译,一定要先把合规性问题解决!有人给项目提交Patch,我们从来不说“No“!我曾工作过的Cloudera,利用开源赚钱,至少赚到了买下Hortonworks公司的钱……开源微服务项目ServiceComb带您对话Apache大咖,领略Apache专家风采。</em></p>
<p>2018年10月13日下午,开源微服务项目ServiceComb的团队邀请Apache基金会三位专家成员:Apache孵化器主席Justin Mclean,Apache董事会董事Roman Shaposhnik, 以及Apache基金会秘书长兼形象大使Craig Rossell,与国内Apache项目开发者相聚于上海。针对开发者所关心的<strong>Apache精英管理模式</strong>、从<strong>孵化器毕业成为顶级项目</strong>以及<strong>开源软件的商业化</strong>等主题进行了深入的交流。本文对活动当日的交流进行了纪实和总结。</p>
<p>(现场为英文分享,本文对其进行翻译整理和校正归纳)</p>
<hr />
<h3 id="开场介绍">开场介绍</h3>
<p>[姜宁]今天咱们聚集了国内大部分的Apache相关项目的committer,这些项目包括Beam、ServiceComb、Dubbo、Gearpump、Griffin、Kerlin、Skywalking和Weex。这些Apache项目大部分都还在孵化器中孵化,同时还有一些准备进入Apache孵化的项目。</p>
<p>我在2006年9月作为Apache CXF 项目 初始 committer与Apache软件基金会结缘,2011年1月正式成为 Apache基金会成员。我作为基金会项目导师(Mentor)参与了多个来自中国的Apache孵化器项目。2017年,我作为项目负责人推动ServiceComb进入Apache 孵化器进行孵化,现在 ServiceComb已经很快就要从Apache孵化器毕业了。</p>
<p>虽然参与了许多Apache开源项目,坦白地说我对Apache的项目孵化流程并未有系统化全面的理解。直到ServiceComb这个项目,我经历了寻找Mentor,捐赠协议签署,迁移项目,孵化器发版,以及毕业准备这些流程之后,才对Apache孵化器孵化流程有了更加深刻的认识。</p>
<p>就在刚刚的交流中,我发现大家最关心的问题就是如何从Apache孵化器毕业。 我们今天邀请到远道而来的Apache Member,Roman,Justin,Craig,和国内Apache项目开发者一起分享他们有关Apache孵化器孵化经验,以及开源相关的感悟。</p>
<hr />
<h4 id="如何从apache软件基金会孵化器毕业成为顶级项目">如何从Apache软件基金会孵化器毕业成为顶级项目</h4>
<p>[Justin]</p>
<p>从Apache孵化器毕业,首要为孵化项目构建一个社区,项目毕业意味着很多事情,比如要<strong>保持开发者的多样性</strong>,项目贡献者不能仅仅来自一个公司。此外,还应该尝试小版本发布(<strong>make micro releases</strong>)。</p>
<p>[Roman]</p>
<p>发布版本时,除了项目本身,还有许多合规性工作(mechanical stuff)要做,例如开源协议,发版签名,发版投票等等。项目进入孵化器后,要尽快尝试发布第一个版本。许多孵化项目(podling)都想在发布版本时中搞定这样或那样的功能,我总是跟他们说,没关系,<strong>项目不一定能够跑起来,甚至不一定能成功编译,一定要先把合规性问题解决</strong>,然后再专注于功能开发。</p>
<p>[Justin]</p>
<p>没错,要尽早发版、多做发版。</p>
<p>[姜宁]</p>
<p><strong>发布版本尽管痛苦,但是要尽早去做</strong>。ServiceComb在发布第一个版本时,团队也非常痛苦,但是经历过这个阶段,后面会变得越来越顺利。</p>
<p><strong><u>总结:孵化器毕业要点解读</u></strong></p>
<ul>
<li><strong><u>构建社区</u></strong></li>
</ul>
<p><u>ASF一直坚信好的软件是由强大的社区构建出来的。诚然,代码是一个软件社区的重中之重,但Apache之道**”Community over code”**同样强调社区的重要性。它意味着我们的行事方式,如何看待彼此,如何进行决策,甚至如何编写代码。健康、互相尊重的社区非常重要,这不仅让社区的开发者有被尊重的感觉,也会带来切实的好处。一个健康、多样、包容的社区,可以促进项目不断成长,可持续发展。甚至,有助于用开源技术提供服务的公司获得商业上的成功。</u></p>
<ul>
<li><strong><u>保持贡献者多样性</u></strong></li>
</ul>
<p><u>ASF非常强调**多样性原则**。 大部分开源软件项目都是创新型项目,多样性保证了开源项目的持续创新, 也保证了社区的健康发展。 开源项目鼓励所有个体或公司参与, 让他们感觉能对项目有所掌控,或者会对项目产生一定影响。这样可以保证意见的多样性、用户的多样性、系统的的多样性。Apache项目通常是要求有三个以上不同公司的人参与开发,以保证项目不会因为其中某个公司的退出而终止。</u></p>
<ul>
<li>** <u>尽早、尽量多的进行版本发布</u>**</li>
</ul>
<h4 id="对于构建持续增长的社区有何建议">对于构建持续增长的社区,有何建议?</h4>
<p><strong><em>[郑士汉,Weex]:社区建设、多样性对于毕业非常重要,您能给出一些相关建议吗?</em></strong></p>
<p>[Justin]</p>
<p>要让大家觉得自己是受欢迎的。当有人在邮件列表中提问时,我通常会<strong>分配PMC成员关注问题,并咨询提问者是否还需要其他帮助</strong>,或者有其他问题,我把这个作为日常工作。这样也有利于开发者从用户变成提交者甚至PMC成员。<strong>良好的文档可以让大家更容易使用你的项目</strong>。而文档的缺失则可能造成用户的流失,人们编译编译代码,就再也不使用这个项目了,因为项目上手太难了。</p>
<p>[Roman]</p>
<p>良好的文档确实非常重要。此外,我也有其他方面的建议。Apache软件基金会参与了一些项目,吸引了不少开贡献者。我们一直指导Google代码夏令营活动,夏令营由Google赞助,帮开发者更好的发展他们自己的项目。<strong>如果你可以让自己的社区参加类似的活动,对于社区建设无疑是有很大帮助的</strong>。因为大家来自中国的社区,我也建议一些中国的大公司,例如华为,也可以举办类似的学生项目,学生是一个项目最好的新鲜血液。</p>
<p>[Justin]</p>
<p>在会议中分享项目、建立技术博客也是不错的方式。</p>
<p>[吴晟,Skywalking]</p>
<p>Skywalking是中国开发者发起的一个Apache孵化项目,刚加入孵化时只有15个committer,而现在,代码层面的提交者已经达到了70人。我们提倡大家提交小的改动,这样很容易提交代码来做贡献,所以我们每次发布版本都会吸引一些开发者。当我们没有太多精力投入到测试时,我们会吸引开发者来提供测试,他们可以提交集成测试结果,可以提交测试模型,<strong>只要保持正确的编程风格,PMC的成员就可以进行审查,并合并代码</strong></p>
<p>[Justin]</p>
<p>这里我想多提一点,很多项目过于注重质量。有些Apache项目收到一些代码不太完美的提交,就直接丢弃了这些提交,然后自己从头搞起。其实这并没有关系,<strong>如果你收到了不太完美的PR,可以请社区成员帮忙改进质量</strong>。另外,在JIRA或Github上浏览issue时,如果发现一些比较简单的issue,你可以加个”<strong>easy to fix</strong>”标签,告诉大家这个issue比较容易解决,这样也可以吸引人来贡献。</p>
<p>[吴晟]</p>
<p>没错,我们也会跟踪一些讨论,有些时候我们可能会考虑过于理想的方案。但是好的项目有时候并不完全是完美的代码决定的,还要考虑不同的场景。这样项目才能不断壮大。</p>
<p>[姜宁]</p>
<p>我也谈谈自己的感受,我非常赞同Justin所说的“Low the bar”。我在参与Apache Camel项目开发时,它已经非常成熟了,但是我们还采用先提交后Review的方式进开发。 有很多人为Camel提交Patch,<strong>我们从来不说“No”</strong>。有些人提交的代码质量可能并不太好,我们还是会接受这些补丁,让贡献者觉得自己得到认可。这样,开发者就不会想“啊,我还不够优秀,还无法成为committer,我提交的补丁也不够好,那我还是不提交补丁了。” <strong>在我们合入代码时候,也会顺道帮助修复一下补丁上面的问题</strong>。 顺便说一句,Apache Camel现在有200多个组件,目前项目只有大概4,5个人在维护,很大程度上是得益与这种降低社区门槛的方式。</p>
<p><strong><u>总结:构建社区的建议</u></strong></p>
<ul>
<li><strong><u>让大家觉得自己是受欢迎的。</u></strong></li>
<li><strong><u>编写良好的文档,降低初学者入门难度。</u></strong></li>
<li><strong><u>参与或组织类似Google代码夏令营的学生项目。</u></strong></li>
<li><strong><u>在技术会议中分享项目经验,建立技术博客传播技术。</u></strong></li>
<li><strong><u>提倡小的改动,乐于接受他人的贡献,乐于帮助改进质量,让开发者更容易参与社区贡献。</u></strong></li>
</ul>
<h4 id="项目的提交者和pmc成员不够活跃我应该怎么办">项目的提交者和PMC成员不够活跃,我应该怎么办?</h4>
<p><strong><em>[史少锋,Kerlin]:有些开发者成为提交者后就消失了,有时候PMC成员也不能非常及时的审查提交,有没有什么规则推动大家活跃起来?</em></strong></p>
<p>[Justin]</p>
<p>我觉得提交者或者PMC成员不活跃并不是问题,不是所有人都必须活跃。但是如果项目的导师不活跃就是问题了,因为导师要指导项目,告诉项目成员正确的做事方法。我们没办法为提交者和PMC成员制定“(及时反馈的)规则”,这样对他们要求太高了。<strong>我们应该降低门槛,让更多人参与进来</strong></p>
<p>[Roman]</p>
<p>通常,每个项目的PMC都有VP(Vice President),VP主要负责合规性相关的工作,向Apache董事会汇报,但是VP也要担当起项目的领导者角色。<strong>即便所有其他PMC成员都在沉睡,VP也是唯一要保持清醒的人</strong>。VP是默认的那个要回答问题的人,当然不是技术相关的问题,而是回答管理流程相关的问题。如果邮件列表无人响应,你要写信给VP,告诉他,“嘿,大家似乎都睡着了,我们应该怎么办呢?”。VP有权利做出改变,他可以组织大家开始审查提交,让大家醒过来。</p>
<p><strong><u>总结:PMC沉睡了怎么办</u></strong></p>
<ul>
<li><strong><u>Apache基金会是个公益组织,不能通过强制要求来约束成员。</u></strong></li>
<li><strong><u>可以通过降低门槛,让更多人可以参与进来,解决社区响应不及时的问题。</u></strong></li>
<li><strong><u>VP承担项目领导责任,要时刻保持活跃。遇到问题可以向VP寻求帮助</u></strong></li>
</ul>
<p><u>在Apache软件基金会的组织结构中,Apache董事会根据基金会的管理原则,负责管理和监督对外合作的商业和事务,包括基金、知识资产、注册商标等。每个Apache项目都有一个PMC(项目管理委员会),负责项目的管理和监督,并定期向Apache董事会汇报项目情况。PMC有一位主席(Chairperson),也被称为该项目的Vice President,简称VP。VP由董事会指定,是董事会和项目之间的接口人,负责项目汇报、同时与PMC一同保证项目和代码遵从法规、管理商标事务、管理邮件列表等合规性问题,发展新的Committer和PMC成员。</u></p>
<h4 id="发版投票过程漫长如何保持正确的发版姿势">发版投票过程漫长,如何保持正确的发版“姿势”?</h4>
<p><strong><em>[张天伦,Gearpump]:发版投票需要经过至少72+72个小时,过程非常漫长,又担心犯错误导致投票过少进而导致发版失败。并且,有时候发起投票,响应的人比较少。</em></strong></p>
<p>[Justin]</p>
<p>犯一次错误没关系,可以向导师寻求帮助以避免重复多次犯错误。<strong>在开始的一两次发版中,有一些错误很正常,但是后续的版本发布就会越来越顺利</strong>。如果发版时响应人数比较少,可以直接在邮件列表中提醒孵化器项目管理委员会(IPMC)成员,特别是导师,进行投票。</p>
<p>[Roman]</p>
<p>我想大家对敏捷开发都比较熟悉,敏捷开发提倡小幅度的改动,多进行更新。如果你的项目遵循敏捷开发方式,将对版本发布大有裨益。我指导项目孵化时,除了首次发版需要在合规性方面花费很多时间,后面的版本尽量在每个月或每两个月发布一次,新版本不一定要加入很多功能,每月发一次版本,更容易让IPMC的成员审查新版本的变动。因此,<strong>首次发版,解决合规性问题,然后尽快发版,多做发版</strong></p>
<p>[Justin]</p>
<p>另外,可以将新版本改动写入版本说明中,可以让审查工作变得轻松很多。</p>
<p>[Roman]</p>
<p>没错,小幅度迭代也可以帮你构建社区。社区贡献者提交的补丁越小,越容易进行审查。</p>
<p><strong><u>总结:在Apache孵化器发布版本的要点</u></strong></p>
<ul>
<li><strong><u>不要担心在发版时犯错误,大胆的向导师和IPMC成员寻求帮助,但要避免犯重复的错误</u></strong></li>
<li><strong><u>借鉴敏捷开发模式,小版本迭代,频繁更新</u></strong></li>
<li><strong><u>首次发版扫除一切合规性问题,后续版本专注功能和质量</u></strong></li>
<li><strong><u>让版本更新更容易审查</u></strong></li>
</ul>
<h4 id="如何使用开源软件进行商业化">如何使用开源软件进行商业化?</h4>
<p>[Roman]</p>
<p>开源商业化的模式是多种多样的。红帽(RedHat)就是一个很成功的例子,他们用开源收益颇丰。也有一些新的公司,例如我曾工作过的Cloudera,利用开源赚钱,至少赚到了买下Hortonworks公司的钱(众人笑)。</p>
<p>我大致可以列出3种开源商业化的模式。首先,几乎所有云服务厂商都使用开源产品,将其<strong>变成服务</strong>来进行营利,这就是一个很常见的商业化模式。例如,我很惊喜地看到华为云的流服务使用了Apache Flink,这就是华为使用开源盈利的方式。</p>
<p>另外一种比较传统但应用广泛的商模式,<strong>以开源软件为核心构建产品,并提供额外的组件和技术</strong>。这些额外的部分不一定是开源的。例如你的产品可以用Apache项目作为核心,然后加入GPL协议的组件,再加上一些私有的组件,然后就可以像微软出售Windows系统,或者Adobe出售Adobe Creative Suite那样盈利了。</p>
<p>第三种商业化模式,就是<strong>基于开源软件提供差异化的集成服务或者解决方案</strong>。将开源软件集成为一个更大的系统,提供给客户以进行营利。你可以运营一个专业的服务公司,用开源软件帮助用户简化业务。例如,你的公司服务于酒店或工厂,帮他们实现自动化运维。客户并不在乎你用什么软件或技术,他们只关心端到端的方案能够顺利实施。你的公司使用开源软件,可以按照自己的需求进行优化,也避免了收费的商业软件侵占你的利润。</p>
<p>[Craig]</p>
<p>在培训行业,经常有公司需要培训自己的员工来学习、使用Apache软件。我们曾短暂的考虑过和商业公司合作提<strong>供培训服务</strong>,然后与商业公司分享利润。但是这个念头只是一闪而过就被我们否决了,这样会与提供Apache软件培训服务的人形成竞争,这样有悖于Apache厂商中立的原则。所以,<strong>如果你想通过开源软件培训来盈利,大胆去做,这也是一个不错的开源商业化模式</strong></p>
<p><strong><u>总结:开源商业化的几种方式</u></strong></p>
<ul>
<li><strong><u>用开源软件提供服务,例如那些云服务厂商</u></strong></li>
<li><strong><u>基于开源软件提供额外的收费功能</u></strong></li>
<li><strong><u>利用开源软件提供集成服务,并提供商业支持</u></strong></li>
<li><strong><u>开展开源软件的培训服务</u></strong></li>
</ul>
<hr />
<h3 id="活动尾声">活动尾声</h3>
<p>经过一番深入的沟通和交流,现场的开发者对Apache基金会、基金会的精英管理模式、Apache孵化器的运作模式都有了进一步的了解。在meetup活动的最后,三位Apache专家带领现场所有开发者进行了“Apache问答”小游戏。问答题目由Justin编写,公布在网站https://rawgit.com/justinmclean/ApacheQuiz/master/compiled/index.html 上,问题有不同的难度等级,涉及Apache基金会的管理模式、Apache开源协议、版本发布注意事项、三方软件集成等。三位专家与开发者一起答题,并对题目进行了风趣幽默的解读。最终,活动在一片欢笑声中结束,三位专家与开发者进行合影留念。</p>
<p><img src="/assets/images/apache-developers-gathering-shanghai.jpg" alt="apache-developers-gathering" /></p>
<hr />
<h3 id="关于apache-servicecomb">关于Apache ServiceComb</h3>
<p>Apache ServiceComb是一个开源微服务框架,旨在使开发人员能够高效、方便的构建和管理微服务应用。该项目源于华为云微服务引擎CSE,借鉴和继承了华为诸多微服务实践经验,于2017年5月开源并在同年11月捐赠给Apache软件基金会。历经近一年的孵化,ServiceComb从微服务软件开发套件发展成为完整的微服务解决方案,用户数迅速增长,并获得了来自企业和社区开发者的广泛支持。2018年10月24日,ServiceComb从Apache孵化器顺利毕业成为顶级项目。</p>
<h3 id="关于apache基金会">关于Apache基金会</h3>
<p>Apache软件基金会是一个成立于1999年的非盈利慈善组织,英文名称 Apache Software Foundation,简称 ASF,最早源于开发Apache HTTP服务器的一个爱好者组织“Apache组织”。经过近20年的发展,Apache软件基金会已成为世界上最大的开源基金会,负责监管350多个免费的企业级项目和1.9亿多行的代码,它们作为主干支撑着全球广泛使用的应用程序。</p>
<h3 id="加入apache开发者社区">加入Apache开发者社区</h3>
<p>Apache软件基金会作为全球最大的开源软件基金会,其独特的精英治理模式和社区文化得到了全球无数开发者的青睐。如果读者有意加入Apache社区,参与Apache开源项目贡献,<strong>可以参考《<a href="http://servicecomb.apache.org/cn/developers/becomming-a-commiter">如何成为commiter</a>》,了解Apache基金会的管理模式,以及《<a href="http://servicecomb.apache.org/cn/docs/how-to-grow-up-to-be-an-apache-committer">从开源小白到Apache Commiter</a>》,体会开发者成长为commiter的心路历程。期待在Apache社区见到更多中国开发者的身影,我们,社区见!</strong></p>
</section>
<footer class="page__meta">
<p class="page__taxonomy">
<strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> 标签: </strong>
<span itemprop="keywords">
<a href="/tags/#apache" class="page__taxonomy-item" rel="tag">Apache</a><span class="sep">, </span>
<a href="/tags/#meetup" class="page__taxonomy-item" rel="tag">Meetup</a><span class="sep">, </span>
<a href="/tags/#%E5%BE%AE%E6%9C%8D%E5%8A%A1" class="page__taxonomy-item" rel="tag">微服务</a>
</span>
</p>
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> 最新的:</strong> <time datetime="2018-11-05">2018年11月5日</time></p>
</footer>
<section class="page__share">
<h4 class="page__share-title">分享</h4>
<a href="https://twitter.com/intent/tweet?via=ServiceComb&text=Apache ServiceComb带您对话Apache大咖 /cn/docs/talk-to-apache-experts" class="btn btn--twitter" title="分享 Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://www.facebook.com/sharer/sharer.php?u=/cn/docs/talk-to-apache-experts" class="btn btn--facebook" title="分享 Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://plus.google.com/share?url=/cn/docs/talk-to-apache-experts" class="btn btn--google-plus" title="分享 Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=/cn/docs/talk-to-apache-experts" class="btn btn--linkedin" title="分享 LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>
<nav class="pagination">
<a href="/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai-Report/" class="pagination--pager" title="Apache ServiceComb Meetup -Shanghai 2018.10.12 Report (PPT Download)
">向前</a>
<a href="/cn/docs/opensource-project-is-not-so-far-away/" class="pagination--pager" title="开源项目没有那么遥远
">向后</a>
</nav>
</div>
<div class="page__comments">
<section id="static-comments">
<!-- Start static comments -->
<div class="js-comments">
</div>
<!-- End static comments -->
<!-- Start new comment form -->
<h4 class="page__comments-title">留下评论</h4>
<p class="small">您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/apache/incubator-servicecomb-website/master">
<div class="form__spinner">
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">正在加载...</span>
</div>
<fieldset>
<label for="comment-form-message">评论 <small class="required">*</small></label>
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">Markdown语法已支持。</a></div>
</fieldset>
<fieldset>
<label for="comment-form-name">姓名 <small class="required">*</small></label>
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
</fieldset>
<fieldset>
<label for="comment-form-email">电子邮箱 <small class="required">*</small></label>
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
</fieldset>
<fieldset>
<label for="comment-form-url">网站(可选)</label>
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</fieldset>
<fieldset class="hidden" style="display: none;">
<input type="hidden" name="options[slug]" value="talk-to-apache-experts">
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
</fieldset>
<!-- Start comment form alert messaging -->
<p class="hidden js-notice">
<strong class="js-notice-text"></strong>
</p>
<!-- End comment form alert messaging -->
<fieldset>
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">提交评论</button>
</fieldset>
</form>
<!-- End new comment form -->
</section>
</div>
</article>
<div class="page__related">
<h4 class="page__related-title">猜您还喜欢</h4>
<div class="grid__wrapper">
<div class="grid__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline">
<a href="/cn/docs/playing-on-the-open-source-community-with-Apache-ServiceComb-GDUT/" rel="permalink">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</a>
</h2>
<p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
少于 1 分钟 阅读
</p>
</article>
</div>
<div class="grid__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline">
<a href="/cn/docs/servicecomb-service-center-client/" rel="permalink">使用ServiceComb客户端轻松调用ServiceCenter
</a>
</h2>
<p class="archive__item-excerpt" itemprop="description">使用ServiceComb客户端轻松调用ServiceCenter
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
2 分钟 阅读
</p>
</article>
</div>
<div class="grid__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline">
<a href="/cn/docs/playing-on-the-open-source-community-with-Apache-ServiceComb-BUPT/" rel="permalink">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</a>
</h2>
<p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
少于 1 分钟 阅读
</p>
</article>
</div>
<div class="grid__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
<h2 class="archive__item-title" itemprop="headline">
<a href="/docs/servicecomb-accept-newcapec-institute-code-donation/" rel="permalink">Apache ServiceComb Accept Code Donation From NewCapec Institute
</a>
</h2>
<p class="archive__item-excerpt" itemprop="description">Apache ServiceComb Accept Code Donation From NewCapec Institute
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
少于 1 分钟 阅读
</p>
</article>
</div>
</div>
</div>
</div>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<div align="center" style="margin: 0 0;">
<ins class="adsbygoogle"
style="display:block; border-bottom: initial;"
data-ad-client="ca-pub-7328585512091257"
data-ad-slot="3049671934"
data-ad-format="auto"></ins>
</div>
<div class="page__footer">
<footer>
<!-- start custom footer snippets -->
<!-- end custom footer snippets -->
<div class="container">
<div class="row justify-content-md-center">
<div class="col">
<ul>
<p class="header">活动</p>
<a class="acevent" data-format="square" data-mode="dark" data-event="random"></a>
</ul>
</div>
<div class="col">
<ul>
<p class="header">资源</p>
<li><a href="/cn/docs/getting-started/">入门指南</a></li>
<li><a href="/cn/docs/users/">用户指南</a></li>
<li><a href="/cn/slides/">资料</a></li>
<li><a href="/cn/users/faq/">常见问题</a></li>
</ul>
</div>
<div class="col">
<ul>
<p class="header">ASF</p>
<li><a href="http://www.apache.org">基金会</a></li>
<li><a href="http://www.apache.org/licenses/">许可证</a></li>
<li><a href="http://www.apache.org/events/current-event">活动</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">赞助</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">鸣谢</a></li>
</ul>
</div>
<div class="col">
<ul>
<p class="header">贡献</p>
<li><a href="http://issues.apache.org/jira/browse/SCB">报告本网页问题</a></li>
<li><a href="https://github.com/apache/servicecomb-website/edit/master/_posts/cn/2018-11-05-talk-to-apache-experts.md">在Github上编辑此页</a></li>
<li><a href="/cn/developers/submit-codes/">代码提交指南</a></li>
<li><a href="/cn/security">安全</a></li>
</ul>
</div>
<div class="col">
<ul class="social-icons">
<p class="header">社区</p>
<li>
<a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">邮件列表</span></a>
</li>
<li>
<a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a>
</li>
<li>
<a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
</li>
<li>
<a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
</li>
</ul>
</div>
</div>
</div>
<div class="page__footer-bottom">
<div>&copy; 2024 Apache ServiceComb. 技术来自于 <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
<div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>
</footer>
</div>
<script src="/assets/js/main.min.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-101622733-1', 'auto');
ga('send', 'pageview');
</script>
<script>
(function ($) {
var $comments = $('.js-comments');
$('#new_comment').submit(function () {
var form = this;
$(form).addClass('disabled');
$('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> 正在加载...');
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
$('#comment-form-submit').html('已提交');
$('.page__comments-form .js-notice').removeClass('notice--danger');
$('.page__comments-form .js-notice').addClass('notice--success');
showAlert('感谢您的评论!被批准后它会立即在此站点展示。');
},
error: function (err) {
console.log(err);
$('#comment-form-submit').html('提交评论');
$('.page__comments-form .js-notice').removeClass('notice--success');
$('.page__comments-form .js-notice').addClass('notice--danger');
showAlert('很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。');
$(form).removeClass('disabled');
}
});
return false;
});
function showAlert(message) {
$('.page__comments-form .js-notice').removeClass('hidden');
$('.page__comments-form .js-notice-text').html(message);
}
})(jQuery);
</script>
</body>
</html>