This is a proof of concept meant to start a discussion about and show some of the possible benefits of implementing an extension system for libtaskotron. The code is rather rough but it does work.
The primary benefits I see from doing this would be:
- reducing the dependencies needed when only using a part of libtaskotron (only libtaskotron and libtaskotron-fedora would be needed for local execution)
- enabling the use of libtaskotron on non-fedora platforms (CentOS, debian etc.)
I went with a outside-system-site-packages approach here for two reasons:
- don't have to worry as much about getting unintended modules from site-packages
- we don't need a setup.py for each extension - the files can just be added to /usr/share/libtaskotron
- all the core extensions can remain in the libtaskotron repo, limiting the PITA when trying to work on extensions and the base at the same time
If we go forward with this, it'll need more attention to detail and a lot of polish but I'm happy with it as a proof-of-concept. Thoughts on this approach?
I'd expect createrepo to be usable outside of fedora as well (I guess other RPM distributions also use it). Does it make sense to have it in extensions/fedora/directives? Where do we place it instead? Into libtaskotron/ext/directives? Into extensions/common/directives? And package it as a part of core libtaskotron?