strangemonad / runway

Domain models and their values
1 stars 0 forks source link

Design of the packaging system – packaging / library / namespace controls #31

Open strangemonad opened 6 years ago

strangemonad commented 6 years ago

These are extra-linguistic concepts and have no bearing on the semantics of definitions. Definitions can be moved from one namesspace / library / package to another transparently (the only changes needed are renames to the respective qualified identifiers and dependencies).

That said, software in the very large requires the help of aditional structure and tooling support.

Guiding principle

Decoupling Package systems are the interface of software development in the very large. This really means they are the interface for different groups of people with different goals – changing different parts at different speeds. Software in the small can be done by a single person (or a small group of people at the cost of mental synchronization). As you scale up, to a larger repo with multiple projects (and hence multiple groups of people) or to external dependencies, the cost of universal agreement increases exponentially. A packaging system, at its core, decouples key work practices (release schedules, code organization, publishing locations).

Goals

Additional goals

Non-goals