Friday, March 19, 2010

CDO goes Offline

If you followed the catchy title because you were fearing that the CDO Model Repository project could be discontinued, well, then I've chosen the right title. Let me elaborate by starting with a little anecdote:

During a previous conference I talked about how CDO can transparently turn your file based, isolated EMF applications into a distributed cloud of nodes, all collaborating on a central shared model, immediately seeing all the changes that are committed to the repository by other clients.

I was asked what would happen when, due to network failure, a client gets disconnected from the server. Would it be able to continue working in a disconnected mode? At that time I answered that the C in CDO is for Connected (Data Objects) and that we, for this reason, do not offer an offline mode.

Well, while that caused a grin here and there it was kind of polemical and I must say that I've always understood the industrial relevance of being able to work offline. The real reason for not having this mode in CDO has always been the tremendous cost to develop it properly. As an individual full-time committer I just couldn't afford this investment on my own.

But exactly this has changed since and my new main sponsor has given me the opportunity to develop the cool new offline mode for CDO. In fact it is not only a mode, optionally provided on the client side. More exactly it's a new type of a cloned repository. This clone is continously being synchronized with a master repository and can almost be used like a normal repository. Clients are almost not impacted, normally they do not even realize whether the clone is online or offline.

The major challenge wasn't so much the background synchronization of the clone or write-through commits of clients while the clone is online. It turned out that committing to the clone during offline periods and pushing these changes to the master later is even more complex. I'm tempted to slip into the details of the technical solution that I implemented, but the whole purpose of this article is to allure you to my exciting EclipseCon talk:

The talk is on Wednesday, starting at 14:30 and I'm going to augment the beginners' overview of the technology with a preview of all the new and the cool stuff that we'll be delivering with the upcoming CDO 3.0 in Helios. And I'm also going to explain why the new offline mode has coincidentally lead to the introduction of branching and merging support in CDO, as well.

I'm looking forward to meet you all (again) in Santa Clara!