林旅强:“开发者生态建设,开源社区运营和治理”

2017-05-23 林旅强 云计算开源产业联盟 云计算开源产业联盟

点击上方“云计算开源产业联盟”可以订阅哦

 

由工业和信息化部指导,中国信息通信研究院主办,业界知名组织云计算开源产业联盟(OSCAR)承办的2017全球云计算开源大会于4月19日-20日在北京国家会议中心顺利召开。本文为本届大会嘉宾分享的大会演讲速记内容,敬请浏览。 


嘉宾介绍


林旅强


公司职务:华为技术有限公司社区经理

 


大会演讲速记

 


各位下午好,我是林旅强,目前在华为开发者社区担任运营经理,很荣幸受到主办方OSCAR邀请在“开源治理分论坛”中分享我的观点和经验。今天题目是“开发者生态建设、开源社区运营和治理”,现在许多公司都在讲“生态”,但大家对于“开发者生态”一词可能不见得特别熟悉,我就由大家熟悉的产业生态历史讲起。

这几家公司大家都看过、这些年代大家也都经历过。为什么开发者决定赢家?我们都记得,在PC时代,微软Windows在桌面领域大获全胜,Windows的用户多、开发者也多,使得微软直到今天都掌握着PC的生态。这个例子说明了,开发者生态的建立,开源未必是关键,微软当年就是闭源,关键是开发者相信这个平台拥有最多的用户,能在这个生态中得到商业机会。

接下来到互联网时代,国外的谷歌、Facebook和亚马逊,国内有百度、阿里、腾讯等,也是利用各自的领域,积累了大量用户,并且吸引了许多开发者加入其生态圈。这个阶段,互联网公司开始利用OpenAPI和Open Source来使开发者粘在他的平台和生态,例如谷歌提供Google Map的API让其他网站服务进行调用,同时也建设Google Code将其开源项目提供给开发者。

移动时代,苹果,谷歌大获全胜,等下细讲。还有目前正在迅速发展的行业,IoT也好,AI也好,甚至还有一些我们还看不到,很遥远。未来5到10年后的产业会是如何?哪些公司会获胜?开发者将决定赢家。开发者采用了怎样的技术和产品作为应用的基础建设?这个生态就是关键。

开发者如何帮助企业致胜?来看看移动时代。移动时代初期有这六个生态在竞争,智能手机领先者苹果、基于Linux发展的安卓、当年北美商务人士首选的黑莓,W3C推出的HTML5、跨苹果安卓操作系统的开发平台,以及微软的Windows Phone。

为什么最后得胜的是前两者?首先,因为开发者创造了“技术需求”。开发者首要考虑的还是用户基础和变现:我在哪个平台用户最多?推出App最容易成功?我就花时间学这个平台的技术。同时,开发者也会从技术面考虑:开发工具是否易学易用?技术发展是否具有先进性,能否引领下一代技术发展,成为可长可久的通用技术领域?因此,“技术需求”就是从商业成功和技术前景这两方面所创造的。

接着,“竞争壁垒”则是从各家竞争到寡占过程中的马太效应,一个生态吸引了越多的开发者,就会产出越多的应用,越多应用就可以更好的服务消费者、引来更多消费者,又吸引更多开发者进入这个生态来分一杯羹。世界上的开发者数量有限,他们决定加入哪个公司或技术的生态,就决定了这个开发者生态的竞争壁垒有多强。

事后诸葛,我们知道苹果和安卓得胜了,一个闭源、一个开源,都获胜了,再次说明,开发者生态的建立,开源不是万灵丹,但从技术发展的脉络来看,开源无疑是吸引开发者日渐重要的手段。企业需要思考的是,为什么我们要开源?若要,怎样应用开源,或者怎么样联合开源加闭源来获胜。

以安卓为例,它创造了一个商业变现的环境。开发者在安卓上发行的APP可以赚到钱,又可以闭源,同时安卓操作系统本身还是开源的,使得安卓可以在移动时代中拥有了PC时代Windows的局势,硬件厂商预装多、用户多,开发者自然蜂拥而至。

相较于Windows,安卓的优势就是开源,站在巨人的肩膀上,运用Linux核心快速发展移动操作系统,又确保了开发者的商业利益,不需要承担开源义务。这与主讲前面两位专家毕春丽主任和林诚夏老师讲的开源协议很有关系。例如,一般的Linux发行版本,如果其中有预装的APP,基于GPL协议规范,这些APP就必须开源;但是安卓运用Linux时进行了巧妙的分层设计,局限GPL的适用范围,使得最上层的App可以用闭源方式预装和发行。此外,开源也让硬件厂商更愿意使用,使用安卓操作系统并不用付授权金给谷歌,也没有盗版问题,比Windows友善多了。

技术的选用也跟技术趋势和开发者的认知有关。微软投入操作系统多年,理论上投入手机操作系统,它应该很强,Windows Phone在移动大潮中起步虽然不算太晚,但发展的速度却比较慢,一方面不如苹果的早,二方面又有开源安卓的竞争,并没有让开发者感受和相信微软即将引领未来的技术风骚。

相较之下苹果和安卓就比较早,又让开发者相信有市场发展性和技术领先性,所以一开始就有创造技术和竞争壁垒的优势。因此,企业面对众多技术发展,要考虑先拿到哪些新技术领域的入场券?企业要先做投资,不能设定马上赚钱的短期目标,因为这个想法,它就会只聚焦在大客户和项目交付,在开发者生态的发展速度反而可能会迟缓。

从开发者生态系统来讲,不论是开源Open Source或是开放能力OpenAPI都是手段,每个企业的定位、战略、发展脉络和市场环境也有许多不同,要看这个生态系统的环境如何以及有哪些角色。讲抽象一点,如果我要在一块地上造出一片热带雨林,或者是复育破坏后的雨林,就要想想,要创造什么样的环境、土壤、气候,才有可能形成热带雨林?甚至从它的纬度判断不在热带、绝对无法形成雨林也很好,至少不会白费力气。也要考虑里面该有哪些动植物种?亚马逊雨林与爪哇雨林的生态肯定也有差异。

所以这页PPT说明的是,我们在生态系统中要去识别角色,这个角色要能帮助我们引入高价值开发者。我们也要识别应该面向哪些类型的开发者,提供什么开源或开放能力来解决他们的痛点,通过社区运营及与开发者互动,牵引高价值开发者成为核心开发者,让他们忠诚于、喜欢于使用企业的工具和产品,这群人将会是公司最好的代言人和传播者。以华为的说法,我们的核心开发者就是“不带工卡的华为人”。

此外,要让开发者们觉得加入这个生态有前途。就像前面智能手机的例子,黑莓就可能让开发者觉得跟着它好像没有前途。为什么?因为它主打北美高端商务人士,若我是做手游的,宁可做安卓,有更多的消费者都能使用到我的APP,而且它还是谷歌的产品,谷歌本身就展现了技术高度,这已经是它的品牌印象。因此,所谓开发者生态的建设,并不是只看重开发工具性能和体验的优化,最重要的是要有前(钱)途、能解决痛点,还有技术品牌的价值提升和开发者口碑的强化。

图中的三个圈子分别是核心区、延伸区和外围区。其中的角色只是举例,不代表是华为开发者生态圈的定位,每个公司的生态可能会有不同的角色,并且被放在不同的圈子里面。这个模型帮助我们思考,到底要选择哪些角色进行合作或牵引,理清角色的功能和与公司的目标后,我们要从社区运营来找到路径,要优先引入哪方面的开发者,后引入那些的角色?

每一个角色在都有它的定位和意义,譬如说以华为来讲,我们最重要的可能是在ISV独立软件开发商。为什么?华为一直以来都是卖盒子的,在近年来的ICT数字化转型和被集成战略之下,通过了能力开放平台,提供各种各样的服务和API,让一些合作伙伴集成、调用我们的服务和能力到他的产品和解决方案中,我们的合作伙伴赚了钱,华为才能够赚钱,所以我们就可以把这些拎出来,了解到这一些开发者。我们的开发者就是指合作伙伴里面的开发人员,了解ISV的走向和需求,我们才能够形成一个引入的路径。

其他像是顾问,独立开发者和服务提供商等等的,很重要,但可能不是在这么核心的位置,更外围的比如说孵化器,媒体,或是社区、论坛组织者,虽然放在外围,但在某些阶段,他们非常重要,它是创造多元生态的一个点,生态不会只有大象也有蚂蚁。对于某些企业,尤其是2B的企业,它可能觉得蚂蚁没那么重要,大象比这重要,蚂蚁不知道有多少才能够让我们吃饱。这个思维的转变,也跟公司的价值观、战略规划和KPI设定有很大的关系。

