Lecciones para desarrolladores excepcionales

Licencia Creative Commons
Diego Javier Mena Amado – Fragmentos del artículo «DESPIERTA DE LA MATRIX Y LIBERA TU CÓDIGO FUENTE – LIBERA TÚ MENTE» de la revista del Grupo GNU Linux de la Universidad Distrital FJC se distribuye bajo una Licencia Creative Commons Atribución 4.0 Internacional.

El desarrollador que usa solamente su cerebro sobre un proyecto cerrado está quedando detrás del que sabe como crear y desarrollar en un contexto abierto y evolutivo.

Estas son algunas lecciones que vienen de la experiencia propia de Eric S.Raymond en el desarrollo y evolución de PopMail a FetchMail (Software libre para la administración de correos electrónicos):

  1. Todo buen trabajo de software comienza a partir de las necesidades personales del programador. (Todo buen trabajo empieza cuando uno mismo tiene que rascarse su propia comezón)
  2. Los buenos programadores saben que escribir, los mejores, que reescribir y reutilizar.
  3. En cuanto a fragmentos de código fuente: contemple desecharlo; de todos modos tendrá que hacerlo.
  4. Si tienes la actitud adecuada, encontrarás problemas interesantes.
  5. Cuando se pierde el interés en un programa, el último deber es heredarlo a un sucesor competente.
  6. Tratar a los usuarios como colaboradores es la forma más apropiada de mejorar el código, y más efectiva de depurarlo.
  7. Libere rápido y a menudo, escuche a sus clientes.
  8. Dada una base suficiente de desarrolladores asistentes y beta-testers, casi cualquier problema puede ser caracterizado rápidamente, y su solución ser obvia al menos para alguien.
  9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que en el caso inverso.
  10. Si usted trata a sus analistas (beta-testers) como si fueran su recurso más valioso, ellos le responderán convirtiéndose en su recurso más valioso.
  11. Lo más grande, después de tener buenas ideas, es recoger las buenas ideas de sus usuarios. Esto último es a veces lo mejor.
  12. Frecuentemente, las soluciones más innovadoras y espectaculares provienen de comprender que la concepción del problema era errónea.
  13. La perfección en el diseño se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay nada que quitar.
  14. Toda herramienta es útil empleándose de la forma prevista, pero una gran herramienta es la que se presenta a ser utilizada de la manera menos esperada.
  15. Cuando se escribe software para una puerta de enlace de cualquier tipo, hay que tomar la precaución de alterar el flujo de datos lo menos posible y nunca eliminar información a menos que los receptores obliguen a hacerlo.
  16. Un sistema de seguridad es tan seguro como secreto. Cuídese de los secretos a medias.
  17. Para resolver un problema interesante, comience por encontrar un problema que resulte interesante.
  18. Si el coordinador de desarrollo tiene un medio al menos tan bueno como lo es Internet, y sabe dirigir sin coerción, muchas cabezas serán inevitablemente mejor que una.

De la comunidad, para la comunidad y como lo dijo Richard Stallman en su visita por Colombia: «Con el software solo hay dos posibilidades o los usuarios tienen el control del programa o el programa tiene el control de los usuarios.»

¿Tú qué eliges?

Bibliografía

Libro «La Catedral y el Bazar» por Eric S.Raymond

El poder de la Historia GNU-LINUX

Licencia Creative Commons
Diego Javier Mena Amado – Fragmentos del artículo «DESPIERTA DE LA MATRIX Y LIBERA TU CÓDIGO FUENTE – LIBERA TÚ MENTE» de la revista del Grupo GNU Linux de la Universidad Distrital FJC se distribuye bajo una Licencia Creative Commons Atribución 4.0 Internacional.

PRIMER CAFÉ

Te doy la bienvenida querido lector, hacker, ingeniero, desarrollador de software, desarrollador de hardware, investigadores innatos, estos cinco minutos leyendo sentaran las bases para toda una vida de reflexión.

Permitiéndome traer a colación la frase de George Santayana, damos inicio a un recorrido breve sobre la historia del software libre: «Aquellos que no recuerdan el pasado están condenados a repetirlo».

El código es la tecnología que hace que los ordenadores funcionen, esté escrito en el software o grabado en el hardware, es el conjunto de instrucciones, primero escritas como palabras, que dirigen la funcionalidad de las máquinas. Estas máquinas nos dirigen. El código dirige estas máquinas.

codigo-fuente-linux-alemania

Tras la desaparición de la comunidad Hacker del AI Lab, seguida de la desaparición del ordenador PDP-10 por modernos ordenadores de la época (1892-1894) como el VAX ó el 68020 que contaban con su propio sistema operativo privativo, titulares del software propietario establecían la siguiente norma sin escrúpulos: «Si compartes con tu vecino, te conviertes en un pirata. Si quieres hacer algún cambio, tendrás que rogárnoslo» esto hacía pensar a un gran visionario en preguntas como: ¿Qué control deberíamos tener sobre el código? ¿Qué comprensión? ¿Qué libertad debería haber para neutralizar el control que permite? ¿Qué poder?

Una suposición es que las empresas de software tienen el derecho natural e incuestionable a poseer software, y por ende a usurpar todo el poder sobre sus usuarios. (Si de verdad se trata de un derecho natural, nosotros no objetaríamos nada, independientemente del perjuicio que esto ocasionará al público). Pero lo interesante es que la constitución de los EEUU y el derecho tradicional rechazan este punto de vista.

Esta gran contienda histórica librada en su origen por Richard Stallman comenzó en los laboratorios del MIT (Massachusetts Institute of Technology), experimentado lo que se siente al firmar un acuerdo de confidencialidad cuando una persona se negó a entregarle a él y al laboratorio de inteligencia artificial, el código fuente del programa de control de una impresora con la ausencia de ciertas funciones convirtiendo el trabajo de Stallman en una experiencia muy frustrante.

El copyright no es una ley natural, sino un monopolio artificial impuesto por el Estado que limita el derecho natural de los usuarios a copiar.

Es así, como para enero de 1984, abandona su empleo en el MIT y da inicio a la construcción del  software GNU con un objetivo claro: combatir contra el sistema que impedía compartir y modificar software, un sistema antisocial, poco ético, sencillamente equivocado en perspectiva a un mundo donde la libertad y el conocimiento sobrevivieran al compilador, un mundo con principios, un mundo con una sociedad libre.

La respuesta de Richard Stallman a las anteriores preguntas fue desarrollar un sistema operativo, software crucial para empezar a utilizar un ordenador sin verse obligado previamente a conspirar para privar de esto a sus amigos, optando por crear un sistema compatible con Unix (Sistema operativo portable, multitarea y multiusuario; desarrollado en 1969, por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy), su intención: dotarle así de portabilidad y facilitar el cambio a los usuarios de Unix al software libre. El nombre del proyecto GNU fue elegido según una tradición de los hackers, como un acrónimo recursivo de GNU’s Not Unix.

En los años 70 cualquier sistema operativo decente incluía sus propios procesadores de comandos, ensambladores, compiladores, intérpretes, depuradores, editores de texto, gestores de correos y algunos videojuegos. Su primer labor fue crear desde cero un compilador de plataformas múltiples de desarrollo conocido como GCC (GNU Compiler Collection), debido a que el compilador Pastel inicialmente usado para la fecha requería muchos Megabytes de espacio y el sistema Unix 68000 de entonces sólo disponga 64 Kilobytes.

En septiembre de 1984 inició a trabajar en EMACS y para inicios de 1985 ya podía utilizarse, lo que permitió comenzar a usar el sistema Unix para labores de edición. (EMACS al igual que Vi ó Ed es un editor de texto personalizable, autodocumentado y de tiempo real)

En aquel momento había gente interesada en utilizar GNU Emacs lo que planteó el problema de la distribución, cuya solución viene dada por el copyleft, método empleado que utiliza la ley de copyright, pero dándole la vuelta para servir a un propósito opuesto al habitual: en lugar de privatizar el software, ayuda a preservarlo como software libre.

La idea fundamental del copyleft es que se autoriza la ejecución del programa, su copia, codificación y distribución de versiones modificadas, siempre que no se añada ninguna clase de restricción a posteriori. De este modo las libertades cruciales que definen al software libre quedan garantizadas para cualquiera que posea su copia; estas libertades se convierten en derechos inalienables. Una forma específica de copyleft para la mayor parte del software GNU es la licencia pública general GNU (GNU GPL).

Ya en 1985 se crea la FSF (Free Software Foundation) una organización sin ánimo de lucro dedicada al desarrollo del software libre. Para 1990, el sistema GNU, estaba casi terminado. Faltaba crear un solo componente central, el Kernel (Pieza de software capaz de gestionar recursos de alto nivel). El Kernel GNU Hurd no estaba listo para producción, afortunadamente otro kernel compatible con Unix llamado Linux y desarrollado por Linus Torvals estaba a disposición.

Para quienes no lo sepan: Un sistema operativo no significa sólo un Kernel, esta pieza de software apenas permite ejecutar otros programas, por ello, en adelante, incluirás las iniciales GNU cuando hables sobre el sistema operativo GNU/Linux.

gnulinux-powered

A la fecha según Richard Stallman el interés en el software crece a un ritmo superior que la conciencia de la filosofía en que se fundamenta, y esto plantea ciertas dificultades, como lo son las patentes de software que restringen algoritmos y funciones al menos durante 20 años; las bibliotecas no libres que dan lugar a un sistema con más posibilidades y menos libertad; el hardware secreto dificultando escribir drivers libres y compatibles realizandose por ingeniería inversa y la documentación libre vista en la ausencia de buenos manuales para nuestros sistemas y sus derivaciones.

La tarea de enseñar a los nuevos usuarios el valor de la libertad se complicó en gran medida para 1998, con la aparición del Open Source ó software de código abierto. La comunidad partidaria de este término trataba de evitar la confusión entre libre y gratuito, un objetivo muy legítimo, pero parte de esta comunidad intentaban dejar de lado los principios que habían impulsado la creación del software libre y el proyecto GNU, procurando así atraer a ejecutivos y a los usuarios de empresas, quienes comparten mayoritariamente una ideología que antepone las ganancias económicas a la libertad, a la sociedad, a los principios, de modo que la retórica del  «Código Abierto» se concentra en la posibilidad de crear un software de alta calidad y capacidad, pero rehuye las nociones de libertad, comunidad y principios. El proyecto GNU sigue empleando el término «Software Libre» para expresar la idea de que la libertad, y no solo la tecnología, es importante.

Pero querido lector no podemos pensar que el futuro de la libertad está asegurado. ¡No te deje engañar! Si quieres conservar tu libertad, tienes que estar preparado para defenderla…

Bibliografía

Libro «Software libre para una sociedad libre» por Richard M. Stallman