Skip to content

Instantly share code, notes, and snippets.

@Zatvobor
Forked from rnewson/gist:2387973
Last active December 14, 2015 02:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zatvobor/5013360 to your computer and use it in GitHub Desktop.
Save Zatvobor/5013360 to your computer and use it in GitHub Desktop.
This is edited list of CouchDB Future Features which might as well be a part of https://github.com/datahogs/couch_gears. Check http://en.wikipedia.org/wiki/MoSCoW_Method for more about special tags such a #MUST, #SHOULD, #COULD, #WONT
User Facing Features
====================
#WONT 1. Conflicts are the rule, not the exception
All previous versions of CouchDB hide conflicts by default (selecting
an arbitrary but consistent winning revision). Expert users can find
and resolve conflicts.
Instead, expose the true picture by default, this includes;
* Reading a document with conflicts returns all conflicting versions,
not just the winner. This might manifest as the ?conflicts=true
response or could be a 300 (Multiple Choices) response.
* Always accept a write (as long as it passes all validate_doc_update
functions). This means that no response will give a 409 (Conflict) by
default. You can still insist on a matching revision by using the
If-Match header.
* _rev is frequently assumed to be a user-facing revision/versioning
system, our efforts to convince otherwise have failed. Embrace this
also and rename the field to _mvcc.
#SHOULD 2. Replace Futon
A modern interface that has first class support for all features
(proper editing for validate_doc_update, show and list functions,
etc).
#SHOULD 3. Improve the user and security model
* Support distributed identity systems such as OpenID
* Allow for easier external authentication
* Finer grained authorization (instead of the binary _admin or not)
* Instead of exposing /_users as a database, design an API to cover
all expected operations instead.
Fine-grained authorization would allow the ability grant read and write
access independently, among other things. Specifically it should be possible
to grant the ability to write but not read.
#COULD 4. Support WebSockets
#COULD 5. Support EventSource
#COULD 6. Support MessagePack
#WONT 7. Support SPDY
#MUST 8. Partial updates of documents
It should be possible to change just a subset of a document's
properties without needing to write an update function.
#MUST 9. Partial reads of documents
It should be possible to read just a subset of a document's properties
without needing to write a show function.
#MUST 10. Enhance background task management
Currently, replication tasks can be cancelled, awkwardly. Compaction
tasks and view building tasks cannot, short of restarting the server
or remote shell access to the erland VM.
Provide a consistent and simple API for cancelling any running
task. This API will also provide status/progress information where
appropriate and pause/resume where possible too.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment