"Monorepo style"

Tony Atkins tony at raisingthefloor.org
Mon May 9 07:47:25 UTC 2016

Hi, Antranig:

This is fantastic.  I have followed more of the "micromodule" approach, I
have to admit it can be pretty maddening to coordinate.  Lerna gives us a
great new option for our larger projects, and is especially nice because it
gives us the ability to transition in whatever direction we like as slowly
as we need to.

Just to give a couple of examples, I was thinking of our recent discussions
in KETTLE-32, I've used Kettle's dataSource and request grades widely in
other projects, even though those packages don't use Kettle itself.  I was
arguing for packaging those up into their own modules.  Lerna gives us a
great middle ground, where sub-modules can stay where they are if it
doesn't make sense to split them out.  If a module matures or its focus
shifts enough that it needs its own library, people who depend on the
library only need to update the version number.

Conversely, if we decide that we should group related micromodules, we now
have a very sensible way to do so.  I'm thinking here of the outgoing mail
handling that current lives in gpii-express-user and the test mail server
that's it's own package (gpii-mail-test).  We could for example create a
gpii-mail module and make gpii-mail-test a submodule of that.  Even if we
decide to collapse the micromodule into its new home at some point, the
transition is step-by-step and can be clearly delineated by version.

In either direction (splitting or combining), the transition is smooth as
glass, as it's just the same package name with a different version,
regardless of where the code actually lives.

Anyway, great stuff.



On Sun, May 8, 2016 at 12:27 AM, Antranig Basman <
antranig.basman at colorado.edu> wrote:

> It appears that our front-runner plan for modularizing Infusion and other
> "overly large" repositories such as Kettle has come of age, been named and
> supported by others in the community. A great vindication for "masterly
> inaction" since this is now work that we don't need to spearhead ourselves.
> It is known as the "monorepo pattern" and is supported by the build tool
> named "lerna".
> https://github.com/kittens/lerna
> A large repository following this pattern is "babel" at
> https://github.com/babel/babel , and the pouchdb team recently tweeted
> that they are at work refactoring their project to this pattern:
> https://twitter.com/nolanlawson/status/727959139494731777
> _______________________________________________________
> fluid-work mailing list - fluid-work at lists.idrc.ocad.ca
> To unsubscribe, change settings or access archives,
> see http://lists.idrc.ocad.ca/mailman/listinfo/fluid-work
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idrc.ocad.ca/pipermail/fluid-work/attachments/20160509/8fdf681c/attachment.html>

More information about the fluid-work mailing list