Gather: A Plugin Framework

All the news that's fit to Gather

Why Gather?

Why Plugins?

Quoting from Mahmoud Hashemi's excellent post on the matter:

"For all types of software, open-source or otherwise, the scalability of development poses a problem long before scalability of performance and other technical challenges [...] Call them plugins, modules, or extensions, from your browser to your kernel, they are the widely successful solution."

But really, read the post!

Why Gather?

Gather is based on the following design ideas:

  • The plugin system must be reusable -- it should not be the case that every system has to have its own plugin system!
  • Package creation should be the interface to creating a plugin. No more (putting a metadata file in some location) and no less (just throwing some random Python file on the web and tellling people to download it).
  • Package installation should be the interface to activating a plugin. If it's installed in the virtual (or real) environment, it's active: there is no "step 2", pip install is all it takes.

Gather's Inspirations

Pop-psychology books aside, the venusian library is good for people of all genders. It has a facility for registering plugins, and discovering them at run-time. What it lacks is a way to discover a plugin by merely installing it.

Setuptools entry points allow discovery of installed packages. However, most people would like to create their setup.py and forget about it -- not hand-maintain which plugins to register, as their package grows more and more, say, sub-commands.

Both Venusian and Setuptools have pretty raw ergonomics: using them for the first time requires making a lot of small decisions.

Enter Gather -- building upon both Venusian and setuptools' entrypoints, it gives an ergonomic interface to finding plugins -- and a reasonable one for registering them (though allowing plugin framework authors to wrap it with something specific to their needs).

Use It

There is documentation at ReadTheDocs, it is installable via PyPI and issues and pull requests are welcome on GitHub.

Using it? Happy about it? Let us know and we will be happy to feature you on our blog.