'Firebase' Does for Apps What Dropbox Did for Docs

Melih Onvural ran into James Tamplin one morning while riding into San Francisco on a streetcar. Onvural had a laptop. Tamplin had Firebase. And by the time they reached downtown, they'd built a chat application that could serve hundreds of thousands of people.
firebase
WIRED

Melih Onvural ran into James Tamplin one morning while riding into San Francisco on a streetcar. Onvural had a laptop. Tamplin had Firebase. And by the time they reached downtown, they'd built a chat application that could serve hundreds of thousands of people.

Created by Tamplin and the rest of the engineering team at a small San Francisco startup called Envolve, Firebase is an online service that helps you build "realtime" web applications, including collaboration tools, multiplayer games, and, yes, chat clients. The trick is that you can build these applications without creating any software that runs on a server. You can put all your software logic in the client.

Late last year, Tamplin pitched the service to Onvural, whose company, TokBox, offers a video chat client that runs on any website, and a few days later, the two happened to appear on the same streetcar. As they rode downtown, they used Firebase to built a text chat tool that plugged into the TokBox video client. Tapping Firebase is a simple as dropping some JavaScript code into a client application, and within the hour, they'd finished a prototype. At the office that day, Onvural showed off their new creation, and after some additional development, TokBox will soon launch this Firebased chat tool to the web at large.

"We don't have to build any of the infrastructure ourselves. We're front-end guys, and all we have to deal with is the JavaScript coding on the front-end," says Onvural, referring to the client application that sits on each user's machine.

In recent years, cloud computing services have completely reinvented the way software applications are designed and operated. With "platform clouds" such as Microsoft Azure, Google App Engine, and Heroku, you can build applications, host them, and readily scale them to an ever larger number of users -- all without having to worry about the infrastructure required to run them. And with online messaging services such as Pusher and PubNub, you can create realtime applications where data is instantly pushed to an army of clients. But Firebase is unique in combining these two breeds of cloud service, and the result is that you can build your applications without server code.

The genius of the service is that it merges data storage and data transfer into a single system. "We’ve kind of changed the paradigm from one were you think about sending data and storing data as two separate things to a paradigm where it's just about synchronizing data," says Andrew Lee, who founded Envolve with James Tamplin, an old high school buddy.

'The software developer just makes sure the clients are referencing the same piece of data, and all the data transport happens automatically.'Firebase doesn't just move information from one client to another. It shuttles all client communications to a central data repository in the proverbial cloud. If multiple people are text chatting, for instance, Firebase doesn't just send text between the clients. It sends all text to a repository that all clients tap into. When one client updates the repository, the changes are synchronized across all other clients. "The software developer just makes sure the clients are referencing the same piece of data, and all the data transport happens automatically," Lee says.

Envolve built the service to facilitate the development of its own text chat client -- software for adding chat to any website -- but Tamplin, Lee, and company soon realized Firebase was a tool that could drive almost any application, most notably realtime tools -- tools that trade information on the fly. A startup called Earbits is using the service to build an application that lets people share the music they're listening to, and Envolve sees the platform as the ideal development tool for multiplayer games.

The company recently used the service to build a massively multiplayer version of Asteroids, the classic arcade game. And a second demo application turns another old standby, Tetris, into a two-player contest. "We’ve basically figured out you could build almost anything with this," Lee says. "Tetris was built by one of our newest engineers in a couple of days, and he’d never seen the API before."

It's a Platform Cloud. But Not Really

That's what Firebase is: an API, or application programming interface. To access the API, you drop some JavaScript code into your application, and the service does the rest. "We’re a platform as a service, but rather than actually have code that runs on our servers, we’re all client side," says Lee. "Anything that you as a developer builds, you run in the client browser or in the client iPhone app or whatever they happen to be on."

That said, if you want to set up your own servers for security reasons or additional processing power, you can do so. Firebase will still handle the data, and your servers can tap into this central repository in much the same way clients do.

The service's primary aim is to simplify application development. If you move all your code into the clients, Lee says, you can more easily scale to a large number of users. "All these cloud providers claim that if you go into the cloud, you can scale automatically, but that’s only true if you wrote your code to shard across multiple servers, which is extremely difficult to do. Most people just don't do that," Lee says. "But if you don’t have to do server-side at all, and you build your application to use this API, we can shard your data for you and scale your application automatically."

What's more, he says, that central data repository can be used as a debugging tool. Every shared repository has its own URL, and if you key this URL in a browser, you can watch the data transfer in realtime. You could even use this URL as a separate API endpoint, plugging the data feeds into other systems and applications.

Todd Greene -- the CEO of PubNub, a startup that offers a service that simply pushes data to client applications -- sees the benefit of a tool like Firebase, and he believes other services will take the same approach. But he adds that there are still cases where you want an application to process the data as it goes across the pipe -- and you don't send all the data down to the client.

>'We’re a platform as a service, but rather than actually have code that runs on our servers, we’re all client side'

Bruno Fernandez-Ruiz, Yahoo's chief platform architect, goes further, warning that the internet just wasn't designed for pushing data down to clients in this way. He believes that many applications are best served by server-side tools such as Node.js, which Yahoo uses in its new Mojito development platform.

Envolve's James Tamplin acknowledges that certain applications just aren't suited to Firebase. "If you're building an application that processes images...where you have have to do some serious data crunching, we're not good for that," he says. But he and Lee believe the platform can eventually serve about 95 percent of the applications on the web.

Last month, Firebase was among the sponsors at the latest Angel Hack hackathon in San Francisco, and about two hours before the competition, Tamplin and Lee pitched their service the fifty or sixty developers who would be spend the day building applications at breakneck speed. Thirty hours later, five of the top competition's top ten applications were built with Firebase.

The question is what to call the thing. "Platform cloud" or "platform-as-a-service" just doesn't do it justice. The best description comes from Tamplin, who compares Firebase to Dropbox, the online service that lets you share files via a central online repository. "It's like Dropbox," Tamplin says, "for applications."