IndexedDB support

What is the current status of the IndexedDB support branch and switching adapters in general? What are the issues that hinder progress currently? Are there questions someone in the community could answer, or other ways to help out with this?

Quoting @nilclass’s mailing list reply in full:

The primary problem with the indexedDB backend is that indexedDB
transactions are committed implicitly, unless a new operation is
started directly from the success callback of the previous operation
in that transaction. Due to the way remoteStorage’s storage-backend
interface is designed, that doesn’t happen though - but instead
sometimes the next operation happens asynchronously.

I currently see two alternatives to move forward:

  1. Implement custom transactions on top of the indexedDB API - that sounds like the simplest to me, but is horribly slow (There is a start
    of this implementation here:
    https://github.com/remotestorage/remotestorage.js/tree/feature/indexed-db-backend)
  2. Rewrite the “store” to implement all operations that need to be atomic in a way that they don’t have asynchronous calls in between.
    After experimenting with (1) for a while, I currently tend to do (2).
    Also I’m very much open to new ideas.

What’s the status on this?

I still can’t use remoteStorage.js with reasonable amounts of data. Importing my Delicious bookmarks basically breaks the app and kills the browser. This is the most important issue I currently see.

I’m currently working on the 0.8 branch, which is basically a rewrite.
https://github.com/remotestorage/remotestorage.js/tree/0.8

There is an implementation of indexeddb caching there, as this issue is one of the primary reasons for the rewrite, but in general the code is not API compatible to 0.7 (yet).

Ah, thanks!

“Not yet” means it will be compatible? What’s the rough ETA for a beta?

I hope to have a working beta this week (remotestorage-01 compatibility and sync to indexeddb is most working already).

I’m not sure yet if it will be 100% API compatible - there has been some confusion especially with the way caching is configured which I’m trying to get rid of, so at least in that department there will be changes. It shouldn’t be too much work though to provide legacy stubs at least.

Awesome! Thanks for the update.

0.8 supports indexedDB

Yay! Thanks!