说起GitHub,资深开发者可能都如数家珍。
作为全球***的社交编程及代码托管网站,GitHub以其开创性的软件开发方式,吸引了大量程序员和开源项目入驻。“Social Coding(社交化编程)”是其引以为傲的特性。
如果你的代码属于开源项目,那公布到GitHub的好处不言自明。全世界的开发者都能帮你Review代码,帮你扩展功能。哪怕萍水相逢也没关系,只要他们对这个项目感兴趣即可。
从技术上讲,在GitHub为一个项目贡献代码非常简单。点击项目首页的“fork”按钮,然后将修改后的代码加入到刚才保存的代码库中,***通过“pull request”机制向项目负责人申请代码合并。只要项目负责人同意,别人递交的代码就在主库中生效了。
GitHub的***执行官Chris.Wanstrath说过:“在我理想的世界里,协同工作将比独立工作简单的多。在那个世界中,软件开发会是一个充满欣喜的过程,我认为GitHub正在推进这一愿景的实现。”
OK,一群陌生人为了同一个目标协同工作的确很Cool,但那些私有项目怎么办?比如那些不便公开,只能在同事之间交流的代码。
有的朋友可能会说了,可以购买GitHub的Private repositories(私有仓库)版本啊。
那我们的代码特别敏感,而且我们公司有防火墙屏蔽GitHub怎么办?
在上海站的华为开发者沙龙上,讲师们不约而同的提到了一个名叫“GitLab”的东西。
GitLab是一个自托管的开源仓库软件。和GitHub的用法类似,程序员只要会Git这样的版本控制系统,就可以轻松管理自己的代码。它还提供问题列表、Wiki等功能,并且支持Markdown,相当于内网版本的GitHub。
听上去不错,很多创业公司都部署了这个GitLab。这样既不用在GitHub上花钱买私有仓库,又可以享受Git一贯的便捷体验,安全度还很高。
But……
我们是一个追求开发效率的大厂怎么办?我们不光要托管和维护大量的代码,还要让开发人员更有积极性,让整个生产环境更加智能化……那就不是单纯装一个GitLab能做到的了。
这时,华为的架构师又向大家提出了一个“内源平台”概念。
在参加华为上海站的开发者沙龙之前,笔者也没听过“内源平台”的说法。
经过华为的几个讲师布道后终于明白,原来他们说的“内源”是指在内部开放的闭源代码平台,或者说是专门对内的“开源”。
原来,他们的理念是“用开源的方式做内部开发平台“。
乍一听好像没什么,但再认真想一下GitHub的***亮点就明白了 。和传统的内部开发平台相比,Social Network对开发者的激励作用太强了。你的代码只有你的组长或老板看时,你可能只是应付一下差事;而你的代码被一群人看,一群人讨论,甚至一群人修改时,那这劲头就完全不是一个量级了 —— Yep, you are the Rockstar.
华为就是这样干的。
据了解,华为现在有两套内源平台,分别叫做“Code Club”和“iSource”,几乎都引入了 “Social Coding”概念,其创始人分别是胡智勇和庄表伟。
比如路由器研发团队在内源平台上公布了一套代码,防火墙团队的开发者看到后发现有可以扩展的地方,马上就可以把自己实现的功能代码递交过去。然后路由器团队的负责人经过审核发现这个功能很好,就可以合并到主库。这个递交代码的防火墙团队开发者ID也将被加到这套代码的贡献者列表里。
又或者防火墙团队的开发者想要加入一个新功能,看到路由器研发团队已经实现了。那这个时候他完全可以直接把代码拿过来用,避免重复开发,加快研发进度。
按照iSource创始人庄表伟的说法,内源平台的一个重要的作用就是互通有无,降低研发成本。
当然,除了“Social Coding”之外,华为的内源平台还和生产环境紧密连接。比如智能的软件测试,自动化部署,持续集成等等。这就不再是简单的GitLab可以搞定了,至少得二次开发或是重构,以达到“GitLab plus”级别。
看到这里大家可能已经明白了,“内源”也是可以做成一个生态的。
目前,华为的“Code Club”已有17,000+用户,14,000+项目仓库,并且对接到公司其他研发工具平台和系统。而“iSource”支持的都是动辄2000人以上的Big Team,发展势头也很迅猛。其“内源”热度可见一斑。
两套平台虽然有相似之处,但两个创始人打造产品的风格倒是完全不同。胡智勇倾向于“自下而上“的变革,而庄表伟更倾向于“从上而下”的推进。当然,两人都是在为内源开发更有效率、更有活力这一愿景在努力,各有各的好处。
需要注意的是,这样的内源平台比较适合产品线较多的大中型企业。出于成本和复杂度的考虑,可能不太适合产品线较少的创业型公司。毕竟这么有意思的平台,人多才能玩的起来。
用开源的方式做内源,不仅要在技术方面下功夫,还要运营和沟通等方面花很多心思。如何说服各团队开放自己的代码,如何设定内部访问的权限,如何顶住高并发,如何奖励那些贡献度较高的员工,如何让平台把大量用户和不同的生产环境连接在一起……这都是值得探讨的问题。
内源之路并不平坦。用Code Club创始人胡智勇引述的一句《马太福音》来说:“引到永生,那门是窄的,路是小的,找着的人也少。”
但我们不能轻易放弃,对吗?
华为开发者社区