The evolution of modularity
@linclark
![](https://s3.amazonaws.com/media-p.slid.es/uploads/linclark/images/988464/npm-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1503233/npm.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312813/wombat.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312625/friction.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312629/hammer.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315222/light.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
3. enables independent evolution
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312731/IMG_1537.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
The parable of the two watchmakers
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311446/arch-complex.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
1 watch
4,000 watches
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311453/Herbert_Simon_quote.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311450/head-left.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
1. makes conceptual complexity manageable
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1310750/eniac1.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312625/friction.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312629/hammer.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315222/light.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311465/ruby-circuit.jpeg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311450/head-left.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312700/interface-2.png)
A
A
B
B
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312582/att-unix-pc-boot.jpg)
- 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.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311450/head-left.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312700/interface-2.png)
A
A
B
B
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315513/head-grey.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315523/interface-grey.png)
C
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315528/gear-grey.png)
C
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312625/friction.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1305001/arpanet3.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1310673/TuxOnIce_patching.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312623/cycle.png)
1. makes conceptual complexity manageable
2. allows design to be distributed and parallelized
3. enables independent evolution
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312625/friction.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315889/4994396370_c118bbce78_o.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1316329/people.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1316329/people.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1316329/people.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1316329/people.png)
App 1
App 2
1.x
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
2.x
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311448/head.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1311441/gear.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312700/interface-2.png)
A
B
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1315523/interface-grey.png)
C
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
1.x
![](https://s3.amazonaws.com/media-p.slid.es/uploads/261398/images/1312697/interface.png)
2.x
What does modularity mean today?
compact and easily reasoned about
well defined interfaces
independently evolvable
![](https://s3.amazonaws.com/media-p.slid.es/uploads/linclark/images/988464/npm-logo.png)
@linclark
coupon: nodeday-london
The Evolution of Modularity
By Lin Clark
The Evolution of Modularity
- 3,999