couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <>
Subject Re: Writing a Plugin : know couchdb core
Date Sun, 15 Dec 2013 12:25:02 GMT
Heya Franck,

we are certainly thrilled about plugins, sorry about the radio-silence so far.

Like you point out, writing CouchDB plugins isn’t much different from CouchDB internals.
That’s a good thing, now the bad thing is that CouchDB internals aren’t as well documented.
The good thing again is, that they are relatively straightforward if you work from the HTTP
API downwards.

We have an mailing list to discuss these kinds of things and I did
a write up there a year ago that explains what happens when you write a document top to bottom:

There is also
but I assume you found that already. It’s a good start, but it is not yet complete, e.g.
the fun bits are missing :)

There is of course lots more, and the best way forward is to just dive in and try things out,
look at how existing code does its thing and then just post questions here on erlang@ (either
is fine).

Good luck and let us know how it goes! :)


On 14 Dec 2013, at 10:02 , Franck Eyraud <> wrote:

> Hello,
> It seems that plugin discussions don't create passionate debates... It's a pity because
it is really a good feature, and since from what I understood taht the couchdb core might
be reduced in the future, plugins will be always used more.
> Maybe creating a plugin is not a in itself problem. I watched the interesting talk[1]
from Jason Smith which is a very good start. And it made me realize that writing a plugin
is in fact equivalent to writing a bit of code in couchdb core.
> So what I need is to learn what a couchdb developer knows : couchdb architecture and
> Is there any resource online where I can learn this stuff ? A quick start guide to develop
in couchdb (especially for people who never used erlang before) ? Or is the only way to dig
inside couchdb git tree and try to understand ? Before doing this, I want to be sure I won't
loose too much time. So please people who entered the couchdb project later, how did you reach
your level ?
> Thanks for your help,
> Franck
> [1]
> On 05/12/2013 19:05, Franck Eyraud wrote:
>> Hello,
>> I cross post this since it seems better to follow up on the developers mailing list.
>> I started to work from Jan's my-first-couchdb-plugin to adapt the LDAP feature from
chao into a couchDB plugin.
>> Up to now, I managed to do it, by adding an auth handler.
>> But in order to develop a plugin, I would need to know where it is possible to hook
to change behaviour.
>> I'd say that a list of pluggable points of the code, from people who know very well
the couchdb architecture, would be very useful. I didn't find such resource on the web, and
I have the feeling that it doesn't exist. Would it be possible to have such a list, even in
draft version just to begin. I can then contribute to the documentation to help future plugin
>> Up to now I only counted three public plugins, including two real ones : CouchPerUser,
GeoCouch and MyFirstCouchdbPlugin (and the new born LdapAuth)
>> I would like to know for instance if features that act more deep inside the couchdb
engine, such as the validate_doc_read function, could be made as plugin ?
>> Thank you for your help,
>> Franck
>> On 15/09/2013 14:45, Jason Smith wrote:
>>> Hi, Aurélien.
>>> I think LDAP is a great candidate to convert to a plugin. The foundation is
>>> there however it is still more developer-focused than user-focused.
>>> Probably the best starting place is Jan's example plugin:
>>> On Sun, Sep 15, 2013 at 7:38 PM, Aurélien Bénel <>
>>> wrote:
>>>> No idea?
>>>> Any plugin expert out there?
>>>>> Hi everyone,
>>>>> In version 1.4, the feature that excites me the most is the plugin system.
I see it as a way to foster innovation on CouchDB, letting people
>>>>> test unstable features, without having to weaken the core of CouchDB.
>>>>> However, I haven't found much on the Web about what can be done exactly
>>>>> as a plugin, and how difficult it is to turn a "feature hidden in some
>>>>> developer’s git repository" into a plugin.
>>>>> As an example of a long forgotten (yet needed) feature, let's take the
LDAP authentication handler (
>>>>> Could it be turned
>>>>> a plugin? Would it be easy?
>>>>> Regards,
>>>>> Aurélien

View raw message