Home About Eric Topics SourceGear

2013-03-14 10:00:00

Announcing something new: Zumero

I am so very excited to unveil our latest endeavor:

What is Zumero?

To describe Zumero, we first describe SQLite.

SQLite is a lightweight (but surprisingly powerful) implementation of a SQL database.

SQLite is the standard database software for iOS, Android, and Windows RT. It is installed on over a billion mobile devices.

But like any other computer, and perhaps more so, a mobile device is not isolated. It needs to share data with a server.

And SQLite has no synchronization capabilities.

Zumero solves that problem.

Zumero is "sync for SQLite".

No, really, what is Zumero?

It's a better database platform for mobile.

Mobile apps need to talk to the cloud about data.

A lot of people are building mobile apps that use the "remote procedure call" model. Every user operation requires a network request to the server.

We think "replicate and sync" is a better model. The app can interact with a local copy of the database instead of going through the network. Synchronization can be handled entirely in the background.

Putting network activity in the background brings two big wins:

Consider a typical situation where a mobile app responds to a user action by filling a list box with the results of a database query. Neither the developer nor the user wants the network involved between the button tap and the refresh of the display. Mobile networks are just not consistent enough. Even a perfectly-working LTE connection usually has enough latency to make the app feel sluggish.

Oh good grief. Eric, I thought you were a geek? Tell us what Zumero is.

On the client, Zumero is a SQLite extension. The server is built on node.js.

The client tries very hard to be invisible to the developer. We didn't want to introduce a whole new API for everybody to learn, so developing with Zumero isn't much different from SQLite. Porting an existing SQLite app to use Zumero is usually straightforward.

The SQLite extension uses SQLite's "virtual tables". A Zumero table mostly works just like a regular table, except that it can be synced.

The Zumero server manages the central, authoritative copy of the database and handles all the details of synchronization, merging changes, conflict resolution, caching, logging, authentication, and permissions.

Why SQLite?

  1. Because it's an incredible piece of software. If you're not familiar with SQLite, give it a serious look. It has come so far that keeping the word "Lite" in the name seems inappropriate. SQLite is fast, robust, and far more capable than most people know.

  2. Because it's everywhere. Every smart phone and tablet has SQLite inside. Even Microsoft has given up the notion of shrinking SQL Server and decided to standardize on SQLite as its recommended database for Windows RT.

  3. Because it needs a sync feature. The real question here is not "Why SQLite?" but rather, "Why NOT SQLite?" Why should people consider anything except SQLite for dealing with mobile data? The main answer is obvious: SQLite doesn't sync. Zumero was created to fill that need, not by introducing a new mobile database system, but rather, by adding painless synchronization features to the high quality database that is already there.

What platforms do you support?

Right now (March 2013), the Zumero Client SDK includes support for iOS and Android. WinRT is planned. Blackberry is not, but that might change if there is evidence of customer demand.

We will also be supporting two of the cross-platform mobile solutions: Apache Cordova (aka Phonegap) and Xamarin. We've made significant progress on both of these, but neither of them was ready for the initial release.

The client SDK also includes support for (regular) Windows and Mac OS. This may seem odd, since Zumero is all about mobile. But very few so-called mobile apps are accessed exclusively from mobile devices. You may (and probably will) want the ability to also access your data from web apps, desktop applications, or even other servers.

Even if you don't need any of these things, the SQLite command-line shell is a handy way to perform administrative tasks for your Zumero server, such as initial setup of your schema, configuring permissions, or analyzing logs.

How does Zumero store data on the server?

The Zumero server has a plugin architecture designed to support a variety of SQL databases. We currently have two implementations of the database backend: SQLite and PostgreSQL.

At the present time (still March 2013), the Zumero server is available as a cloud-hosted service with the SQLite backend, but it will be made available in other flavors later.

What about server platforms?

From a strictly technical perspective, the Zumero server runs just fine on Linux, Mac, and Windows.

The current cloud-hosted offering is Linux, running in the Amazon cloud.

In the future, we will make the server available in three ways: in the cloud, on-premises, or as a desktop server for development purposes. Not all combinations of platform and deployment are likely to be interesting. Things will probably end up something like this:

Linux Windows Mac Other
Cloud Yes Yes
(Azure, later)
Where? What?
On-premises Yes
Nobody wants this Maybe Solaris?
Development Yes
We'll support Commodore 64 right after node.js does

Is Zumero open source?


Who are Zumero's competitors?

As always, that depends on how narrowly you define "competitor". :-)

If I had to name just one other player, it would be Couchbase Lite. Couchbase founder J. Chris Anderson recently did a great blog entry called Why Mobile Sync?. His tune sounds a lot like the one we're singing about Zumero.

So it wouldn't be outrageous to describe Zumero by saying, "It's like Couchbase Lite. Except it's SQL".

SQL? I thought SQL was dead?

Hardly. The NoSQL offerings are gaining traction, but SQL still has far greater market share, especially in the enterprise.

How does Zumero compare to Parse/Kinvey/Stackmob and their ilk?

We don't really think of Zumero as a "Backend as a Service" (BaaS) company, since we're focused on the database part of the story.

But if you ignore all the other mobile backend stuff (like push notifications), it would be reasonable to describe Zumero by saying, "It's like Parse/Kinvey/Stackmob. Except it's a replicate-and-sync model. And it's SQL."

Is Zumero part of SourceGear?

No. Yes. Sort of.

In terms of market positioning, Zumero is separate. It does not share SourceGear branding. It has no particular connection with SourceGear's products.

But financially, Zumero is currently part of SourceGear. (This approach is similar to what we did with Teamprise, which we sold to Microsoft in 2009.)

Corey and I think of Zumero as our new startup, which is being incubated inside SourceGear.

Mobile data? Really? How is this related to version control?

It's not.

But the genesis of Zumero happened when we did the iPad app for Veracity. We liked the "replicate and sync" model for mobile so much that we decided to take the databasey part of Veracity and productize it as a platform for building all kinds of mobile apps. Along the way, the technology evolved a lot, to the point where it doesn't look much like the original Veracity code, but that's what we started with.

This is actually somewhat of a return to our roots for SourceGear. We spent a lot of our first three years doing mobile development as contract work for Motorola. Of course, today's mobile devices are just a little more powerful than that phone we worked on back in 1997. :-)

What does this mean for SourceGear's other products, Vault and Veracity?

They are continuing to move forward. Vault 7 is underway and aiming for a Q3 release. Veracity 2.5 is done and will be released sometime in the next two weeks.

How can I try Zumero or find out more about it?