One of the biggest pain points of a large multi package project like Interledger is making changes across package boundaries. It’s messy, hard to track, and testing is very complicated. Versioning is tough, and dependencies can vary significantly.
I’m curious if others here would see value in organizing the various js Interledger packages into a multi-package repo i.e. a monorepo. Orchestrating a monorepo is not simple but fortunately it is easy due to many in the js community having built fantastic tools to deal with them.
Specifically I would propose utilizing Lerna with Yarn Workspaces to manage the packages. This combination would allow Lerna to take care of versioning and publishing across packages while letting Yarn Workspaces elegantly manage the dependencies. I believe Yarn is the superior package manager choice here because of its focus on reproducible builds and its Workspace feature which allows a monorepo to hoist every dependency to the root node_modules, cross-link package dependencies and only require a single lockfile. Bootstrapping the entire project can be done with a
Examples of projects that are currently using this Lerna/Yarn Workspaces combination are Babel (which Lerna was originally written to manage), React, Angular, Ember, Meteor, Jest, Gatsby and Vue-cli.
I think the advantages a single multi-package repo could bring to interledgerjs would help tremendously with ease of contribution, development cycle quality of life and overall productivity.
Do you think the community would be open to this project?