Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The CouchDB Plugin System

The CouchDB Plugin System

This document describes a possible future CouchDB Plugin system.

This is a work in progress, all the feedback is welcome. Please simplify and rewrite this as you see fit.

Once this is a solid description of what we want to build, we cna start building it.

High Level User-Oriented Walkthrough

tl;dr: think Firefox/Chrome Extensions.

  1. Go to Futon.
  2. Click on the main navigation item “Plugins”.
  3. See a landing page of popular CouchDB plugins with
  • descriptions
  • user ratings & comments
  • a big fat “Install Now”
  1. Find a desireable plugin.
  2. Click the “Install Now” button.
  3. Wait for a progress bar to finish.
  4. Futon shows the “Getting Started” page of the plugin’s documentation.

Alternatively:

$ cpm # couch plugin manager
$ cpm search geocouch
$ cpm install geocouch
...

Name

What should these things be called?

  • Plugins
  • Extensions
  • Modules

Architecture

Here is a list of things that need to be in place for this to work.

The Plugin Registry

A public web service that allows people to post new plugins & new versions of plugins. Think NPM, just plugins.couchdb.org.

The web service allows to browse & search plugins.

Eventually, the web service incorporates user feedback like votes and comments to rank plugins so users can make informed opinions.

Technically, I think we should just take NPM and add what we need that it doesn’t yet do (which is not much, I assume).

Futon Integration

A Futon interface to the Plugin Registry.

Plugin Tech

Documentation on how to create a CouchDB plugin, example plugins, a way to develop and test pugins, and finally hooks in CouchDB to allow “over-the-air“ plugin installation.

// Obviously this needs a lot of expanding.

Example Plugins

  • CouchDB Lucene
  • GeoCouch
  • Auth:
    • Twitter
    • Facebook
    • OpenID
    • OAuth
    • GitHub
  • Log to DB
  • Log to $service

Futon Plugins:

  • Different JSON/Data editors.

Issues

If anyone can publish plugins, how do users know they are not malicious?

  • user votes
  • crypto authorship
  • horses
@ryanramage

This comment has been minimized.

Copy link

@ryanramage ryanramage commented Oct 29, 2012

It might be good to start a section of plugins/modules that might be made as a brainstorming exercise. I find this helps guide the design. We can start to group into categories around what they need from a plugin system, and what are out of scope.

@janl

This comment has been minimized.

Copy link
Owner Author

@janl janl commented Oct 29, 2012

@ryanramage great idea, I added a section with example plugins.

@emjayess

This comment has been minimized.

Copy link

@emjayess emjayess commented Oct 29, 2012

how about pluggable json/data editors... like ace (used by cloud9ide, github), jsoneditoronline, probably others

@janl

This comment has been minimized.

Copy link
Owner Author

@janl janl commented Oct 29, 2012

@emjayess Yup, great idea, this would introduce the notion of "Futon" plugins vs. "CouchDB" Plugins. Thanks!

@janl

This comment has been minimized.

Copy link
Owner Author

@janl janl commented Oct 31, 2012

Note to self, look at:

@kxepal

This comment has been minimized.

Copy link

@kxepal kxepal commented Oct 31, 2012

@janl,

also this one would be interested: http://www.rabbitmq.com/plugin-development.html

@lancecarlson

This comment has been minimized.

Copy link

@lancecarlson lancecarlson commented Feb 27, 2013

Does it make sense to have security for each plugin per database?

@beamed-world

This comment has been minimized.

Copy link

@beamed-world beamed-world commented Oct 4, 2016

Some sort of support for JSON schema would be nice, as well as JSON API plugin as well

@OpakAlex

This comment has been minimized.

Copy link

@OpakAlex OpakAlex commented Nov 8, 2016

@janl any updates on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment