UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Software Libre MONOGRAFIA Para obtener el Título de: Licenciado en Sistemas Computacionales Administrativos Presenta: Eugenio Rojas Calderón Asesor: Héctor Guzmán Coutiño Xalapa-Enríquez Noviembre 2013 UNIVERSIDAD VERACRUZANA Facultad de Contaduría y Administración Software Libre MONOGRAFIA Para obtener el Título de: Licenciado en Sistemas Computacionales Administrativos Presenta: Eugenio Rojas Calderón Asesor: Héctor Guzmán Coutiño Xalapa-Enríquez Noviembre 2013 INDICE RESUMEN ............................................................................................................. 1 INTRODUCCION ................................................................................................... 2 CAPITULO I: SOFTWARE ..................................................................................... 6 1.1 DEFINICION DE SOFTWARE .................................................................. 7 1.2 CARACTERISTICAS DEL SOFTWARE .................................................... 7 1.3 ANTECEDENTES DEL SOFTWARE ........................................................ 8 1.4 PROCESOS PARA EL DESARROLLO DEL SOFTWARE ...................... 10 1.4.1 1.5 ETAPAS DEL DESARROLLO DEL SOFTWARE ............................. 10 MODELOS DE DESARROLLO DE SOFTWARE .................................... 11 1.5.1 MODELO DE CASCADA .................................................................. 11 1.5.2 MODELO EN ESPIRAL .................................................................... 12 1.6 TIPOS DE SOFTWARE .......................................................................... 13 CAPITULO II: SOFTWARE LIBRE ....................................................................... 16 2.1 DEFINICION DE SOFTWARE LIBRE ..................................................... 17 2.2 QUE NO ES SOFTWARE LIBRE ............................................................ 17 2.2.1 SOFTWARE A PRUEBA .................................................................. 17 2.2.2 SHAREWARE .................................................................................. 18 2.2.3 SOFTWARE REGALADO................................................................. 18 2.2.4 SOFTWARE CON FUENTE ............................................................. 18 2.3 ANTECEDENTES DEL SOFTWARE LIBRE ........................................... 18 2.3.1 NACIMIENTO DEL SOFTWARE LIBRE ........................................... 18 2.3.2 ORIGEN DEL SOFTWARE LIBRE ................................................... 19 2.3.3 EL MOMENTO EN LA HISTORIA EN QUE SOLO EXISTIA SOFTWARE LIBRE ...................................................................................... 19 I 2.3.4 RICHARD STALLMAN ..................................................................... 19 2.3.5 UNIX ................................................................................................. 20 2.3.6 GNU ................................................................................................. 21 2.3.7 COPYLEFT Y GNU GPL .................................................................. 22 2.3.8 GNU/LINUX ...................................................................................... 24 2.3.9 CARACTERÍSTICAS DE GNU/LINUX .............................................. 24 2.3.9.1 COSTO ......................................................................................... 24 2.3.9.2 CODIGO FUENTE ........................................................................ 25 2.3.9.3 REUSABILIDAD ............................................................................ 25 2.3.9.4 PORTABILIDAD ............................................................................ 25 2.3.9.5 ENTORNO GRAFICO ................................................................... 25 2.3.9.6 COMO SISTEMA DE PROGRAMACION ...................................... 25 2.3.9.7 SOFTWARE DE CÓDIGO CERRADO PARA GNU/LINUX ........... 26 2.3.9.8 EMPRESAS QUE PATROCINAN SU USO ................................... 26 2.3.10 ALGUNAS DISTRIBUCIONES DE GNU/LINUX ............................ 26 2.3.10.1 DEBIAN...................................................................................... 26 2.3.10.2 FEDORA .................................................................................... 26 2.3.10.3 UBUNTU .................................................................................... 26 2.4 CLASIFICACIÓN DEL SOFTWARE LIBRE............................................. 27 2.4.1 DE ACUERDO AL COSTO DE ADQUISICION ................................. 27 2.4.2 DE ACUERDO A LA APERTURA DEL CODIGO FUENTE............... 27 2.4.3 DE ACUERDO A SU PROTECCION ................................................ 27 2.4.4 DE ACUERDO A SU LEGALIDAD .................................................... 27 CAPITULO III: IMPULSORES DELSOFTWARE LIBRE ....................................... 28 3.1 EMPRESAS DESARROLLADORAS DE SOFTWARE LIBRE ................. 29 II 3.1.1 FREE SOFTWARE FOUNDATION .................................................. 29 3.1.2 FREE SOFTWARE FOUNDATION EUROPE................................... 30 3.1.3 FUNDACION SOFTWARE LIBRE AMERCA LATINA ....................... 30 3.1.4 APACHE FREE FOUNDATION ........................................................ 31 3.1.5 GNU SOLIDARIO ............................................................................. 31 3.2 OPEN SOURCE INITIATIVE ................................................................... 31 3.2.1 ANTECEDENTES ............................................................................ 31 3.2.2 PREMISAS DEL CODIGO ABIERTO ............................................... 32 3.3 COMPARATIVA ENTRE SOFTWARE LIBRE Y DE CODIGO ABIERTO 33 3.4 OTROS SISTEMAS OPERATIVOS LIBRES ........................................... 34 3.4.1 OPEN BSD ....................................................................................... 34 3.4.2 FREE BSD ....................................................................................... 34 3.4.3 NET BSD .......................................................................................... 35 3.5 TIPOS DE LICENCIA .............................................................................. 35 3.5.1 BSD .................................................................................................. 35 3.5.2 GNU/GPL ......................................................................................... 35 3.5.2.1 LICENCIA GPL VERSION 1 .......................................................... 36 3.5.2.2 LICENCIA GPL VERSION 2 .......................................................... 36 3.5.2.3 LICENCIA GPL VERSION 3 .......................................................... 37 3.5.3 AGPL ................................................................................................ 37 3.5.4 LGPL ................................................................................................ 37 3.5.5 MOZILLA PUBLIC LICENCE ............................................................ 38 3.5.6 COPYLEFT ...................................................................................... 38 3.5.7 DOMINIO PUBLICO ......................................................................... 38 3.5.8 APACHE ........................................................................................... 39 III 3.5.9 SEMI-LIBRE ..................................................................................... 39 3.5.10 FREEWARE .................................................................................. 39 3.5.11 FUENTE ABIERTA U OPEN SOURCE ......................................... 39 3.5.12 PRIVADO ...................................................................................... 40 3.5.13 COMERCIAL ................................................................................. 40 3.5.14 SHAREWARE O DE EVALUACIÓN .............................................. 40 CAPITULO IV: COMPARATIVA Y DETALLES DEL SOFTWARE LIBRE............. 42 4.1 LA ECONOMIA ....................................................................................... 43 4.1.1 FINANCIACION PUBLICA ................................................................ 44 4.1.2 FINANCIACION PRIVADA SIN ANIMO DE LUCRO ......................... 45 4.1.3 FINANCIACION POR QUIEN NECESITA MEJORAS ...................... 45 4.1.4 FINANCIACION CON BENEFICIOS RELACIONADOS .................... 46 4.1.5 FINANCIACION COMO INVERSION INTERNA ............................... 47 4.2 POLITICA................................................................................................ 47 4.3 CRECIMIENTO ....................................................................................... 48 4.4 COMPARATIVA ENTRE EL SOFTWARE LIBRE Y EL SOFTWARE PROPIETARIO ................................................................................................. 49 4.4.1 SOFTWARE PROPIETARIO ............................................................ 49 4.4.2 CARACTERISTICAS DEL SOFTWARE PROPIETARIO .................. 50 4.5 COMPARACION ..................................................................................... 51 4.5.1 DIFERENCIAS ENTRE EL SOFTWARE PROPIETARIO Y SOFTWARE LIBRE ...................................................................................... 52 4.6 DIFERENCIAS AL PROGRAMAR SOFTWARE PROPIETARIO Y LIBRE 53 CAPITULO V: PRESENTE DEL SOFTWARE LIBRE........................................... 54 5.1 MODELOS DE DESARROLLO ............................................................... 55 IV 6 5.2 COMUNIDADES ..................................................................................... 58 5.3 MOTIVACIONES PARA EL DESARROLLO DEL SOFTWARE LIBRE.... 59 5.4 MODELOS DE NEGOCIOS BASADOS EN SOTFWARE LIBRE ............ 60 5.5 SOFTWARE LIBRE HOY ........................................................................ 61 5.6 FUTURO DEL SOFTWARE LIBRE ......................................................... 61 EJEMPLOS DE PROGRAMAS DE SOFTWARE LIBRE ............................... 62 6.1 MOZILLA FIREFOX ................................................................................ 62 6.2 GNU/LINUX ............................................................................................ 63 6.3 APACHE ................................................................................................. 63 6.4 FREEBSD ............................................................................................... 64 6.5 OpenOffice .............................................................................................. 64 6.6 NOTEPAD++ .......................................................................................... 65 6.7 SOFWARE DE COMUNICACIÓN ........................................................... 65 6.8 DESCARGAS DE CONTENIDO ............................................................. 65 6.9 REPRODUCTORES MULTIMEDIA ........................................................ 65 6.10 VIRTUAL BOX ..................................................................................... 66 CONCLUSIONES ................................................................................................ 67 FUENTES DE INFORMACIÓN ............................................................................ 72 V RESUMEN El presente trabajo habla sobre el software libre, el cual inicia con una definición en general de lo que es el software, pasando después por lo que interesa que es el libre. Dentro del software libre, se hablara de sus antecedentes, empezando con su fundador y la fundación que inicio para llevarlo a cabo, los tipos de software libre, los impulsores que lo mantienen a flote, ejemplos de programas y/o aplicaciones de este, su relación político-económica, las licencias creadas a partir del mismo, una comparación entre las ventajas y desventajas contra el software propietario, los modelos de desarrollo de este y las comunidades de desarrollo. Y para el final, echaremos un vistazo a las posibilidades del futuro y presente del software libre. 1 INTRODUCCION El software libre es uno de los fenómenos más importantes de la cultura digital, tanto económica como políticamente; el software libre levanta pasiones, es un hecho innegable. Por un lado tenemos a los pasionales y acérrimos defensores del software libre, y por el otro lado, aquellos que lo ofenden sin descanso, muchas veces, por el desconocimiento o los intereses económicos. En numerosas ocasiones se llega a situaciones totalmente enfrentadas en la que el analista técnico serio y riguroso es sustituido por argumentos sociológicos o económicos, a veces bastante irónico. Todos deben aceptar que el software libre ha llagado para quedarse, que suele ser muy avanzado tecnológicamente, y que hay software libre excelente, bueno y malo, al igual que el software propietario. Existe un desconocimiento generalizado de las herramientas libres disponibles para dar respuesta a un problema. Y este desconocimiento influye en la decisión final que toman los usuarios. Se aprecian dos cuestiones clave relacionadas con el software libre: el coste y el soporte. Muchos creen que software libre es sinónimo de “gratis”; Software Libre es la libertad de acceso, uso, modificación y distribución del programa o aplicación. Pero el usuario debe saber que hay costes: el coste de formación, el coste de posibles soporte técnico por parte de terceros, entre otros. Al fin y al cabo, hay una industria detrás, que debe obtener lo necesario para poder vivir. La ventaja competitiva es que se puede adecuar la herramienta a las necesidades particulares y que luego se puede compartir o se puede revender a terceros. El software libre premia el trabajo innovador y en colaboración. Es buena saber cuántos usuarios comparten la solución a un problema específico con el resto del mundo. Generalmente, esto produce herramientas innovadoras, cada vez con más prestaciones y constantemente actualizadas. Si se compara con costosas actualizaciones de software propietario, que hacen casi lo mismo, con mínimos cambios (en algunos casos, las actualizaciones son una escusa para recaudar fondos), las ventajas son obvias. La segunda cuestión que atrae a los usuarios es el soporte técnico. Teóricamente, el soporte técnico de una aplicación es la posibilidad de contactar a alguien que 3 resuelva las dudas y los problemas. Las empresas de software propietario se aferran desesperadamente a la aparente falta de soporte técnico de calidad del software libre, para intentar justificar su modelo económico de ganancia máxima y mínimo coste. Cada vez son más las empresas que están implantando y/o desarrollando software libre y que ofrecen servicios de soporte técnico de alta calidad, además, este tipo de empresas sabe que su supervivencia depende de su excelente técnica, antes que de la publicidad fantasiosa. Cualquiera que haya usado servicios técnicos de soporte de software propietario y que haya recibido como respuesta final un “lo sentimos, pero esa incidencia no figura en nuestra base de datos” tras una larga espera vía telefónica o correo electrónico, sabe a que nos referimos. La solución a los problemas es simple, solo hay que buscarla, leerla y probarla. Los usuarios piensan que para usar software libre hay que ser un experto informático y conocer los más profundos y recónditos saberes del código binario. Esta creencia está bastante lejos de la realidad. Hoy en día, las distribuciones de GNU/Linux ofrecen procesos de instalación similares a los de sistemas propietarios y son capaces de identificar y preparar para su uso la mayoría del hardware disponible. Casi todos ofrecen al usuario un entorno gráfico con las familiares ventanas, lo que hace que su aprendizaje no ofrezca gran dificultad. Para comenzar a hablar acerca del software libre que es el tema principal de este trabajo, voy a comenzar haciendo un recorrido a través de lo que es el software en sí, formulando la pregunta básica: ¿Qué es? A partir de este punto voy a continuar con lo que nos interesa que es el software libre, en el cual mostrare algunos de los puntos más importantes del mismo, tales como son sus antecedentes, dentro del cual encontraremos su origen, su creador y las batallas que ha tenido que librar para defenderlo; así como también las formas para sustentarlo y las decisiones que hasta hoy en día han convertido al software libre en una preocupación constante para el software propietario. El mundo del software libre es muy amplio, ya que ha sido fuente de inspiración para otros movimientos los cuales no quieren que su software sea limitado ya que tienen la intención de que el usuario pueda acceder por completo a sus características. Es importante señalar las leyes que se 4 han creado para mantener libre al software, ya que al ser capaz de ser modificado por terceros, existe la posibilidad de que este el redistribuirlo lo haga bajo las leyes del software privativo haciéndolo ir en contra de los ideales de los que en un principio fue diseñado. Este hecho entra dentro de lo que han sido las batallas que ha tenido que librar el señor Stallman para mantener puro al software, ya que desde un punto de vista muy objetivo todo software que es creado por primera vez, es libre en ese momento, son las leyes las que deciden convertirlo en software privativo o no. Es fascinante conocer un poco sobre el mundo de este tipo de software, ya que a diferencia del software privativo que se mantiene a flote económicamente debido a las licencias que otorgan, las constantes actualizaciones de sus productos y el soporte técnico que brindan como apoyo a los usuarios para el uso de los mismos, el software libre tiene que depender por completo de otros mediante donaciones y apoyo económico de terceros para poder mantenerse y seguir brindando una segunda alternativa de solución de problemas a sus usuarios. Para finalizar, conoceremos algunos de los programas de software libre más conocidos y usados por los usuarios, asimismo realizare una interesante comparativa entre el software libre y privativo para conocer los pros y contras de cada uno, para que de esta forma el usuario pueda identificar mejor sus diferencias y pueda elegir a el software más adecuado de acuerdo a sus necesidades. Es importante señalar que también el lector podrá averiguar cuál es el presente y el futuro del software libre; es en este punto donde se verá que es lo que se hace hoy en día por el software libre y cuál es su alcance, aquí es donde se sabrá cuales son las motivaciones de los desarrolladores para seguir desarrollando al mismo y cuáles son sus modelos de negocios para poder seguir existiendo y que de esta forma pueda llegar a los usuarios. Puedo decir que ha sido muy satisfactorio haber podido desarrollar este trabajo, espero que sea de interés para quien lo lea y lo tome como punto de partida para futuras investigaciones donde pueda documentar los más nuevos sucesos del mismo. Les doy la bienvenido al mundo del software libre. 5 CAPITULO I: SOFTWARE 1.1 DEFINICION DE SOFTWARE De acuerdo a la Real Academia Española (2001), el software es un conjunto de programas, instrucciones y reglas informáticas que permiten ejecutar distintas tareas en una computadora. En otras palabras, se puede decir que el software es el aspecto lógico e intangible de una computadora, lo contrario del hardware que viene siendo la parte física y tangible de la computadora. Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a la edición de textos; el llamado software de sistema, tal como el sistema operativo, que básicamente permite al resto de los programas funcionar adecuadamente, facilitando también la interacción entre los componentes físicos y el resto de las aplicaciones, y proporcionando una interfaz con el usuario. Algunas diferencias básicas que pueden haber entrar el software y el hardware puede ser que, por ejemplo, el software se desarrolla utilizando lenguajes de programación, no se deteriora con el tiempo y es posible mejorarlo, además de que es construido en base a las necesidades del cliente y a la posible solución de un problema, mientras que el hardware es fabricado utilizando maquinas, por lo cual es ensamblado y se ve afectado por el uso y el tiempo. 1.2 CARACTERISTICAS DEL SOFTWARE Algunas de las características del software (Pressman 2002) son: a) Confiable: Este término hace referencia a varios elementos que debe contener un software fiable como son la completitud, calidad, entre otros. b) Robusto: El software no basta con ser confiable y que funcione correctamente si el usuario decide no utilizarlo, por ello el software también debe ser consistente y preciso, además de amigable. c) Reutilizable: Se refiere al hecho de poder usar nuevamente un código que ya tenemos, permitiendo al programador ser más eficiente en cuanto a tiempo y productividad. d) Eficiente: El software debe cumplir con las funciones para la cual fue creado. 7 e) Mantenible: Este aspecto involucran los elementos que permiten que simplifican las labores de prevención, corrección y ampliación del código del programa. f) Evolutivo: Esta capacidad se refiere al aspecto de que el software debe ser capaz de cambiar para adaptarse a las nuevas necesidades. g) Portable: Es la capacidad de un sistema de funcionar de diferentes plataformas. 1.3 ANTECEDENTES DEL SOFTWARE La historia del software no surge con los aparatos electrónicos, ha estado presente desde hace mucho con el uso del ábaco o calculadoras mecánicas. Sin embargo, en estos casos, el software no se encontraba incorporado en el equipo, más bien era aportado por el usuario. La primera etapa del software surge cuando el mismo era solamente desarrollado para uno mismo o alguna organización. La misma persona que lo escribía, lo ejecutaba y si fallaba, lo depuraba. Debido a que la movilidad en el trabajo en aquellos tiempos era baja, los ejecutivos creían que esa persona se encontraría allí en el caso en que el sistema presentara algún error. La segunda etapa se extiende desde la mitad de los años sesenta hasta finales de los años setenta. Fue allí donde la multiprogramación y los sistemas multiusuario generaron nuevos conceptos en la interacción maquina-hombre. Además fue aquí, donde los avances en los dispositivos de almacenamiento condujeron a la primera generación se los gestores de bases de datos. La segunda era también se caracterizo pos las casas de software las cuales desarrollaban proyectos en los cuales se producían programas de decenas de miles de líneas de código fuente. Todos esos programas, todas esas sentencias fuente tenían que ser corregidas cuando se detectaban fallas, modificadas cuando cambiaban los requisitos de los usuarios o adaptadas a nuevos dispositivos hardware que se hubieran adquirido. Estas actividades se llamaron colectivamente mantenimiento del software. A partir de ese momento, el software ya se desarrollaba para tener una amplia distribución en un mercado. 8 La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años setenta y continuó más allá de una década. Las redes de área local y de área global, las comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso “instantáneo” a los datos, supusieron una fuerte presión sobre los desarrolladores del software. La conclusión de la tercera era se caracterizó por la llegada y amplio uso de los microprocesadores. La cuarta era de la evolución del software se dirige hacia potentes máquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas. Hoy en día, las redes de información en todo el mundo proporcionan una infraestructura denominada: superautopista de información, donde la industria del software ya es la cuna de la economía del mundo. Llegando al punto donde las decisiones tomadas por gigantes de la industria tales como Microsoft arriesgan billones de dólares. Mientras pasa el tiempo, la cuarta generación progresa y comienzan a surgir nuevas tecnologías. Las tecnologías orientadas a objetos están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de aplicaciones. Los sistemas expertos y el software de inteligencia artificial han salido del laboratorio para entrar en aplicaciones prácticas de una gran variedad de problemas del mundo real. Por ejemplo, el software de redes neuronales artificiales junto con la aplicación de lógica difusa ha abierto posibilidades excitantes para el reconocimiento de patrones y habilidades de procesamiento de información de carácter humano. Es aquí cuando la programación de realidad virtual y los sistemas multimedia ofrecen formas radicalmente diferente de comunicar información al usuario final. De una manera más simple y resumida, podemos presentar la evolución del software de la siguiente manera: La primera etapa: o Orientación por lotes o Distribución limitada o Software a medida 9 La segunda etapa: o Multiusuario o Tiempo real o Bases de datos o Software como producto La tercera etapa: o Sistemas distribuidos o Incorporación de inteligencia o Hardware de bajo costo o Impacto en el consumo La cuarta etapa: o Sistemas personales potentes o Tecnologías orientadas a objetos o Sistemas expertos o Redes neuronales artificiales o Computación en paralelo o Redes de computadoras 1.4 PROCESOS PARA EL DESARROLLO DEL SOFTWARE Un proceso para el desarrollo de software, también denominado ciclo de vida del desarrollo de software es una estructura aplicada al desarrollo de un producto de software. Hay varios modelos a seguir para el establecimiento de un proceso para el desarrollo de software, cada uno de los cuales describe un enfoque diferente para diferentes actividades que tienen lugar durante el proceso. Algunos autores consideran un modelo de ciclo de vida un término más general que un determinado proceso para el desarrollo de software. Muchas organizaciones implementan metodologías para el proceso de desarrollo. El estándar internacional que regula el método de selección, implementación y monitoreo del ciclo de vida del software es ISO 12207 (es el estándar para los procesos de ciclo de vida del software de la organización ISO). 1.4.1 ETAPAS DEL DESARROLLO DEL SOFTWARE 10 La siguiente metodología fue tomada de Fundamentos de Desarrollo de Sistemas por Daniel Benito Román Ocampo. a) Análisis: Es la definición clara del problema y del sistema que se desea crear para dar solución. b) Diseño: Es el proceso de utilizar la información recolectada en la etapa de análisis para diseñar el producto. c) Desarrollo: Consiste en utilizar los modelos creados durante la etapa de diseño para crear los componentes del sistema. d) Prueba: Consiste en asegurar que los componentes individuales que integran al sistema o producto, cumplen con los requerimientos de la especificación creada durante la etapa de diseño. e) Implantación: Ponerlo a disposición del cliente. f) Mantenimiento: Es cuando se corrigen los errores y se pone nuevamente en circulación el producto como una nueva versión. 1.5 MODELOS DE DESARROLLO DE SOFTWARE Hay varios modelos para perfilar el proceso de desarrollo, cada uno de las cuales cuenta con pros y contras. Algunas de las características que definen el desarrollo de software son: a) No existe un modelo universal. b) Los modelos no son rígidos. c) Son una guía respecto al orden en que deben adelantarse las actividades. d) Se basa en el reconocimiento que el software tiene un ciclo de vida. Dentro de los modelos que existen, hablaremos de dos en particular, el modelo en cascada y el modelo en espiral. 1.5.1 MODELO DE CASCADA En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada, es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior. Un ejemplo de una metodología de desarrollo en cascada es: 11 a) Análisis de requisitos: En esta fase se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir. b) Diseño del Sistema: Organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo. c) Diseño del Programa: Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario así como también los análisis necesarios para saber que herramientas usar en la etapa de Codificación. d) Codificación: Es la fase en donde se implementa el código fuente, haciendo uso de prototipos así como de pruebas y ensayos para corregir errores. e) Pruebas: Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente y que cumple con los requisitos, antes de ser entregado al usuario final. f) Implantación: Es la fase en donde el usuario final ejecuta el sistema. g) Mantenimiento: Una de las etapas más críticas, ya que se destina un 75% de los recursos, es el mantenimiento del Software ya que al utilizarlo como usuario final puede ser que no cumpla con todas nuestras expectativas. 1.5.2 MODELO EN ESPIRAL La principal característica del modelo en espiral es la gestión de riesgos de forma periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, siendo un análisis iterativo y concienzudo de los riesgos, especialmente en el caso de sistema complejos de gran escala. La espiral se visualiza como un proceso que pasa a través de algunas iteraciones de las siguientes actividades: a) Crear planes con el propósito de identificar los objetivos del software, seleccionados para implementar el programa y clarificar las restricciones en el desarrollo del software. b) Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar como identificar y eliminar el riesgo. 12 c) La implementación del proyecto: implementación del desarrollo del software y su pertinente verificación. 1.6 TIPOS DE SOFTWARE A grandes rasgos, se puede decir que existen tres tipos de software: Software de Aplicación: Aquí se incluyen todos aquellos programas que permiten al usuario realizar una o varias tareas específicas. El software de sistema le procura al usuario y al programador, interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: Sistemas operativos: Se encarga de crear el vínculo entre los recursos materiales, el usuario y las aplicaciones. Controladores de dispositivos: Un controlador es software que permite que el equipo se comunique con hardware o dispositivos. Sin controladores, el hardware que conecte al equipo (por ejemplo, una tarjeta de vídeo o una cámara web) no funcionará correctamente. Hojas de cálculo: Es un software a través del cual se pueden usar datos numéricos y realizar cálculos automáticos de números que están en una tabla. También es posible automatizar cálculos complejos al utilizar una gran cantidad de parámetros y al crear tablas llamadas hojas de trabajo. Videojuegos: Es un juego electrónico en el que una o más personas interactúan, por medio de un controlador, con un dispositivo dotado de imágenes de vídeo. Servidores: Programa que realiza algunas tareas como son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Software de Programación: son aquellas herramientas que un programador utiliza para poder desarrollar programas informáticos. Para esto, el programador se vale de distintos lenguajes de programación. Como ejemplo: 13 Compiladores: Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Editores de texto: Es un programa que permite crear y modificar archivos digitales compuestos únicamente por un texto sin formato, conocidos comúnmente como archivos de texto o texto plano. Depuradores: Es un programa usado para probar y eliminar los errores de otros programas. Intérpretes: Es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel, además se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción. Software de Sistema: Es aquel que permite a los usuarios interactuar con el sistema operativo así como también controlarlo. Este sistema está compuesto por una serie de programas que tienen como objetivo administrar los recursos del hardware y, al mismo tiempo, le otorgan al usuario una interfaz. El sistema operativo permite facilitar la utilización del ordenador a sus usuarios ya que es el que le da la posibilidad de asignar y administrar los recursos del sistema, como ejemplo de esta clase de software se puede mencionar a Windows, Linux y Mac OS X, entre otros. Como ejemplo: Herramientas de diagnóstico: Es un software que permite monitorear y en algunos casos controlar la funcionalidad del hardware, como pueden ser: computadoras, servidores y periféricos, según sea el tipo. Estos dispositivos pueden ser, la memoria RAM, el procesador, los discos duros, routeadores, tarjetas de red, entre otros . 14 Los servidores: Programa que realiza algunas tareas como son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Las utilidades: Son una herramienta que realizan las tareas de mantenimiento y soporte para la construcción y ejecución de programas. Los controladores de dispositivos: Un controlador es software que permite que el equipo se comunique con hardware o dispositivos. Sin controladores, el hardware que conecte al equipo (por ejemplo, una tarjeta de vídeo o una cámara web) no funcionará correctamente. 15 CAPITULO II: SOFTWARE LIBRE 2.1 DEFINICION DE SOFTWARE LIBRE Puedo decir, que el Software Libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software: La libertad de usar el programa, con cualquier propósito. La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades. El acceso al código fuente es una condición previa para esto. La libertad de distribuir copias, con lo que puedes ayudar a tu vecino. La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. El acceso al código fuente es un requisito previo para esto. Sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre son aceptables, cuando no entran en conflicto con las libertades principales. Por ejemplo, el Copyleft (definido muy resumidamente) es la regla en base a la cual, cuando se redistribuye el programa, no se deben agregar restricciones para denegar a los demás las libertades principales. Esta regla no entra en conflicto con las libertades principales, más bien las protege. Otro dato que es importante destacar, seria que no se debe confundir la palabra “Libre” con “Gratuito”, ya que a simple vista, uno suele pensar en el precio del producto (software) con la palabra libre y confundirse, pero es importante aclarar que ambas palabras no se refieren a lo mismo. El significado de software libre como ya se dio anteriormente, se refiere en pocas palabras, a la modificación del mismo por parte de terceros y en base a ello, su distribución en el mercado puede ser o no gratuita. 2.2 QUE NO ES SOFTWARE LIBRE Existen algunos tipos de software a los que equivocadamente se les incluye dentro de la categoría de software libre, pero debido a sus características, están muy lejos de serlo. Por ejemplo tenemos al software “a prueba”, el “shareware”, el “regalado”, y el distribuido con código fuente pero sin licencia de redistribución. 2.2.1 SOFTWARE A PRUEBA 17 Este modelo de software suele estar regido por una duración de tiempo o bajo ciertas condiciones, es decir, que durante ese lapso de tiempo o condiciones, al usuario se le permite probar el software. Si el uso del mismo lo convence, el usuario puede proceder a comprarlo, para de esa forma tener acceso a todas sus características. La redistribución del programa suele estar prohibida. 2.2.2 SHAREWARE Este tipo de programas suelen redistribuirse con libertad durante un limitado tiempo de prueba. Terminado este tiempo se debe pagar cierta cantidad a su autor. Lo que a continuación sucede es que el programa comienza a trabajar de forma limitada o deja de funcionar. Además el usuario no tiene acceso al código fuente. 2.2.3 SOFTWARE REGALADO Hay ocasiones en que el software propietario se regala, esto claramente es un intento de derribar una empresa competidora o dominar un mercado. De ahí en adelante, su licencia no se diferencia en nada de las tradicionales, ya que lo único que permite este tipo de software es su adquisición gratis. 2.2.4 SOFTWARE CON FUENTE En algunas ocasiones se suele distribuir software con su código fuente, sin embargo, no se permite modificarlo ni distribuirse a terceros es por eso que este tipo de software no entra en la categoría de libre. 2.3 ANTECEDENTES DEL SOFTWARE LIBRE 2.3.1 NACIMIENTO DEL SOFTWARE LIBRE Algunas comunidades de software, existieron por mucho tiempo antes que el movimiento del software libre y el término "software libre" existieran. Según Richard Stallman, la comunidad que compartía software en el MIT existió por muchos años antes de involucrarse el mismo con su movimiento en 1984. A partir de los años 1958, 1959 y 1960 casi todo el software era producido en masa por académicos e investigadores corporativos en colaboración y no era visto así mismo como un producto. Los sistemas operativos eran ampliamente distribuidos y mantenidos por comunidades de usuarios. El código fuente, la versión legible para humanos del software, era distribuido con el software porque 18 los usuarios modificaban el software ellos mismos para arreglar errores de programación o agregar nuevas funcionalidades. El código fuente del sistema operativo de un mainframe de IBM, era distribuido de manera muy parecida al del software libre. Richard Stallman (1985). Cuando empecé a trabajar en el laboratorio de inteligencia artificial del MIT en 1971, me incorpore a una sociedad que compartía el software que ya existía. El acto de compartir software no se limitaba a nuestra sociedad en particular, es decir, lo compartíamos igual que las recetas de cocinar, solo que nosotros lo hacíamos en mayor grado que los demás. Desde que nacieron las computadoras, surgió el software libre junto con la necesidad de satisfacer la búsqueda de la información ya que se empiezan a desarrollar aplicaciones para tales necesidades. Aplicaciones que en un principio, eran hechas para una empresa en especial y para un problema en especifico. 2.3.2 ORIGEN DEL SOFTWARE LIBRE El origen del software libre está muy relacionado con 3 proyectos importantes de la historia: primero la creación del sistema UNIX, después el nacimiento del proyecto GNU y al final la unión con el sistema libre completo LINUX. 2.3.3 EL MOMENTO EN LA HISTORIA EN QUE SOLO EXISTIA SOFTWARE LIBRE El software como tal, desde que nacio fue libre, es decir, en el momento de su aparicion, era software libre; ya que en ese momento, no existian documentos legales que dijeran que dicho software era propiedad de alguien o que debia pagarse por la utilizacion del mismo. Sin embargo, con el paso del tiempo y el desarrollo de nuevas tecnologias, se fueron creando restricciones para algunas características del software. Dicha situacion, propicio el surgimiento de dos ramas, el software libre y propietario. Aunque para algunos expertos, se puede afirmar que: “El software libre, es el software en su estado natural”. 2.3.4 RICHARD STALLMAN 19 Richard Matthew Stallman nacido en Manhattan, Nueva York, el 16 de marzo de 1953, con frecuencia abreviado su nombre como “RMS”; es un programador estadounidense y fundador del movimiento por el software libre en el mundo. Su primera experiencia con computadoras fue en el Centro Científico de IBM en Nueva York cuando cursaba la preparatoria. Fue contratado durante un verano para escribir un programa de análisis numérico en Fortran. Completó el trabajo después de un par de semanas, y dedicó el resto del verano escribiendo un editor de textos en el lenguaje de programación APL. Durante este tiempo, Stallman fue también asistente voluntario de laboratorio en el departamento de biología de la Universidad Rockefeller. Entre sus logros destacados como programador se incluye la realización del editor de texto GNU Emacs, el compilador GCC, y el depurador GDB, bajo la rúbrica del Proyecto GNU. Sin embargo, es principalmente conocido por el establecimiento de un marco de referencia moral, político y legal para el movimiento del software libre, como una alternativa al desarrollo y distribución del software no libre o privativo. En 1971, Richard Stallman se convirtio en un programador en el laboratorio de Inteligencia Arificial (IA) en el Instituto Tecnológico de Masssachuset (MIT). Alli se unio a una comunidad de programadores la cual compartia el software desde hace mucho tiempo. En ese entonces, en el laboratorio se usaba un sistema operativo llamado Sistema Incompatible de Tiempo Compartido (ITS) en una computadora del tipo PDP-10. Sin embargo no todo iba bien en el laboratorio, ya que en 1981, algunos de los programadores de IA formaron una compañía denominada Symbolics con la que pretendian reemplazar el software libre del laboratorio con su propio software privativo. Ante esta situacion, el 27 de septiembre de 1983 Stallman anunció en varios grupos el inicio del proyecto GNU, que perseguía crear un sistema operativo completamente libre. 2.3.5 UNIX A finales de 1960, el Instituto Tecnológico de Massachusetts, los Laboratorios Bell de AT&T y General Electric trabajaban en un sistema operativo experimental llamado Multics (Multiplexed Information and Computing Service), desarrollado 20 para ejecutarse en una computadora central (mainframe). El objetivo del proyecto era desarrollar un sistema operativo que tuviera muchas innovaciones. El proyecto consiguió dar a luz versiones para producción, pero las primeras versiones contaban con un pobre rendimiento. Los laboratorios Bell de AT&T decidieron desvincularse y dedicar sus recursos a otros proyectos. Uno de los programadores de los laboratorios Bell, Ken Thompson, siguió trabajando. De este modo, Thompson escribió nuevamente el programa, con ayuda de Dennis Ritchie, a lenguaje de programación C. La experiencia que tuvo al trabajar para el proyecto Multics, condujo a Thompson a iniciar la creación de un nuevo sistema operativo. Thompson y Ritchie lideraron un grupo de programadores, en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema operativo multitarea. El proyecto fue bautizado UNICS, como acrónimo Uniplexed Information and Computing System. Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un sistema MULTICS, se cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días. El lenguaje de programación les permitió escribir una sola versión del sistema operativo UNIX, que podía ser compilado por los compiladores de C en diferentes computadoras. Así, el sistema operativo de UNIX pasó a ser portable, capaz de ejecutarse en diversas computadoras. 2.3.6 GNU Debido a lo sucedido en el subtema anterior, Stallman decide darse a la tarea de desarrollar un nuevo sistema que fuese compatible con UNIX, ya que de esa manera seria portable y los usuarios de UNIX podrían cambiarse a él. El sistema operativo se denomino GNU, nombre elegido como acrónimo recursivo para “GNU no es UNIX”. Pero para ser considerado un sistema operativo completo, GNU debía incluir ensambladores, compiladores, intérpretes, depuradores, editores de texto, programas, correo y más. En enero de 1984, Stallman renuncia a su trabajo en el MIT para dedicarse a escribir software GNU. Su dimisión era lo correcto, ya que de haber continuado, el MIT pudo haber reclamado como su propiedad el trabajo y podría haber impuesto 21 sus propios términos de distribución convirtiéndolo en software propietario. Ante este suceso, Richard Stallman comento lo siguiente: “Yo no tenía la intención de hacer un trabajo enorme solo para ver que perdía la utilidad para la cual se había realizado”. El primer paso para el sistema GNU fue el desarrollo de un programa para compilar, para esto, Stallman decidió buscar opciones, ya que no quería escribir el programa desde cero. Una de las opciones que considero usar fue el compilador VUCK (Kit de Compilador de la Universidad Libre), sin embargo, al contactar con el encargado del proyecto le dijo que dicho compilador no era libre. Así que con los fallidos intentos de conseguir un compilador para su sistema no tuvo más opción que desarrollar el propio al que llamo GCC y junto con este también desarrollo GNU Emacs el cual era un editor de texto. Después de todo esto y al no contar con un trabajo en alguna organización, Stallman se puso a pensar sobre la forma en que podría obtener dinero mediante el software libre, así que decidió iniciar un negocio de distribución del mismo. Ahora, con este nuevo paso en el desarrollo de su nuevo sistema, Richard Stallman se vio involucrado en un nuevo rubro dentro del marco legal para el software libre, el cual consistía en garantizar la libertad del software, ya que en esos días, el licenciamiento era algo común dentro del mundo informático. En otras palabras, lo que se quería era que cuando el software saliera de las manos del autor, siguiera siendo libre para todo aquel que lo quisiera. 2.3.7 COPYLEFT Y GNU GPL Debido a que el objetivo de GNU era dar libertad a los usuarios, se debían usar términos de distribución para evitar que el software GNU se convirtiera en software propietario. Es por eso que el método utilizado se llamo “Copyleft”. El Copyleft es un derecho de autor que permite la libre distribución de copias y versiones modificadas de una obra u otro trabajo, exigiendo que los mismos derechos sean preservados en las versiones modificadas. Stallman (1984) dice: La forma más simple de hacer que un programa sea libre es ponerlo en el dominio público, sin derechos reservados. Esto le permite compartir el 22 programa y sus mejoras a la gente, si así lo desean. Pero le permite a gente no cooperativa convertir el programa en software privativo. En el proyecto GNU, nuestro objetivo es el dar a todo usuario la libertad de redistribuir y cambiar software GNU. Copyleft dice que cualquiera que redistribuye el software, con o sin cambios, debe dar la libertad de copiarlo y modificarlo más. Copyleft garantiza que cada usuario tiene libertad. En términos más simples, el Copyleft es un permiso que se le da a cualquiera para correr el programa, copiar el programa, modificar el programa y redistribuir versiones modificadas, pero no se le da permiso para agregar restricciones propias. De esta forma, las libertades cruciales que definen el software libre quedan garantizadas. Un punto importante dentro de todo esto, es evitar dejar una brecha dentro de los términos de distribución. Un ejemplo de esto sería, un programa libre con un código no libre. Tal combinación cae inevitablemente dentro del software no libre, ya que no se puede faltar a ninguna de las libertades que ya se expusieron al inicio sobre lo que es verdaderamente el software libre. Por ello, inevitablemente, el Copyleft debe evitar cualquier tipo de combinación que pueda darse, la cual contradiga a las leyes del software libre. Es por ello que se creó una implementación específica dentro del Copyleft para todos los usuarios del software GNU llamada Licencia Pública General (GPL). Su finalidad es proteger los derechos de los usuarios finales. Esta es la primera licencia Copyleft para uso general. Copyleft significa que los trabajos derivados sólo pueden ser distribuidos bajo los términos de la misma licencia. Después de haber tenido implementado el sistema y una manera de asegurar su libertad, surgieron las necesidades económicas para las cuales Richard Stallman inicio un fundación llamada “Fundación para el Software Libre” (FSL). A medida que la reputación del proyecto GNU crecía, las personas comenzaron a donar computadoras con UNIX corriendo. Estas le fueron muy útiles ya que para desarrollar componentes de GNU era necesario un sistema UNIX. Sin embargo esta situación trajo consigo una cuestión ética: si era correcto para los 23 programadores de GNU siquiera tener una copia de UNIX ya que era y al día de hoy sigue siendo software propietario lo cual contradecía la filosofía de del proyecto GNU la cual decía que no se debía usar software propietario. Se podía decir que en ese entonces todo eso era un mal justificable, pero al fin de cuentas seguía siendo un mal, aunque hoy en día ya no usan mas copias de UNIX ya que han sido reemplazadas por sistemas operativos libres. 2.3.8 GNU/LINUX Al principio del desarrollo del proyecto GNU, se pensó que el sistema se entregaría completo pero no fue así. Como cada componente del sistema GNU fue implementado en un sistema UNIX, estos podían correrse en el mismo haciendo que se hicieran populares entre los usuarios y de esta manera genera mayores contribuciones al proyecto, sin embargo, el inconveniente fue que los programadores en lugar de adelantar la escritura de los componentes faltantes se dedicaban a mejorar las características de los ya existentes. En 1990 el sistema GNU estaba casi completo, lo único que le faltaba era el núcleo, para el cual, afortunadamente para ellos, existía uno. Del cual voy a hablar a partir de aquí. A finales de 1980, estudiantes de universidades en Estados Unidos, utilizaban un sistema llamado Minix, el cual incorporaba características de UNIX. En 1991, Linus Torvalds inicia un proyecto para crear una nueva versión efectiva de UNIX para los usuarios de Minix, a la cual llamo finalmente Linux, el cual era de libre distribución. Para 1992, al combinar Linux con el sistema incompleto de GNU, se tuvo como resultado un sistema operativo libre completo. A esta versión se le denomino GNU/Linux debido a la combinación del sistema GNU con un núcleo Linux. 2.3.9 CARACTERÍSTICAS DE GNU/LINUX 2.3.9.1 COSTO La obtención del software puede suceder sin la necesidad de ningún costo monetario, sin embargo, el que pueda adquirirse sin gastar dinero por parte de los 24 usuarios, no significa que los autores no reciban ingresos que les permita seguir desarrollando software. Para ello, surge la necesidad de buscar fuentes de financiamiento. Más adelante hablaremos de ello. 2.3.9.2 CODIGO FUENTE Algunos beneficios del que podamos tener acceso al código fuente son: Reusabilidad Portabilidad Adaptabilidad Transparencia Calidad Seguridad 2.3.9.3 REUSABILIDAD En términos de programación, podemos usar esta palabra para referirnos a la creación de un nuevo software, partiendo de uno ya existente. Algunas de las ventajas de poder reutilizar son los beneficios en cuanto a la calidad del software, productividad del programador, mejora en el tiempo del desarrollo del nuevo software y los más importante, al disponer del código, se puede participar en los proyectos de desarrollo de software. 2.3.9.4 PORTABILIDAD Esta importante característica se refiere, a la posibilidad de que determinado software pueda ejecutarse en una gran variedad de computadoras. 2.3.9.5 ENTORNO GRAFICO GNU/Linux puede funcionar tanto en entorno gráfico como en modo consola, cabe mencionar que la consola es común en distribuciones para servidores, mientras que la interfaz gráfica está orientada al usuario final tanto de hogar como empresarial. Asimismo, también existen los entornos de escritorio, que son un conjunto de programas conformado por ventanas, iconos y muchas aplicaciones que facilitan la utilización del computador mientras que en dispositivos móviles se encuentra Android, que funciona sobre el núcleo Linux. 2.3.9.6 COMO SISTEMA DE PROGRAMACION 25 La colección de utilidades para la programación de GNU es con diferencia la familia de compiladores más utilizada en este sistema operativo. Tiene capacidad para compilar C, C++, Java, Ada, Pascal. 2.3.9.7 SOFTWARE DE CÓDIGO CERRADO PARA GNU/LINUX Durante la etapa temprana había pocas aplicaciones de código cerrado para GNU/Linux. Con el tiempo se fueron portando programas no libres al sistema GNU/Linux, entre ellos Adobe Reader, Adobe Flash, Opera, entre otros. 2.3.9.8 EMPRESAS QUE PATROCINAN SU USO Algunas de las empresas que colaboran en la difusión de este sistema operativo ya sea trabajando en el núcleo Linux, proporcionando soluciones de software o preinstalando el sistema operativo, son: Intel, Google, IBM, AMD, Sun Microsystems, Dell, Lenovo, Asus, Hewlett-Packard (HP) entre otros. 2.3.10 ALGUNAS DISTRIBUCIONES DE GNU/LINUX 2.3.10.1 DEBIAN Nació en el año 1993, con la idea de crear un sistema GNU usando Linux como núcleo. Es un sistema operativo libre, desarrollado por más de mil voluntarios alrededor del mundo, que colaboran a través de Internet. La dedicación de DEBIAN al software libre, su base de voluntarios, su naturaleza no comercial y su modelo de desarrollo abierto la distingue de otras distribuciones del sistema operativo GNU. 2.3.10.2 FEDORA Es una distribución Linux para propósitos generales basada en RPM, que se caracteriza por ser un sistema estable, la cual es mantenida gracias a una comunidad internacional de ingenieros, diseñadores gráficos y usuarios que informan de fallos y prueban nuevas tecnologías. 2.3.10.3 UBUNTU Ubuntu es un sistema operativo basado en Linux y que se distribuye como software libre, el cual incluye su propio entorno de escritorio denominado UNITY. Su patrocinador, Canonical, es una compañía británica propiedad del empresario sudafricano Mark Shuttleworth. Ofrece el sistema de manera gratuita, y se financia por medio de servicios vinculados al sistema operativo y vendiendo soporte 26 técnico. Además, al mantenerlo libre y gratuito, la empresa es capaz de aprovechar los desarrolladores de la comunidad para mejorar los componentes de su sistema operativo. 2.4 CLASIFICACIÓN DEL SOFTWARE LIBRE En este apartado se tiene en consideración 4 puntos que pueden usarse como referencia para clasificar el software libre (Higareda Soto 2000). 2.4.1 DE ACUERDO AL COSTO DE ADQUISICION El Software Libre puede ser de dos clases, es decir, de costo cero o de costo mayor que cero. Lo que lo diferencia del Software Propietario es que su costo es independiente del número de computadoras que se poseen. Por ejemplo, en el caso del Sistema Operativo Microsoft Windows por cada computadora en que se instale, se debe pagar una licencia. En cambio, si utilizo en Sistema Operativo GNU/Linux (en cualquiera de sus distribuciones) debo pagar una sola licencia (no obstante, algunas licencias no tienen costo. 2.4.2 DE ACUERDO A LA APERTURA DEL CODIGO FUENTE El Software Libre siempre es "Open Source", es decir, de código abierto, ya que el acceso al código fuente es necesario para el ejercicio de las libertades descritas. 2.4.3 DE ACUERDO A SU PROTECCION El Software Libre siempre está protegido con licencias, y más específicamente, con licencias de Copyleft. ¿Por qué no de dominio público? Porque de ese modo cualquiera puede adueñarse de él, por ejemplo, adquiere un Software Libre, lo modifica, lo compila y lo distribuye con código cerrado. ¿Por qué no con Copyright? Porque de esa manera alguien le puede agregar alguna restricción, por lo tanto no va a seguir siendo Software Libre 2.4.4 DE ACUERDO A SU LEGALIDAD El Software Libre siempre es legal, porque al usarlo, estudiarlo, modificarlo, adaptarlo y/o mejorarlo no estoy violando ninguna norma, ya que de por si este tipo de software permite hacerlo, con la única salvedad de no poder agregarle ninguna restricción adicional cuando lo transfiera a otra persona. 27 CAPITULO III: IMPULSORES DELSOFTWARE LIBRE Entre los años 60 y 70 del Siglo XX, el software no era considerado un producto sino un añadido que los vendedores de los grandes computadores de la época (los mainframes) aportaban a sus clientes para que éstos pudieran usarlos. En dicha cultura, era común que los programadores y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era particularmente habitual en algunos de los mayores grupos de usuarios de la época. A finales de los 70, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia. 3.1 EMPRESAS DESARROLLADORAS DE SOFTWARE LIBRE Diversas empresas son las que existen las cuales se han encargado de fomentar y desarrollar el software libre. De entre las cuales, destacaremos algunas de las más importantes. 3.1.1 FREE SOFTWARE FOUNDATION La Free Software Foundation (Fundación para el software libre) es una organización creada en octubre de 1985 por Richard Stallman y otros entusiastas del software libre con el propósito de difundir este movimiento. La Fundación para el software libre (FSF) se dedica a eliminar las restricciones sobre la copia, redistribución, entendimiento, y modificación de programas de computadoras. Con este objeto, promociona el desarrollo y uso del software libre en todas las áreas de la computación, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU. La FSF se encarga de desarrollar nuevo software libre, el cual pueda eliminar le necesidad de usar software propietario. Cabe mencionar que además de desarrollar la FSF, también distribuyen copias de software GNU y manuales por un costo de distribución y aceptan donaciones para la creación del mismo. 29 3.1.2 FREE SOFTWARE FOUNDATION EUROPE La Free Software Foundation Europe (FSFE) se fundó el 10 de marzo de 2001 como una organización hermana e independiente de la Free Software Foundation de los Estados Unidos de América. Trabaja en todos los aspectos relacionados con el software libre en Europa, especialmente el Proyecto GNU. La FSFE apoya activamente el desarrollo del software libre y el progreso de sistemas basados en GNU, como por ejemplo GNU/Linux. Es también un centro de información competente para políticos, abogados y periodistas, con el fin de garantizar el futuro legal, político y social del software libre. La FSFE tiene por objetivos lo siguiente: Promover activamente el Software Libre políticamente como centro de competencia. Hace seguimiento e influye en actividades legales y políticas que sean contrarias a los objetivos y valores del Software Libre. Proporciona un punto de contacto y ayuda orientativa sobre todas las cuestiones relativas al Software Libre. Trabaja estrechamente con abogados activos en el ámbito del Software Libre en Universidades y prácticas para seguir e influir el discurso legal. Apoya, coordina y desarrolla proyectos en el ámbito del Software libre, especialmente el Proyecto GNU. También proporciona recursos informáticos a desarrolladores de Software Libre para permitirles continuar con sus desarrollos. Ayuda a empresas a desarrollar modelos de negocio basados en Software Libre, o a adaptar modelos existentes. Para facilitar el éxito a las empresas basadas en Software Libre, la FSF Europa también persigue ampliar el mercado del Software Libre. Ayudar a coordinar y conectar otras iniciativas en el ámbito del Software Libre. 3.1.3 FUNDACION SOFTWARE LIBRE AMERCA LATINA Fundada en 2005, la Fundación Software Libre América Latina o FSF América Latina (en inglés Free Software Foundation Latín América o su sigla FSFLA) es 30 una organización no gubernamental sin fines de lucro, cuyo objetivo es promover y defender el uso y desarrollo de software libre, y el derecho de las personas a usar, estudiar, copiar, modificar y redistribuir software. 3.1.4 APACHE FREE FOUNDATION La ASF se formó a partir del llamado Grupo Apache y fue registrada en Delaware (Estados Unidos), en junio de 1999. La Fundación de Software Apache, es una organización sin ánimo de lucro, la cual proporciona apoyo organizacional, legal y financiero para una amplia gama de más de 140 proyectos de software de código abierto. La Fundación ofrece un marco establecido para la propiedad intelectual y las contribuciones financieras. A través de un proceso de desarrollo colaborativo conocido como El Camino Apache, proyectos de Apache ofrecen productos de software a nivel empresarial, de libre disposición que atraen a grandes comunidades de usuarios. 3.1.5 GNU SOLIDARIO GNU Solidario es una organización sin fines de lucro que trabaja a nivel mundial, para la entrega de salud y la educación a través del software libre. Desde el año 2005 hemos participado en proyectos humanitarios de diversa naturaleza que tenía una cosa en común: el Software Libre 3.2 OPEN SOURCE INITIATIVE La Open Source Initiative (OSI) es una organización dedicada a la promoción del código abierto. Fue fundada en febrero de 1998 por Bruce Perens y Eric S. Raymond. 3.2.1 ANTECEDENTES En 1997 Eric S. Raymond presentó una obra sobre ingeniería de software, La Catedral y el Bazar, la cual buscaba mostrar las ventajas de escribir el núcleo Linux. A principios de 1998, Netscape Communications Corporation junto con Raymond, publicaron el código fuente de su producto insignia Netscape Communicator como software libre, dada la baja de ganancias y dura competencia con el software Internet Explorer de Microsoft. 31 Un grupo de personas interesadas en el software libre y en GNU/Linux decidieron introducir un término de mercadotecnia para el software libre, buscando posicionarlo como amigable para negocios y con menos carga ideológica en su competencia con el software propietario. Esto condujo a la creación del término Open Source (código abierto) y al cisma con Richard Stallman y su Fundación del Software Libre. 3.2.2 PREMISAS DEL CODIGO ABIERTO Del mismo modo que el software libre, el código abierto tiene una serie de requisitos necesarios para que un programa pueda considerarse dentro de este movimiento, a continuación se presentan los siguientes. Libre Redistribución: el software debe poder ser regalado o vendido libremente. Código Fuente: el código fuente debe estar incluido u obtenerse libremente. Trabajos derivados: la redistribución de modificaciones debe estar permitida. Integridad del Código Fuente del Autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches. Sin Discriminación de Personas o Grupos: nadie puede dejarse fuera. Sin Discriminación de Áreas de Iniciativa: los usuarios comerciales no pueden ser excluidos. Distribución de la Licencia: deben aplicarse los mismos derechos a todo el que reciba el programa La Licencia no Debe ser Específica de un Producto: el programa no puede licenciarse solo como parte de una distribución mayor. La licencia no Debe Restringir otro Software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto. La Licencia Debe ser Tecnológicamente Neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. Este decálogo es compatible con las cuatro libertades del software libre. 32 3.3 COMPARATIVA ENTRE SOFTWARE LIBRE Y DE CODIGO ABIERTO Existen organizaciones detrás de cada iniciativa del software. Por parte del software libre, existe la Free Software Foundation (FSF), del lado del concepto de software de código abierto existe la Open Source Initiative (OSI). Ambas se enfocan en diferentes aspectos del uso y distribución del software, y su disponibilidad y responsabilidades que competen al usuario tener. Por este motivo existen diferentes licencias que las diferencian. A continuación: 4 LIBERTADES DE LA FSF 1) La libertad de usar el programa 2) La libertad de estudiar cómo funciona el programa 3) La libertad de distribuir copias 4) La libertad de mejorar el programa y hacer públicas las mejoras a los demás. 10 REMISAS DE OSI a) Libre Redistribución: el software debe ser vendido libremente. b) Código Fuente: el código fuente debe estar incluido u obtenerse libremente. c) Trabajos derivados: la redistribución de modificaciones debe estar permitida. d) Integridad del Código Fuente del Autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches. e) Sin Discriminación de Personas o Grupos: nadie puede dejarse f) Sin Discriminación de Áreas de Iniciativa: los usuarios comerciales fuera. no pueden ser excluidos. g) Distribución de la Licencia: deben aplicarse los mismos derechos a todo el que reciba el programa h) La Licencia no Debe ser Específica de un Producto: el programa no puede licenciarse solo como parte de una distribución mayor. 33 i) La licencia no Debe Restringir otro Software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto. j) La Licencia Debe ser Tecnológicamente Neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. 3.4 OTROS SISTEMAS OPERATIVOS LIBRES Es verdad que en la presenta monografía se hace especial énfasis al sistema operativo GNU/LINUX, sin embargo, es importante señalar algunos otros sistemas operativos libres BSD (es un sistema operativo derivado del sistema Unix nacido a partir de los aportes realizados a ese sistema por la Universidad de California en Berkeley). 3.4.1 OPEN BSD Open BSD es un sistema operativo libre tipo Unix multiplataforma, basado en 4.4 BSD-Lite (lanzada en 1994 sin código propietario). Es un descendiente de Net BSD, con un foco especial en la seguridad y la criptografía. Este sistema operativo se concentra en la portabilidad, cumplimiento de normas y regulaciones, corrección, seguridad proactiva y criptografía integrada. Open BSD incluye emulación de binarios para la mayoría de los programas de los sistemas SVR4 (Solaris), Free BSD, Linux, BSD/OS. Open BSD se creó como una variante de Net BSD debido a las diferencias filosóficas y personales entre los miembros fundadores de Net BSD. Dejando aparte el hecho de que la seguridad sea la principal razón para que Open BSD exista, el proyecto también tiene otras metas. Siendo un descendiente de Net BSD, es un sistema operativo muy portable. Actualmente funciona sobre 17 plataformas distintas de hardware. 3.4.2 FREE BSD Free BSD es un sistema operativo libre para computadoras basado en las CPU de arquitectura Intel y Pentium. También funciona en procesadores compatibles con Intel como AMD. 34 Free BSD es un sistema operativo multiusuario, capaz de efectuar multitarea con apropiación y multiproceso en plataformas compatibles con múltiples procesadores; el funcionamiento de Free BSD está inspirado, en la variante 4.4 BSD-Lite de UNIX. Aunque Free BSD no puede ser propiamente llamado UNIX, al no haber adquirido la debida licencia de The Open Group. El sistema Free BSD incluye el núcleo, la estructura de ficheros del sistema, bibliotecas de la API de C, y algunas utilidades básicas. 3.4.3 NET BSD Net BSD es un sistema operativo de la familia Unix (en sí no se le puede llamar «un Unix», ya que ésta es una marca comercial de AT&T, pero se denomina como «sistema de tipo UNIX» o «derivado de UNIX»), de código abierto y libre, y en diciembre de 2008, estaba disponible para más de 56 plataformas de hardware. Su diseño y sus características avanzadas lo hacen ideal para multitud de aplicaciones. Net BSD ha surgido como resultado del esfuerzo de un gran número de personas que tienen como meta producir un sistema operativo tipo Unix accesible y libremente distribuible. 3.5 TIPOS DE LICENCIA 3.5.1 BSD La licencia BSD es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software Distribution). Es una licencia de software libre permisiva. Esta licencia tiene menos restricciones en comparación con otras como la GPL estando muy cercana al dominio público. La licencia BSD al contrario que la GPL permite el uso del código fuente en software no libre. Además la licencia BSD es un ejemplo de una licencia permisiva, que casi no impone condiciones sobre lo que un usuario puede hacer con el software, permite la redistribución, uso y modificación del software. 3.5.2 GNU/GPL La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU General Public License (o simplemente sus siglas del inglés GNU GPL) es la licencia más ampliamente usada en el mundo del software y garantiza a los usuarios finales (personas, organizaciones, compañías) la libertad de usar, 35 estudiar, compartir (copiar) y modificar el software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios. Hablando un poco de historia sobre esta licencia, podemos decir que La licencia GPL fue creada por Richard Stallman en 1989 para proteger los programas liberados como parte del proyecto GNU. La licencia GPL original se basó en la unificación de licencias similares utilizadas en versiones anteriores de GNU. Estas licencias contenían disposiciones similares a las actuales GPL, pero eran específicas para cada programa, haciéndolos incompatibles, a pesar de ser la misma licencia. El objetivo de Stallman era producir una licencia que pudiera ser aplicada a cualquier proyecto, por lo que es posible utilizarlas en muchos proyectos para compartir código. La versión 2 de la licencia, fue liberada en 1991. Durante los siguientes 15 años, los miembros de la comunidad FOSS (Free and Open Source Software) comenzaron a preocuparse con los problemas en la GPLv2 que permitían explotar software GPL con intenciones contrarias a la licencia. La tercera versión de esta licencia (GNU GPLv3) fue desarrollada para tratar de resolver estos problemas y fue lanzada oficialmente el 25 de julio de 2007. 3.5.2.1 LICENCIA GPL VERSION 1 La versión 1 de GNU GPL, fue liberado el 25 de febrero de 1989, impidió que las dos principales formas con las que los distribuidores de software restringían las libertades definidas por el software libre. El primer problema fue que los distribuidores publicaban únicamente los archivos binarios, funcionales y ejecutables, pero no modificables. Para prevenir esto, GPLv1 dijo que cualquier vendedor además de distribuir el binario debía liberar a su vez código fuente y que pudiera ser modificado. 3.5.2.2 LICENCIA GPL VERSION 2 Según Richard Stallman (1990), el mayor cambio en GPLv2 fue la cláusula “Liberty or Death”. Dice que si alguien tiene impuestas restricciones que le prohíben distribuir código, esa persona no puede distribuir software. La esperanza es que esto hará que sea menos tentador para las empresas a recurrir a las 36 amenazas de patentes a exigir una remuneración de los desarrolladores de software libre. 3.5.2.3 LICENCIA GPL VERSION 3 A finales de 2005, la Free Software Foundation (FSF) anunció estar trabajando en la versión 3 de la GPL (GPLv3). El 16 de enero de 2006, el primer borrador de GPLv3 fue publicado, y se inició la consulta pública. La GPLv3 oficial fue liberada por la FSF el 29 de junio de 2007. Fue escrita por Richard Stallman. Según Stallman los cambios más importantes se produjeron en el campo de las patentes de software, la compatibilidad de licencias de software libre, la definición de código fuente, y restricciones respecto a las modificaciones de hardware. 3.5.3 AGPL Es una licencia Copyleft derivada de la Licencia Pública General de GNU diseñada específicamente para asegurar la cooperación con la comunidad en el caso de software que corra en servidores de red. La licencia AGPL fue diseñada para cerrar la evasión de los proveedores de servicios de aplicación a la licencia GPL ordinaria, que no obliga la distribución del código fuente cuando el software licenciado con GPL sea usado para dar un servicio. 3.5.4 LGPL Licencia Publica General Reducida de GNU (LGPL), es una licencia de software creada por la Free Software Foundation que pretende garantizar la libertad de compartir y modificar el software cubierto por ella, asegurando que el software es libre para todos sus usuarios. Esta licencia permisiva se aplica a cualquier programa o trabajo que contenga una nota puesta por el propietario de los derechos del trabajo estableciendo que su trabajo puede ser distribuido bajo los términos de esta "LGPL Lesser General Public License". El "Programa", utilizado en lo subsecuente, se refiere a cualquier programa o trabajo original, y el "trabajo basado en el Programa" significa ya sea el programa o cualquier trabajo derivado del mismo bajo la ley de derechos de autor: es decir, un trabajo que contenga el Programa o alguna porción de él, ya sea íntegra o con modificaciones o traducciones a otros idiomas. 37 3.5.5 MOZILLA PUBLIC LICENCE La licencia pública de Mozilla (MPL) es una licencia de código abierto y de software libre. Fue desarrollada originalmente por Netscape Communications Corporation, y más tarde su control fue traspasado a la Fundación Mozilla. La licencia MPL cumple completamente con la definición de software de código abierto de la Open Source (OSI) y con las cuatro libertades del software libre enunciadas por la Free Software Foundation (FSF). Sin embargo la MPL deja abierto el camino a una posible reutilización no libre del software, si el usuario así lo desea, sin restringir la reutilización del código ni el re licenciamiento bajo la misma licencia. 3.5.6 COPYLEFT El Copyleft o copia permitida, se practica al ejercer el derecho de autor que consiste en permitir la libre distribución de copias y versiones modificadas de una obra u otro trabajo, exigiendo que los mismos derechos sean preservados en las versiones modificadas. La efectividad de ejercerlo puede depender de la legislación particular de cada país, pero en principio se puede utilizar para programas informáticos, obras de arte, cultura, ciencia, o cualquier tipo de obra o trabajo creativo que sea regido por el derecho de autor. El término surge en las comunidades de software libre como un juego de palabras en torno a copyright: "derecho de autor", en inglés (literalmente: "derecho de copia") con otro sentido, el de left: pretérito del verbo dejar o permitir. Se considera que una licencia libre es Copyleft cuando además de otorgar permisos de uso, copia, modificación y redistribución de la obra protegida, contiene una cláusula que dispone una licencia similar o compatible a las copias y a las obras derivadas. 3.5.7 DOMINIO PUBLICO Se considera de dominio público a todo software que no está protegido con copyright. Es aquel que no requiere licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignados su autoría original. Este software seria aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este. 38 3.5.8 APACHE Es una descendiente de la licencia BSD. Permite al desarrollador hacer lo que desee con el código fuente, incluso productos propietarios sin entregar el código fuente. La única restricción es que se reconozca el trabajo del desarrollador. 3.5.9 SEMI-LIBRE Es aquel que mantienen las mismas características del software libre para los usuarios individuales, entidades educativas o sin ánimo de lucro, sin embargo prohíbe esas libertades para su uso comercial o empresarial. 3.5.10 FREEWARE El termino ingles freeware define un tipo de software que se distribuye sin costo y a veces se distribuye el código fuente, pero no es lo usual. El creado cede el uso, pero no la propiedad intelectual del mismo. Es decir, que retiene los derechos del autor. 3.5.11 FUENTE ABIERTA U OPEN SOURCE Una licencia es considerada Open Source cuando es aprobada por la Open Source Initiative (OSI), donde el criterio lo da la definición de Open Source (fuente abierta). El software de dominio público, cumple con todos los criterios, siempre y cuando el código fuente esté disponible y este reconocido por la OSI y se le permita usar la marca de la misma. De acuerdo a la OSI, de código abierto no significa solo acceso al código fuente. La distribución de software de código abierto debe cumplir con los siguientes criterios. a) Libre redistribución: El software debe poder ser regalado o vendido libremente en cualquiera de sus partes. b) Código Fuente: El programa debe incluir y permitir la distribución del código fuente, así como la forma compilada (aplicación). O bien proporcionar un medio conocido para la obtención del mismo y en cualquier caso por un costo razonable de reproducción y preferentemente la descargas a través de internet sin costo. 39 c) Trabajos derivados: La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que se distribuyan bajo los términos de la licencia del software original. d) Integridad del código fuente del autor: la licencia puede restringir el código fuente ya sea distribuido en forma modificada solamente si la licencia permite la distribución de archivos de revisión con el código fuente. La licencia debe permitir explícitamente la distribución de software construido a partir de código fuente modificado y puede requerir que los trabajos derivados a llevar nombre o numero de versión del software original. e) No discriminación contra las personas o grupos: La licencia no debe restringir a nadie de hacer uso del programa en un campo específico del trabajo, por ejemplo, no se puede restringir el programa de ser utilizado en una empresa o para la investigación genética. f) Distribución de la licencia: Deben aplicarse los mismos derechos a todo el que reciba el programa. g) La licencia no debe restringir otro software: La licencia no debe imponer restricciones sobre otro software que se distribuya junto con el software con licencia. h) La licencia debe ser virtualmente neutral: ninguna disposición de la licencia puede ser basada en la tecnología o el estilo de la interfaz. 3.5.12 PRIVADO El software con propietario o software de propiedad, se refiere a cualquier programa informático en el que está prohibido su uso, redistribución y modificación y se requiere una autorización para ello. 3.5.13 COMERCIAL El software comercial es aquel que es desarrollado por una organización o entidad que tiene la intención de lucrar a través del uso de dicho software. Las compañías que lo producen cobran dinero por producto, su distribución y en muchas ocasiones el soporte. 3.5.14 SHAREWARE O DE EVALUACIÓN 40 EL software que permite a los usuarios probar y realizar copias de los programas, pero requiere que todos aquellos que decidan adquirir el programa reciban una licencia de uso, no es un tipo de programa sino una forma de distribución. El autor del programa no retiene los derechos de distribución, pero si los demás. Generalmente se distribuyen sin fuentes y no se permite ni modificarlo ni redistribuirlo salvo en los términos anteriores. El software que viene con autorización para la gente de redistribuir copias, pero dice que quien continúe haciendo uso de una copia que deberá pagar un cargo por licencia, no es software libre, y las razones son: a) Para la mayoría del shareware, el código fuente no está disponible; de esta manera, no se puede modificar el programa en lo absoluto. b) EL shareware no viene con autorización para hacer una copia e instalarlo sin pagar una cantidad por la licencia, ni aun para particulares involucrados sin ánimo de lucro. El shareware aporta una ventaja con respecto a los programas distribuidos por los canales tradicionales y es que el usuario prueba el programa antes de comprarlo, evitando de esta forma desagradables sorpresas, y teniendo la seguridad que lo que compra, va a ser de du entera satisfacción. Generalmente ofrece a los usuarios, que registran algunas ventajas como manuales impresos, ayuda técnica gratuita, etc. 41 CAPITULO IV: COMPARATIVA Y DETALLES DEL SOFTWARE LIBRE 4.1 LA ECONOMIA El dinero siempre ha sido el talón de Aquiles del mundo del software libre. El software libre se desarrolla de muchas formas distintas, y con mecanismos para conseguir recursos que varían muchísimo de un caso a otro. Cada proyecto libre tiene su propia forma de financiarse, desde el que está formado completamente por desarrolladores voluntarios y utiliza solamente recursos cedidos altruistamente, hasta el que es llevado a cabo por una empresa que factura el 100% de sus costes a una entidad interesada en el desarrollo correspondiente. Es fácil darse cuenta rápidamente de las ventajas de compartir el código fuente con los demás. Tal como dicen en el negocio del software: “No hay que romperse el coco”. Stallman trato de explicar su solución de forma clara, puntualizando bien las cosas, en el manifiesto del GNU. Escribió: “No hay nada malo en querer cobrar por el trabajo propio, o en pretender que se maximicen los propios ingresos, mientras no se usen medios que resulten destructivos. Pero los medios habituales en el campo del software hoy en día están basados en la destrucción”. Obtener dinero de los usuarios de un programa restringiendo su uso, es destructivo, porque las restricciones reducen la posibilidad de usar el programa y la cantidad de riqueza que la humanidad extrae de él. Cuando se elige deliberadamente esa restricción, el resultado es una restricción deliberada. A primera vista, Richard Stallman no tiene que preocuparse por llegar a fin de mes. El MIT le deja una oficina, tiene una beca de la MacArthur Foundation y las empresas le pagan para que ayude a portar su software libre a sus plataformas. Su extraordinaria reputación, combinada son un estilo de vida realmente frugal, le permiten mantenerse con dos meses de trabajo remunerado al año. El resto del tiempo lo dona a la FSF. No es lo mismo que dirigir Microsoft, pero él se las arregla. Aun así, la existencia de Stallman está lejos de ser tranquila. Tiene que trabajar mucho para poder desarrollar sus líneas funcionales. Para evitar cualquier conflicto de intereses, la FSF no paga salario alguno a Stallman, ni le cubre sus gastos de viaje. 43 El dice que recibir pago por parte de las empresas a cambio de portar el software le ayuda a mantenerse pero no a crear nuevo software. Stallman se esfuerza mucho buscando nuevas fuentes de financiación para el FSF y el dinero acaba por aparecer y sufraga a los programadores que tienen nuevos proyectos. Esta lucha diaria por obtener “alguna” forma de ingreso es uno de los desafíos más grandes del mundo del código libre hoy en día. Otras personas del software libre están siguiendo el camino de Stallman al vender sus servicios y no el software. Muchos de los miembros del Apache Webserver Core, por ejemplo, hacen dinero controlando páginas web. Les pagan para que sus clientes puedan escribir www.website.com y aparezca algo. El cliente no le importa si lo que responde a sus peticiones es software libre o algo de Microsoft. Lo único que quieren es que se mueva los gráficos el texto. Existen diferentes formas o medios de financiación a través de las cuales el software libre se sigue manteniendo en pie, a partir del siguiente apartado les voy a hablar de ellas. 4.1.1 FINANCIACION PUBLICA Un tipo muy especial de financiación de proyectos libres es la pública. La entidad financiadora puede ser directamente un gobierno (local, regional, nacional o incluso supranacional) o una institución pública (por ejemplo, una fundación). Normalmente, la entidad financiadora no busca recuperar la inversión (o al menos no de forma directa), aunque suele tener objetivos claros (favorecer la creación de tejido industrial e investigador, promover cierta tecnología o cierto tipo de aplicaciones, entre otros). Algunas de las motivaciones para este tipo de financiación son las siguientes: Científica: Este es el caso más habitual en proyectos de investigación financiados con fondos públicos. Aunque su objetivo no es producir software, sino investigar en un determinado campo (relacionado o no con la informática), es muy posible que para ello sea preciso desarrollar programas que se usen como herramientas necesarias para alcanzar las metas del proyecto. 44 Promoción de Estándares: En muchos casos eso supone tener programas que formen parte de esa implementación (o si el estándar se refiere al campo del software, que sean la implementación ellos mismos). Para que la implementación de referencia sea de utilidad en la promoción del estándar, es preciso que esté disponible, al menos para comprobar interoperabilidad, para todos los que quieran desarrollar productos que se acojan a ese estándar. Social: El software libre es una herramienta de gran interés en la creación de la infraestructura básica para la sociedad de la información. Las entidades interesadas en utilizar software libre para ayudar al acceso universal a esta sociedad de la información pueden financiar proyectos relacionados con el software libre (normalmente proyectos de desarrollo de nuevas aplicaciones o de adaptación de otras existentes. 4.1.2 FINANCIACION PRIVADA SIN ANIMO DE LUCRO Este es un tipo de financiación con muchas características similares a las del caso anterior, donde la financiación la realizan normalmente fundaciones u organizaciones no gubernamentales. La motivación directa en estos casos suele ser producir software libre para su uso en algún ámbito que la entidad financiadora considera especialmente relevante, pero también puede encontrarse la motivación indirecta de contribuir a resolver un problema (por ejemplo, una fundación dedicada a promover la investigación sobre una enfermedad puede financiar la construcción de un programa estadístico que ayude al análisis de grupos de experimentación donde se está estudiando esa enfermedad). 4.1.3 FINANCIACION POR QUIEN NECESITA MEJORAS Otro tipo de financiación para el desarrollo de software libre, ya no tan altruista, es el que tiene lugar cuando alguien necesita mejoras en un producto libre. Por ejemplo, una empresa, para uso interno, necesita de cierta funcionalidad en un programa dado. O bien necesita que ciertos errores en un programa sean corregidos. En este tipo de casos, lo habitual es que la empresa en cuestión contrate el desarrollo que necesita. Este desarrollo, muy habitualmente (bien 45 porque lo impone la licencia del programa modificado, bien porque la empresa lo decide así) es software libre. 4.1.4 FINANCIACION CON BENEFICIOS RELACIONADOS En este caso, lo que busca la entidad financiadora es conseguir beneficios en productos relacionados con el programa a cuyo desarrollo aporta recursos. Normalmente, en estos casos los beneficios que obtiene la empresa financiadora no son exclusivos, ya que otras pueden entrar también en el mercado de la venta de productos relacionados. Pero bien la cuota de mercado que tiene es suficiente como para que no le preocupe mucho repartir la tarta con otros, o bien tiene alguna ventaja competitiva clara. Algunas de las motivaciones para este tipo de financiación son las siguientes: Libros: La empresa en cuestión vende manuales, guías de uso, textos para cursos, etc. relacionados con el programa libre que ayuda a financiar. Por supuesto otras empresas pueden vender también libros relacionados, pero normalmente el financiar el proyecto le dará acceso antes que a sus competidores a desarrolladores clave, o simplemente conseguirá con ello una buena imagen de cara a la comunidad de usuarios del programa en cuestión. Hardware: Si una empresa financia el desarrollo de sistemas libres para cierto tipo de hardware puede dedicarse a vender con más facilidad ese tipo de hardware. De nuevo, al ser libre el software desarrollado, pueden aparecer competidores que vendan aparatos del mismo tipo, usando esos desarrollos, pero sin colaborar a su financiación. Pero incluso así, la empresa en cuestión tiene varias ventajas sobre sus competidores, y una de ellas puede ser que su posición como aportadora de recursos para el proyecto le permitía influir para conseguir que los desarrollos que se realicen con más prioridad sean los que más le interesen. CD´s con Programas: Probablemente el modelo de este tipo más conocido es el de las empresas que financian ciertos desarrollos que luego aplican a su distribución de software. Por ejemplo, tener un buen entorno de escritorio puede ayudar mucho a vender CD’s con una cierta distribución de 46 GNU/Linux, y por tanto, financiar su desarrollo puede ser un buen negocio para quien los vende. 4.1.5 FINANCIACION COMO INVERSION INTERNA Hay empresas que, directamente como parte de su modelo de negocio, desarrollan software libre. Por ejemplo, una empresa puede decidir iniciar un nuevo proyecto libre en un ámbito donde percibe que puede haber oportunidades de negocio, con la idea de rentabilizar posteriormente esta inversión. Este modelo podría considerarse una variante del anterior (financiación indirecta), siendo los "beneficios relacionados" las ventajas que obtenga la empresa de la producción del programa libre. 4.2 POLITICA Una de las cuestiones más importantes en el mundo del software libre es la política. La idea de regalar el software y el código fuente no es un concepto nuevo. La cuestión de la política en el mundo del código libre normalmente se reduce a un simple dilema: algunos piensas que es una utopía comunista. Normalmente, las dos ideas se sitúan en los extremos opuestos del espectro, mirándose entre sí con desdén. Pero en el extraño mundo del software no es tan fácil ubicar las ideas. Cualquiera puede duplicar un software tantas veces quiera y aun así este continua siendo útil. En cierto sentido, la política del movimiento de código libre es una incógnita sobre la que todo el mundo puede proyectar sus deseos. Jhon Gilmore dijo una vez: “Richard Stallman es un comunista”. La realidad es que Stallman no reniega del dinero e insiste en que no es un comunista, ni tampoco enemigo del estado capitalista. Le parece maravilloso que la gente cobre por su trabajo de programación y el suele hacer lo mismo. Pero es fácil entender porque la gente cree que es comunista. Uno de sus artículos que el público, asegura que no es estrictamente comunista, se titula: “Porque el software no debería tener propietarios”. Algunas de sus afirmaciones pueden parecer marxistas, desde luego. El código fuente de un programa a menudo actúa como los medios de producción y por eso los capitalistas que llevan lo negocios tratan de controlarlo. Stallman quiere 47 controlar esos medios de producción en las manos de todo el mundo, de modo que la gente pueda ser libre de hacer lo que desee. Aunque Stallman no abomina de los efectos del dinero, si rechaza la idea de que el capital intelectual, es decir, el código fuente, deba ser controlado. Y tiene razón, las leyes de propiedad intelectual restringen la capacidad de las personas de añadir cosas, mejorar o cambiar el trabajo de otras personas. Las normas de buen uso, que permiten al autor de un texto citar y comentar fragmentos, no funcionan en el mundo del software, en el cual resulta muy difícil copiar cualquier cosa excepto el cien por ciento de algún código fuente. 4.3 CRECIMIENTO En la década de 1990, el pequeño sistema operativo de Linux fue creciendo lenta y sigilosamente a medida que cada vez más programadores se iban viendo arrastrados hacia él. Poco a poco, cada vez más personas empezaron a usar el sistema y a contribuir con sus colaboraciones al conjunto. Así a alguien se le ocurrió como conseguir que el Windows System del MIT pudiera ejecutarse con Linux, para que todo el mundo tuviera un interfaz grafico. Otra persona descubrió como conseguir tecnología para conectarse a internet. Esto significo una gran diferencia, porque a partir de entonces todo el mundo pudo hackear, manipular y amañar código y luego sin más, ir a cargar las nuevas versiones en la red. Ni que decir tiene que todo el buen software que procedía de la FSF de Stallman se abrió paso hacia UNIX. Algunos eran simples juegos, como el ajedrez de GNU, pero otros eran herramientas serias, esenciales para el crecimiento del proyecto. En 1991, la FSF ofrecía lo que se podía considerar como uno de los mejores editores de texto y compiladores del mundo. Otros podían acercársele en cuanto a calidad, pero el de Stallman era gratuito. Esas importantes herramientas hicieron posible que Linux creciera con rapidez y de un núcleo pequeño y experimental se convirtiera en un sistema operático con todas las características y capaz de hacer todo lo que se deseara de cualquier programador. James Lewis-Moss, uno de los muchos programadores que dedica algún tiempo a Linux apunta a una de las controversias más ardientes en el mundo del software 48 libre: todas las herramientas y juegos que provienen del proyecto GNU empezaron formando parte de lo que la gente conoce como sencillamente como “Linux”. El nombre del pequeño núcleo del sistema operativo pronto se amplio y se empezó a aplicar a casi todo el software libre que se ejecutaba sobre él. Esto enfureció bastante a Stallman, que al principio propuso que sería mejor llamarlo “Lignux”. Aquello no cuajo y decidió cambiarlo por “GNU/Linux”. Algunos ignoran sus ruegos y siguen usando simplemente Linux, cosa que resulta un poco injusta. Otros creen que “GNU/Linux” es un nombre demasiado largo y que para bien o para mal, la abreviatura más adecuada es Linux. 4.4 COMPARATIVA ENTRE EL SOFTWARE LIBRE Y EL SOFTWARE PROPIETARIO Para empezar la comparativa entre software libre y software propietario, iniciaremos hablando sobre el software propietario, que es y sus características, posteriormente haremos un recuento de lo que es el software libre y pasaremos a la comparación. 4.4.1 SOFTWARE PROPIETARIO Software propietario (también llamado no libre, software con licenciamiento, software privativo, software de propiedad), se refiere a cualquier programa informático en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones) o cuyo código fuente no está disponible o el acceso a este se encuentra restringido. En el software no libre una persona física o moral, posee los derechos de autor sobre un software, negando o no, los derechos de usar el programa con cualquier propósito; ya sea el de estudiar cómo funciona el programa y adaptarlo a las propias necesidades, de distribuir copias; o de mejorar el programa y hacer públicas las mejoras. Al comprar una licencia original, se está adquiriendo el derecho a utilizar el producto de acuerdo a las reglas establecidas por el autor. Por tratarse de un contrato es necesario que el dueño de este software apruebe bajo su consentimiento el uso del mismo para ser utilizado por un tercero. El contrato de licencia es la única vía legal por la cual el titular otorga este consentimiento. 49 Cada instalación de software requiere una licencia que la respalde. Existen distintos tipos de contratos de licencia. La manera en que estos contratos se formalizan, dependerá del régimen de licenciamiento que cada producto de software establezca. Se pueden establecer tres características de propiedad (Stallman 1985): a) Habitualmente, el software original se presenta en cajas impresas en las cuales adentro de ellas pueden encontrarse entre otras cosas, la licencia de uso del software, los manuales de los productos y CD´s identificados con etiquetas pre-impresas que indican el nombre del productor del software, su versión y su lenguaje. b) Otra forma muy común de licenciamiento, es a través de la preinstalación del software en el disco duro al momento de adquirir la PC. En este caso, deberá exigir al comercio la entrega de toda la documentación original que respalde dichas instalaciones. c) Licencias por volumen, no incluyen la entrega física de paquetes de software, sino solo la licencia de uso e varias copias. 4.4.2 CARACTERISTICAS DEL SOFTWARE PROPIETARIO Estas licencias también se conocen con el nombre de software licenciado. En ellas los propietarios establecen los derechos de uso, distribución, redistribución, copia, modificación, cesión y en general cualquier otra consideración necesaria. Este tipo de licencias, por lo general, no permiten que el software sea modificado, copiado o distribuido de forma ilegal, (piratería de software), regula el número de copias que pueden ser instaladas e incluso los fines concretos para los cuales puede ser utilizado. La mayoría de estas licencias limitan fuertemente la responsabilidad derivada de fallos en el programa. Los fabricantes de programas sometidos a este tipo de licencias por lo general ofrecen servicios de soporte técnico y actualizaciones durante el tiempo de vida del producto. Algunos ejemplos de estas licencias son: a) Licencia de usuario final En ingles EULA o End User License Agreement, es una licencia por la cual el uso de un producto solo esta permita para un único usuario. 50 El conocimiento del contenido de los contratos es difícil antes de la compra del producto ya que las cajas de los productos raramente contienen una copia completa del mismo, dándose que el comprado en la mayor parte de las ocasiones conoce su contenido después de la compra. En ocasiones se exige al usuario el renunciar a realizar reclamos o demandas legales por diversos motivos, o aceptar la restitución de la mercancía en forma y monto que la compañía decida. Este tipo de acuerdo expresa los usos que se pueden dar y cuáles no al producto, ya que quien lo compra no es, legalmente, en ninguna forma dueño del producto, sino solo de una licencia para su uso, además son unilaterales pues el usuario no tiene más opción que aceptar o rechazar el contenido del mismo. b) Licencia de distribuidor En este tipo de contrato, se les asigna derechos restringidos a un comerciante para que venda el producto (software), dando una comisión al fabricante. 4.5 COMPARACION Antes de pasar a la comparación, daremos un repaso de lo que significa el software libre. El software libre se refiere a la libertad de los usuarios para ejecutar, distribuir, estudiar, cambiar y mejorar el software; se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa y adaptarlo a las necesidades, de distribuir copias con lo que puede ayudar a otros, de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie. El software libre suele estar disponible gratuitamente, o al coste de la distribución a través de otros medios, sin embargo no es obligatorio que así sea, por ende no hay que asociar software libre a software gratuito, ya que conservando su carácter de libre, puede ser distribuido comercialmente. Tampoco debe confundirse software libre con software de dominio público. Este último es aquel que no requiere licencia, pues sus derechos de uso son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software 51 seria aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un paso contado desde la muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es de dominio público. 4.5.1 DIFERENCIAS ENTRE EL SOFTWARE PROPIETARIO Y SOFTWARE LIBRE Software Propietario: a) Tienen licencias, las cuales están limitadas por usuarios y en algunos casos son costosas. Estas licencias restringen las libertades de los usuarios de usar, copiar, modificar y distribuir el software. b) El desarrollo, programación y actualización de este software solo lo hace la empresa que tiene los derechos. c) El futuro del software que compro el usuario depende de una empresa comercial. d) Muchas veces con estrategias comerciales se suele hacer que los usuarios actualicen su software comercial, sin que exista una necesidad verdadera de ello, consiguiendo de esta forma hacer que el usuario invierta en nuevas licencias, la mayoría de las veces innecesarias. Software Libre a) No está limitado por los usuarios, y garantiza las libertades de los usuarios de usar, copiar, modificar y distribuir el software. b) En el desarrollo de este software puede intervenir cualquier persona, empresa u organización en el mundo. c) Los avances y descubrimientos tecnológicos en el mundo son diarios, y se encuentran en internet en forma gratuita. La principal meta del software libre es compartir los avances tecnológicos con los demás. d) El usuario no depende de una sola empresa, ya que el software que implemento puede ser mantenido y modificado por cualquiera del mundo. e) El software libre tiene la costumbre de seguir siendo compatible hacia atrás, tanto en software como en hardware, no obliga al usuario a cambiar de 52 tecnología, ya que no persiguen los mismos fines económicos que el software propietario. 4.6 DIFERENCIAS AL PROGRAMAR SOFTWARE PROPIETARIO Y LIBRE Eric S. Raymond nos cuenta en su libro la catedral y el bazar las principales diferencias a la hora de programar software libre y software propietario. Por un lado nos cuenta como el software propietario sigue una metodología jerárquica donde pequeños grupos de programadores desarrollaban el software mediante unas pautas prefijadas por la dirección. A esta forma de programa la llama la forma clásica o el estilo catedral. En el lado opuesto nos cuenta como el software libre se basa en la aportación de personas ajenas entre ellas para formar un trabajo colectivo. El lugar de trabajo es un servidor donde cada uno aporta su granito de arena por pequeño que sea. Normalmente existe un coordinador para evitar posibles solapamientos entre tareas. La norma básica de este desarrollo es que todo se comparte. Al desarrollo del software libre lo llama estilo bazar. Otra de las diferencias entre en el modelo propietario y el libre es la velocidad con la que se liberan versiones. Mientras que en el estilo catedral tratan de sacar las versiones con los mínimos fallos posibles y eso hace que se demoren mucho en el tiempo por las comprobaciones, en el estilo bazar pretende liberar código lo más rápidamente posible para de esta forma depurarlo entre todos los usuarios y avanzar de manera más rápida. 53 CAPITULO V: PRESENTE DEL SOFTWARE LIBRE 5.1 MODELOS DE DESARROLLO Tradicionalmente, el desarrollo de software propietario lo realizan grupos de desarrolladores dentro de una empresa o de empresas contratadas para tal, bajo contratos que impiden la divulgación y el uso de informaciones relacionadas al producto en desarrollo. Todo está relacionado a cuestiones de sigilo industrial y de propiedad intelectual (derecho de autor), y el conocimiento relacionado a la producción del software está considerado como un activo muy importante de la organización propietaria. El Software Libre permitió el surgimiento de innovadores modelos de desarrollo de software, con colaboración en red de desarrolladores. Estos modelos son fundamentalmente diferentes de las prácticas establecidas por la ingeniería de software tradicional. La Internet fue (y es) un punto clave de este cambio, pues proporcionó una gran expansión en esta forma de organización del trabajo, y permite la creación simple y ágil de redes con participantes de todas las partes del mundo y, colateralmente, responsabilidades para distribuye todos los know-how, participantes mejores de estas prácticas redes, y sean desarrolladores, traductores o simples usuarios, que colaboran con sugestiones de mejorías y relatan bugs. Estas redes, sin embargo, pueden ser más o menos “libres”. Pueden ser sistemas complejos que se auto-organizan o pueden ser sistemas jerárquicos, con reglas y niveles de acceso diversificado. El desarrollo del kernel del Linux, por ejemplo, explotó, al principio, una forma descentralizada y colectiva de proyecto de desarrollo, muy factible por Internet. El autor original del Linux, Linus Torvalds, mantuvo el control del proyecto del sistema operacional, pero abrió el proceso de modo a que otros pudieran acompañar su trabajo y evolución y, ante todo, pudieran contribuir para la identificación y solución de problemas. 55 Por este proceso, el desarrollo del Linux se tornó el resultado de un ambiente de aprendizaje colectivo, donde la tarea estratégica del líder es dar la palabra final sobre posibles disputas, al mismo tiempo en que estimula, posibilita y mantiene el flujo de ideas, conocimiento, experiencias, entre otros. Con la generalización de estas prácticas, las implicaciones para el desarrollo de software fueron marcantes: Internet se tornó el entorno de desarrollo de proyectos y todos los que pueden y desean colaborar pueden hacerlo en un proceso colectivo con diversas formas de colaboración (programación, indicación de fallas, sugestión de mejorías, traducción, documentación, divulgación o hasta financieramente). Son colectivos heterogéneos y débilmente relacionados (sólo un motivo común los une: el desarrollo de un software específico), por lo general sin contratos formales o vínculos a empresas u organizaciones para el desarrollo del software. A estos colectivos tradicionalmente se les llama comunidad de desarrollo de software. En estas condiciones, el desarrollo de un software exige la actuación de líder(es) de proyecto, por lo general, la(s) persona(s) con actuación más acentuada en el mismo, que decide(n) qué colaboraciones se incorporarán a la próxima versión del software, cuáles son las prioridades y los rumbos del proyecto, oída la comunidad que se forma alrededor del mismo. Ejemplos claros de este modelo de gobierno (con variaciones propias de cada una) son las comunidades Apache (www.apache.org) y la de desarrollo del kernel del Linux (kernel.org). Se aplica, a la mayoría de los proyectos de desarrollo de software libre, un principio basado en los méritos de los participantes en aquella comunidad. El concepto de mérito puede variar de comunidad a comunidad, pero por lo general, involucra cuestiones como cantidad y calidad de código contribuido, sugestiones y participación activa y coherente y con opiniones constructivas en debates sobre los rumbos del proyecto. Cuando prevalece, esta forma de gobierno es esencialmente meritocrática (forma de gobierno basada en el merito), pero tiene también contenido estratégico y de seguridad. Este modelo de desarrollo también permite que muchos individuos y empresas puedan colaborar para la creación de un software, que ninguno de ellos fuera 56 capaz de desarrollar individualmente, por la complejidad o por el costo. Por lo tanto, se trata de una forma de organización que aprovecha economías de escala y de alcance. También permite una corrección rápida de fallas y el aumento de la seguridad, porque el código fuente puede ser inspeccionado públicamente, y esto hace con que esté expuesto a severas evaluaciones, al haber una gran cantidad de personas que pueden colaborar con la corrección de las fallas detectadas. Otra característica interesante es la posibilidad de realizarse alteraciones específicas, según las necesidades individuales de cada usuario, generando diversas versiones personalizadas y que atienden perfectamente a cada característica demandada. El modelo de desarrollo también favorece la posibilidad de bifurcación de proyectos: en el caso de que no haya acuerdo con relación a los rumbos de un determinado proyecto (o sea, si un grupo de personas o hasta una persona que participa del desarrollo no está de acuerdo con los rumbos definidos por el(los) líder(es)), siempre existe la posibilidad de principiar un nuevo proyecto, con nuevas prioridades y rumbos, aprovechando todo el código ya desarrollado en el proyecto original, con partida desde el punto exacto en que hubo la ruptura, mientras el proyecto original sigue sus directrices definidas. Actualmente, la forma de organización del trabajo relacionado al desarrollo de software viene suscitando mucho interés entre investigadores de diversas áreas, desde el derecho hasta la ciencia política, y, claro, la economía. El término commons-based peer-production ya fue utilizado para definir esta forma de producción. El creador del término, Yochai Benkler (Benkler, 2002), caracteriza este modelo de desarrollo de SL/CA como el ejemplo más visible de un nuevo fenómeno socioeconómico que define un tercer modo de producción, que está más adecuado al entorno digital en red. Segundo el autor, este nuevo modo de producción se diferencia de los tradicionales modelos basados en propiedad (empresas) y en contratos (mercados), pues su característica central es la de grupos de individuos que colaboran en grandes proyectos, por motivaciones y 57 señalizaciones sociales diversas en vez de precios de mercado y de comando jerárquico-gerencial, típicas de las dos otras formas de producción. El profesor de economía de la Universidad de California en Berkley, J. Bradford DeLong, destaca el nacimiento, en el meollo de las comunidades de desarrollo de SL/CA, de una nueva modalidad de organización social, diferente de las 3 herramientas convencionales de ingeniería social que él reconoce como utilizadas por la humanidad para organizar la división de trabajo en gran escala: mercados, jerarquías y carisma. 5.2 COMUNIDADES En realidad, el término “comunidad”, usado anteriormente, se aplica en diferentes contextos a diferentes grupos de personas, con mayor o menor granularidad. Se aplica, por ejemplo, en un contexto generalista, a todo el colectivo de personas que se relaciona con SL/CA, que abarca no sólo un proyecto o un tema, pero los participantes de todas las comunidades vinculadas de alguna forma al desarrollo, uso, difusión o apoyo del SL/CA. Estas comunidades pueden ser, por ejemplo, grupos de usuarios, grupos de desarrolladores, grupos mixtos, grupos de debates técnicos, grupos de debates políticos, grupos de organización y articulación, grupos que usan/desarrollan un software en común. Este último tipo de grupo es lo que más comúnmente se define como comunidad: las que se forman alrededor de un software o de un proyecto de desarrollo de software. Son ejemplos típicos la comunidad Mozilla16, la comunidad Mambo17 y otras, en que se reúnen desarrolladores, usuarios e interesados para debatir y perfeccionar una herramienta en particular. Estas comunidades también pueden subdividirse en otras más específicas, como una subcomunidad de desarrolladores (que trata cuestiones técnicas de desarrollo y encamina la solución de problemas) y una subcomunidad de soporte (que ofrece ayuda a usuarios principiantes y/o en dificultades para utilizar determinado recurso del software en cuestión). Las comunidades son una característica marcante de buena parte de los proyectos de desarrollo de SL/CA. Cuanto más visibles los proyectos, mayores las comunidades que se forman a su alrededor. Aunque el papel central en estos proyectos sea el de los desarrolladores, a ellos enseguida 58 se les suman los usuarios del software, que también contribuyen de una forma u otra, para la evolución de los mismos. Existen aún los usuarios no-activos, que raramente participan de los debates sobre un software, esto los ubica en posición aislada de la comunidad, pero, aún así, son considerados como tal (cuentan en estadísticas de usuarios, por ejemplo). Otros colaboradores también se unen a las comunidades, como traductores, inversionistas, artistas gráficos (contribuyen con íconos, estudios de usabilidad) y editores de libros. Un factor fundamental para la existencia de estas comunidades es la facilidad de comunicación propiciada por la Internet, esto permite la interacción, cooperación y hasta competición entre sus miembros. La colaboración viene tornándose cada vez más rica, pues a lo largo del tiempo se fueron creando y perfeccionando herramientas apropiadas para cada actividad: sistemas distribuidos de control de versiones de software y sistemas de trazabilidad y control de errores son dos de los ejemplos de herramientas para desarrolladores, mientras que listas de discusión, foros y chats, sitios web y otros los utilizan tanto desarrolladores como usuarios. Muchas veces, comunidades grandes promueven también encuentros presenciales regionales, nacionales y hasta internacionales. Existen aún las comunidades que se organizan alrededor de temas de debate relacionados a cuestiones relevantes en el seno de las demás comunidades de SL/CA. Son grupos heterogéneos, que involucran usuarios, desarrolladores y cuadros políticos, y que pueden tener como foco de las discusiones cuestiones de uso de SL/CA, estrategias de divulgación y difusión y articulación políticoestratégica. 5.3 MOTIVACIONES PARA EL DESARROLLO DEL SOFTWARE LIBRE La literatura sobre el tema “motivaciones de usuarios y desarrolladores de Software Libre” es extensa. Por lo general, las opciones de motivaciones presentadas a los entrevistados se relacionan con aspectos técnicos, ideológicos, 59 sociológicos y económicos. En el presente trabajo fueron investigadas las motivaciones. La gran mayoría de los usuarios destacó opciones relacionadas a la capacitación, como “desarrollar nuevas habilidades” y “compartir conocimiento”. Después aparece una motivación de orden técnica: “resolver problema sin solución usando software propietario”. A seguir una motivación de naturaleza ideológica: “software no debe ser propietario”, “Reducir costos” y “desarrollar nuevas habilidades (capacitación)” fueron las razones con mayor frecuencia dentro de las motivaciones. Las otras motivaciones son una mezcla de razones técnicas (“facilidad de las herramientas”) con ideológicas (“software no debe ser propietario” y “limitar el poder de las grandes corporaciones”). Es interesante notar que las razones ideológicas son más fuertes entre usuarios que entre desarrolladores, probablemente porque estos tienen en el desarrollo de programas un elemento fundamental de soporte financiero. Aunque el componente ideológico sea importante, hay razones de naturaleza práctica que los tornan más pragmáticos. 5.4 MODELOS DE NEGOCIOS BASADOS EN SOTFWARE LIBRE Software libre es parte de la industria de software. Por obvio que esto pueda parecer, es importante realizar la condición de pertenencia del Software Libre a una industria, a su industria, que es la industria de software. Aún cuando se considere el potencial revolucionario del Software Libre, es necesario identificar con claridad las estructuras que él revoluciona. Como modelo de negocio, el Software Libre incorpora nuevas formas de generar dinero en la industria de software. Por esto, él software libre, altera estándares de competencia junto a la industria que lo generó. Por lo tanto, para identificar modelos de negocios de Software Libre es necesario antes ver cómo él altera los modelos de negocios de la industria de software. Vale también la pena contestar a las siguientes cuestiones: ¿Software Libre acaba con los regímenes propietarios de la industria? ¿Cuáles? ¿Él engendra nuevos 60 regímenes tecnológicos y nuevos mercados? ¿Cuáles? ¿Lo qué debe cambiar en la organización del mercado de software con el crecimiento del Software Libre? Las respuestas dadas aquí a estas cuestiones dicen más o menos lo siguiente: el Software Libre no acaba con los regímenes propietarios, sino con algunos tipos de regímenes propietarios, específicamente los que combinan baja especificidad de aplicativo (programas más genéricos, normalmente comercializados como paquetes) con elevado interés en la reproducción (copia deseable). En paralelo, el Software Libre no engendra propiamente nuevos regímenes tecnológicos, En esta reorganización de trayectorias la industria de software viene asumiendo nuevos contornos y ciertos estándares propietarios tienden a desaparecer, particularmente los utilizados en sistemas operacionales. 5.5 SOFTWARE LIBRE HOY El alcance del software libre a nivel mundial, es muy grande y siempre dará de que hablar. Es por eso que me tomare este espacio para poder mencionar algunos de los sucesos que hoy en día se llevan a cabo relacionados con el software libre. Por ejemplo, quisiera tomar como ejemplo una ponencia que lleva por nombre: El Software Libre como vía de Desarrollo la cual fue desarrollada en Bolivia donde el especialista Iván Gutiérrez (2013) dijo: El software libre da libertad para estudiar, modificar y mejorar programas que se difunden de manera gratuita por Internet. En base a estas libertades pasamos de ser consumidores a desarrolladores, con esta decisión se pueden generar muchas opciones de desarrollo en términos económicos, científicos y sociales. Al ser de dominio público, el software libre circula sin mayores restricciones y es sujeto de muchas mejoras. 5.6 FUTURO DEL SOFTWARE LIBRE Puedo decir que el futuro del software libre está asegurado ya que posee una serie de ventajas sobre el software propietario: a) Beneficios tecnológicos: a lo largo de los años se ha demostrado que el software libre es seguro, estable y poderoso para aplicaciones de todo tipo. La curva de aprendizaje, talón de Aquiles en el pasado, se ha ido aminorando gradualmente y las distribuciones con interfaz grafica permiten 61 a los usuarios novatos introducir en el mundo del software libre sin problemas. b) Beneficios económicos: el software libre es más barato y en la mayoría de los casos, no tienes que pagar nada por él. De esta forma te ahorras un gran coste en licencias. c) Beneficios culturales: el software libre promueve la mezcla de culturas. El modelo del bazar comentado anteriormente hace que desarrolladores del todo el mundo se comuniquen y participen para la creación de software. 6 EJEMPLOS DE PROGRAMAS DE SOFTWARE LIBRE ¿Somos conscientes del uso que hacemos del software libre en nuestro día a día? Al hablar de ello siempre sale el nombre de Linux y a los programas que se desarrollan para ese sistema operativo, pero hay una gran cantidad de programas que están creados en código abierto para el sistema operativo Windows, muchos de estos programas ofrecen más ventajas que los de código propietario, y terminan siendo la opción a escoger cuando no interesa el software propietario. A continuación repasare una lista de los programas más importantes de software libre. 6.1 MOZILLA FIREFOX Durante los años de dominio absoluto de Internet Explorer la Web estaba limitada y los programadores tenían que ceñirse al navegador de Microsoft si querían que sus páginas se desplegaran correctamente. Aún hoy desarrollar webs compatibles con todos los navegadores puede ser una auténtica dificultad. Pero todo comenzó a cambiar cuando llegó Firefox. Primero fue Mozilla Navigation Suite, después Phoenix, después Firebird y por último Firefox, y ha revolucionado la navegación web. El auge de Internet impulsó su crecimiento, su éxito y su importancia mucho más allá que cualquier otro proyecto de Software Libre. Ser multiplataforma (funciona en GNU/Linux, Mac y Windows) le permite tener más usuarios y también, más programadores voluntarios. Microsoft no prestó la atención debida a su navegador, así que Firefox pronto fue más rápido, más completo, más seguro, más preciso con los estándares web y, 62 por así decirlo, mejor en todo. Firefox, en definitiva, fue el desencadenante de la guerra de navegadores de la que tanto nos estamos beneficiando los usuarios en la actualidad, además de situar el software libre con una cuota de un 30% (más contando a Chrome) en el mercado de los navegadores. 6.2 GNU/LINUX GNU/Linux es el nombre completo del sistema operativo que normalmente todos pueden conocer como Linux. El núcleo del sistema operativo (lo que interconecta los dispositivos entre sí) es Linux, las herramientas básicas del sistema operativo alrededor del núcleo son parte del proyecto GNU. Ambos han sido imprescindibles, juntos más que por separado, en el desarrollo de la informática desde los años 90. A pesar de todo, entre ambos ofrecen un sistema hiperconfigurable, completísimo y que no pocas veces ha puesto en evidencia a sus grandes competidores comerciales, ya sea en la informática de escritorio como de grandes servidores. En el recuento de septiembre de 2009, 446 de los 500 superordenadores más potentes del mundo ya usaban GNU/Linux como sistema operativo. Los teléfonos con Android llevan Linux, muchos de los primeros portátiles llevaban Linux. A fin de cuentas, ofrece un sistema plenamente funcional, completo y moderno que no tiene ningún costo de licencia. 6.3 APACHE Arthur C. Clarke dijo “Cualquier tecnología suficientemente avanzada es indistinguible de la magia”. Internet, sin duda, forma parte del grupo. Pero resulta que no es magia, es tecnología lo que hay detrás. En el caso de las páginas web que a fin de cuentas es lo que mucha gente considera Internet, lo que hay detrás son servidores que se encargan de proveernos las páginas web que solicitamos con nuestro navegador. Apache es el servidor web por excelencia, líder abrumador, con un 54% de cuota frente al 24% del IIS de Microsoft- (2010). Probablemente la versatilidad que garantiza el software libre porque cualquiera puede modificar el programa a su antojo es lo que le ha permitido alcanzar tales cuotas de éxito y convertirse, de facto, en el estándar para servir páginas web. 63 6.4 FREEBSD FreeBSD es uno de los sistemas operativos de la familia BSD. Son sistemas operativos tipo UNIX con licencia (BSD se llama también) aún más relajadas que la GPL, porque permiten, básicamente, hacer lo que quieras con el software mientras mantengas legalidad. Te permite, incluso, modificar el software a tu antojo y re-licenciarlo impidiendo el acceso a tus modificaciones a los demás. FreeBSD puede que no haya revolucionado el mundo directamente, pero sí ha tenido más influencia de lo que mucha gente sabe. El motivo: todos los dispositivos Apple desde el lanzamiento de Mac OS X llevan una parte de FreeBSD en su interior. Apple ha usado el código de FreeBSD para construir tanto el núcleo de su sistema operativo para ordenadores (Mac OS X) como el de dispositivos móviles (iOS). ¿Y por qué iba a querer Apple usar código de otro sistema operativo para montar el suyo propio? Pues porque era la manera más sencilla de partir, de base, de uno de los sistemas operativos más seguros y eficaces que existen. 6.5 OpenOffice Apache OpenOffice es una suite ofimática libre (código abierto y distribución gratuita) que incluye herramientas como procesador de textos, hoja de cálculo, presentaciones, herramientas para el dibujo vectorial y base de datos. Está disponible para varias plataformas, tales como Microsoft Windows, GNU/Linux, BSD, Solaris y Mac OS X. Soporta numerosos formatos de archivo, incluyendo como predeterminado el formato estándar ISO/IEC OpenDocument (ODF), entre otros formatos comunes, así como también soporta más de 110 idiomas, desde febrero del año 2010. Apache OpenOffice desciende de OpenOffice.org, un proyecto que tiene como base inicial a StarOffice, una suite ofimática desarrollada por StarDivision y adquirida por Sun Microsystems en agosto de 1999. El desarrollo de la suite estaba liderado por Oracle Corporation (inicialmente por Sun Microsystems), en colaboración con otras compañías como IBM, Google, entre otras hasta junio de 2011. El código fuente de la aplicación está disponible bajo la Licencia pública general limitada de GNU (LGPL). Después de la adquisición de Sun en 2010, 64 Oracle Corporation dejó de apoyar el desarrollo comercial y en junio de 2011 donó la suite a la Incubadora de Apache para convertirse en un proyecto de la Apache Software Foundation. Posteriormente, en diciembre de 2011, la Apache Software Fundación anunció que el nombre del proyecto se convertiría en Apache OpenOffice. 6.6 NOTEPAD++ Notepad++ es un editor de texto y de código fuente libre con soporte para varios lenguajes de programación. De soporte nativo a Microsoft Windows. Se parece al Bloc de notas en cuanto al hecho de que puede editar texto sin formato y de forma simple. No obstante, incluye opciones más avanzadas que pueden ser útiles para usuarios avanzados como desarrolladores y programadores. Se distribuye bajo los términos de la Licencia Pública General de GNU. 6.7 SOFWARE DE COMUNICACIÓN Ya sea por voz o a través del teclado, nos gusta comunicarnos con amigos y familiares. Los máximos representantes del software libre en este apartado son Pidgin y aMSN, aunque hay muchos más, como Emesene. Pidgin sirve para hablar con prácticamente cualquier red de mensajería instantánea, desde las populares MSN y Yahoo! hasta Google Talk. Emesene, por su parte, está especializado en la red de Microsoft. 6.8 DESCARGAS DE CONTENIDO Un uso muy común de una computadora es poder descargar y compartir contenido. Hay distintos métodos y el software libre tiene respuestas para todos ellos. El más novedoso es la descarga directa. Para ello cuentas con jDownloader, que lo atrapa todo, incluso vídeos de YouTube. Para los más clásicos, eMule, y para quienes buscan velocidad y variedad, Ares, el programa más descargado en Softonic. 6.9 REPRODUCTORES MULTIMEDIA En la categoría de reproductores multimedia dispones de una larga lista de software libre. Los más conocidos son VLC Media Player, Media Player Classic y Miro, para ver vídeos, y Songbird, para escuchar música. 65 6.10 VIRTUAL BOX Virtual Box es otro representante importante del software libre, la mejor manera de probar programas o configuraciones del sistema operativo sin miedo a inutilizarlo. Y para descomprimir archivos, qué mejor que 7-Zip o PeaZip, compatible con un sinfín de formatos distintos. 66 CONCLUSIONES La expansión del movimiento del software libre, en contraste con el desconocimiento casi generalizado del mismo, me obligo a buscar el origen y desarrollo de este tipo de programas y aplicaciones, sus fundamentos y formas de organización. Las formas de organización y producción, así como de la cooperación voluntaria de miles de usuarios anónimos para desarrollar, e incluso ayudar a resolver problemas, me llevo a estudiar el tema académicamente, buscando a resolver preguntas como: ¿De dónde vino el software libre? ¿Cómo se ha mantenido? Y ¿Hacia dónde va el software libre? Para responder a estas preguntas, en un primer momento de la investigación, se describe el contexto general de lo que es el software en general, partiendo de sus orígenes, los tipos de software que existen, los momentos de si historia en los que ha sobresalido y crecido, entre muchas más características del mismo, el cual poco a poco nos fue llevando a lo que se convertiría en un fenómeno que emergió y permanece conocido como el software libre. El conocimiento de la historia del software libre, es necesario para comprender las transformaciones y cambios del mismo. En este sentido, este trabajo mostro cuales fueron los inicios del software libre donde una persona decidió cambiar con el paradigma que en ese momento sostenía al software. Esto se ejemplifico con la narración de lo sucedido con el sistema operativo GNU/Linux. También a través de la historia, se describió como la lucha por la libertad en el software emergió casi al mismo tiempo en que se iniciaron las restricciones del mimo. Una de las figuras trascendentes en esta fase y aun ahora, es Richard Stallman, a través del movimiento denominado “copy-left” y la fundación del software libre. Para este trabajo, se propuso mirar al software libre y su proceso de producción, mantenimiento y distribución como un nuevo bien común del conocimiento, ya que, en principio, son las mismas comunidades de desarrollo las que así lo definen, a través de sus reglas. En este sentido, la inserción del software libre en el mercado global, no solo toma en cuenta el software como un producto, sino también como un proceso, en tanto que sea resultado de la acción colectiva de un gran número de personas. Describí 68 la interacción entre los desarrolladores y los usuarios, lo que facilita la comprensión acerca de cuándo los usuarios inciden en la innovación y mejoramiento de las aplicaciones. Además, mencione la importancia que los desarrolladores dan a los usuarios en partes fundamentales del proceso de la producción del software libre, tanto para la retroalimentación, como para proponer. Un proyecto exitoso de software libre, no solo o no necesariamente que este se inserte en el mercado y genere ganancias a partir de donaciones, venta o los servicios emanados a su alrededor, sino también que cumpla una función de utilidad o resolución de problemas para la comunidad de desarrolladores y usuarios, que haga avanzar el lenguaje de programación para generar nuevas aplicaciones, que genere interés por parte de la comunidad, o bien, que se convierta en un elemento lúdico o de reto para los propios desarrolladores y usuarios. En sí, un proyecto exitoso de software libre, se basa más en la generación de comunidades y redes de desarrollo a su alrededor que de tener un simple producto terminado, susceptible de generar ganancias. El reto más importante para un proyecto de software libre es generar interés. La propuesta libre a diferencia de la privativa, cuando los proyectos de desarrollo de software libre son exitosos, permite la sustentabilidad de los productos, pues el interés de la comunidad de mantenerlos vivos, los ara evolucionar. Pero además, se reparten las ganancias económicas cuando las hay, entre una base amplia de actores; es decir, el trabajo de los desarrolladores no puede enajenarse por una sola persona o entidad, puesto que el código fuente está expuesta y según sea su tipo de licencia. Además, por la forma en que puede redistribuirse y rediseñarse, permite que un mayor número de personas tengan acceso a aplicaciones y programas. Si bien, es cierto que se necesitan conocimientos técnicos y habilidades de programación para manipular el código, el que este se encuentre “a la vista de todos” posibilita que se adapte y utilice de diferentes maneras. El uso del software privativo implica la dependencia de los usuarios hacia los desarrolladores de sus programas, puesto que el usuario simplemente aprende a entender la interfaz de las aplicaciones, es decir, se le entrena para que sepa 69 donde debe oprimir para hacer limitadas funciones, pero no se le enseña a resolver problemas específicos que van más allá de su interfaz. Considero mediante este estudio que el uso del código libre de aplicaciones y programas, es necesario para fomentar el conocimiento tecnológico y las habilidades técnicas de la población en general. A diferencia del uso del software privativo, el software libre permite a los usuarios entender, los procesos que ocurren al usar ciertas aplicaciones, además de que la interacción con desarrolladores y otros usuarios, invita y facilita el aprendizaje del uso de comandos y con ello fomenta la independencia del usuario con respecto a sus aplicaciones. Una de las principales aportaciones de este trabajo, siendo el estudio del fenómeno del software libre, fue la representación del software libre como una cultura la cual crece cada día más. En tanto que existan pocos estudios, sobre este fenómeno, este trabajo aporta una nueva línea de investigación, para ampliar la base de conocimiento sobre esta temática. Espero que esta investigación sea de utilidad para la comunidad estudiantil, en tanto que se difunda el mensaje de que existen nuevas alternativas para la interacción con la tecnología computaciones, como también motivar a los usuarios e invitarlos que tengan un uso más racional y personalizado de sus aplicaciones. Finalmente, quisiera poder dar un último mensaje; y es que a decir verdad, mucho antes de iniciar con este trabajo, no sabía que tema elegir para poder realizar el mismo, no estaba seguro de que hacer, así que decidí investigar y escoger mi top 5 de los mejores temas que más llamaban mi atención. Debo decir que cuando me incline por el tema de software libre, no tenía idea de lo extenso que podía ser y de las muchas cosas que podría aprender, fue una buena experiencia académica trabajar en el. Aun así, debo decir que me encontré con algunas dificultades en el camino en cuanto a términos y a referencias muchas algunas veces basadas en otros sistemas y aparatos sobre lo cual tuve que investigar un poco más para saber de que estaba hablando, como también a la búsqueda de la información 70 necesaria que me convenciera en cuando a lo que estaba buscando y necesitaba para cada tema que escribía. Debo añadir que si algo intente hacer, fue hacer un tipo de cronología de lo que fue y es el software libre, y si me quedo alguna inquietud fue el no poder seguir documentando lo que será en un futuro el software libre y los posibles cambios que pueda tener. Aun así, estoy contento con la realización de lo que hice. Que este trabajo allá sido de su agrado y sea tomado como un punto de partida para el conocimiento del uso de nuevas alternativas de software. 71 FUENTES DE INFORMACIÓN Collado Gonzalez M. (Marzo de 2010). Software Libre. Recuperado el 1 de julio de 2013 de Sistemas Distribuidos y Principales Implementaciones: ftp://www.cc.uah.es/pub/Alumnos/I.T.I.Gestion/Sist.Operativos/TECWeb/T1/ web/index.html De la Cruz Martínez V. (2002). Filosofía del Software Libre. Tesis de Licenciatura, Universidad Veracruzana, Xalapa, México. Etapas de Desarrollo de Software. (Abril de 2011). Fundamentos de Desarrollo de Sistemas. Recuperado el 15 de octubre de 2013 de Fundamentos de Desarrollo de Sistemas. http://www.slideshare.net/itlac/etapas-de-desarrollo-software Gutiérrez Romero O. (2010). Análisis Comparativo de sistemas ERP´s de software Libre y Software Propietario. Tesis de Licenciatura, Universidad Veracruzana, Xalapa, México. Hispalinux. (Junio de 1997). ¿Qué es el Software Libre? Recuperado el 15 de julio de 2013 de ¿Qué es el software libre? tp://www.cc.uah.es/pub/Alumnos/I.T.I.Gestion/Sist.Operativos/TECWeb/T1/ web/index.html Matthew Stallman R. (2002). Software Libre para una Sociedad Libre. Estados Unidos: Editorial Traficantes de Sueños. Real Academia Española. (2001). El Diccionario de la Lengua Española. Recuperado el 20 de noviembre de 2013 de El Diccionario de la Lengua Española. http://rae.es/recursos/diccionarios/drae Rendón Reyes D. (2001). El Software Libre. Tesis de Licenciatura, Universidad Veracruzana, Xalapa, México. Turner Sen T. (2012). Software Libre y abierto: comunidades y redes de producción digital de bienes comunes. Tesis de Maestría, Universidad Nacional Autónoma de México, Distrito Federal, México. 72