lunes, agosto 28, 2006

Desarrollos basados en codigo abierto


Muchas veces se da la situación de que una empresa necesita desarrollar un sistema a medida de sus necesidades, y entonces dicen "desarrollemoslo bajo el modelo del código abierto, así nos ahorramos la mano de obra (muajaja)". Esta es "La Reflexión del Lunes".

¿Es posible realmente empezar un proyecto de desarrollo "desde cero" en el mundo del código abierto y esperar que su evolución y su innovación provenga exclusivamente de la mano de la comunidad?

Mmm complicada respuesta. Si pensamos en los principales proyectos de código abierto, todos gozan de miles de contribuciones que hacen los programadores. Pero, esas contribuciones tienen mas que ver con la corrección de errores y la extensión de funcionalidades, que con la infraestructura base del sistema. ¿No me entienden? Análicemos rápidamente los tres proyectos más grandes del mundo del código abierto: Linux, OpenOffice y Firefox.

Linux (el núcleo): "Salió al mundo" luego de cuatro meses de desarrollo que se llevaron a cabo exclusivamente dentro de la casa de Linus Torvalds. Cuando lo publicó, algunos programadores lo probaron y notaron que funcionaba, pero había algunas correcciones que hacerle. Entonces, colaboraron. Hoy, las principales innovaciones del núcleo Linux vienen de la mano de programadores que cobran por su aporte al núcleo.

OpenOffice: "Salio al mundo" cuando Sun liberó StarOffice, una suite de Oficina cuyo desarrollo demandó una inversión de decenas de miles de dólares. Los programadores cuando tuvieron el código, vieron que la herramienta funcionaba, pero se le podía hacer algunas mejoras. Entonces, colaboraron. De todas formas, las principales innovaciones que hay en OpenOffice vienen de parte de programadores que trabajan full-time (y cobran) en el proyecto.

Firefox: "Salio al mundo" cuando Netscape libera el código fuente de Mozilla, un motor de navegación que demandó una inversión de varios miles de dólares. Los programadores jugaron con el, y vieron que podían mejorarlo. Entonces, colaboraron. Otra vez, Firefox es una organización multimillonaria y las principales innovaciones vienen de la mano de programadores que trabajan full-time y cobran por su trabajo en el proyecto.

¿Cual es el común denominador entre estos tres proyectos? En primer lugar: en todos, los programadores de código abierto tenían con que jugar. Existia una base funcional, desarrollada a base de una inversión de dinero (Firefox / OpenOffice) o mucho trabajo (en el caso de Linux). Había mucho código escrito. En segundo lugar: los tres proyectos realmente evolucionan gracias a gente que trabaja full-time en ellos, y cobra por su trabajo.

Ahora bien, cuando no hay con que jugar (cuando solo se tiene un boceto de objetivo), basar su planificación en la ilusa idea de "la gente colabora, el proyecto crece y nos hacemos millonarios" es una idiotez, por el simple hecho de que la gente no colabora porque sí. A nadie le sobra el tiempo. Y como a nadie le sobra el tiempo, todo el mundo puede hacer "pequeñas contribuciones" a algo que ya tiene una base desarrollada. Las "pequeñas contribuciones" siempre mejoran lo que está hecho, pero no innovan realmente.

Este mensaje va a todas las compañias y organizaciones que, en medio de una nube de pedo, se plantean desarrollar sistemas a medida de sus necesidades, basandose en el modelo del código abierto (quizás entendiendo para el carajo el mensaje de Jon "Maddog" Hall), con el único objetivo de "ahorrar plata en programadores". Señores, eso no sucede nunca. Si quieren que un proyecto de desarrollo avance realmente en tiempo y forma, necesitan gente comprometida con su trabajo full-time. Y a esa gente hay que pagarle. Open-Source, de nuevo, no significa "gratis".