这里有两个英文字,Advocate和Evangelist都是重要的角色。Advocate指的是挂工卡的布道师,可能是由售前、解决方案或是技术支持的人员担任,代表公司对外进行技术宣传和技术品牌的打造;Evangelist则是核心开发者,不挂工卡的华为粉,他们会宣讲基于实际使用华为产品和能力的经验,解决了我什么问题;因为有华为,所以我的项目可以落地,可以做得很好,其它公司的技术和方案则可能无法做到,于是形成一个活广告和行业背书。许多公司都有Evangelist,比如谷歌有GDE,微软有MVP,都行之有年了,相较之下,国内公司大多还在考虑或是刚起步尝试阶段。

回到开源社区。我从2009年开始在台湾中央研究院进行开源相关的研究,领域包含知识产权、商业模式、社区运营和开源治理等,同时也参与台湾开源技术社区的实际组织运作。很多人初次听说开源社区时都很纳闷,为什么有人会投入自己的时间贡献到社区里,也没人付他薪水,是闲着没事干吗?我自己一开始也有想过这个问题。

研究过程中发现,开源社区之所以源自于欧美,是因为欧美的环境跟土壤比较合适开源生态的形成。举个现实的例子,他们不用为了买车买房娶老婆,然后就苦逼的当程序员,把所有时间都拿来赚钱。在财务压力相对较小,而且生活质量没有太大问题的时候,就有发展兴趣的空间,所以很多开发者一开始是基于兴趣投入到开源社区。同时,互联网是开源社区重要的基础建设,欧美程序员是最早使用互联网的人类,加上不愿意重复造轮子的黑客文化和开放自由的风气,也产生了马太效应,雪球就这么滚动了。

相信你多少也听过Linus Torvalds、Richard Stallman等知名黑客的故事。我今天发现一个技术问题跟痛点,通过互联网讨论,如果解决了这个痛点,我也分享出来。当年还在读大学的Linus也一样,他就在网上讲,我想做个小巧有趣的操作系统,并且时刻都把项目开发进展秀出来嘚瑟,并欢迎协作,于是有更多人加入他一起来做。这样的环境和文化,可能在现在的中国还没那么蓬勃。

开源方法论的核心价值,第一是解决痛点。成功的开源社区,并具有产业影响力的,都是因为解决那个时代中的刚需和痛点。Linux能够兴盛,是因为当时主流的操作系统都是私有化的闭源软件,而Linux是一个好的解决方案,又是开源,它解决了一个时代痛点。第二,开源不仅不用钱、进入障碍低,还“弱化所有权”;以前的免费软件,所有权还是在公司或组织上,我没有权利拿这个代码去进行开发;但开源软件只要符合许可证要求,就是自由免费,海纳百川,开发者们都进来之后,他在社区里面也有很强的归属感,因为有一部分代码就是我的贡献。如果各位在运营社区或产品时使用了开源的方法论,你一定要想办法“弱化所有权”,让社区成员有强烈的参与感,让社区成员安利更多成员进来。

开源方法论大家都能用,有时候同一个痛点也会有不同的技术和产品彼此竞争,光开源也不见得有竞争力。例如iOS和安卓开发语言和工具,只有少数的人愿意花时间两个都学精,所以如果今天你的生态够大,开发者已经用了你的技术,他懒得再选另外一个。语言也和开源技术一样,有其生态。就像我能讲中文和英文,要再让我学西班牙文就更没有动力了,我觉得没必要,我讲英文就够了。所以我只要让大家参与进来,大家觉得这就是我的语言,不只是英国人,美国人、加拿大人、印度人,甚至我自己也觉得英文可以是我的语言,而且我讲英文还不用付英国专利许可费。这同样是开源。

开源方法论的激励机制,第一是“使用”,要先有人把这个项目用起来,形成一定的用户群体,进行讨论和交流;这里的用户经常也是开发者。第二是“创作”,如果没有人用这个东西来做创作,它的解决方案和发展性就会很少。第三是“协作”,协作的概念是什么?我不用合作而用协作是因为,合作往往是要达成共识在一起开干,但协作则是不见得要有清楚的共识,大方向差不多就可以动起来了,甚至即使意见相左,开源也允许大家分支,用自己认可的方式来开发,最终谁搞得好谁就被大家点赞。第四是“互助”,在社区运作的过程中,不懂、不会和不知道的人,通过互联网找到可能的解决方案,与社区成员进行交流,社区成员也热爱分享信息,就是第五点“分享”,雪球就滚起来了。

