pepkit / looper

A job submitter for Portable Encapsulated Projects
http://looper.databio.org
BSD 2-Clause "Simplified" License
20 stars 7 forks source link

Re-integrate divvy into looper #343

Closed nsheff closed 12 months ago

nsheff commented 1 year ago

History

Originally, looper contained a system to manage computing environments (like, submitting to a cluster). At one point, I saw independent value in that system, and I spun it off as a separate tool called divvy. This seemed like a good idea at the time. But while I still think divvy could have had value independent of looper, it led to some issues. Notably, I required the new idea of "adapters" to connect divvy to looper, and these have been challenge to manage (see: https://github.com/pepkit/divvy/issues/51). At the same time, divvy never really caught on with use independent of looper.

Decision

Given that 1) this division led to challenges; 2) the independent value hasn't yet materialized; 3) the division has caused increased confusion and overhead for users in terms of documentation and learning to use looper,

I now want to reverse the decision.

So, I propose we re-integrate divvy functionality into looper.

Implementation

I would like to maintain the ability to use divvy functions independently of looper. I think I would just integrate divvy in roughly its current state as a submodule in looper. So, you could use it from Python with import looper.divvy. I also think now the looper package should expose the the divvy entrypoint, so you could use use divvy submit and whatnot on the CLI, it would just be provided by the looper package. This will clarify that divvy and looper really go together, and simplify lots of things.

Configuration

Then, the divvy configuration options would become a subcategory of looper configuration, instead of being its own thing.

nsheff commented 1 year ago

One reason we may not want to do this is that divvy is used by caravel.

Except, caravel also uses looper, so that's not an issue after all, I guess? ...