``... una relazione produttore/consumatore [è] una situazione
in cui una attività produce qualcosa che viene usato da un'altra
attività.'' [Malone]
La natura altamente modulare del software favorisce alti livelli di
riuso. Questo fenomeno è molto accentuato nei Progetti Open Source per
due motivi:
- Il software usato nel mondo open source è fortemente basato su
architetture Unix, concepite per la massima modularità.
- La disponibilità dei codici sorgenti permette la
cannibalizzazione, il riuso di parti di codice, altrimenti non
disponibili né visibili.
Di relazioni produttore/consumatore nello sviluppo di Progetti Open Source ne troviamo fondalmentalmente di due tipi:
- All'interno del Progetto. Il lavoro all'interno di uno stesso
Progetto è in genere diviso in compiti, a seconda dei vari moduli
che compongono il codice. Spesso la realizzazione di uno di questi
moduli necessita di parti di altri e quindi gli eventuali ritardi si
ripercuotono in più moduli.
- Tra diversi Progetti. È molto comune che diversi Progetti
utilizzino l'uno parti di codice dell'altro, questo anche per
questioni di razionalità, praticità e risparmio di tempo, in
sostanza per ... non dover inventare la ruota ogni volta
[Raymond1]. Ciò è favorito, oltre dalla libera disponibilità, anche
dal fatto che spesso molti sviluppatori partecipano a più Progetti
contemporaneamente.
Spesso succede che il ritardo nello sviluppo di un particolare
elemento di codice di un Progetto costringa chi ne ha bisogno in un
altro Progetto a dover aspettare.