今天不论是开源,开放API,还是闭源技术和产品,如果它能以开源方法论达到这些点,就是致胜关键,如果是开源的会比较水到渠成,闭源的就要想办法去创造条件和环境。激励机制使得开发者群体和生态之间产生黏性、惯性、忠诚,这是一步一步运营下来的,发挥群众力量跟意见,再引入更多开发者,生态逐步扩张,并形成障碍,其他厂商就更难进来了。

以开源方法论建立良好的开发者生态,需要有一个Developer Program开发者计划来落地。我这里的计划分为四部分“开放性”、“使能平台”、“开发者推广”和“开发者运营”。

“开放性”的部分就是要清楚我们开放了什么,把Open Source和OpenAPI陈列出来只是第一步,还必须清楚说明这些项目和能力能解决什么问题,有什么案例可以佐证;开发者想试用时,则在“使能平台”中提供相关工具、SDK、样例代码,简明易读且完备的教学和说明文档,当然,有实验室和调测环境是最好不过的了。

在“营销推广和社区运营”的部分则是要打造一个让开发者可以互相交流的环境,例如社区论坛、技术交流会,国内大家常用的微信群或QQ群也是一种方式,国外则有使用Slack或Facebook Group来达到交流目标。开发者如果想学习相关技术,开发者计划中也需要提供培训,不论是Step by Step的CodeLab自学服务还是由专业讲师进行的培训课程,都要想办法让开发者不犹豫就投入学习。学成后,我们可以引导开发者通过编程活动如黑客马拉松和开发者大赛等让他们实践,做出Demo。在学习和开发过程中有问题时,也可以通过官方支持和社区支持渠道来解决问题。

在这个表中,我们选出了Top5最受开发者赞扬和最有力支撑。这是开发者最在意的部分,也是开发者计划的重点。简单说就是提供好的工具,干货内容,免费资源(例如云计算、培训认证等)和开发者奖励。但别忘了,一切都要以你创建的生态真的能让开发者能赚到钱、解决开发者痛点、有技术未来性和发展性为前提,不然这些都是空的。

换个角度,让我们以客户为中心,站在开发者的立场来体验一个开发者计划。首先第一个是发现,发现有很多渠道和方式,我可能上CSDN或开源中国看到某个帖子分享,我可能在InfoQ开发者大会的展位看到听到了一个技术研究,甚至是在朋友圈或是某个程序员群里面看到某个微信文章,介绍了一个他感兴趣的技术和工具。第二步是安装工具,如果安装工具过程很烦,或者出错,他就不装了。第三步是装完以后必须学习相关技术。第四个是识别任务,有哪些任务跟痛点要去识别,并且解决,因为我用这个东西可能想解决一些问题。第五个是得到支持,在使用过程当中,一定有问题,这个支持来自于第三方支持,尤其有社区支持会比只有官方支持更好,原因是有人愿意免费的帮你去做支持,一方面分担了支持工作,二方面分享互助的氛围会使得这个社区更有人味儿,当然,官方支持肯定还是要的,就保留给VIP和商业合作的客户。最后,开发者经历这些后若觉得满意了,就会推荐给其他开发者。

站在公司的立场,我们把开发者计划依照它engage开发者的阶段,每一步拆解出来,到底这一些东西我们要怎么样去做,才能确保这个开发者引入之后,它会逐渐的往下一步走。称为AAARRRP模型。

第一步“认知度”就是营销推广和品牌工作,譬如我们在媒体和IT社区发软文、硬广、EDM等,到开发者展会进行技术分享、展位宣传,做SEO提升社区流量,在第三方技术问答网站引入开发者等等措施,目的就是曝光,提升社区知名度。第二步“获取”,就是让开发者注册账号,并下载我们相关工具,并且接连着第三步“激活”,让开发者真的先用起来第一次。这个是最关键的一步。

开发者第一次尝试使用我们的产品工具,一定要易学易用,才能留下好印象。我一个朋友听说我在华为开发者社区,就自己到社区逛逛,发现有一个发短消息的API,他首次试用,经过简单的引导和使用,短消息就发出来了,未来他就可能会考虑把这个功能在他的APP里调用。

这里有个词叫做DX,Developer eXperience,开发者体验;衡量DX的指标最重要的是TTFHW,Time To First Hello Wold,就是首次试用、成功操作到最后、得到所谓“Hello World”的结果所花费的时间,当然是越短越好。这儿写小于15分钟只是举例,每一种不同的API的Hello World时间不一定;但是简单的功能,如果他在15分钟内没有办法成功的试过一次,他基本上就不会走到下一个“留存”的阶段了。

引导开发者从“激活”到“留存”的阶段,我们就要提供各种SDK、API导览、快速入手、引导文档、代码样例、IDE和实验室环境等各种帮助。“留存”则是说要通过培训、论坛、认证,把开发者真的留下来,所以我们要了解用户到底是谁、需求是什么,让他在开发过程中得到帮助、坚持下去,提升能力、得到认证,就能进入“收益”阶段。

“收益”是关键。我们要先确认,在这个生态里面,开发者要能够赚钱,能够解决问题。他不能赚钱跟解决问题的话,你的工具再方便,体验再好,他也不会来用。所以我们必须展出一些成功的应用案例,办理开发者大赛,用实质的计划鼓励他,他赚到钱之后才会在行业里面“推荐”,同时我们还可以“获取”跟“激活”更多推荐来的开发者。

“参与”阶段未必是每个生态必备的。有一些产品,如果它是开源的,或者打算招募外部开发者进来,他们就会参与到产品的建立过程。例如华为的Apache CarbonData项目对外招募开发者一起来把大数据的项目一起做好,因为开源了,所以它也属于大家的。于是开源项目在开发过程中就可以得到开发者的,不用等到做出来后才来听开发者的反馈。小米的“参与感”这本书就在讲这个。

华为开发者社区在2016年启动了一个项目,叫做HDG华为开发者汇,英文是Huawei Developers Gathering,定位是针对华为价值开发者的统一活动平台。从“汇”和“Gathering”这个字都能看出,我们办理活动,目的是在汇聚开发者,进而连接开发者与华为,产生一个生态。开发者们聚在一起,我们不仅是派出华为的专家一起讨论技术,我们也让在华为开发者生态中的开发者们分享他是如何运用华为提供的能力和资源来取得项目的成功。让华为和开发者们连成一个网,形成社区。

同时,HDG也不只是技术交流会,我们也举办Workshop让开发者们可以在一起学习、使用华为的产品,并通过黑客马拉松讲大家的创意落地为Demo和项目的原型。除此之外,华为开发者社区也有开发者大赛、开发者培训认证、开发者论坛和开发者支持中心,让开发者在华为的生态中能够端到端的体验、交流、学习、开发和支持。

很多人告诉我,活动太多了,不差你华为办的。我告诉他们,坊间活动多,但干货少,有价值的人更少。HDG的价值不在办活动,而在华为的价值开发者。这些人能聚在一起,并且产生归属感,激发创新的解决方案和项目,创造商业价值,这才是真正有意义。

为了让我们的合作伙伴和开发者们了解华为有哪些能力,我们在今年三月在长沙举办的华为生态伙伴大会中,出台了《华为能力开放白皮书》,针对华为云计算、IoT、企业云通信、视频监控eLTE宽带集群、企业移动安全、和大数据等七个生态圈的能力开放进行了介绍,大家也可以关注华为开发者社区网站和微信,可以下载到白皮书,也有许多内容可以参考。

最后,我以这三句话作为结尾。

软件吞噬世界”,这句话蛮让我感同身受的。一直以来做硬件、卖盒子的华为,早明白这个趋势,与其被吞噬,不如拥抱ICT数字化转型。下一句,与其说“开源吞噬软件”,不如说开源软件才是开发者更需要的、也是发展生态的关键手段。除了软件之外,连硬件、数据、内容版权等都有走向开源的趋势,例如Open Hardware, Open Data, Creative Commons等。

最后一句是什么?“社区胜于代码”。我觉得更重要的是很多公司还没有重视的是“代码哪儿来的?”代码是人创造的,这些人哪儿来的?可能是公司,可能是个人,例如Linux核心的代码有75%是公司贡献的,25%是个人贡献的。也有很多开源项目是个人贡献的,所以要搞清楚你的生态和产品的定位,评估你需要引入哪些开发者形成社区,让社区与企业一同协作,你的生态才有可能成功,成为公司的利器。因此,我觉得这是很重要的一个结束语。

我相信在场的朋友们对于开发者生态建设和社区运营都有兴趣,今天因时间限制,我只能唱独角戏。虽然会后我们也不一定每个人都聊到,但我希望后续能和大家持续交流,这里左边是华为开发者社区的微信公众号,右边是我个人的微信。除此之外,如果在场有华为的ISV合作伙伴,或是您有一些可能合作的项目,也请您联系我们,开发者生态的目的,当然还是要转化成公司与合作伙伴的双赢共利。今天的演讲很高兴大家听到这边,再次谢谢大家