docs(clients-matrix.md): Introducing the library features matrix.

As support for etcd features is very uneven between different clients,
a feature matrix can help application developers to understand what a
client library can offer them, and also help client libraries
developers to understand what they should work on. I assessed the
features of all client libraries by looking at their master branch on
github, to the best of my knowledge.
This commit is contained in:
Giuseppe Lavagetto 2014-01-05 11:30:11 +01:00
parent d397e83a05
commit e9b85264ab
2 changed files with 48 additions and 2 deletions

View File

@ -0,0 +1,46 @@
# Client libraries support matrix for etcd
As etcd features support is really uneven between client libraries, a compatibility matrix can be important.
We will consider in detail only the features of clients supporting the v2 API. Clients still supporting the v1 API *only* are listed below.
## v1-only clients
Clients supporting only the API version 1
- [justinsb/jetcd](https://github.com/justinsb/jetcd) Java
- [transitorykris/etcd-py](https://github.com/transitorykris/etcd-py) Python
- [russellhaering/txetcd](https://github.com/russellhaering/txetcd) Python
- [iconara/etcd-rb](https://github.com/iconara/etcd-rb) Ruby
- [jpfuentes2/etcd-ruby](https://github.com/jpfuentes2/etcd-ruby) Ruby
- [aterreno/etcd-clojure](https://github.com/aterreno/etcd-clojure) Clojure
- [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl) Erlang
## v2 clients
The v2 API has a lot of features, we will categorize them in a few categories:
- **HTTPS Auth**: Support for SSL-certificate based authentication
- **Reconnect**: If the client is able to reconnect automatically to another server if one fails.
- **Mod/Lock**: Support for the locking module
- **Mod/Leader**: Support for the leader election module
- **GET,PUT,POST,DEL Features**: Support for all the modifiers when calling the etcd server with said HTTP method.
### Supported features matrix
| Client| [go-etcd](https://github.com/coreos/go-etcd) | [jetcd](https://github.com/diwakergupta/jetcd) | [python-etcd](https://github.com/jplana/python-etcd) | [node-etcd](https://github.com/stianeikeland/node-etcd) | [nodejs-etcd](https://github.com/lavagetto/nodejs-etcd) | [etcd-ruby](https://github.com/ranjib/etcd-ruby) | [etcd-api](https://github.com/jdarcy/etcd-api) | [cetcd](https://github.com/dwwoelfel/cetcd) | [clj-etcd](https://github.com/rthomas/clj-etcd) |
| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **HTTPS Auth** | Y | Y | Y | Y | Y | - | - | - | - |
| **Reconnect** | Y | - | Y | - | - | - | Y | - | - |
| **Mod/Lock** | Y | - | Y | - | - | - | - | - | - |
| **Mod/Leader** | Y | - | - | - | - | - | - | - | - |
| **GET Features** | F | B | F | F | F | F | B | F | G |
| **PUT Features** | F | B | F | F | F | F | G | F | G |
| **POST Features** | F | - | F | - | F | F | - | - | - |
| **DEL Features** | F | B | F | F | F | F | B | G | B |
**Legend**
**F**: Full support **G**: Good support **B**: Basic support
**Y**: Feature supported **-**: Feature not supported

View File

@ -44,6 +44,8 @@
- [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl)
A detailed recap of client functionalities can be found in the [clients compatibility matrix][clients-matrix.md].
**Chef Integration**
- [coderanger/etcd-chef](https://github.com/coderanger/etcd-chef)
@ -69,5 +71,3 @@
- [mattn/etcdenv](https://github.com/mattn/etcdenv) - "env" shebang with etcd integration
- [kelseyhightower/confd](https://github.com/kelseyhightower/confd) - Manage local app config files using templates and data from etcd
- [configdb](https://git.autistici.org/ai/configdb/tree/master) - A REST relational abstraction on top of arbitrary database backends, aimed at storing configs and inventories.