The evolution of modularity
@linclark
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
3. enables independent evolution
The parable of the two watchmakers
1 watch
4,000 watches
1. makes conceptual complexity manageable
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
A
A
B
B
- Write programs that do one thing and do it well.
- Write programs to work together.
- Write programs to handle text streams, because that is a universal interface.
A
A
B
B
C
C
It didn't come from AT&T or Sun or any of the traditional vendors. Nor did it rise out of an organizational effort in academia. It was a bricolage that bubbled up out of the Internet by what seemed like spontaneous generation...
—Eric Raymond
1. systems in which the so-called adaptive plan is in the hands of a few agents.
2. systems in which the adaptive plan is decentralized to many independent agents.
Decentralized complex adaptive systems play host to evolutionary processes, or "evolution" for short.
—Carliss Baldwin
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
3. enables independent evolution
App 1
App 2
major.minor.patch
1.0.0
1.0.1
1.1.0
2.0.0
bug or security fix
new feature
API breaking change
patch: Palosirkka / CC-BY-SA
git: miguelpdl
App 1
App 2
1.x
2.x
A
B
C
1.x
2.x
What does modularity mean today?
compact and easily reasoned about
well defined interfaces
independently evolvable
@linclark
coupon: nodeday-london
The Evolution of Modularity
By Lin Clark
The Evolution of Modularity
- 4,085