Facebook React And A Party Gone Wrong: A Socractic Dialog

This is what technical discussions are like at Panda Strike, except on IRC and with fewer cherubs. (Photo credit: Wikipedia.)

Recent buzz about Facebook React—I guess there was a conference or an announcement or something?—inspired an internal discussion here at Panda Strike. We’re on the record as not being big fans of the framework, but, as a group of smart, spirited software professionals, we sometimes disagree. Our respective opinions on Facebook React, and possibly many other things, may differ from those expressed on our blog. Which is fantastic. In fact, we’re hoping to bring more of those voices to the blog.

I thought I’d share some of that discussion with you. What follows is an edited transcript of an internal discussion thread. Since I only decided after the fact that it would fun to share it, I’ve changed the names of the folks involved. I’m also liberally paraphrasing in places.

Aristophanes Facebook React seems interesting, particularly React Native. Why don’t we like it again?

Pausanias Instead of improving existing Open Web standards, they are abandoning the platform in favor of this native solution that is a framework they own and control. If they have a problem with browser speed or rendering ability, they should play nice and direct their engineering resources in a way that benefits the Web as an ecosystem.

Eryximachus This is pretty much exactly it. The argument against React is that it seems like a power play, an attempt at using a strategy called “embrace and extend” or embrace, extend, extinguish against the Web.

Aristophanes I’m looking at it from a perspective where the alternative is to use C# or Java to build native apps.

Agathon The alternative is to build Web apps that live inside mobile containers. Facebook has been bad-mouthing Web apps for years. This video tells the story.

Sencha Fastbook from Sencha on Vimeo.

Aristophanes Meh, show me some benchmarks.

Agathon I’m all for benchmarking things, but that’s moving the goal posts a bit. And that was three years ago.

Alcibiades Suppose I’ll toss my 2 cents in here. I’ve really enjoyed using React and look forward to using it again when I can. This is from someone who was writing a lot of Backbone.js and jQuery. I think React has and will continue to be a very positive thing for developers and that its popularity has mostly to do with making it easier for people to reason about the code.

Eryximachus And the fact that they’ve astroturfed the hell out of it.

Aristophanes I’m not sure what that means, but compiling to calls to the native API sounds much better than embedding a Web browser and reinventing components.

Agathon There’s nothing wrong with preferring native APIs. They are inimical to open standards, though. Native APIs are proprietary. React is effectively proprietary.

Aristophanes Sure, but you have to also consider Alcibiades’s point that it’s also easier for developers to use.

Agathon That’s fair. I’ll stipulate that React combines some attractive characteristics and packages these up for developers. React components are event-driven, declarative, and encapsulated in a straightforward manner. No other library offers precisely that mix.

Pausanias Could we build an alternative with Fairmont? [Ed: Fairmont is our own open source functional reactive programming library.]

Agathon Sure. You could use Fairmont and virtual-dom for the reactive part, Polymer, and Jade or whatever for the rendering.

Pausanias So Facebook could have done all the same things in the context of helping to develop Open Web standards.

Aristophanes Yeah, but they didn’t. So where does that leave us, as developers? Are we supposed to disregard useful technology just to spite them?

Agathon Imagine you threw a party and one of your friends came over and didn’t like the booze. Instead of going out and buying booze for the party, they instead tell everyone they’re throwing a better party down the street. That’s annoying and you’d probably never invite that person to another of your parties.

Later, you talk to some of your friends who went and checked out your ex-friend’s party. You ask them why they left your party. They say, well, the booze was better. And you say, yeah, but that was kind of a dick move. Okay, whatever, they say, what’s your problem?

Facebook is the friend who doesn’t like your booze and throws their own party. The Open Web is the party that is already going. Nothing is forcing anyone to throw their own party. But Facebook makes more money if developers are locked into supporting Facebook so they threw their own party with better booze.

The Open Web party suffers, not only because Facebook could have just brought better booze to that party, but because a bunch of people leave the Open Web party to join the Facebook party, so now the Open Web party isn’t as lively as it might have been.

Next thing you know, you’re all alone with a nearly empty bottle of tequila in your hand, staring bleary-eyed at the jukebox you rented that has been playing Linda Ronstadt songs for the past hour and you knew it was mistake to go with a 70s theme in the first place but for some reason you don’t want to unplug it because that would mean the party is over, really over, and maybe you should just go out and get some pancakes and sober up and stop thinking about how everyone left your party because of that jerk with his fancy booze and what the hell is wrong with Campo Azul anyway…

Phaedrus I think we get the point. It’s like when you have to support Internet Explorer.

Agathon Stares vacantly.

Phaedrus And that going back to the days of Microsoft and embrace and extend would be sad?

Eryximachus Yes, Phaedrus. So very, very sad.