A finales de la década de los 60, Ken Thompson y Dennis Ritchie, de los Bell Laboratories (AT&T), desarrollaron un sistema operativo que denominaron jocosamente UNIX. Esto fue una broma, porque el proyecto en el que había estado trabajando antes Thompson se llamaba MULTICS.
Era un sistema elegante y, sobre todo, sencillo. Originalmente corría en una máquina (DEC PDP-7) que era menos potente que cualquier teléfono móvil actual. El sistema primeramente se escribió en lenguaje ensamblador, específico para el PDP-7. Si bien esto le brindaba una gran eficiencia al código, tenía un inconveniente muy serio: el sistema no podía transportarse a otro ordenador distinto; si querían correr UNIX en un ordenador nuevo, tendrían que reescribirlo íntegramente. Claramente, este enfoque no era muy práctico. Tuvieron una idea: crear un lenguaje ensamblador 'abstracto', de manera que, reescribiendo UNIX en dicho lenguaje, el esfuerzo de transportarlo a una nueva arquitectura debería de ser mínimo. Así nació el lenguaje de programación C. Y, con él UNIX fue reescrito, convirtiéndose así en el primer sistema operativo transportable de la historia.
Por aquel entonces, AT&T, que poseía los Bell Laboratories, no podía explotar comercialmente UNIX, debido a su calidad de monopolio. La compañía permitió su distribución a empresas y universidades por un precio simbólico. Esto fue un factor crucial en la expansión y desarrollo ulterior de UNIX. En Berkeley, por ejemplo, crearon su propia variante del sistema, que llamaron BSD (de Berkeley Software Distribution). Allí se desarrollaron herramientas tales como el editor 'vi', o la capa de red. Mientras tanto, AT&T seguía trabajando en su versión, llamada System V. El lenguaje AWK, por ejemplo, fue contribuido en esta época. A su vez, la empresa SUN Microsystems desarrolló una variante llamada SunOS, que luego pasaría a llamarse Solaris. Toda esta plétora de variantes fue posible porque el código fuente de UNIX estaba disponible, y los mejoras realizadas podían compartirse, para el beneficio de los usuarios. Pero toda este sistema de cooperación se vería pronto amenazado.
En el año 1984, debido a la ley antimonopolio existente en EE.UU., AT&T fue obligada a dividirse. A partir de este momento, la restricción que le impedía explotar comercialmente UNIX desapareció, y la primera medida que se dejó notar fue la restricción en la distribución del código fuente del sistema. Esto suponía una amenaza para el esquema de cooperación que se había establecido. Pero había alguien que estaba dispuesto a intentar cambiar esto.
En el año 1984, Stallman decidió iniciar el proyecto GNU (GNU's Not UNIX), un proyecto cuya finalidad era proporcionar un sistema operativo similar a UNIX, pero con una licencia que impidiese una 'vuelta a la oscuridad' como la que sufrió el propio UNIX. Dicha licencia se llamó GPL (GNU Public License) y le confiere al software la propiedad de ser libre y permanecer libre.
Stallman comenzó a construir una herramienta fundamental para el sistema: el compilador para el lenguaje C (gcc, de GNU C Compiler). Esta pieza de software se ha convertido probablemente en el nexo de unión más importante de todo el software libre. Con el tiempo, fue el compilador utilizado por Linus Torvalds para desarrollar el famoso kernel Linux. Un porcentaje muy alto de todo el código asociado al software libre, está escrito en C. Éste lenguaje es, pues, una lingua franca, como podría haber sido el esperanto, en el marco de las lenguas humanas. Y, gracias a Stallman, el compilador gcc (y el resto del sistema) es, literalmente, patrimonio de la humanidad.