lunes, 16 de octubre de 2017

Diferencias entre software libre y software privativo

Software Libre:

  • Los usuarios tienen la libertad para ejecutar, copiar, distribuir, estudiar y modificar el software.
  • Se encuentra disponible el código fuente del software.
  • Generalmente tienen más seguridad, estabilidad y eficiencia (porque mucha gente lo mejora y lo arregla ya que, el código de fuente se encuentra disponible para ello).
  • Su costo es muy bajo y mayormente gratuito.
  • Fomenta la libre competencia al basarse en servicios y no en licencias.
  • Existen aplicaciones para todas las plataformas.
  • El usuario no depende del creador del software.

Software Privativo:

  • El usuario tiene limitaciones para usarlo, modificarlo o redistribuirlo (esto último con o sin modificaciones).
  • Su código fuente no está disponible o el acceso a éste se encuentra restringido.
  • Las aplicaciones de este tipo suelen tener un costo mayor.
  • El soporte de la aplicación es exclusivo del propietario.
  • El usuario que adquiere software propietario depende al 100% de la empresa propietaria.
  • No existen aplicaciones para todas las plataformas.
  • Por lo general suelen ser menos seguras ya que, son más propensas a ser atacadas por software malicioso debido a su popularidad.

Antecedentes del Software Libre

