David Recordon(以下简称:DR): 当我10几岁时,就已经开始从事开源。我使用YaBB SE(PHP论坛软件),并且开始帮助社区内的其他人。
当时,我知道C++,Perl知道一点,但真的没有做过Web编程。PHP容易掌握,并且我喜欢这种点击保存、刷新浏览器的感觉。几年后,我开始更多的深入项目,帮助发起改写Simple Machines Forum,并与朋友创建论坛托管业务。
我想这是真的我第一次深入体验一个开源项目。
LXF:你继续与网站业务打交道吗?
DR: 几年后,我在LiveJournal的实习,开始学习Perl,并告知不要承认我用过Nano(在转向Emacs后)。在LiveJournal的工作也是我把Linux作为桌面每日使用的第一次体验。
LXF:你在OpenID的世界非常知名,怎么参与到这个项目的?
DR: 很多人利用LiveJournal核心开源的优势,并克隆。根据维基百科,先后有30个不同的站点使用DeadJournal。垃圾对于LiveJournal。com从未成为重要问题。因为没有身份共享的概念。
OpenID最初创建于Six Apart帮助解决跨站点以分散的方式评论的问题。它的急剧演变起于2005年,当时我在Verisign,开始深度参与OpenID 2.0。
它几乎被所有的web公司所采用,但是仍有很长的路要走。我看到OpenID下一个版本将建立在OAuth 2.0上,这将是它成为浏览器外应用工作的技术的很小一部分。
LXF: 你是怎么进入Facebook的?
DR: 我在2009年加入到Facebook,工作内容是开源及标准。我的团队致力于使用、贡献、发布开源项目,使之对每个人变得容易的伟大工作。
有时,也意味着将我们融入到其他的工程师团队,比如我们在2010年发布的HiHop for PHP。虽然HipHop已经在Facebook内部得到验证,但是仍有大量的工作要做,使之成为其他网站的基础设施的有用的一部分。
LXF: HiHop具体是做什么的?
DR: HipHop真正体现了我们如何在Facebook上创建开源。它一开始由赵海平创建,作为Hackathon项目,后来Iain Proctor和杨明辉加入。海平注意到PHP语法和C + +不少相似之处,而且知道你是否能改写成另一种编程。
2年半的时间,以及一些其他的工程师的加入,现在HipHop服务于Facebook绝大部分的产品。它需要我们的PHP源代码,转换成C + +中,并编译它成为一个独立的二进制文件,我们再在Web服务器上部署。
这是个Facebook如何开始项目的典型模式,1或2个人决定尝试一些事情,我们称之为“黑客文化”。
LXF: 你在OpenID和OAuth标准的工作,是否在Facebook继续使用?
DR: 我们平台的工程师团队去年做了很多OAuth 2.0的工作。OAuth创建标准化API的设计模式,人们可以同意web站点准入而无需输入密码。虽然OAuth 1.0在过去的两年几乎在每个新的API中被使用,但它对于许多开发者来说还是过于复杂。
OAuth 2.0依赖SSL来保护访问令牌,当API请求对应HMAC签名时。这消除了大量的复杂性,因为开发者与您的API交互不再需要正常化、排序,然后签署他们的所有的HTTP请求的参数。
我们是第一家在f8平台上宣布将OAuth 2.0作为图形API一部分的,当4月份与IETF社区合作做了大量工作之后。同样在f8,我们引入了OGP开放图形协议Open Graph Protocol ( http://ogp.me ),,它使用一个非常简单的RDFa的框架子集来表示任何web页面作为社区图的一部分。
LXF: 人们认为Facebook是个闭源的站点。你又如何贡献开源?
DR: Facebook工程师对于贡献Apache Hadoop生态系统,以及MySQL、PHP等,非常活跃。也创建了大量的功能使memcached规模部署在现代的硬件上。
但是,我们不仅是贡献其他项目或发布开发工具,我们开源了产品架构的全部原件。HipHop, FlashCache, Apache Hive and Cassandra, Thrift, Scribe, 以及其他在Facebook创建的。我不认为还有其他与我们一样规模的网络公司能做到这一点。
LXF:另一方面,在公司,开展开源的困难是什么?
DR: 对公司来说,很容易陷入相信“开源不需要额外的时间和努力”的神话。它确实需要时间,如果你想做好。重要的是,对于项目,在开源协议下分享你的源代码和完全分享对项目自身的控制之间的范围上,合理设置预期,
我几乎觉得这里的决定对比其他公司设置预期变得不那么重要。
LXF: 你对Facebook克隆-Diaspora,怎么看?
DR: 我对那些家伙充满敬意。他们很显然对于他们在做什么以及创建产品充满激情。我们他们会有很多的挑战。一个开源的社交网络是远比站点之间状态更新和发送消息要更多,它也拥有一个全球意识的ID,把你的朋友和内容与你联系起来,通过各地的网络,同时保持对于看到谁和分享什么进行控制。
LXF: 你认为Facebook目前在拥抱开放式网络嘛?
DR: 是的,我认为我们在去年走了很长的路。无论 OAuth 2.0, HTML 5, 或是Open Graph Protocol,我们使用现存的标准,并且也与社区协作,在没有标准的领域创建标准。
我们经常会被批评没有使用现存的技术,但是最好的标准创建是基于工作来实现,并非其他途径。正如我在夏季提到的新兴的标准,“不要怕需要时弄乱它们,如果你最终得到更好的产品,更好的技术,和最终的更好的标准。” 我们正在应用OAuth 2.0,互联网会因它变得更好。