Large vs Small Packages

I continued to work with a large monolithic package for a while but then decided to split it up after all. I think this was a good decision and I’ll explain. The extensions functionality is a bit tangential here. It’s just a way to load a subset of the functionality.

Splitting my large package into may smaller ones with discrete well-defined and simpler functionality made it easier for my students and collaborators to contribute. It kind of frees the mind having to worry about a very small subset of the problem or the code. One can make progress much more quickly now without having to worry about maintaining compatibility with the “big superpackage” that draws all of them together. The superpackage then just has to manage versions very very rigorously - this is a little tedious but eventually one gets used to it.

P.S.: btw - one can of course always work in branches and forks but this seems a lot less flexible than splitting the package.

3 Likes