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

Made with Slides.com