Entre los años 1960 y 1970, el software no era considerado un producto sino un añadido que los vendedores de las grandes computadoras de la época (las 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, como DECUS (grupo de usuarios de computadoras DEC). A finales de la década de 1970, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia.

En 1971, cuando la informática todavía no había sufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.

Con la llegada de los años 1980 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software.

En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que ésta lo solucionara. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que modificase el software.

Richard Stallman, un programador de MIT (Instituto de Tecnología de Massachusetts), se había acostumbrado -como muchos en la comunidad de Hackers- a colaborar con otros desarrolladores intercambiando código fuente. De esa manera, cooperando con otros desarrolladores, lograba buenos resultados.

Esto último era una práctica muy común en los inicios de los años 70, cuando Stallman comenzó a trabajar en el MIT, pero las cosas fueron cambiando en buena medida debido a que el desarrollo de software se convirtió en un gran negocio. Al llegar a los años 80, el código fuente había pasado de ser un elemento de intercambio entre los programadores a ser considerado un secreto estratégico para varias empresas.

El mismo Richard Matthew Stallman cuenta que por aquellos años, en el laboratorio donde trabajaba, habían recibido una impresora donada por una empresa externa. El dispositivo, que era utilizado en red por todos los trabajadores, parecía no funcionar a la perfección, dado que cada cierto tiempo el papel se atascaba. Como agravante, no se generaba ningún aviso que se enviase por red e informase a los usuarios de la situación.

La pérdida de tiempo era constante, ya que, en ocasiones, los trabajadores enviaban por red sus trabajos a imprimir y al ir a buscarlos se encontraban la impresora atascada y una cola enorme de trabajos pendientes. Richard Stallman decidió arreglar el problema, e implementar el envío de un aviso por red cuando la impresora se bloqueara. Para ello necesitaba tener acceso al código fuente de los controladores de la impresora. Pidió a la empresa propietaria de la impresora lo que necesitaba, comentando, sin pedir nada a cambio, qué era lo que pretendía realizar. La empresa se negó a entregarle el código fuente. En ese preciso instante, Stallman se vio en una encrucijada: debía elegir entre aceptar el nuevo software propietario firmando acuerdos de no revelación y acabar desarrollando más software propietario con licencias restrictivas, que a su vez deberían ser más adelante aceptadas por sus propios colegas.

Con este antecedente, en 1984, Richard Stallman comenzó a trabajar en el proyecto GNU, y un año más tarde fundó la Free Software Foundation (FSF). Stallman introdujo la definición de software libre y el concepto de "copyleft", que desarrolló para otorgar libertad a los usuarios y para restringir las posibilidades de apropiación del software.

lunes, 2 de octubre de 2017

Software libre en Venezuela

La adopción de Software Libre en Venezuela por parte del Gobierno Bolivariano comenzó en el año 2004 con la promoción de políticas públicas en materia de Tecnologías de Información Libres; entre ellas el uso de Software Libre con Estándares Abiertos en los sistemas, proyectos y servicios informáticos de la Administración Pública, como instrumento fundamental para garantizar la Independencia Tecnológica por medio de la apropiación del conocimiento por parte de los ciudadanos y las ciudadanas de nuestro país., el fortalecimiento de la Gestión Pública, y la prestación de servicios en beneficio del Poder Popular.

El uso  prioritario y la aplicación del Software Libre representa el primer paso para alcanzar esos ideales, así como para la seguridad y soberanía nacional y tecnológica, ya que la adopción del mismo conforma una de las bases para constituir un desarrollo tecnológico orientado al desarrollo social y la eficiencia productiva, gracias a la posibilidad que brinda de socializar tanto los productos como el uso de esos productos que hayan sido desarrollados bajo estos estándares propios del Software Libre.

Así mismo, desde la publicación del Decreto N° 3.390 (Gaceta oficial Nº 38.095 de fecha 28/12/2004) el Presidente de la República Bolivariana de Venezuela, Hugo Chávez Frías, aprobó el Plan Nacional de Migración de Software Libre, como pilar fundamental para que los Órganos y Entes de la Administración Pública Nacional, diseñaran y ejecutaran sus respectivos planes de implantación progresiva del Software Libre desarrollado con estándares abiertos o “Planes Institucionales de Migración”, alcanzando de esta manera una Administración Pública Nacional con plataformas tecnológicas seguras, ínteroperables, escalables, fácilmente replicables, metodológicamente fundamentadas y técnicamente independientes, todo ello basado principalmente en la libertad de uso del conocimiento y la transferencia tecnológica.

Este plan incluyó veintiséis lineamientos generales y cuatro programas, tales como: Migración y Estándares, Promoción y Sensibilización en Software Libre, Capacitación y Formación, y Fortalecimiento de la Industria Nacional. Como parte de los mecanismos o herramientas se generaron:

  • Canaima GNU/Linux Metadistribución venezolana, no sólo como un sistema operativo, sino como proyecto sociotecnológico abierto, construido de forma colaborativa entre la Comunidad Nacional de Software Libre e instituciones públicas para promover capacidades nacionales, desarrollo endógeno, apropiación y promoción del libre conocimiento.

  • Programa Científico Tecnológico “Academia de Software Libre”, para fortalecer la capacidad técnica del Estado y su recurso humano, en el área de las Tecnologías de Información y Comunicación.

  • Industria Venezolana de Software Libre (Invesol), herramienta para el registro de Unidades Productivas, especialistas y estudiantes con experiencia y conocimiento en el desarrollo de productos o prestación de servicios basados en Tecnologías de Información Libres, además de ser un espacio para plantear requerimientos (necesidades) a soluciones y servicios en materia de Software Libre.

  • Plan Institucional de Migración (PIM), asesoría y acompañamiento en la construcción y publicación del PIM en Gaceta Oficial por los órganos y entes de la Administración Pública.

  • Repositorio Nacional de Aplicaciones (RNA), concebido para organizar, gestionar, preservar y ofrecer acceso a las soluciones informáticas en Software Libre desarrolladas con estándares abiertos, al servicio de la comunidad organizada, institución, empresa o persona interesada en la búsqueda de aplicaciones en Tecnologías de Información Libres.

  • Colabora, herramienta en línea que permitía el desarrollo de comunidades y el trabajo colaborativo en línea para distintos proyectos, productos y servicios impulsados por el CNTI, Comunidad Organizada y otras instituciones públicas.

  • Base de Conocimiento, espacio para la difusión de artículos de interés relacionados a la resolución de problemas en materia de Tecnologías de Información Libres, experiencias exitosas en la migración a Software Libre y adopción de Gobierno Electrónico.

Libertades del software libre

``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 que los usuarios del software tienen:

  • Libertad Cero: "Usar el programa con cualquier propósito". Es decir, el ejercicio de esta libertad implica que lo podemos utilizar con cualquier fin, ya sea educativo, cultural, comercial, político, social, etc. Esta libertad deriva de que hay ciertas licencias que restringen el uso del software a un determinado propósito, o que prohíben su uso para determinadas actividades.

  • Libertad Uno: "Estudia cómo funciona el programa, y adaptarlo a sus necesidades". Significa que podemos estudiar su funcionamiento (al tener acceso al código fuente) lo que nos va a permitir, entre otras cosas: descubrir funciones ocultas, averiguar cómo realiza determinada tarea, descubrir que otras posibilidades tiene, que es lo que le falta para hacer algo, etc. El adaptar el programa a mis necesidades implica que puedo suprimirle partes que no me interesan, agregarle partes que considero importantes, copiarle una parte que realiza una tarea y adicionarla a otro programa, etc.

  • Libertad Dos: "Distribuir copias". Quiere decir que somos libres de redistribuir el programa, ya sea gratis s o con algún costo, ya sea por email, F FTP o en CD, ya sea a una persona o a varias, ya se a un vecino o a una persona que vive en otro país, etc.

  • Libertad Tres: "Mejorar el programa, y liberar las mejoras al público". Es la libertad de hacer mejor el programa, es decir que podemos hacer menores los requerimientos de hardware para funcionar, que tenga mayores prestaciones, que ocupe menos espacio, que tenga menos errores, entre otras modificaciones. El poder liberar las mejoras al público quiere decir que si realizamos una mejora que permita un requerimiento menor de hardware, o que haga que ocupe menos espacio, soy libre de poder redistribuir ese programa mejorado, o simplemente proponer la mejora en un n lugar público (un foro de noticias, una lista de correo, un sitio Web, un FTP, un canal de Chat).

Características del software libre

  • El usuario tiene la libertad de usarlo, estudiarlo, distribuirlo y mejorarlo.
  • No tienes que pedir ni pagar permisos.
  • Se encuentra disponible el código fuente del software, por lo que puede modificarse el software sin ningún límite. Al tener acceso al código fuente el proceso de corrección es muy dinámico, no hace falta esperar que el proveedor del software saque una nueva versión.
  • No tienes que hacer público a ninguna entidad que has llevado a cabo modificaciones de un determinado programa.
  • Cualquier persona capacitada puede traducir y adaptar un software libre a cualquier lengua.
  • Interoperabilidad: Se puede usar en cualquier tipo de sistema informático, para cualquier tipo de actividad.
  • Flexibilidad y adaptabilidad: Debe de incluirse el código fuente, para hacer las modificaciones y publicaciones.
  • La distribución de software libre implica hacerlo incluyendo su código, ya sea la versión original o el modificado.
  • Es ilegal distribuir un software libre como “no libre”, va en contra de la licencia GPL.
  • Fiabilidad y seguridad: Los errores se detectan y corrigen con gran rapidez.
  • Rapidez y desarrollo: Los ajustes y actualizaciones se realizan más rápidamente gracias a la existencia de Internet y a la variedad de herramientas y librerías.
  • Relación cercana con el usuario: El programador se acerca mucho más a la vida real del usuario, y puede crear incluso un producto específico para dicho usuario.
  • Es un recurso que puede combatir en contra de la piratería.
  • Libre acceso: Cualquiera puede acceder a la información sin necesidad de pagar licencias por el uso de estos programas.
  • Fomenta la libre competencia al basarse en servicios y no licencias.
  • Otras de las características son: privacidad, libertad, colaboración, competitividad, eficiencia, robustez, no discriminación, mayor protección contra los virus.

Creador del software libre

Richard Matthew Stallman (nacido en Manhattan, Nueva York, 16 de marzo de 1953), con frecuencia abreviado como "rms", es un programador estadounidense y figura relevante del movimiento por el software libre en el mundo.

Entre sus logros notables como programador incluyen la participación en el 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. Es también inventor del concepto de Copyleft (aunque no del término), un método para licenciar software de tal forma que su uso y modificación permanezcan siempre libres y queden en la comunidad.

Ha escrito muchos ensayos relacionados con el software libre, su ética y aplicación práctica y los peligros que enfrenta. En su libro Software Libre para una Sociedad Libre se pueden encontrar los ensayos y discursos más importantes.

En el laboratorio de IA del MIT

En 1971, siendo estudiante de primer año de Física en la Universidad de Harvard, Stallman se convirtió en un hacker del laboratorio de inteligencia artificial (IA) del MIT. En los años 80, la cultura Hacker que constituía la vida de Stallman empezó a disolverse bajo la presión de la comercialización en la industria del software. En particular, otros hackers del laboratorio de IA fundaron la compañía Symbolics, la cual intentaba activamente reemplazar el software libre del Laboratorio con su propio software privativo.

Durante dos años, desde 1983 a 1985, Stallman por sí solo duplicó los esfuerzos de los programadores de Symbolics para impedir que adquirieran un monopolio sobre los ordenadores del laboratorio. Por ese entonces, sin embargo, él era el último de su generación de hackers en el laboratorio.

Se le pidió que firmara un acuerdo de no divulgación (non-disclosure agreement) y llevara a cabo otras acciones que él consideró traiciones a sus principios. El 27 de septiembre de 1983 Stallman anunció en varios grupos de noticias de Usenet el inicio del proyecto GNU que perseguía crear un sistema operativo completamente libre.

Iniciativa GNU

Al anuncio inicial del Proyecto GNU siguió, en 1985, la publicación del Manifiesto GNU, en el cual Stallman declaraba sus intenciones y motivaciones para crear una alternativa libre al sistema operativo Unix, al que denominó GNU (GNU No es Unix), pronunciado de forma parecida a ñu, en inglés (de ahí los dibujos-logotipos que lo representan). Poco tiempo después fundó la organización sin ánimo de lucro Free Software Foundation para coordinar el esfuerzo. Inventó el concepto de copyleft, que fue utilizado en la Licencia Pública General GNU (conocida generalmente como la "GPL") en 1989. La mayor parte del sistema GNU, excepto el núcleo, se completó aproximadamente al mismo tiempo. En 1991, Linus Torvalds liberó el núcleo Linux bajo los términos de la GPL, completando un sistema GNU completo y operativo, el sistema operativo GNU/Linux.

Actualidad
Las motivaciones políticas y morales de Richard Stallman lo han convertido en una figura controvertida. Muchos programadores influyentes que se encuentran de acuerdo con el concepto de compartir el código, difieren con las posturas morales, filosofía personal o el lenguaje que utiliza Stallman para describir sus posiciones. Un resultado de estas disputas condujo al establecimiento de una alternativa al movimiento del software libre, el movimiento de código abierto.

En la actualidad, Stallman se encarga de difundir la ideología GNU en todo el mundo mediante charlas y conferencias. Esto hace que algunos le consideren como un profeta o gurú. Stallman posee un buen nivel de castellano, y ha dado varias conferencias en español en España, Cuba y otros países latinoamericanos (en universidades, etc), varias de estas conferencias fueron grabadas por algunos asistentes y están colgadas en Google Video y en YouTube.

Distinciones

Stallman ha recibido numerosos premios y reconocimientos por su trabajo, entre ellos:

  • Una membresía en la MacArthur Foundation en 1990.
  • El Grace Hopper Award de la Association for Computing Machinery en 1991 por su trabajo en el editor Emacs original.
  • Un Doctorado Honoris Causa del Royal Institute of Technology de Suecia en 1996.
  • El Pioneer award de la Electronic Frontier Foundation en 1998.
  • El Yuri Rubinsky memorial award en 1999.
  • El Takeda award en 2001.
  • En 2004 recibió un Doctorado Honoris Causa otorgado por la Universidad de Salta (Argentina).
  • Primer galardonado con el Premio Internacional Extremadura de Conocimiento Libre que concedió la Junta de Extremadura el 7 de febrero de 2007 en Badajoz en el marco de la III Conferencia Internacional de Software Libre.

Filosofía del software libre

Para conocer mejor la Filosofía del Software Libre, se hace necesario partir de una revisión conceptual, acerca de los dos tipos de software existente: Software Propietario y Software Libre, que recoja las características fundamentales de los mismos. En tal sentido, el Software Propietario es aquel que restringe los derechos del usuario al mero uso de su funcionalidad bajo condiciones determinadas al solo criterio del dueño de los derechos de autor y para definir el Software Libre, tomaremos el concepto legal que ha asumido el Estado Venezolano, a través del Artículo 2 del Decreto 3390, el cual define al Software Libre como “Programa de computación cuya licencia garantiza al usuario acceso al código fuente del programa y lo a autoriza a ejecutarlo con cualquier propósito, modificarlo y redistribuir tanto el programa original como sus modificaciones en las mismas condiciones de licenciamiento acordadas al programa original, sin tener que pagar regalías a lo os desarrolladores previos”.

Richard Stallman, pionero de este movimiento a nivel mundial, aclarar que software libre (Free Software) es un asunto de libertad. La palabra "free" en inglés se malinterpreta como "gratis" o libre de costo. La palabra "free" se refiere a la libertad de los usuarios de poder ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software.

El Software Libre más que un sistema operativo es una filosofía para a la liberación y soberanía tecnológica de nuestros pueblos, tan es así, que el Estado Venezolano ha concebido el uso y aplicación del Software Libre como una oportunidad para avanzar en la construcción del Socialismo Bolivariano, tomando en consideración las cuatro libertades básicas que proporciona la adopción del software libre, las cuales se describen a continuación:

  • La libertad de usar el programa, con cualquier propósito (libertad 0).
  • La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades (libertad 1). 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 (libertad 2).
  • La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto.

Un programa es software libre si los usuarios tienen todas estas libertades. Así pues, deberías tener la libertad de distribuir copias, sea con o sin modificaciones, sea gratis o cobrando una cantidad por la distribución, a cualquiera y a cualquier lugar. El ser libre de hacer esto significa (entre otras cosas) que no tienes que pedir o pagar permisos.

También deberías tener la libertad de hacer modificaciones y utilizarlas de manera privada en tu trabajo u ocio, sin ni siquiera tener que anunciar que dichas modificaciones existen. Si publicas tus cambios, no tienes por qué avisar a nadie en particular, ni de ninguna manera en particular.

La libertad para usar un programa significa la libertad para cualquier persona u organización de usarlo en cualquier tipo de sistema informático, para cualquier clase de trabajo, y sin tener obligación de comunicárselo al desarrollador o a alguna otra entidad específica.

La libertad de distribuir copias debe incluir tanto las formas binarias o ejecutables del programa como su código fuente, sean versiones modificadas o sin modificar (distribuir programas de modo ejecutable es necesario para que los sistemas operativos libres sean fáciles de instalar). Está bien si no hay manera de producir un binario o ejecutable de un programa concreto (ya que algunos lenguajes no tienen esta capacidad), pero debes tener la libertad de distribuir estos formatos si encontraras o desarrollaras la manera de crearlos.

Para que las libertades de hacer modificaciones y de publicar versiones mejoradas tengan sentido, debes tener acceso al código fuente del programa. Por lo tanto, la posibilidad de acceder al código fuente es una condición necesaria para el software libre.

Para que estas libertades sean reales, deben ser irrevocables mientras no hagas nada incorrecto; si el desarrollador del software tiene el poder de revocar la licencia, aunque no le hayas dado motivos, el software no es libre.

Son aceptables, sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre, mientras no entren en conflicto con las libertades centrales. Por ejemplo, copyleft [``izquierdo de copia''] (expresado muy simplemente) es la regla que implica que, cuando se redistribuya el programa, no se pueden agregar restricciones para denegar a otras personas las libertades centrales. Esta regla no entra en conflicto con las libertades centrales, sino que más bien las protege.

Así pues, quizás hayas pagado para obtener copias de software GNU, o tal vez las hayas obtenido sin ningún coste. Pero independientemente de cómo hayas conseguido tus copias, siempre tienes la libertad de copiar y modificar el software, e incluso de vender copias.

``Software libre'' no significa ``no comercial''. Un programa libre debe estar disponible para uso comercial, desarrollo comercial y distribución comercial. El desarrollo comercial del software libre ha dejado de ser inusual; el software comercial libre es muy importante.

Es aceptable que haya reglas acerca de cómo empaquetar una versión modificada, siempre que no bloqueen a consecuencia de ello tu libertad de publicar versiones modificadas. Reglas como ``Si haces disponible el programa de esta manera, debes hacerlo disponible también de esta otra'' pueden ser igualmente aceptables, bajo la misma condición. (Observa que una regla así todavía te deja decidir si publicar o no el programa). También es aceptable que la licencia requiera que, si has distribuido una versión modificada y el desarrollador anterior te pide una copia de ella, debas enviársela.

En el proyecto GNU, se utiliza ``copyleft'' para proteger de modo legal estas libertades para todos. Pero el software libre sin ``copyleft'' también existe. Hay razones importantes por las que es mejor usar copyleft, pero si tus programas son software libre sin ser copyleft, los puedes utilizar de todos modos.