Design a dependency manager (a la homebrew, apt). This dependency manager will support a list of commands to install (e.g. homebrew install X) as well as support a config file for dependency maintainers to build their software directly on the user’s computer. (e.g. brew install ruby runs a make file that compiles the ruby git repo on the user’s computer).
We’ll also consider the backend, where we need to support a CDN like infrastructure for cached assets that can be downloaded by users, and also allow for users to install dependencies from a particular git branch, or particular upstream (maybe they don’t trust our centralized one, and want to use their own private registry, like self-hosted npm or maven).