| <!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://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?v=1"> |
| <link rel="stylesheet" href="/assets/vendor/prism/prism.css?v=1"> |
| |
| <!--[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.cat.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" onmouseleave="$('#childrenShow').css('display', 'none')"> |
| |
| <li><a href="/cn/docs/quick-start/" 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/developers/contributing">社区</a> |
| |
| </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/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 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-accept-newcapec-institute-code-donation/" rel="permalink">Apache ServiceComb社区接受新开普软件研究院的代码捐赠 |
| </a> |
| |
| </h2> |
| <p class="archive__item-excerpt" itemprop="description">Apache Servicecomb社区接受新开普软件研究院的代码捐赠 |
| </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> |
| <li><a href="/cn/docs/quick-start/">入门指南</a></li> |
| <li><a href="/cn/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>© 2019 Apache ServiceComb. 技术来自于 <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> & <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> |