The three kinds of platforms you meet on the Internet
你在互联网上遇到的三种平台
[Title with sincere apologies to Mitch Albom and his wonderful book.]
[标题向米奇·阿尔博姆和他的精彩书致以诚挚的歉意。]
One of the hottest of hot topics these days is the topic of Internet platforms, or platforms on the Internet. Web services APIs (application programming interfaces), web services protocols like REST and SOAP, the new Facebook platform, Amazon’s web services efforts including EC2 and S3, lots of new startups talking platform (including my own company, Ning)... well, “platform” is turning into a central theme of our industry and one that a lot of people want to think about and talk about.
当今最热门的话题之一是互联网平台或互联网平台的话题。 Web 服务 API(应用程序编程接口)、REST 和 SOAP 等 Web 服务协议、新的 Facebook 平台、Amazon 的 Web 服务工作(包括 EC2 和 S3)、许多新的初创公司谈话平台(包括我自己的公司 Ning)……好吧, “平台”正在成为我们行业的中心主题,也是很多人想要思考和谈论的主题。
However, the concept of “platform” is also the focus of a swirling vortex of confusion—lots of platform-related concepts, many of them highly technical, bleeding together; lots of people harboring various incompatible mental images of what’s about to happen in our industry as a consequence of various platforms. I think this confusion is due in part to the term “platform” being overloaded and being used to mean many different things, and in part because there truly are a lot of moving parts at play that intersect in fascinating but complex ways.
然而, “平台”的概念也是混乱漩涡的焦点——许多与平台相关的概念,其中许多是技术性很强的概念,混在一起;由于各种平台的影响,很多人对我们行业即将发生的事情怀有各种不相容的心理形象。我认为这种混乱部分是由于“平台”一词被过度使用并被用来表示许多不同的事物,部分是因为确实有很多移动部分在发挥作用,它们以令人着迷但复杂的方式交叉。
This post is my attempt to disentangle and examine the topic of “Internet platform” in detail. I will go at it by identifying three distinct approaches to providing an Internet platform, and project forward on where I think each of the three approaches will go. At best, I might be able to help make a new landscape clear. At worst, hopefully I can at least provide one framework for future discussion.
这篇文章是我试图对“互联网平台”这个话题进行详细的梳理和审视。我将通过确定提供互联网平台的三种不同方法来进行讨论,并预测我认为这三种方法中的每一种的发展方向。充其量,我也许能够帮助澄清一个新的景观。最坏的情况是,希望我至少能为未来的讨论提供一个框架。
Let’s start with a basic definition. From a previous post:
让我们从一个基本定义开始。来自之前的帖子:
A “platform” is a system that can be programmed and therefore customized by outside developers—users—and in that way, adapted to countless needs and niches that the platform’s original developers could not have possibly contemplated, much less had time to accommodate.
“平台”是一个可以编程并因此可以由外部开发人员(用户)定制的系统,通过这种方式,可以适应平台原始开发人员不可能考虑到的无数需求和利基,更不用说有时间来适应。
We have a long and proud history of this concept and this definition in the computer industry stretching all the way back to the 1950’s and the original mainframe operating systems, continuing through the personal computer age and now into the Internet era. In the computer industry, this concept of platform is completely settled and widely embraced, and still holds going forward.
我们在计算机行业中对这一概念和定义有着悠久而自豪的历史,可以一直追溯到 1950 年代和最初的大型机操作系统,一直延续到个人计算机时代,现在进入互联网时代。在计算机行业,平台的概念已经完全确定并被广泛接受,并且仍然继续存在。
The key term in the definition of platform is “programmed”. If you can program it, then it’s a platform. If you can’t, then it’s not.
平台定义中的关键术语是“编程”。如果你可以对其进行编程,那么它就是一个平台。如果你不能,那就不是。
So, if you’re thinking about computing on the Internet, whenever anyone uses the word “platform”, ask: “Can it be programmed?” Specifically, with software code provided by the user? If not, it’s not a platform, and you can safely ignore whoever’s talking—which means you can safely ignore 80%+ of the people in the world today who are using the term “platform” and don’t know what it means. (Yes, there are hardware platforms too! But those are different and I’m not talking about them.)
因此,如果您正在考虑互联网上的计算,每当有人使用“平台”一词时,请问: “它可以编程吗?”具体来说,用用户提供的软件代码?如果不是,那么它就不是一个平台,您可以放心地忽略正在说话的人,这意味着您可以放心地忽略当今世界上 80% 以上使用“平台”一词但不知道其含义的人。 (是的,也有硬件平台!但它们是不同的,我不是在谈论它们。)
Now, traditionally in the field of computing, there has been a single main way of providing a platform. You provided a computer system—a mainframe, a PC operating system, a database, or even an ERP system or a game—that contained a programming environment that let people create and run code, plus an API that let them hook into the core system in various ways and do things.
现在,传统上在计算领域,提供平台的主要方式是单一的。您提供了一个计算机系统(大型机、PC 操作系统、数据库,甚至是 ERP 系统或游戏),其中包含允许人们创建和运行代码的编程环境,以及允许他们连接到核心系统的 API以各种方式和做事。
To quote Tony Stark, “That’s how Dad did it, that’s how America does it, and it’s worked out pretty well so far.”
引用托尼·斯塔克的话说,“爸爸就是这么做的,美国也是这么做的,而且到目前为止效果还不错。”
The Internet—as a massive distributed system of many millions of internetworked computers running many different kinds of software—complicates things, and gives rise to three new models of platform that you see playing out in the Internet industry today.
互联网作为一个由数百万台运行多种不同类型软件的联网计算机组成的大型分布式系统,使事情变得复杂,并催生了当今互联网行业中出现的三种新平台模型。
I call these Internet platform models “levels”, because as you go from Level 1 to Level 2 to Level 3, as I will explain, each kind of platform is harder to build, but much better for the developer. Further, as I will also explain, each level typically supersets the levels below.
我将这些互联网平台模型称为“级别” ,因为当你从级别 1 到级别 2 再到级别 3 时,正如我将解释的那样,每种平台都更难构建,但对开发人员来说要好得多。此外,正如我还将解释的那样,每个级别通常都会取代下面的级别。
As I describe these three levels of Internet platform, I will walk through the pros and cons of each level as I see them. But let me say up front—they’re all good. In no way to I intend to cast aspersions on what anyone I discuss is doing. Having a platform is always better than not having a platform, period. Platforms are good, period.
当我描述这三个级别的互联网平台时,我将逐一阐述我所看到的每个级别的优缺点。但我要先声明一下——它们都很好。我绝不打算诽谤我所讨论的任何人正在做的事情。有平台总是比没有平台好,就这样。平台很好,时期。
So, let’s walk through the three levels of Internet platforms.
那么,让我们来了解一下互联网平台的三个层次。
Level 1 is what I call an “Access API”.
第 1 级就是我所说的“访问 API”。
This is the kind of Internet platform that is most common today. This is typically a platform provided in the form of a web services API—which will typically be accessed using an access protocol such as REST or SOAP.
这是当今最常见的互联网平台。这通常是以Web 服务 API形式提供的平台,通常使用 REST 或 SOAP 等访问协议进行访问。
Architecturally, the key thing to understand about this kind of platform is that the developer’s application code lives outside the platform—the code executes somewhere else, on a server elsewhere on the Internet that is provided by the developer. The application calls the web services API over the Internet to access data and services provided by the platform—by the core system—and then the application does its thing, on its own. That’s why I call this an “Access API”—the key point is that the API is accessed from outside the core system.
从架构上讲,了解此类平台的关键是开发人员的应用程序代码位于平台之外- 代码在其他地方执行,即在开发人员提供的 Internet 上其他位置的服务器上。应用程序通过 Internet 调用 Web 服务 API 来访问平台(核心系统)提供的数据和服务,然后应用程序自行执行其操作。这就是为什么我称之为“访问API”——关键是该API是从核心系统外部访问的。
This is of course the approach taken by eBay, Paypal, the Google Search API (before they killed it), Flickr, Delicious, etc. Whenever someone pulls photos out of Flickr to put them on another web site, or whenever someone creates a Google Maps mashup, they’re using a Level 1 Internet platform.
这当然是 eBay、Paypal、Google Search API(在他们取消它之前)、Flickr、Delicious 等所采取的方法。每当有人从 Flickr 中提取照片并将其放在另一个网站上,或者每当有人创建 Google地图混搭,他们使用一级互联网平台。
This is undoubtedly a very useful thing and has now been proven effective on a widespread basis. However, the fact that this is also what most people think of when they think of “Internet platform” has been seriously confusing, as this is a sharply limited approach to the idea of providing a platform.
这无疑是一件非常有用的事情,现在已经被广泛证明是有效的。然而,事实上,这也是大多数人在想到“互联网平台”时所想到的,这一事实已经严重令人困惑,因为这对于提供平台的想法来说是一种非常有限的方法。
What’s the problem? The entire burden of building and running the application itself is left entirely to the developer. The developer needs to provide her own runtime system, programming language, database, servers, storage, networking, bandwidth, and security, and needs to take responsibility for running all of the above—and then exposing the application to users. This is a very high bar in terms of both technical expertise and financial resources.
有什么问题吗?构建和运行应用程序本身的全部负担完全留给开发人员。开发人员需要提供自己的运行时系统、编程语言、数据库、服务器、存储、网络、带宽和安全性,并且需要负责运行上述所有内容,然后将应用程序公开给用户。无论是在技术专长还是财务资源方面,这都是一个非常高的门槛。
As a consequence, you don’t see that many applications get built relative to what you’d think would be possible with these APIs—in fact, uptake of web services APIs has been nothing close to what you saw with previous widespread platforms such as Windows or the Mac.
因此,您不会看到许多应用程序的构建与您认为使用这些 API 可能实现的功能相关 - 事实上,Web 服务 API 的采用与您在以前广泛使用的平台(例如Windows 或 Mac。
This is, however, by far the easiest kind of Internet platform to create. As the platform owner, you don’t have to worry about developer code running inside your system or developer functionality injecting itself into your system; you retain completely control over your user interface; and you can sharply limit the load impact that third parties can have on your systems—i.e., throttling is straightforward.
然而,这是迄今为止最容易创建的互联网平台。作为平台所有者,您不必担心系统内运行的开发人员代码或开发人员功能将自身注入到您的系统中;您保留对用户界面的完全控制权;您可以大幅限制第三方对您的系统造成的负载影响,即限制非常简单。
Because of this and because Level 1 platforms are still highly useful, notwithstanding their limitations, I believe we will see a lot more of them in the future—which is great. And in fact, as we will see, Level 2 and Level 3 platforms will typically all incorporate an Level 1-style access API as well.
正因为如此,而且一级平台尽管有其局限性,但仍然非常有用,我相信我们将来会看到更多这样的平台——这很棒。事实上,正如我们将看到的,2 级和 3 级平台通常也会包含 1 级样式的访问 API。
Level 2 is what I call a “Plug-In API”.
2 级就是我所说的“插件 API”。
This is the kind of platform approach that historically has been used in end-user applications to let developers build new functions that can be injected, or “plug in”, to the core system and its user interface.
这种平台方法历来用于最终用户应用程序,让开发人员构建可以注入或“插入”核心系统及其用户界面的新功能。
For example, Photoshop has for a long time had a widely used and highly successful plug-in API. Lots of people have used the Photoshop plug-in API to build tons of new functionality for Photoshop ranging from support for new file formats to new ways to retouch images to new special effects to apply to images.
例如,Photoshop 长期以来一直拥有广泛使用且非常成功的插件 API。许多人使用 Photoshop 插件 API为 Photoshop 构建了大量新功能,从支持新文件格式到修饰图像的新方法,再到应用于图像的新特效。
More recently, Firefox is well known for having a great plug-in, or extension, API that lets third parties build a wide range of Firefox plug-ins. These plug-ins span functions from blogging to dowloading to search to language translation.
最近,Firefox 因拥有出色的插件或扩展 API 而闻名,该 API 允许第三方构建各种 Firefox 插件。这些插件的功能涵盖从博客到下载、搜索到语言翻译。
In the Internet realm, the first Level 2 platform that I’m aware of is the Facebook platform.
在互联网领域,我所知道的第一个二级平台是Facebook 平台。
When you develop a Facebook app, you are not developing an app that simply draws on data or services from Facebook, as you would with a Level 1 platform. Instead, you are building an app that acts like a “plug-in" into Facebook—your app literally shows up within the Facebook user experience, often as a box in the middle of a page that Facebook otherwise defines, such as a user profile page.
当您开发 Facebook 应用程序时,您开发的应用程序并不是像使用 1 级平台那样简单地利用 Facebook 的数据或服务。相反,您正在构建一个像Facebook 中的“插件”一样的应用程序 — 您的应用程序实际上会显示在 Facebook 用户体验中,通常作为 Facebook 定义的页面中间的一个框,例如用户个人资料页。
Your Facebook app can of course also use Facebook’s Level 1-style access API—their web services API—to pull data or services from Facebook’s core systems—and in fact the two approaches neatly complement each other, because without the access API your embedded Facebook app wouldn’t know anything about the system in which it was embedded and wouldn’t be very useful.
当然,您的 Facebook 应用程序也可以使用 Facebook 的 1 级访问 API(他们的 Web 服务 API)从 Facebook 的核心系统提取数据或服务,事实上,这两种方法巧妙地相互补充,因为如果没有访问 API,您的嵌入式 Facebook应用程序对它所嵌入的系统一无所知,并且不会很有用。
I think that Facebook’s platform approach is a harbinger of a large number of new Internet plug-in APIs that will be created for lots of other Internet services from here on out. Which is great: developers will be able to inject new functions into many other Internet services in the future, just like they can with Facebook today.
我认为 Facebook 的平台方法是大量新互联网插件 API 的先兆,从现在开始,这些 API 将为许多其他互联网服务创建。这很棒:开发人员将来将能够向许多其他互联网服务注入新功能,就像今天的 Facebook 一样。
As a historical side note, in retrospect, this is what AOL should have done in the mid 1990’s when the web first popped up. At that point, AOL had a huge user base relative to the consumer Internet. However, AOL was completely closed—third parties couldn’t build new functions or apps that could plug into AOL and be used by AOL users. As a consequence, all of the creativity and third-party effort that AOL might have harnessed had they provided a plug-in API—a way for third parties to build apps that would inject new functions into the AOL user experience—went to the web instead. A few years later, it became clear to AOL users that the web is where all the interesting stuff was, and then when broadband came along and people had to switch ISPs anyway, the users bailed on AOL.
作为历史旁注,回想起来,这正是 AOL 在 1990 年代中期网络首次出现时应该做的事情。那时,美国在线相对于消费互联网拥有庞大的用户群。然而,AOL 是完全封闭的——第三方无法构建可以插入 AOL 并供 AOL 用户使用的新功能或应用程序。因此,如果 AOL 提供插件 API(第三方构建应用程序的一种方式,为 AOL 用户体验注入新功能),那么 AOL可能利用的所有创造力和第三方努力都会流向网络反而。几年后,AOL 用户清楚地意识到网络是所有有趣的东西所在,然后当宽带出现并且人们无论如何都必须更换 ISP 时,用户放弃了 AOL。
Seen through this lens, Facebook—and I mean this in the best possible way—is the new AOL, but, by also being a platform, executing the opportunity correctly.
从这个角度来看,Facebook——我的意思是最好的方式——是新的美国在线,但同时也是一个平台,可以正确地抓住机会。
Technically, with an Internet plug-in API approach such as Facebook’s, the third-party app itself lives outside the platform—outside the core system—just like I described for Level 1 platforms. The code for the app runs somewhere else. This means that just like with Level 1 platforms, the entire burden of building and running a Level 2 platform-based app is left entirely to the developer—who still needs to provide her own runtime system, programming language, database, servers, storage, networking, bandwidth, and security, and who still needs to take responsibility for running all of the above.
从技术上讲,通过 Facebook 等互联网插件 API 方法,第三方应用程序本身位于平台之外(核心系统之外),就像我对 1 级平台所描述的那样。该应用程序的代码在其他地方运行。这意味着,就像 1 级平台一样,构建和运行基于 2 级平台的应用程序的全部负担完全由开发人员承担——开发人员仍然需要提供自己的运行时系统、编程语言、数据库、服务器、存储、网络、带宽和安全性,以及谁仍然需要负责运行上述所有内容。
As a result, the technical expertise and financial resources required of a Level 2 platform’s developer—if she intends to build a meaningful app—are very high.
因此,如果 2 级平台的开发人员打算构建一个有意义的应用程序,那么她所需的技术专业知识和财务资源非常高。
Technical expertise: the developer has to be a world-class expert at building and deploying Internet applications, which have lots of moving parts.
技术专长:开发人员必须是构建和部署互联网应用程序的世界级专家,这些应用程序有很多移动部件。
Financial resources: the developer has to foot the bill for servers, storage, networking gear, bandwidth, etc., which can be significant for meaningful apps—especially if they succeed.
财务资源:开发人员必须支付服务器、存储、网络设备、带宽等费用,这对于有意义的应用程序来说非常重要,尤其是如果它们成功的话。
In fact, if an app succeeds on a Level 2 platform, the technical and financial burdens on the developer can rapidly become overwhelming—leading me to summarize with the phrase “success kills”.
事实上,如果应用程序在 2 级平台上取得成功,开发人员的技术和财务负担可能会迅速变得难以承受——这让我用“成功致死”一词来总结。
On top of that, there’s an issue for the platform provider as well. When a third party app embedded into a Level 2 platform is down, because the developer doesn’t know how to scale or doesn’t have the money required to do so, the error shows up as an error within the core system. For example, whenever an individual Facebook app is down, users see the error within their Facebook pages—even though Facebook itself is not responsible for the app outage, nor could Facebook do anything about that outage even if they wanted to. Ordinary users will not realize who is at fault and will tend to blame the core system—in this case, Facebook.
最重要的是,平台提供商也面临一个问题。当嵌入 2 级平台的第三方应用程序出现故障时,由于开发人员不知道如何扩展或没有所需的资金来进行扩展,该错误将显示为核心系统内的错误。例如,每当某个 Facebook 应用程序出现故障时,用户就会在其 Facebook 页面中看到错误,尽管 Facebook 本身不对应用程序中断负责,而且即使他们愿意,Facebook 也无法对中断采取任何措施。普通用户不会意识到谁错了,并倾向于归咎于核心系统——在本例中是 Facebook。
For these reasons, I think that while Level 2 platforms are clearly very powerful and are wonderful for users, these issues sharply constrain the number of developers who can build apps to those who have the technical capability and the financial resources to build their own primary Internet systems anyway—which is a small fraction of the people who will ultimately want to be developers on popular Internet platforms.
出于这些原因,我认为虽然二级平台显然非常强大并且对用户来说非常好,但这些问题极大地限制了能够构建应用程序的开发人员数量,而这些开发人员拥有技术能力和财力来构建自己的主要互联网无论如何,这只是最终希望成为流行互联网平台开发人员的一小部分人。
The great news, though, is that unlike a Level 1 platform where the burden of exposing the app to users is also placed on the developer, Level 2 Internet platforms—as demonstrated by Facebook—will be able to directly help their developers get users for their apps. This is one of the reasons I have called the Facebook platform a breakthrough—Facebook provides a whole series of mechanisms by which Facebook users are exposed to third-party apps automatically, just by using Facebook. This is great for developers, and hopefully new Level 2 Internet platforms will follow in Facebook’s footsteps—and not in MySpace’s, which could have been a Level 2 Internet platform well before Facebook but instead took a very hostile stance towards third-party developers.
不过,好消息是,与 1 级平台(向用户公开应用程序的负担也由开发者承担)不同,2 级互联网平台(如 Facebook 所证明的那样)将能够直接帮助其开发者获得用户他们的应用程序。这就是我将 Facebook 平台称为突破的原因之一——Facebook 提供了一系列机制,通过这些机制,Facebook 用户只需使用 Facebook,即可自动接触第三方应用程序。这对开发者来说是件好事,希望新的 2 级互联网平台能够追随 Facebook 的脚步,而不是 MySpace,后者本可以早在 Facebook 之前就成为 2 级互联网平台,但却对第三方开发者采取了非常敌视的立场。
It is also worth nothing that Level 2 platforms are significantly harder to create than Level 1 platforms. Facebook, for example, had to anticipate and provide technical solutions for a whole series of issues—user interface issues, security issues, performance issues, caching issues, etc.—to provide their plug-in API that providers of access APIs don’t have to worry about. This is perhaps why we haven’t seen more Level 2 platforms—yet.
同样值得一提的是, 2 级平台比 1 级平台更难创建。例如,Facebook 必须预测并提供一系列问题的技术解决方案(用户界面问题、安全问题、性能问题、缓存问题等),以提供访问 API 提供商所不提供的插件 API不得不担心。这也许就是我们还没有看到更多 2 级平台的原因。
Level 3 is what I call a “Runtime Environment”.
第 3 级是我所说的“运行时环境”。
In a Level 3 platform, the huge difference is that the third-party application code actually runs inside the platform—developer code is uploaded and runs online, inside the core system. For this reason, in casual conversation I refer to Level 3 platforms as “online platforms”. Let me explain.
在三级平台中,巨大的区别在于第三方应用程序代码实际上在平台内部运行——开发人员代码在核心系统内部上传并在线运行。因此,在闲聊中我将三级平台称为“在线平台” 。让我解释一下。
- A Level 1 platform’s apps run elsewhere, and call into the platform via a web services API to draw on data and services—this is how Flickr does it.
1 级平台的应用程序在其他地方运行,并通过 Web 服务 API 调用该平台以利用数据和服务- 这就是 Flickr 的做法。 - A Level 2 platform’s apps run elsewhere, but inject functionality into the platform via a plug-in API—this is how Facebook does it. Most likely, a Level 2 platform’s apps also call into the platform via a web services API to draw on data and services.
2 级平台的应用程序在其他地方运行,但通过插件 API 将功能注入平台- 这就是 Facebook 的做法。最有可能的是,2 级平台的应用程序还通过 Web 服务 API 调用该平台以利用数据和服务。 - A Level 3 platform’s apps run inside the platform itself—the platform provides the “runtime environment” within which the app’s code runs.
3 级平台的应用程序在平台本身内部运行- 该平台提供应用程序代码运行的“运行时环境”。
In addition, it is highly likely that a Level 3 platform will also superset Level 2 and Level 1—i.e., a Level 3 platform will typically also have some kind of plug-in API and some kind of access API.
此外,3 级平台很可能也将取代 2 级和 1 级,即,3 级平台通常还会具有某种插件 API 和某种访问 API。
Put in plain English? A Level 3 platform’s developers upload their code into the platform itself, which is where that code runs. As a developer on a Level 3 platform, you don’t need your own servers, your own storage, your own database, your own bandwidth, nothing... in fact, often, all you will really need is a browser. The platform itself handles everything required to run your application on your behalf.
用简单的英语表达? 3 级平台的开发人员将他们的代码上传到平台本身,这是代码运行的地方。作为 3 级平台上的开发人员,您不需要自己的服务器、自己的存储、自己的数据库、自己的带宽,什么都不需要……事实上,通常,您真正需要的只是一个浏览器。该平台本身会代表您处理运行应用程序所需的一切。
Obviously this is a huge difference from Level 2. And this difference—and what makes it possible—is why I think Level 3 platforms are the future.
显然,这与 Level 2 存在巨大差异。而这种差异以及使其成为可能的原因就是我认为 Level 3 平台是未来的原因。
Let’s start with one big issue right up front: Level 3 platforms are much harder to build than Level 2 platforms.
让我们先从一个大问题开始:3 级平台比 2 级平台更难构建。
As a platform provider, once you accept the idea that user code—code that you didn’t write and you can’t vet for quality or security—is going to run within your platform, you have a whole pile of issues you have to deal with that a Level 2 platform can simply ignore.
作为平台提供商,一旦您接受用户代码(您没有编写且无法审查质量或安全性的代码)将在您的平台上运行的想法,您就会遇到一大堆问题,您必须解决处理 2 级平台可以简单忽略的问题。
The Level 2 platform’s apps will be running their code elsewhere—at the end of the day, the running code is someone else’s problem. With a Level 3 platform, all the running code for all the apps is your problem.
2 级平台的应用程序将在其他地方运行其代码 - 归根结底,运行的代码是其他人的问题。对于 3 级平台,所有应用程序的所有运行代码都是您的问题。
What are some of those issues? To list a few: You have to provide a runtime environment that can execute arbitrary third-party application code. You have to build a system for accepting and managing that code. You have to build integrated development tools into your interface to let people develop that code. You have to provide an integrated database environment suitable for applications to store and process their data. You have to deal with security in many different ways to prevent applications from stepping on one another or on your system—for example, sandboxing. You have to anticipate the consequences an application succeeding and needing to be automatically scaled. And you have to build an automated system underneath all that to provide the servers, storage, and networking capabilities required to actually run all of the third-party applications.
其中有哪些问题?举几个例子:您必须提供一个可以执行任意第三方应用程序代码的运行时环境。您必须构建一个系统来接受和管理该代码。您必须在界面中构建集成开发工具,以便人们开发该代码。您必须提供适合应用程序存储和处理其数据的集成数据库环境。您必须以多种不同的方式处理安全问题,以防止应用程序相互干扰或干扰您的系统,例如沙箱。您必须预见应用程序成功并需要自动扩展的后果。您必须在所有这些基础上构建一个自动化系统,以提供实际运行所有第三方应用程序所需的服务器、存储和网络功能。
And you probably also have to provide Level 2 functionality—a plug-in API—and Level 1 functionality—an access API—so that third-party applications can actually do useful things once they are running within your system.
您可能还必须提供 2 级功能(插件 API)和 1 级功能(访问 API),以便第三方应用程序在您的系统中运行后实际上可以做有用的事情。
The bad news is that this is a truly intense technical and business undertaking, and not for the faint of heart.
坏消息是,这是一项真正紧张的技术和业务任务,不适合胆小的人。
The good news is that what it makes possible is magical.
好消息是,它所带来的可能是神奇的。
Here’s what’s magical: the level of technical expertise required of someone to develop on your platform drops by at least 90%, and the level of money they need drops to $0. Which opens up development to a universe of people for whom developing on a Level 2 or Level 1 platform is prohibitively difficult or expensive.
神奇之处在于:在您的平台上进行开发所需的技术专业知识水平下降了至少 90%,而他们所需的资金水平则降至 0 美元。这为很多人打开了开发大门,对于他们来说,在 2 级或 1 级平台上进行开发非常困难或昂贵。
Actually, it gets even better than that. You can provide an open source ecosystem within your platform to let users freely share code with one another—actual running code! You can in essence have your own open source dynamic within your platform—in the best case, allowing users to clone and modify one another’s applications with a level of ease that the software industry has never seen. The rate of rapid evolutionary application development that can result from this approach will, I think, be mind-boggling as it plays out.
事实上,它甚至比那更好。您可以在您的平台内提供一个开源生态系统,让用户自由地彼此共享代码——实际运行的代码!从本质上讲,您可以在自己的平台中拥有自己的开源动态 - 在最好的情况下,允许用户以软件行业从未见过的轻松程度克隆和修改彼此的应用程序。我认为,这种方法所带来的快速演进式应用程序开发速度将令人难以置信。
You can also, if you want, provide a marketplace that lets people buy and sell code—then you can have the open source dynamic and the profit incentive. The sky’s the limit in terms of how much development can happen on a platform like that.
如果您愿意,您还可以提供一个允许人们买卖代码的市场,然后您就可以拥有开源动态和利润激励。在这样的平台上可以进行多少开发,这是没有极限的。
The Level 3 Internet platform approach is ironically much more like the computer industry’s typical platform model than Levels 2 or 1.
具有讽刺意味的是,与 2 级或 1 级相比,3 级互联网平台方法更像是计算机行业的典型平台模型。
Back to basics: with a traditional platform, you take a computer, say a PC, with an operating system like Windows. You create an application. The application code runs right there, on the computer. It doesn’t run elsewhere—off the platform somewhere—it just runs right there—technically, within a runtime environment provided by the platform. For example, an application written in C# runs within Microsoft’s Common Language Runtime, which is part of Windows, which is running on your computer.
回到基础:在传统平台上,您需要一台计算机(例如 PC),带有 Windows 等操作系统。您创建一个应用程序。应用程序代码就在计算机上运行。它不会在其他地方运行——在平台之外的某个地方——它只是在那里运行——从技术上讲,是在平台提供的运行时环境中运行。例如,用 C# 编写的应用程序在 Microsoft 的公共语言运行时中运行,该运行时是在您的计算机上运行的 Windows 的一部分。
I say this is ironic because I’m not entirely sure where the idea came from that an application built to run on an Internet platform would logically run off the platform, as with Level 1 (Flickr-style) or Level 2 (Facebook-style) Internet platforms. That is, I’m not sure why people haven’t been building Level 3 Internet platforms all along—apart from the technological complexity involved.
我说这很讽刺,因为我不完全确定这个想法从何而来,即构建在互联网平台上运行的应用程序逻辑上会在平台上运行,就像 Level 1(Flickr 风格)或 Level 2(Facebook 风格) ) 互联网平台。也就是说,除了涉及的技术复杂性之外,我不确定为什么人们一直没有构建 3 级互联网平台。
However, I think this will change, because the advantages of being a Level 3 platform—particularly the advantages to the developer, and thereby for the platform—are so overwhelming.
然而,我认为这种情况将会改变,因为成为 3 级平台的优势——尤其是对开发者的优势,进而对平台而言——是如此压倒性的。
So who’s building Level 3 Internet platforms now?
那么现在谁在构建三级互联网平台呢?
First, I am—Ning has been built from the start to be a Level 3 platform.
首先,我——Ning 从一开始就被打造为一个 3 级平台。
I’ll be writing more about this in another post, but in a nutshell, Ning is a full online platform for creating and running social networking applications. We provide all of the platform functions I described above, including the ability for users to either create their own applications or run clones or modified copies of applications we or other people provide.
我将在另一篇文章中详细介绍这一点,但简而言之,Ning 是一个用于创建和运行社交网络应用程序的完整在线平台。我们提供上面描述的所有平台功能,包括用户创建自己的应用程序或运行我们或其他人提供的应用程序的克隆或修改副本的能力。
There are close to 100,000 such applications currently running on the Ning platform—you can see them at Ning in the form of all of the various social networks and applications in the system—and that number is growing very quickly.
目前,Ning 平台上运行着近 100,000 个此类应用程序(您可以在Ning上以系统中所有各种社交网络和应用程序的形式看到它们),而且这个数字正在快速增长。
Second, in a completely different domain, Salesforce.com is also taking a Level 3 platform approach—Salesforce now provides quite sophisticated ways for users and developers to create and upload code and program the Salesforce platform from a browser.
其次,在一个完全不同的领域,Salesforce.com 也采用了 3 级平台方法 - Salesforce 现在为用户和开发人员提供了相当复杂的方法,以便从浏览器创建和上传代码以及对 Salesforce 平台进行编程。
Salesforce provides a Level 3 platform both because it lets users easily customize Salesforce to do whatever they need, and also because it definitively trumps the criticism they historically got from packaged software vendors like Siebel who accused Salesforce of not being as adaptable as a piece of software you install on your own servers.
Salesforce 提供了一个 3 级平台,不仅因为它可以让用户轻松定制 Salesforce 来完成他们需要的任何操作,还因为它绝对胜过了他们过去从 Siebel 等打包软件供应商那里得到的批评,这些供应商指责 Salesforce 的适应性不如软件您安装在自己的服务器上。
You probably don’t see this in action much—unless you’re a Salesforce user—but they’re doing really interesting work in this area and getting great results.
您可能不会经常看到这一点(除非您是 Salesforce 用户),但他们在这一领域正在做非常有趣的工作并取得了很好的成果。
Third, and again in a completely different domain, Second Life is a Level 3 platform.
第三,同样是在一个完全不同的领域,《第二人生》是一个 3 级平台。
It’s a little different in that Second Life provides its own client—for its immersive 3D world—but you can think of the Second Life client as analogous to a browser in that it’s an Internet client that draws on content being sent down from Second Life’s servers.
略有不同的是,《第二人生》为其沉浸式 3D 世界提供了自己的客户端,但您可以将《第二人生》客户端视为类似于浏览器,因为它是一个互联网客户端,利用从《第二人生》服务器发送的内容。
Then, within Second Life, there is a complete runtime environment for running code provided by any user—you can create items within Second Life and program them to do anything and behave in any way that you can possibly imagine. And you can, with permission, look at the code of another user’s item and then make a copy or modify it to do whatever you want. And all of that code is running on Second Life’s servers.
然后,在《第二人生》中,有一个完整的运行时环境,用于运行任何用户提供的代码——您可以在《第二人生》中创建项目,并对它们进行编程,以执行您可以想象的任何操作和行为。在获得许可的情况下,您可以查看其他用户项目的代码,然后复制或修改它以执行您想要的任何操作。所有这些代码都在《第二人生》的服务器上运行。
It’s a tremendously dynamic platform that lets users build a dizzying array of worlds and objects that are all completely customized—programmed.
这是一个极其动态的平台,让用户可以构建一系列令人眼花缭乱的世界和对象,这些世界和对象都是完全自定义编程的。
Fourth, Amazon is—I would say—“sort of” building a Level 3 Internet platform with EC2 and S3. I say “sort of” because EC2 is more focused on providing a generic runtime environment for any kind of code than it is for building any specific kind of application—and because of that, there are no real APIs in EC2 that you wouldn’t just have on your own PC or server.
第四,我想说,亚马逊“有点”用 EC2 和 S3 构建了一个 3 级互联网平台。我说“某种程度上”是因为 EC2 更专注于为任何类型的代码提供通用运行时环境,而不是构建任何特定类型的应用程序 - 正因为如此,EC2 中没有您不会使用的真正 API只需在您自己的 PC 或服务器上即可。
By this, I mean: Ning within our platform provides a whole suite of APIs for easily building social networking applications; Salesforce within its platform provides a whole suite of APIs for easily building enterprise applications; Second Life within its platform provides a whole suite of APIs for easy building objects that live and interact within Second Life. EC2, at least for now, has no such ambitions, and is content to be more of a generic hosting environment.
我的意思是:我们平台中的 Ning 提供了一整套 API,可以轻松构建社交网络应用程序; Salesforce在其平台内提供了一整套API,用于轻松构建企业应用程序; Second Life 其平台内提供了一整套 API,用于轻松构建在 Second Life 中生存和交互的对象。 EC2 至少目前还没有这样的野心,并且满足于成为一个通用的托管环境。
However, add S3 and some of Amazon’s other web services efforts to the mix, and you clearly have at least the foundation of a Level 3 Internet platform.
然而,如果将 S3 和 Amazon 的其他一些 Web 服务组合起来,您显然至少拥有了 3 级互联网平台的基础。
Interestingly, Amazon’s FPS—Flexible Payments Service—is itself a Level 3 Internet platform. You actually upload code written in a specialized programming language—which they called GK, for “Gatekeeper code”—that controls how payments happen; that code runs within Amazon’s online systems. It’s a really innovative way to provide a highly flexible vertical service—and great to see!
有趣的是,亚马逊的 FPS(灵活支付服务)本身就是一个 3 级互联网平台。您实际上上传用专门的编程语言编写的代码(他们称之为 GK,即“看门人代码”),控制付款的发生方式;该代码在亚马逊的在线系统中运行。这是提供高度灵活的垂直服务的真正创新方式——很高兴看到!
Fifth and last, Akamai, coming from a completely different angle, is tackling a lot of the technical requirements of a Level 3 Internet platform in their “EdgeComputing” service—which lets their customers upload Java code into Akamai’s systems. The Java code then runs on the “edge” of the network on Akamai’s servers, and is distributed, managed, and secured so that it runs at scale and without stepping on other customers’ applications.
第五也是最后一点,Akamai 从一个完全不同的角度出发,在其“EdgeComputing”服务中解决了 3 级互联网平台的许多技术要求,该服务允许客户将 Java 代码上传到 Akamai 的系统中。然后,Java 代码在 Akamai 服务器上的网络“边缘”运行,并进行分布式、管理和保护,以便其大规模运行,而无需占用其他客户的应用程序。
This is not a full Level 3 Internet platform, nor do I think Akamai would argue that it is, but there are significant similarities in the technical challenges, and it’s certainly worth watching what they do with their approach over time.
这不是一个完整的 3 级互联网平台,我认为 Akamai 也不会认为它是,但技术挑战有显着的相似之处,而且随着时间的推移,他们的方法确实值得关注。
These examples illustrate one final point about Level 3 platforms: you have to commit to never killing your platform. This is a sharp difference.
这些示例说明了有关 3 级平台的最后一点:您必须承诺永远不会杀死您的平台。这是一个明显的区别。
Think about it: For a Level 1 or Level 2 platform, if you kill the platform, you still have a working and useful system. If the Google Search API gets killed—and it was!—you still have Google Search which is still useful to its users. If the Facebook platform gets killed—which presumably it won’t be—you still have Facebook which is still useful to users as a social networking service in exactly the same way it was before they introduced their platform.
想一想:对于 1 级或 2 级平台,如果你杀死该平台,你仍然拥有一个工作且有用的系统。如果 Google 搜索 API 被终止(确实如此!),您仍然可以使用对其用户仍然有用的 Google 搜索。如果 Facebook 平台被消灭了——大概不会——你仍然可以拥有 Facebook ,它作为一种社交网络服务仍然对用户有用,就像他们推出平台之前一样。
On the other hand, if you kill a Level 3 platform, you destroy the whole reason people use your system to begin with—to develop and run custom code. If you remove the platform from Ning, Ning is useless—applications don’t run, and users can’t do anything. If you remove the platform from Salesforce, all the users who are using customized apps can’t use Salesforce anymore. If you remove the platform from Second Life, none of the objects or experiences in the virtual world work anymore and the whole user experience collapses.
另一方面,如果你终止了 3 级平台,你就破坏了人们使用你的系统的全部原因——开发和运行自定义代码。如果从 Ning 中删除该平台,Ning 就毫无用处——应用程序无法运行,用户也无法执行任何操作。如果您从 Salesforce 中删除该平台,所有使用自定义应用程序的用户将无法再使用 Salesforce。如果您从“第二人生”中删除该平台,则虚拟世界中的任何对象或体验都不再起作用,整个用户体验就会崩溃。
Like my old boss Jim Barksdale used to say, it’s the difference between the chicken and the pig at a ham and egg breakfast. The chicken’s involved but the pig is committed.
就像我的前老板吉姆·巴克斯代尔曾经说过的那样,这就是火腿鸡蛋早餐中鸡肉和猪的区别。鸡参与了,但猪却承诺了。
I believe that in the long run, all credible large-scale Internet companies will provide Level 3 platforms. Those that don’t won’t be competitive with those that do, because those that do will give their users the ability to so easily customize and program as to unleash supernovas of creativity.
我相信从长远来看,所有有信誉的大型互联网公司都会提供Level 3平台。那些不这样做的人不会与那些这样做的人竞争,因为那些这样做的人将使他们的用户能够轻松地进行定制和编程,从而释放超新星的创造力。
I think there will also be a generational shift here. Level 3 platforms are “develop in the browser”—or, more properly, “develop in the cloud”. Just like Internet applications are “run in the browser”—or, more properly, “run in the cloud”. The cloud being large-scale Internet services run on behalf of users by large Internet companies and other entities. I think that kids coming out of college over the next several years are going to wonder why anyone ever built apps for anything other than “the cloud”—the Internet—and, ultimately, why they did so with anything other than the kinds of Level 3 platforms that we as an industry are going to build over the next several years—just like they already wonder why anyone runs any software that you can’t get to through a browser. Granted, I’m overstating the point but I’m doing so for clarity, and I’m quite confident the point will hold.
我认为这里也会发生代际转变。第三级平台是“在浏览器中开发” ,或者更准确地说, “在云中开发” 。就像互联网应用程序“在浏览器中运行”一样,或者更准确地说,“在云中运行”。云是大型互联网公司和其他实体代表用户运行的大规模互联网服务。我认为,未来几年从大学毕业的孩子们会想知道为什么有人会为“云”(互联网)以外的任何东西构建应用程序,并且最终为什么他们会使用除了 Level 类型以外的任何东西来构建应用程序。我们作为一个行业将在未来几年内构建 3 个平台- 就像他们已经想知道为什么有人运行无法通过浏览器访问的软件一样。诚然,我夸大了这一点,但我这样做是为了清楚起见,而且我非常有信心这一点是成立的。
Three closing notes! 三个结束语!
First, how will we see the new platforms of the future?
首先,我们如何看待未来的新平台?
We are used to seeing platforms ship as products—you buy and install a PC or a server and you build an app that runs on it, or equivalently you download and install an open source platform such as Perl or Ruby and you build an app that runs on it.
我们习惯于将平台视为产品- 您购买并安装一台 PC 或服务器,然后构建一个在其上运行的应用程序,或者等效地,您下载并安装一个开源平台(例如 Perl 或 Ruby),然后构建一个应用程序运行在它上面。
The platforms of the future won’t be like that. The platforms of the future will be online services that you will tap into over the Internet, perhaps with nothing more running locally than a browser. They won’t have anything you download, or even an SDK. They will look more like services than software. To paraphrase the Book of Matthew, “you will know them by their URLs”.
未来的平台不会是这样的。未来的平台将是您可以通过互联网访问的在线服务,也许除了浏览器之外无需在本地运行。他们不会有你下载的任何东西,甚至是 SDK。它们看起来更像是服务而不是软件。套用《马太福音》的话,“你会通过他们的网址认识他们”。
Second, beware overfocusing on the apps of the past when thinking about the platforms of the future.
其次,在考虑未来的平台时,要小心过度关注过去的应用程序。
Lots of people got confused by the idea of apps running in the browser because when they thought of apps, they thought of the apps they used already on their PCs—Word, Excel, Powerpoint—and not the apps that would get built on the web—eBay, Amazon, Salesforce.com. Now, it turns out in the fullness of time that word processing, spreadsheets, and presentation apps are also moving into the web—as Google is demonstrating. But way before that happened, the web led people to create lots of new kinds of applications that were not possible on the PC.
许多人对在浏览器中运行的应用程序的想法感到困惑,因为当他们想到应用程序时,他们想到的是他们已经在 PC 上使用的应用程序(Word、Excel、Powerpoint),而不是在网络上构建的应用程序—eBay、亚马逊、Salesforce.com。现在,随着时间的推移,文字处理、电子表格和演示应用程序也正在进入网络,正如Google 所展示的那样。但早在这之前,网络就引导人们创建了许多 PC 上无法实现的新型应用程序。
A new platform typically enables a new set of applications that were not previously possible. Why else would there be a need for a new platform?
新平台通常会启用一组以前不可能的新应用程序。否则为什么需要一个新平台?
But: keep this in mind; look for the new applications that a new platform makes possible, as opposed to evaluating the new platform on the basis of whether or not you see older classes of applications show up on it right away.
但是:请记住这一点;寻找新平台带来的新应用程序,而不是根据是否立即看到旧类别的应用程序出现在新平台上来评估新平台。
Third, lots and lots of people have opinions about platforms, but the people whose opinions matter are programmers, and people who can make decisions about what programmers program.
第三,很多很多人对平台都有自己的看法,但重要的是程序员,以及可以决定程序员编程内容的人。
This sounds incredibly elitist, to which I say: first, the whole point of platforms is that they let people program on them. So people who aren’t programming, or making decisions about programmers programming on them, don’t have a lot to do with them, and often don’t know what they’re talking about. Second, is is really easy to learn how to program—in fact, it’s never been easier. So there’s really no excuse for anyone who wants to have opinions to not learn to program—in fact, that’s a great excuse to learn how to program!
这听起来令人难以置信的精英主义,对此我想说:首先,平台的全部意义在于它们让人们在上面编程。因此,那些不编程的人,或者不为程序员编程做出决定的人,与他们没有太多关系,而且通常不知道他们在说什么。其次,学习编程真的很容易——事实上,它从未如此简单。因此,任何想要发表意见的人都没有理由不学习编程——事实上,这是学习如何编程的一个很好的借口!
And on that note, I’m going to go to sleep now and dream about “for” loops and “if/then” statements.
就这一点而言,我现在要去睡觉并梦见“for”循环和“if/then”语句。