成功地开辟了自己的市场

  2008年,在无数人为代码协作方式而感到异常头疼的时候,GitHub横空出世,完美契合了市场的迫切需求。自此,它以惊人的速度成长起来并蔓延到全世界,彻底融入开发编程的日常之中。仅仅十年,现在的 GitHub已经成为开源的事实标准,左右着无数开发者的编程命脉。本文就从最开始的地方,一起来追溯 GitHub的“封神”之路。
 
  2008年,Tom Preston-Werner、Chris Wanstrath 和 PJ Hyett 三位挚友聚在一起,准备合作开发一个周末小项目。但是没过多久,他们便意识到这个想法可能比他们预想的要大得多。他们的想法远不止一个周末小项目那么简单,它将彻底改变人们编写代码和分享代码的方式。
 
  在短短10年间,GitHub便彻底改变了人们的编码方式。GitHub不仅让编码变得容易,它还改变了软件开发人员对编程的看法和理解。
 
  世界范围内,无数的人都在为代码协作方式感到头疼,GitHub横空出世,解决了这个疑难问题,并设计出了市场迫切需要的优雅解决方案。以此,它得以惊人的速度发展壮大,取得了巨大的成功。通过围绕开源项目 Git 构建 SaaS 服务,GitHub能够为开源生态系统提供价值并从中获利。GitHub对微软来说充满吸引力,尽管微软曾经在开源社区并不显眼,但它在2018年6月初对GitHub进行了收购。
 
  比尔盖茨和史蒂夫乔布斯从根本上重塑了个人计算机,他们成为家喻户晓的名人,但我们也完全无法忽视芬兰软件工程师 Linus Torvalds 对科技领域的巨大贡献,他创造了 Linux 操作系统。当时的 Windows 和 Mac 几乎统治了整个操作系统领域,Linux 操作系统于1991年发布,它是一个非常灵活、轻量级和安全的开源操作系统,面世之后,很快就受到了想要对系统进行深入控制的极客以及技术人员的青睐。
 
  发明一个全新的操作系统这样的成就可能对大多数程序员来说都应该感到知足了,但 Torvalds 却并不满足,他没有停下创新的脚步。2005年,Torvalds 推出了他的最新项目:一个名为 Git 的新的版本控制系统。版本控制对编程协作来说至关重要,它需要跟踪计算机中随时间变化的文件。它与计算机备份系统用作还原点的“快照”类似,版本控制系统让程序员能够通过“fork”或者“分支”来管理项目代码,程序员在同一个项目工作,但不会影响其他人编写的代码。程序员可以在自己的分支上进行开发,之后将新的代码合并到主项目(也就是代码仓库)中。
 
  在 Git 诞生之前,程序员之间进行编程协作的方式很少。其中 Subversion 比较受欢迎,它是一个开源的版本控制系统。它存在着与其他版本控制系统类似的缺点,当然这些缺点是当时的协作编程概念所无法避免的。即使使用了Subversion,与开源团队合作通常也需要获得项目管理员的许可才能 fork 项目的一个分支,否则便无法编辑代码。在许多情况下,批准过程比编写代码花费的时间更长。许多开源项目都受到权限问题以及其它一些低效率事情的困扰。
 
  当 Git 于2005年发布时,开源领域正在经历一场文艺复兴。那时的开发者对 Linux 充满浓烈的兴趣。第一个 Web 2.0 应用程序已经开始出现。许多公司正在将他们的项目迁移到开源服务器。尽管 Git 通过引入 fork 概念使得开源项目的合作变得容易,但 Git 依然有其局限:它无法帮助开发人员寻找开源项目。许多程序员开发了大量的优秀开源项目,但却很难让他人知道这些项目。
 
  GitHub改变了这一切。
 
  PJ Hyett 和 Chris Wanstrath 在2007年开始讨论GitHub项目,当时这两人都是科技网站 CNET 的程序员。他们都支持 Ruby on Rails 开发框架。当他们在 CNET 工作时,Hyett 和 Wanstrath 还为 Rails 的代码库提出了一些改进和建议。但是,让其他人真正查看他们的代码是另一回事。
 
  正如当时大多数开源项目的典型情况一样,Rails 的代码库由一个小型的、紧密结合的程序员管理,他们手动管理对代码库的贡献。这些程序员扮演者管理员的角色。Hyett 和 Wanstrath 不仅要请求这些管理员查看他们的代码,还要让他们相信自己提交的代码对 Rails 项目是有价值的。即使其中一个项目管理员认为提交的代码有用,但是补丁的合并也不会很容易。
 
  从本质上讲,想要为 Rails 项目贡献代码,熟人的烂代码比陌生人的好代码更容易通过。
 
  Git 试图解决其中的一些问题。Linus Torvalds 的版本控制系统与他几年前单枪匹马打造的操作系统一样出色。Git 使得程序员无需管理员开通访问权限,即可进行编码协作。Git 是编码最终民主化的关键第一步,特别是在开源社区。但是,尽管 Git 解决了很多问题,但它缺乏协作工具,并且两个程序员之间共享代码仍然很笨拙和困难。现在可能很难想象,当时软件开发人员需要通过电子邮件不断来回发送补丁,这就很容易理解为什么迫切需要GitHub。
 
  遗憾的是,这不是 Git 唯一需要的东西。起初 Git 主要依赖于命令行界面,好在 Git 发布后很快就推出了图形界面。对于那些多年来一直在编写 bash 脚本和正则表达式的系统管理员和其他高级用户来说,这是个好消息。对于其他人来说感觉倒并不明显。
 
  “人们开始在 Ruby 会议上谈论 Git。主要讨论它的好处,但有时也谈到缺点。Git 会以分布式方式处理代码,但是如何保证共享私有代码的安全性呢?唯一的选择是在 Unix 计算机上设置用户帐户并将其用作临时解决方案。这个解决方案并不理想。”? —?Tom Preston-Werner
 
  尽管存在这些缺点,但 Git 依然充满潜力,它给来自湾区的 Ruby 程序员 Tom Preston-Werner 来了一些想法。当时 Preston-Werner 正在开发一个名为 Grit 的项目,这个工具让程序员能够使用 Ruby on Rails 以面向对象的方式访问 Git 存储库。Preston-Werner 在旧金山一家名为 zeke's 的体育酒吧内举办的 Ruby 会议上认识了 Chris Wanstrath,Preston-Werner 把 Grit 告诉了 Wanstrath。
 
  Preston-Werner 的愿景是创建一个可以托管整个代码库的地方,程序员可以协同工作代码项目,并了解如何充分利用 Git。用 Preston-Werner 的话说,它将是一个“ Git hub(中心)”。
 
  Preston-Werner 和 Wanstrath 于2007年10月1日正式开始制作GitHub的第一个版本。在旧金山体育酒吧相识的几周之后,Chris Wanstrath 提交了第一个GitHub版本,从此便彻底改变了编程方式。
 
  当 Preston-Werner 和 Wanstrath 在2007年开始合作时,他们的想法不是将GitHub作为商业工具开发并围绕它开展业务。Wanstrath 和 Preston-Werner 需要GitHub来完成他们自己的工作,所以他们开发这个工具是为了满足自己的刚需。他们很快就发现了他们工作中的一个主要问题:他们需要 fork 代码分支和协作编程,并设计出满足他们需求的解决方案。对于这个 Wanstrath 和 Preston-Werner遇到的问题,无论使用哪种编程语言或者操作系统,几乎所有软件开发人员都会遇到。这代表了他们的产品在未来拥有巨大的市场潜力。
 
  在接下来的几周里,Wanstrath 在周末与 Preston-Werner 会面,共同完成了GitHub的第一次迭代。Preston-Werner 主要负责设计,Wanstrath 专注于实现 Preston-Werner 提出的功能。
 
  “在接下来的三个月里,Chris 和我花了很多时间来规划和编写GitHub。平时我继续为 Grit 设计 UI。Chris 构建 Rails 应用程序。我们每个星期六都会见面讨论设计,并规划这个产品的蓝图。” —?Tom Preston-Werner
 
  2008年1月,经过三个月利用周末时间编写代码,GitHub有点像模像样了,Wanstrath 和 Preston-Werner 准备向全世界推出GitHub。正如 Spotify 在其关键的早期开发阶段所做的那样,GitHub首次以私有测试版的形式推出。Wanstrath 和 Preston-Werner 通过向他们在湾区及其他地区的初创公司的朋友发送电子邮件,邀请他们使用他们构建的工具,之后便立即得到了积极的回应。接下来的一个月,他们将 Logical Awesome 改名为GitHub,Inc,并作为公司正式成立。
 
  虽然这两个人还没有开始创业,但他们的想法蕴含巨大的商业潜力。2008年4月,就在GitHub推出私有测试版并在同月推出其官方网站的三个月后,Chris Wanstrath 收到了来自在线学习网站 PeepCode 的创始人 Geoffrey Grosenbach 的消息,该网站刚刚将其代码迁移到了GitHub。Grosenbach 告诉 Wanstrath 他不习惯使用GitHub免费托管他公司的代码库,他愿意付费。来自活跃的GitHub用户的这类消息展现了GitHub的价值。即使GitHub没有向用户收费,有些人也愿意为此付费。
 
  “我使用GitHub免费托管我公司的代码,我对此感到有些不好意思。我可以发一张支票给你们吗?” ?- PeepCode 的创始人 Geoffrey Grosenbach
 
  GitHub发展中最重要的一个因素是其商业模式的简洁和优雅。如果你想公开托管你的代码,GitHub可以永久免费使用。如果你想使用私有存储库或专有代码,你需要付费。这两个用例完全不同,这消除了GitHub使用免费增值产品蚕食其受众的风险。
 
  GitHub公司完全可以将GitHub置于付费模式,并且可以通过收费来赚很多钱,但事实上GitHub并没有这么做。GitHub商业模式的另一个特点就是无缝从免费增值产品过渡到私人付费存储库。如果程序员在GitHub上托管他们的开源个人项目并定期使用该产品,他们很有可能会建议他们在日常工作中使用GitHub。
 
  与GitHub的商业模式一样简单和合乎逻辑,它是GitHub以其实现方式有效商业化开源软件开发的唯一可能方式。如果GitHub从一开始就试图从所有存储库中获利,那么GitHub可能永远不会被开源社区所喜爱。如果没有这种基层支持,该公司将无法生存。
 
  另一个需要采用智能方法定价结构的因素是将GitHub作为 Web 服务运营。作为开源代码在网络上存放的地方这听起来很棒,但有人必须为带宽付费。对于GitHub来说幸运的是,Geoffrey Grosenbach 并不是唯一一个想要给GitHub捐款的热心用户。一些公司还提出愿意花钱使用GitHub来托管他们的代码,这让公司的创始人意识到该公司作为营利性企业的潜力非常巨大。
 
  “我们意识到GitHub可能不仅仅是能够收回成本,它可能成为一项真正的商业。我们决定继续免费提供无限制的公共存储库,但我们会向私有存储库收取费用。换句话说,我们会向该付钱的人收钱。”? - Chris Wanstrath
 
  PJ Hyett 于2008年1月正式加入GitHub,成为其第三位联合创始人。仅仅几个月后,即2008年4月10日,GitHub正式推出。
 
  到2009年,GitHub的增长十分迅猛。Preston-Werner 在2009年2月的雅虎开发者大会上发表讲话时说,GitHub上有超过46,000个公共存储库,其中约有17,000个在上个月才加入。当 Preston-Werner 在2009年7月发表他的下一个雅虎开发者大会演讲时,GitHub已经拥有超过10万用户,并且托管了超过90,000个公共存储库,仅仅5个月就增加了95%。
 
  GitHub这一时期的增长最令人瞩目的是,这家新兴公司在短短一年多的时间里通过软件开发社区的口碑吸引了其首批100,000名用户。GitHub作为一种产品已经造就了很好的用户粘性,这纯粹是因为它确实解决了开发者的疑难问题。这有别于其它基于 Git 的协作工具。GitHub通过在新兴的、难以使用的技术之上构建了新服务,成功地开辟了自己的市场。
 
  GitHub的业务模型和编程社区的流行确实帮助公司取得了快速的发展。然而,许多人忽略了GitHub早期的一个方面,即如何解决所有软件开发人员遇到的问题,这些问题的解决也推动了GitHub作为产品的开发。协作是关键,访问是增长的载体。GitHub允许用户在未经许可的情况下 fork 存储库,从而减少了冲突。GitHub解决一个棘手的技术问题,即 fork 代码分支和相关的权限问题,此外,GitHub还解决了如何与其他程序员有效协作的问题。
 
  市场对GitHub这类产品的迫切需求以及产品本身的粘性并不是GitHub早期取得快速增长的唯一因素。GitHub的社交功能也是增长的强大动力。在GitHub之前,除了在技术访谈中回答白板假设之外,程序员几乎没有办法证明他们的编程方法。现在,编码人员可以公开维护他们项目的代码库,向未来的雇主展示他们的代码,并参与更广泛的软件开发社区。GitHub不仅使程序员受益。招聘人员可以通过GitHub浏览公共存储库和用户档案,以确定潜在的候选人,看看候选人一直在做什么样的项目,这使得GitHub成为了一个颇有价值的招聘工具。