Improve terminology for local versions, revisions, etc

Our terminology is sometimes unclear and I think we could disambiguate it a bit. I think I understand the various terms as follows, and propose to make this consistent in code comments, function names, and the developer docs; please comment if you have other terms or better proposals:

  • remoteStorage: can refer to the project, the protocol, or the spec
  • remoteStorage version: refers to a spec version
  • store (proposing this as a new term): either the local store or the remote store
  • storage (maybe we should deprecate this term then): synonymous with remote store
  • remote store: an account on a remoteStorage server, on GoogleDrive, or on Dropbox. In the code: remoteStorage.remote
  • backend: a type of remote store, i.e. remoteStorage (any spec version), GoogleDrive, or Dropbox
  • local store: the ‘remotestorage’ database in IndexedDB, or its equivalent in localStorage or in-memory-storage. In the code: remoteStorage.local
  • node: either a folder or a document in the local store.
  • item: a subfolder or a document inside a folder.
  • itemName: the name of the item, i.e. the node ‘/foo/bar’ is the item with itemName ‘bar’ inside the folder node ‘/foo/’.
  • itemsMap: the list of items in a folder version. In the local store it contains a value false (deletion) or true (item exists)
  • revision: either the ETag itself as a string, or the value of a folder’s itemsMap or a document’s body+contentType identified by it.
  • version (newly proposing this one): given a node, one of node.common, node.local, node.remote, node.push. We can call these the “local version”, “push version” etcetera of a node.