Ci sono aziende che difendono il proprio software, facendone una risorsa aziendale competitiva, da tenere il più possibile top secret. Altre invece lo condividono con il resto del mondo, spesso per diffondere idee vincenti e per migliorare il lavoro di tutti. In questo secondo caso parliamo di software open source.
Questo approccio alla programmazione del software prevede che chiunque possa accedere, modificare e condividere il codice sorgente di una particolare tecnologia. Normalmente il codice sorgente non è accessibile perché si tratta di una risorsa strategica da proteggere, il vero e proprio cuore funzionante dei prodotti e dei servizi di proprietà di aziende e privati. Offrire al mondo il codice sorgente significa rendere disponibile a tutti la stessa tecnologia, che può essere impiegata liberamente per creare tanti altri prodotti interessanti che possono aprire nuove strade per il business.
Un progetto open source, qualsiasi sia la tecnologia oggetto dei suoi sforzi, di solito ruota attorno a una community di sostenitori che contribuisce alla diffusione e miglioramento della tecnologia. Tutto attorno, aziende e privati possono sviluppare progetti di business indipendenti che si appoggiano su queste risorse tecnologiche, compensando il progetto con donazioni di denaro o contribuendo a loro volta ai processi migliorativi.