So they should be distributed as separated packages.
Proposal for package names, using namespaces:
thumbnailer.core => WSGI application and utilities
thumbnailer.engines.images => the "images" engine
thumbnailer.engines.document => the "documents" engine.
"thumbnailer" and "thumbnailer.engines" are just namespaces. So if someone wants to add an engine, he can use the namespace. I mean we don't need some "contrib" level, since everything in "thumbnailer.engines" will be contrib.
Proposal for code layout, without additional repositories:
Thumbnailer
README.rst
src/thumbnailer.core/ => core egg (contains the setup.py file and thumbnailer/core/init.py)
src/thumbnailer.engines.images/setup.py
src/thumbnailer.engines.documents/setup.py
We can start with a single code repository (this one). Then, if needed, we will still be able to create separate repositories.
Installation may look like pip install thumbnailer.engines.images which will depend on thumbnailer.core.
Then how to register engines with thumbnailer app? Choose a quick-and-dirty solution here. Maybe setuptools/distribute's entry points. We may improve this in another ticket.
So they should be distributed as separated packages.
Proposal for package names, using namespaces:
"thumbnailer" and "thumbnailer.engines" are just namespaces. So if someone wants to add an engine, he can use the namespace. I mean we don't need some "contrib" level, since everything in "thumbnailer.engines" will be contrib.
Proposal for code layout, without additional repositories:
We can start with a single code repository (this one). Then, if needed, we will still be able to create separate repositories.
Installation may look like
pip install thumbnailer.engines.images
which will depend onthumbnailer.core
.Then how to register engines with thumbnailer app? Choose a quick-and-dirty solution here. Maybe setuptools/distribute's entry points. We may improve this in another ticket.