How Facebook's Open Source Stack Undermines The Open Web

A few months ago, I talked about why I don't like React. One of the reasons is that I believe Facebook, and frameworks like React, are undermining the Open Web. This may not be intentional. I certainly don't think it is the intention of the developers on those projects. But I'm less confident in the motivations of the people running the companies behind these frameworks. And, either way, they aren't good for the Open Web.

To understand why that's the case, we're going to study a strategy known as embrace-and-extend, long a principal antagonist in the struggle to create the Open Web. And "struggle" is the right word. We now have an a generation of developers for whom the existence of the Open Web is a given. But things weren't always this way.

Embrace And Extend

In the early days of the Web, most of the features we take for granted in modern Web browsers didn't even exist. And there certainly were no standards defining how they ought to behave. Consequently, in the race to grab market and mind-share, browser vendors added their own proprietary extensions as quickly as they could.

That sounds reasonable enough by itself, right? But when you have enough proprietary extensions, you have a separate platform. Now developers have to make a choice about which browser platform to support. This, in turn, leads to consumers having to choose a browser platform, because the apps they want to use may not be available on other platforms.

This creates what your local MBA calls switching costs, which is a form of barrier to entry. Which is a cornerstone of competitive strategy. To defeat your competition, you want to create significant barriers to entry. Introducing switching costs by creating an application ecosystem around your proprietary browser extensions is one way to do that.

This particular strategy is called embrace-and-extend. You embrace existing standards, as far as they go, but you rapidly extend them with proprietary features. If you're really good at it, you also participate in the standards process with the aim of slowing it down. This is what Microsoft did for years as they tried to parlay their dominance with Windows into dominance on the emerging Web platform.

And it damn near worked.

The Rise Of The Open Web

By the end of 2004, Microsoft enjoyed as much as a 90% market share in the browser market, which was tantamount to controlling the direction of the Web itself. It required the collective effort of Apple, Google, and the Mozilla Foundation — which was created almost expressly for this purpose — and many others to prevent the Web from becoming nothing more than another Windows technology.

Libraries like JQuery first became popular because they provided a compatibility layer which made it possible for developers to use a single codebase across all Web browsers. As astonishing as that might be to think of in 2015, this was an incredible leap of progress in 2005, when jQuery began.

A decade later, Microsoft still has over half the market, but the Open Web is a thing. New features are still introduced experimentally by vendors, but the next step is now to put them through a standards process. Even Microsoft, facing chronically declining market share, has been forced to come to the table and play nice.

Enter Facebook.

The Facebook App Is A De Facto Browser Platform

React.js is JavaScript, even making use of new ES6 features. Embrace. But JSX extends JavaScript with new language constructs. React uses the DOM—embrace—but extends it with their own Virtual DOM—extend. And, the coup de grace is that React Native allows developers run React apps natively on non-Web platforms. Extend again.

There's Relay and GraphQL, which, according to the React blog, addresses “a number of weakness in typical REST systems, ones that are particularly problematic in mobile applications.” REST—you know, the architectural constraints that characterize the architecture of the Web itself. In other words, HTTP is great — embrace — but we've made it better. Extend.

In fact, if we throw in Parse, the PaaS vendor Facebook quietly acquired a few years back, we can see that it's now possible to build cross-platform apps entirely using Facebook technologies. All of which are based on Open Web technologies (embrace) but add non-standard features (extend) which force developers to ultimately choose between Facebook's stack and the Open Web.

Which is exactly what Microsoft was doing ten years ago.

Microsoft wanted to leverage their OS hegemony with Windows to control the Web. Facebook wants to leverage their social network hegemony with the Facebook app to control the Web.

Why would Facebook want to do this? Consider the advantages to Facebook in employing an embrace-and-extend strategy. They're precisely analogous to the advantages Microsoft sought when they owned the browser market: monopolistic domination.

Imagine if you could charge rent for access to the Internet. Imagine if you could charge rent for the ability to make anything and everything which could be used on the Internet. What these companies want is very lucrative, but they have no right to it at all.

This is why Facebook's mobile app is not based on Open Web technologies. In fact, Mark Zuckerburg very publicly disavowed the Open Web in announcing Facebook's decision to embrace native mobile technologies. Even though, as Sencha ably demonstrated, there was nothing in the Facebook app that couldn't have been implemented using Open Web technologies.

Making The Open Web Personal

In 2010, I wrote a blog post criticizing Facebook's privacy practices. At the time, I thought the problem was that consumers were not aware of the problem. Later, as John Oliver hilariously demonstrated in his interview with Edward Snowden, I realized the problem was apathy, not ignorance. People don't think in abstract terms, like privacy. You have to make it personal to make it meaningful.

I think the Open Web is a bit like that. Facebook's embrace-and-extend strategy is not the problem here. It's a sound, if banal, business strategy. And there's nothing wrong with developers wanting to use tools and platforms that help them do their job. In fact, in the near term, there's probably no harm done. There may even be some benefit. But, in the end, the Open Web is the Web. Without it, the Web becomes just another proprietary application platform, controlled by a single vendor.

But let's try to make it personal, just as John Oliver did with the NSA's illegal spying programs. Suppose you want to launch a new app. What if the first choice you had to make was whether you wanted to make it available to people with Facebook accounts or people without Facebook accounts?

Oh, wait. That's already kind of the case. Let's try another scenario. I know! What if you had to decide between whether people shared content on the Web or in the Facebook app—oh, that's already the case, too. Okay, how about if you had to decide whether you wanted to publish something as simple as a blog to the Web or to a proprietary Facebook application? Wait, what? That's already a thing, too?

Apparently, much like the NSA spying program, Facebook's attempt to make the Web proprietary doesn't really require hypotheticals. That's actually what they're doing. And it's working, too, as people continue to buy into and perpetuate the flawed narrative that you can't create great apps using Open Web technology.


Discuss on Hacker News.

Notes