Lecciones de Software Libre

Angel E. Mendoza

POO. Conceptos fundamentales

Los principales conceptos involucrados en la POO son los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Herencia: Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.


Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.


Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.


Mensaje:
una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.


Propiedad o atributo:
contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.


Estado interno:
es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.


Componentes de un objeto:
atributos, identidad, relaciones y métodos.


Identificación de un objeto:
un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.


En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

Fuente: http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

POO. Características

Veamos algunas de las características más importantes de la POO. Algunas de ellas fueron mencionadas en los videos publicados en el post anterior.


Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica.


Herencia:
las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.


Recolección de basura:
la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente los Objetos que hayan quedado sin ninguna referencia a ellos, liberando la memoria en desuso. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando.


Fuente.: http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

¿Que es POO?

La programación Orientada a Objetos POO o también conocida como OOP, por sus siglas en inglés, es un habitual elemento en las aplicaciones de Software Libre.

La POO, es lo que se conoce como un paradigma o modelo de programación. Esto significa que no es un lenguaje específico, o una tecnología, sino una forma de programar, una manera de plantearse la programación. No es la única (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar más populares e incluso muchos de los lenguajes que usamos hoy día lo soportan o están diseñados bajo ese modelo.

Lo que caracteriza a la POO es que intenta llevar al mundo del código lo mismo que encontramos en El Mundo Real. Cuando miramos a nuestro alrededor ¿qué vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y también un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). Éste es el modelo que la POO intenta seguir para estructurar un sistema.

Para entender mejor lo que es la POO e introducir algunos de los conceptos relacionados a este paradigma, veamos los siguientes videos
:








En los post siguientes hablaremos más detalladamente de estos conceptos.

Software Libre y la Ingenieria de Software Libre. Extractos

Al respecto de la ingeniería de software y su aplicación en entornos de software libre, se han escrito cierta cantidad de publicaciones. Dos de ellas llamaron mi atención, por lo que les presento un extracto de cada una de ellas.

La Ingeniería de Software Libre y sus Herramientas Aplicadas a Proyectos Informáticos por Mauro Callejas Cuervo
La Ingeniería de Software Libre (ISL) permite que la metodología para el desarrollo de aplicaciones se lleve a cabo de manera amplia, ya sea utilizando un enfoque estructurado de análisis y diseño [Witten et al, 1996], [Yourdon, 1990], [Kendall & Kendall, 1998], un enfoque orientado por objetos [Meyer, 1998] o algún otro tipo de paradigma; además no limita a los analistas y diseñadores a utilizar una técnica de modelado y diagramación, como UML[Jacobson et al, 1999] o el modelado estructurado, ni ofrece recomendaciones que permitan evaluar el nivel de calidad de una organización, como lo promueve The Capability Maturity Model, CMM [Paulk et al, 1993]. Más bien se fundamenta en que se debe trabajar en equipo, con el fin de fomentar una mayor participación de elementos para el desarrollo óptimo de aplicaciones, sin dejar de lado la utilización de técnicas y herramientas que aquí se mencionan. Además, se debe tener en cuenta el tiempo y los recursos asignados para cumplir con las tareas involucradas, evitando la pérdida de tiempo o abandono de los proyectos.
Con la ISL se pretende promover el uso de sistemas operativos, lenguajes de programación, bases de datos y demás herramientas de software de carácter libre para la creación de aplicaciones.


Ingeniería del Software Libre. Abriendo una nueva rama de la Ingeniería del software por Gregorio Robles

En cierta medida, la ingeniería del software libre pretende desposeer de esa "magia" que parece que es intrínseca a los desarrollos de software libre y cuantificar unos parámetros que nos permitan predecir con exactitud costes, plazos y recursos humanos. Como consecuencia, aunque podemos considerar que en la actualidad el software libre adolece de estos métodos en contraposición a las formas de desarrollo tradicionales, también es cierto que, por los motivos que se están desarrollando en este artículo, no le falta precisamente potencial para que esta situación cambie en el futuro.
Igualmente pretende ser una forma de introducir las virtudes de la ingeniería del software en el desarrollo a veces demasiado anárquico de software libre. Será tarea de la ingeniería del software encontrar formas para que los desarrolladores de software libre produzcan software de gran calidad siguiendo paradigmas de creación, producción y mantenimiento que así lo certifiquen.

La ingeniería del software libre cuenta como objetivo a corto plazo poder realizar un análisis completo al desarrollo de software libre que permita indagar profundamente en los procesos que están involucrados, así como en las consecuencias que ciertas acciones tienen sobre el conjunto del desarrollo.

...Utilizando símiles históricos, la situación que se vive en la actualidad en la generación de software libre concuerda con la que describió de la economía Adam Smith hace casi tres siglos. Smith constató que existían unos parámetros económicos claros (oferta y demanda), unas formas de interaccionar (transacciones) y consecuencias económicas palpables. Sin embargo, no entendía el modelo general que hacía que todo tuviera sentido y funcionara conjuntamente. Lo que hacía que oferta y demanda cuadrasen era para él literalmente una "mano negra", que más tarde se dio a llamar mercado. Hoy en día todos los ciudadanos, aún sin comprenderlo completamente, tenemos más o menos una idea intuitiva de lo que es un mercado.
Gracias a la definición de mercado y a la investigación de los elementos que lo componen, las ciencias económicas han dado un paso de gigante que junto con la revolución industrial ha llevado a un bienestar en los países industrializados nunca imaginado.
En cierto sentido, esta situación se vive hoy en día en el software libre, donde nos encontramos con que existe una especie de "mano negra" que hace que mágicamente se genere software libre. Sin embargo, es necesario llegar a conocer con mayor profundidad las complejas interacciones para poder comprender lo que está sucediendo y llegar a predecir el futuro. También debe servir como punto de partida de acumulación de experiencia, ya que la ingeniería en realidad no es otra cosa que un conjunto de experiencias exitosas debidamente empaquetadas para poder ser reproducidas una y otra vez.


Efecto de la Ingenieria de Software

El siguiente video muestra el efecto de la ingeniería del software en el desarrollo de aplicaciones:


Ingenieria del Software

Ingeniería de software es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad.

Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como construcción de compiladores, sistemas operativos, o desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a infinidad de áreas: negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, derecho, Internet, Intranet, etc.

Una definición precisa aún no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los más prestigiosos autores:
  • Ingeniería de Software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
  • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como Desarrollo de Software o Producción de Software ( Bohem, 1976).
  • Ingeniería de Software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993)
Principales áreas de estudio y/o investigación
  • Métodos y Metodologías de Desarrollo de Software
  • Procesos de Desarrollo de Software
  • Gestión de Proyectos de Software
  • Medición y Estimación de Software
  • Ingeniería de Requisitos / Requerimientos
  • Ingeniería de Software Empírica
  • Gestión de Riesgos
  • Usabilidad de Software
  • Evaluación de Software
  • Métricas de Software
  • Calidad de Software
  • Métodos Formales
  • Ingeniería Web

Mapa Mental: Ingeniería de Software en entornos de Software Libre


Este mapa resume los principales elementos que relacionan al Software Libre y la Ingeniería de software
.

Filosofía del Software Libre


Hablar de SL es hablar de filosofía. Para entender esto, debemos analizar las ideas originales sobre las que se fundamenta esta tendencia: colaboración y libertad.

En el SL la colaboración mutua, es el motor que impulsa los proyectos y se apoya en las 4 libertades del software libre. Es decir, para poder colaborar tenemos que tener la libertad de poder hacerlo.

El software libre y sus principios colaborativos, definidos por su característica de Open Source, dan pié a una oportunidad única para el desarrollo de un sin fin de aplicaciones, que de otra forma, serían imposibles de realizar (en ambientes privativos)

Está claro que el software libre tiene una personalidad colaborativa claramente desarrollada y que se refleja en todos y cada uno de los proyectos que se llevan a cabo, independientemente de que se traten de proyectos privados, motivados por una comunidad de desarrolladores o por algún organismo oficial. De hecho, cuando encontramos un proyecto de software libre, también estamos ante una oportunidad de conocer el interés por ofrecer a la sociedad un producto mejorado, sin las trabas que otro tipo de software puede dar lugar.

Ahora bien, la libertad representa uno de los estandartes más poderosos del SL. Este mismo se define sobre las libertades que promueve.

Cuando el SL habla de libertad, involucra aspectos éticos que recalcan su peso filosófico. La libertad consiste en el derecho del usuario a usar plenamente y con ética el software; sugiere control sin restricción para estudiar, usar, modificar y compartir el software siempre teniendo en mente poder ayudar a otros.

El software libre considera la libertad como un derecho fundamental del hombre. Un principio moral.

Consecuencias y Oportunidades del Software Libre

El software libre tiene una serie de consecuencias, tanto negativas como positivas. Las negativas son, según los seguidores del movimiento, recalcadas por los que se oponen a el y básicamente se enfocan en tres aspectos:
  • El económico. Se argumenta que no se puede obtener mucho dinero de la distribución del SL. Muchos confunden Software Libre con software gratis, lo cual es un error. Este argumento se hace débil, cuando comenzamos a estudiar los diferentes modelos de negocio asociados al SL.
  • La calidad. La falta de financiación, asociada a los mecanismos de desarrollo del SL, podría influir en la calidad de los productos finales. Con el tiempo ha quedado más que demostrado, que las aplicaciones de software libre, son de calidad igual o superior a las de software propietario.
  • El Soporte. Debido a que el software no tiene dueño, y pasa de mano en mano, se dice que el soporte, es escaso o inexistente. Esta afirmación, también resulta ser falsa en la mayoría de los casos, ya que los buenos desarrollos de SL, cuentan con un excelente soporte basado en foros de usuarios y desarrolladores, por otra parte, el soporte de aplicaciones de SF se está convirtiendo en un negocio muy lucrativo.
Por otra parte, otros autores agregan a estas desventajas los siguientes aspectos:
  • No es conocido por muchos usuarios.
  • La evolución de los componentes de software no está asegurada o se hace muy despacio, ya que no se cuenta con un respaldo directo.
  • Posibilidad de realizar una mala gestión del Código Fuente si no se siguen métodos formales de seguimiento, esto debido a que en la generación del software libre trabajan muchas personas sobre partes concretas e integran sus cambios con otras personas, esto puede traer como consecuencia que al final falten piezas claves.
Ahora veamos algunas de las ventajas que nos trae el SL:
  • Se elimina la dependencia al soporte del fabricante, ya que puede haber múltiples empresas, que disponiendo del fuente y de conocimientos, puedan hacer negocio manteniendo determinados programas libres.
  • El SF, crea nuevas y variadas oportunidades de negocio.
  • El usuario puede personalizar el programa para uso propio, adaptándolo a sus necesidades y corrigiendo errores, si llegara a detectarlos.
  • La adecuación a estándares y el uso de formatos abiertos, es una características técnicas más resaltantes del SL, que resulta muy útil para los organismos de la administración pública.
  • El SL puede ser instalado y probado, prácticamente sin costos ni limitaciones, antes de tomar la decisión definitiva de cambiar.
  • Los proyectos de software libre tienen costos inferiores, a los de software privativo ya que se elimina el pago de licencias.
  • Al usar SL, no hay dependencia con ningún proveedor. Usar SL nos permite tener un control mucho mayor de la tecnología. Los sistemas privativos funcionan como una caja negra, al contrario de los sistemas basados en SL.
  • Bajo costo de adquisición y libre uso.
  • Es robusto ya que funciona sobre distintas plataformas.
  • Información de dominio público.
  • Permite realizar una auditoría del código del programa, ya que se cuenta con el código fuente.
  • La posibilidad de corregir los programas y distribuir dichas correcciones permite que los programas evolucionen de una forma más abierta.
  • Software más seguro.
  • Fomento de la libre competencia, ya que se basa en servicios y no en licencias.
  • Sistema en expansión.
  • Los requisitos de hardware son menores.
Para la administración pública (Estado), la adopción del SL, resulta particularmente beneficiosa, por las 4 razones siguientes:
  1. Soberanía: acceso al código fuente y facultad para ejecutar versiones compiladas por la misma organización.
  2. Inclusión: El Software Libre permite a sus usuarios traspasar la barrera de mero consumidor y convertirse en contribuyente o un coautor de la obra. Personas que aprenden a modificar y mejorar un sistema, no solo adquieren un know how muy valioso, sino que, cuando estamos hablando de personas en situación de riesgo, se les provee una herramienta para salir de esa situación.
  3. Incentivo a economías regionales: Incentivar la creación de nuevas empresas locales y por lo tanto el empredimiento, es estratégico para la economía de cualquier país. El software libre brinda un buen número de oportunidades para emprender, puesto que la inversión inicial se reduce a la adquisición de know how.
  4. Ahorro mediante la cooperación intergubernamental: el software libre crea oportunidades de cooperación e integración entre las organizaciones que comparten problemas y deciden desarrollar conjuntamente soluciones.

Oportunidades


En febrero del 2008, Gartner publicó una serie de documentos en donde se ofrece una visión de las tendencias tecnológicas en los próximos años. La compañía hace notar que el valor y robustez del software libre ofrece oportunidades para desarrolladores de aplicaciones comerciales como la reducción de costos.

"Para el 2012, el 80% de las aplicaciones comerciales incluirán elementos de tecnología software libre" de acuerdo al reporte. "Muchas de las aplicaciones open source se encuentran maduras, estables y soportadas correctamente. Proveen significantes oportunidades para vendedores y usuarios para reducir los costos de propiedad y aumentar el retorno de la inversión. Ignorar esto pondrá a las compañías en una desventaja significante. (artículo original)

El software libre es un tren que ya está en movimiento. Existe una base tecnológica madura y lista para ser explotada comercialmente. Existe un gran número de aplicaciones y plataformas libres que solo requieren adoptar el knowhow. El Knowhow que puede ser adoptado mediante profesionales, consultores o empresas que están comenzando a madurar en nuestra región.

Fuentes:

http://robertoallende.com/emprendedor/software-libre-y-oportunidades
http://www.atenas.cult.cu/rl/informatica/manuales/sl/introduccion_al_SL/consecuencias.html

Personajes del Software Libre

Cuando pensamos en las personas ligadas a la Historia del Software Libre, por lo general viene a nuestra mente dos o tres nombres. Sin embargo son muchas las personas que han tenido alguna participación resaltante en el surgimiento y desarrollo de este movimiento. Veamos a continuación, algunos de estos personajes y sus aportes más significativos:

Linus Torvalds: De sobra reconocido, Torvalds es el último responsable del kernel Linux sobre el que ejerce las tareas de coordinación.



Richard Stallman: Comparte con Torvalds el ser la figura más representativa en el mundo del software libre, aunque no se lleven demasiado bien. Stallman es el mayor activista por la libertad del software, creador de GNU y de la Free Software Foundation. A él le debemos programas como el editor Emacs o las herramientas de compilación gcc (GNU Compiler Collection).

Andrew Morton: Aparte de Torvalds, el kernel de Linux tiene en Andrew Keith Paul Morton a uno de sus más importantes representantes ya que se encarga de mantener la rama mm del kernel donde se incluyen todos los parches que no han sido suficientemente probados y que se incluirán con posterioridad en la rama oficial.


Eric S Raymond: Conocido como ESR, durante años ha sido el representante no oficial del movimiento de software libre. Se dio a conocer por ser la persona que mantenía actualizado Jargon File, un referente en la cultura hacker.


Andrew Tridgell: Su nombre se asocia a dos tecnologías fundamentales: Samba y rsync. Pero
Tridge (sobrenombre con el que se le conoce) es reconocido por sus excelentes análisis de tecnologías que utilizan protocolos propietarios para desarrollar y crear versiones abiertas.


Mark Shuttleworth
: Este empr
esario sudafricano es el creador de Canonical, compañía responsable del lanzamiento de una de las distribuciones Linux más populares de los últimos años: Ubuntu.


Marc Ewing: Es el responsable de la aparición de Red Hat, nombre que se le ocurrió por culpa de una gorra roja del equipo de lacrosse de la universidad de Cornell que le regaló su abuelo.


Miguel de Icaza: El nombre de este programador mexicano está claramente asoci
ado al proyecto GNOME. Poco después creó Ximian, responsabe del proyecto Mono. Esta última compañía fue adquirida por Novell.


Michael Widenius: Autor de la base de datos open-source MySQL y miembro fundador de MySQL AB. Hasta la compra de MySQL por parte de Sun, Widenius era el máximo responsable técnico de la compañía hasta que a principios de este año decidió dejar la empresa para emprender una aventura empresarial en solitario.


Rasmus Lerdorf: El creador del lenguaje de programación PHP (trabajó en las dos primeras versiones) que actualmente trabaja para Yahoo! Brian Behlendorf: Co-fundador del Apache Group, origen de la Apache Software Foundation, que presidió durante tres años. Behlendorf fue el desarrollador principal del servidor web Apache. Desde 2003, Behlendorf forma parte de la junta directiva de la Fundación Mozilla.

Theo de Raadt: es el fundador y líder de OpenBSD, una de las descendientes del mítico Unix de Berkeley. De Raadt fue también uno de los fundadores de NetBSD, de donde se desgajó OpenBSD. También lidera OpenSSH, parte del proyecto OpenBSD, y uno de los programas más utilizados por los administradores de sistemas para encriptar sus conexiones remotas a m´aquinas Unix. De Raadt es uno de los líderes más conocidos de la comunidad de los *BSDs que, pese a sus notables aportaciones al software libre, ha permanecido a la sombra de la mucho más multitudinaria comunidad Linux, con la que se ha enfrentado a menudo. Su fuerte personalidad le ha hecho polemizar en ámbitos muy diversos.

Ensayar el software libre.

"...el software libre es la fiel demostración del cumplimiento del derecho"

Extracto del ensayo: Ensayar el software libre, de la Ing. Yamile Gomez Ramos publicado en wikilibros.


El concepto general del software libre se basa en la defensa al derecho de la libre expresión, tener criterio para pensar decirlo y defender el punto de vista buscando el bien común, son cualidades muy importantes para destacar en un ser humano, el software libre nos permite pensar y actuar según nuestro criterio ya que lo podemos modificar o complementar claro esta siguiendo las reglas o lineamientos requeridos, esto es garantía del potencial que tenemos para crear e innovar.

Es así que el software libre como su mismo nombre lo dice nos da libertad y nos permite defenderla no sin destacar un valor muy importante como lo es la responsabilidad y el también valorar el criterio y así emprender de la mano el camino al gran triunfo de nuestro gran derecho para que a nuestras futuras generaciones les quede esa gran herencia y solo aprendan a responsabilizarse con su gran libertad.

Fuente: http://es.wikibooks.org/wiki/Ensayar_el_software_libre/Contenido/El_concepto_de_software_libre_se_basa_en_la_defensa_al_derecho_de_la_libre_expresi%C3%B3n

Mapa Conceptual del software Libre





Translate

Seguidores