Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugins packaging #358

Closed
kuba opened this issue Apr 22, 2015 · 5 comments
Closed

Plugins packaging #358

kuba opened this issue Apr 22, 2015 · 5 comments

Comments

@kuba
Copy link
Contributor

kuba commented Apr 22, 2015

Here's an idea: move all plugins to separate git repositories and distribute them in a separate PyPI/Debian/etc. packages (that is all apart from standalone, which is probably best to be left in the main distribution). setuptools entry_points system, which is already being used in master, makes such transformation a breeze.

entry point name GitHub PyPI Debian
apache letsencrypt-apache letsencrypt-apache letsencrypt-apache
nginx letsencrypt-nginx letsencrypt-nginx letsencrypt-nginx
... ... ... ...
  • PyPI packages would have to install_requires.append('letsencrypt'), as well as set up entry_points appropriately
  • Debian plugin packages would Require: letsencrypt as well as specific server software, e.g. letsecrnypt-apache would Require: apache. letsencrypt Debian package could Suggest: letsencrypt-apache, etc.
  • CLI would automatically populate --{plugin_name}-{option_name}, similarly {plugin_name}_{option_name} for config

This would simplify a lot of things, such as release process, Python 3 compatibility transition, OS support (e.g. AFAIR augeas, necessary for apache or nginx plugins, is not even available on Windows, what about it's py3 compat?)... Main cons is probably less control over the namespace (e.g. PyPI), or establising unique {plugin_name} etc.

https://github.com/kuba/lets-encrypt-preview/tree/cli brings us closer to the required architecture (moves plugin specific constants and CLI arguments to plugins subdirs, first attempt at unique plugin names problem)

cc: @jdkasten, @fmarier

@fmarier
Copy link
Contributor

fmarier commented Apr 22, 2015

In the above example, you'd still have a base package (letsencrypt) that would contain the files common to all plugins?

From a Debian point of view, it's very easy to build several "binary" packages from the same source package. We already build a separate letsencrypt-doc package for example. These binary packages can have different dependencies too.

So I don't really have a strong opinion either way.

@kuba
Copy link
Contributor Author

kuba commented Apr 22, 2015

Yes, there would be a base package (letsencrypt) that does all the CLI logic and loads entry_points plugins.

@kuba
Copy link
Contributor Author

kuba commented May 6, 2015

#376 (comment) Quick summary: great idea for the future, but we are not yet ready. Sounds plausible to me. I will close this for now, noting that #376 is a big step towards this goal.

@kuba kuba closed this as completed May 6, 2015
@kuba
Copy link
Contributor Author

kuba commented Jun 22, 2015

Reopening for launch. Progress made with #531.

@jsha
Copy link
Contributor

jsha commented Mar 14, 2017

This is now done, to the extent that the plugins are their own packages. I think we've decided to keep maintaining everything in the same repo, though.

@jsha jsha closed this as completed Mar 14, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants