Hi all!
As ansible has gotten super big lately, and also because people like virtualenv, it’s time to change the way ansible modules are organized and packaged.
The proposal we have is to keep them in lib/ansible/modules/{core,extras,user}/ and use the python subsystem to find this module path. --module-path will continue to work.
For the project, core and extras will be git submodules, requiring a recursive git checkout to fetch them.
Most existing ansible modules will go to core, others will go to extras - with the docs denoting which are which - the main thing is core modules will have slightly higher ticket priority. (The main application, ansible/ansible, will have the highest).
As such, this may eventually allow lieutenant level merging on extras, which occasional updates to core to merge in submodules.
The individual docs pages for core/extras would link to which repo to file bugs on, and a link to the code for the module in question.
In implementing this, we intend to make a short term feature flag USE_NEW_STYLE_LOADER for about a week, so we can make these changes in the open, and replace them all by working in the upstream. Nobody should notice anything but existing users MAY need to make a checkout of the git submodules in the worst case.
This will require some minor changes to core and the documentation formatting system, and when we are done we should have two more github repos in the ansible/ github organization.
The release cycle, as well as packaging, will be the same – ansible will be one pip package, not 3, and there will be one RPM/deb, not three.
Virtualenv users should be instantly happier, and this will also help us immensely in managing what github issues/PRs go with what content, and making it easier to find things, as, let’s face it, GitHub’s issue tracker is good for small projects, but not big ones, but we like the lower barrier to entry.
Also over the next few months, we’ll also be taking a bit more time to attack core refactoring items, which is further made easier by the seperate queues. (One of these items is sending JSON all the way down - possibly modules all the way down RAW with JSON inputs (TBD), and simplifying the way module templating is done).
Hope this makes sense - shouldn’t really affect anyone at user level - but happy to answer any questions!
–Michael