说到GitHub,资深开发者可能不陌生。作为全球最大的社交编程和代码托管网站,GitHub以其开创性的软件开发方式吸引了大批程序员和开源项目。“SocialCoding(社交编程)”是其引以为豪的特色。如果你的代码属于开源项目,那么将其发布到GitHub的好处是不言而喻的。全世界的开发者都可以帮你审查代码,帮你扩展功能。偶遇无所谓,只要对这个项目感兴趣就行。从技术上讲,向GitHub上的项目贡献代码非常简单。点击项目首页的“fork”按钮,然后将修改后的代码添加到刚刚保存的代码库中,最后通过“pullrequest”机制向项目负责人申请代码合并。只要项目负责人同意,别人提交的代码就会在主库中生效。克里斯。GitHub最高主管Wanstrath表示:“在我理想的世界里,一起工作会比独立工作简单得多。在那个世界里,软件开发将是一个充满欢乐的过程。我认为GitHub正在推动这一愿景的实现。”好吧,一群陌生人为同一个目标一起工作很酷,但是那些私人项目呢?比如那些不方便公开的代码,只能在同事之间交流。有些朋友可能会说,你可以买个GitHub的Privaterepositories(私有仓库)版本,如果我们的代码特别敏感,我们公司有防火墙屏蔽GitHub怎么办?是一个自托管的开源仓库软件,类似GitHub的用法,程序员只要会Git这样的版本控制系统,就可以轻松管理自己的代码,同时提供issue列表和wiki等功能,支持Markdown,相当于内网版的GitHub,听起来不错,很多创业公司都部署了这个GitLab,这样一来,你不用花钱在GitHub上建私有仓库,还可以享受一贯的Git便捷体验,安全性还是很高的。但是……如果我们是追求开发效率的大厂呢?我们不仅要托管和维护大量的代码,还要让开发者更有动力,让整个生产环境更加智能……那不是简单安装一个GitLab就能实现的。这时,华为的架构师向大家提出了一个“内源平台”的概念。在参加华为上海站的开发者沙龙之前,笔者从未听说过“内源平台”这个词。经过华为几位讲师的讲道,我终于明白了,他们所说的“内源”指的是内部开放的闭源代码平台,或者说是完全内部的“开源”。原来他们的理念是“使用开源作为内部开发平台”。乍一听好像没什么,但再仔细想想,就明白GitHub的亮点了。与传统的内部开发平台相比,SocialNetwork对开发者的激励过于强烈。当你的代码只被你的组长或老板阅读时,你可能只是处理差事;但是当你的代码被一群人阅读,被一群人讨论,甚至被一群人修改时,那能量就完全不是一个量级的了————没错,你就是Rockstar。华为就是这样做的。据了解,目前华为内部有两套源码平台,分别是“CodeClub”和“iSource”,几乎都引入了“SocialCoding”的概念,创始人是胡志勇和庄标伟。比如路由器研发团队在内部源码平台上发布了一组代码,防火墙团队的开发人员看到后发现还有扩展的空间,马上提交了自己实现的功能代码。然后router团队的负责人审核后发现这个功能非常好,可以合并到主库中。提交代码的防火墙团队的开发者ID也将被添加到该组代码的贡献者列表中。或者防火墙团队的开发人员想增加一个新特性,看到路由器研发团队已经实现了。这时候他可以直接使用代码,避免重复开发,加快开发进度。据iSource创始人庄标伟介绍,内源平台的一个重要功能是相互交流,降低研发成本。当然,除了“SocialCoding”,华为的内源平台也与生产环境紧密相连。比如智能软件测试、自动化部署、持续集成等等。这已经不是简单的GitLab可以搞定的了,至少需要二次开发或者重构才能达到“GitLabplus”的水平。看到这里,大家可能明白了,“内源”也可以做成一个生态。目前,华为“代码俱乐部”拥有17000+用户,14000+项目库,并接入公司其他研发工具平台和系统。而“iSource”动不动就支持2000多人的BigTeams,发展势头也非常迅猛。其“内生”之热可见一斑。两个平台虽然有相似之处,但两位创始人打造产品的风格却截然不同。胡志勇倾向于“自下而上”的改革,而庄标伟则倾向于“自上而下”的推进。当然,两者都在为更高效动态的内源开发的愿景而努力,各有各的优势。需要注意的是,这样的内源平台更适合产品线较多的大中型企业。由于成本和复杂性的考虑,它可能不适合产品线较少的创业公司。毕竟这么有趣的平台,只能多人玩。使用开源的方式作为内源,不仅需要在技术上下功夫,在运营和沟通上也需要花很多心思。如何说服每个团队开放自己的代码,如何设置内部访问权限,如何承受高并发,如何奖励那些贡献高的员工,如何让平台连接大量不同生产环境的用户。..这都是值得讨论的问题。内源之路并不平坦。套用CodeClub创始人胡志勇的一句话《马太福音》:“通往永生的门是窄的,路是小的,很少有人找到它。”但我们不能轻易放弃,对吧?华为开发者社区
