Skip to content
This repository was archived by the owner on Dec 19, 2020. It is now read-only.
This repository was archived by the owner on Dec 19, 2020. It is now read-only.

Explore consolidation of projects to reduce overhead #88

Closed
@wincent

Description

@wincent

This is just a place to reflect some discussion that we had about how to reduce the overhead of developing in, testing, and releasing our open source projects.

We notice, for example, two costs:

  1. Because projects are distributed across repositories, it is easy for dependencies to drift out of sync. When we eventually integrate projects in liferay-portal (or sooner, in a project that will eventually go to liferay-portal), we find duplication in our lockfiles. This swells our dependency footprint and can be quite hard to remedy because the dependencies are not all declared in one place.
  2. Releasing (and testing) projects with long dependency chains can be a pain (for example, releasing liferay-js-toolkit which contains a lot of packages, and then having to update liferay-npm-scripts etc). We have a number of these dependency chains in various places.

The observation I'd like to make here is that:

pain = number of separate repositories x number of NPM packages

(Take that with a grain of salt: you could read it more loosely as "pain is proportional to")

In others words, we can reduce pain by reducing either of those multiplicands; either by:

  • Consolidating repos (insofar as is practical) into a larger monorepo; or:
  • Avoiding externalizing dependencies as independent NPM packages when they could in fact be internal "dependencies" (that is, modules/files) within another project.

There are obvious costs to this (it is not free) — and limits too (there are some things that must always be independently consumable).

Example drawbacks:

  • As we merge repos together our issue tracker(s) may become noisier and harder to find things in.
  • "Branding" for projects may be diluted if they get housed alongside other projects (the value of this branding is a whole other topic that we could discuss).
  • Customers may have trouble knowing where to look and where to report problems (although having fewer issue trackers may actually help there).

Anyway, just wanted to get the discussion rolling. Some projects that we should start looking at are probably liferay-npm-tools, liferay-js-toolkit, and liferay-js-themes-toolkit, for staters. Not looking at Clay or AlloyEditor (etc) yet, although in theory, in the long term almost anything is possible.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions