martes, 30 de marzo de 2010

Licencias BSD

Muy buenas!!!!!

Hoy os voy a hablar sobre las licencias BSD. Como os comente en el post anterior, este tipo de licencias son las consideradas permisivas.
La licencia original nació y fue usada por la Berkeley Software Distribution (BSD), más tarde esta licencia tuvo que ser modificada, debido a varios problemas que os comento a continuación.

Hoy en día, la licencia BSD que se usa normalmente es la "New BSD License", esta licencia nació cuando se modifico la BSD original. La "New BSD License" está formada por 3 clausulas, es compatible con la licencia GPL, y básicamente, lo que nos dice, es que nos permite cualquier tipo de redistribución sobre el software y la única "prohibición" que nos da, es que no podemos decir cosas como "Parte de este software ha sido creado por la compañía X, o han contribuido los autores Y, Z.....", es decir, usar la popularidad de otras empresas o autores para promocionar nuestro producto. Esta prohibición se refiere a si no tenemos permisos de esas empresas o autores para poner sus nombre ahí, si tenemos permiso si podemos hacerlo.

Cómo os comentaba la licencia original ("Original BSD License") tuvo que se modificada, esto se debe, a que una de las clausulas que había en ella daba muchos problemas. Esta clausula permitía al desarrollador de un software, de nombre X, poner en la licencia algo del estilo, "Este producto incluye software desarrollado por X", es decir, darse publicidad así mismo. En un principio esto no causaba problemas, ya que, sólo se usaba en productos de la universidad de Berkeley, por lo tanto, sólo había que poner una frase diciendo que el software provenía de la Universidad de Berkeley. Pero esto empezó a dar problemas cuando esta licencia la empezaron a usar otras compañías, ellas también querían poner su nombre en dicha frase, para darse publicidad. Así si el software pasaba por manos de 50 desarrolladores, la licencia tendría 50 lineas sólo para comentar en quién se basa ese software.
Además de este problema de redundancia, surgió otro. Este era que la licencia BSD original no era compatible con la GPL, ya que, la GPL nos impide añadir más cosas a la licencia y claro esta, la BSD original si que iba añadiendo más frases a la licencia.
Debido a estos dos problemas, se decidió eliminar esa clausula y dejar la licencia con sólo tres clausulas, lo que se convirtió en la New BSD License.

Por último nos queda comentar la FreeBSD License o Simplified BSD License. Esta licencia es aún más permisiva que las otras dos anteriores, ya que, elimina la clausula que nos dice que no podemos promocionar nuestro producto con los nombre de otras empresas o autores. Aunque no he encontrado documentación de si esta licencia es compatible con la GPL, yo supongo que no puede ser compatible, ya que, con esta licencia podemos añadir frases a la licencia, mientras que la GPL no te lo permite.

Podéis encontrar las licencias completas en:
http://en.wikipedia.org/wiki/BSD_licenses
http://www.freebsd.org/copyright/freebsd-license.html

Y eso es todo por hoy!!!!!!!!

martes, 23 de marzo de 2010

Licencias Permisivas vs Licencias Robustas

Buenas!!!!

Hoy vamos a hablar sobre los dos tipos de licencias para software libre que existen.
1. Licencias Permisivas.
Estas licencias se denominan así porque nos dejan hacer prácticamente cualquier cosa con el programa, incluso nos deja redistribuir nuestro programa bajo otra licencia, aunque esta licencia sea privativa. Las licencias que pertenecen a este tipo son las licencias BSD, la licencia MIT y la licencia Apache.
2. Licencias Robustas
Las robustas son similares a las permisivas, pero con la diferencia de que las robustas no nos deja redistribuir el programa con otras licencias, es decir, las redistribuciones de los programas seguirán siendo libres, es lo denominado copyleft. Las licencias que pertenecen a este tipo son las licencias GPL, LGPL, IBMPL y MPL.

Otras de las diferencias que podemos encontrar entre los dos tipos de licencias, es que, las licencias permisivas apenas son tres o cuatro clausulas, es decir, son muy pequeñas en cuanto a texto, mientras que las licencias robustas tienen una gran cantidad de texto y bastantes clausulas que se deben cumplir. Esto se debe a que se deben tener en cuenta muchos aspectos para que los distribuidores no puedan encontrar ningún fleco en la licencia y así poder redistribuir el programa de forma privativa.

Una vez visto, esto, ¿que licencia es mas libre? Este debate lo hicimos en clase, yo en una primera votación dije que las licencias robustas son más libres, ya que, obligan a que el programa siempre sea libre aunque haya miles de redistribuciones. Al final, acordamos un "empate". Las licencias permisivas son más libres para los desarrolladores, ya que, les deja hacer cualquier cosas sobre su programa, mientras que, las licencias robustas son más libres para la comunidad, ya que, siempre les llegará ese programa en forma de software libre.

Como último dato a tener en cuenta entre el 50% y el 70% de las licencias libres, son GPL (robusta). Además, excepto XWindows, Apache y el kernel de BSD, los grandes programas tienen licencias GPL.

Eso es todo por hoy, un saludo!!!!

viernes, 12 de marzo de 2010

Bazaar

Hola a todos!!!!

En el anterior post estuvimos hablando sobre los sistemas de control de versiones y hoy vamos a hablar sobre uno, en concreto, Bazaar.

Bazaar es un sistemas de control de versiones distribuido, creado por Canonical Limited (fundadores de Ubuntu y Launchpad). Bazaar es Free Software y esta basado en la licencia GNU GPL. Escrito en Python, sus creadores aseguran que se puede hacer una fácil migración de CVS o Subversion a Bazaar.
En contraste con los sistemas distribuidos, Bazaar nos da la posibilidad de trabajar con o sin un servidor central, o incluso, podemos usar ambos métodos a la vez.

Alguno de los proyectos más importantes que usan Bazaar son: Ubuntu, GNU Mailman, GNU Emacs o MySQL.
Algunas de las web que nos permite manejar proyectos con Bazzar son: Launchpad, GNU Savannah o Sourceforge.

Y esto es todo por hoy, un saludo!!!!!!!!!!!

VCS centralizados vs VCS distribuidos

Hola a todos!!!!!

Hoy vamos a hablar sobre los sistemas de control de versiones (VCS) haciendo una comparación entre los centralizados y los distribuidos. Pero primero, ¿que son y para que se usan estos sistemas de control de versiones?
Una definición sencilla de los VCS sería que estos sistemas nos facilita la administración de las distintas versiones de cada uno de nuestros proyectos, así nos ayudará a tener un control sobre los distintos cambios que hagamos sobre nuestros fuentes. Estos VCS son especialmente útiles cuando sobre un mismo proyecto trabajan varias personas o una comunidad entera, los VCS se encargarán de la coordinación de las distintas personas que están realizando cambios en el proyecto para que todos puedan trabajar sobre la misma base de código.
Una vez visto que son los VCS, vamos a ver que son los VCS centralizados y los VCS distribuidos.

Sistemas de control de versiones CENTRALIZADOS:

Estos sistemas centralizados se caracterizan porque todos las fuentes y las versiones del proyecto están almacenados en un único directorio (repositorio de fuentes) de un servidor. Esto supone que todos los desarrolladores que quieran trabajar sobre el proyecto, deberán pedirle al CVS una copia para trabajar sobre ella. En esta copia, el desarrollador hará todos los cambios que crea oportunos y cuando haya terminado y crea que todo esta en perfecto estado, subirá al repositorio los fuentes modificados como una nueva versión.
Una vez que esa nueva versión este subida en el repositorio, los demás desarrolladores podrán tomar esa nueva versión. Pero hay que tener en cuenta, que no es obligatorio bajarse esta nueva versión, ya que, si por algún motivo no se fían de esa nueva versión o no quieren bajársela por algún otro motivo, podrán tomar otra versión distinta. En este ejemplo vemos, que para que los desarrolladores puedan intercambiarse fuentes entre ellos, es necesario primero pasar por el repositorio.
Algunos de los VCS centralizados más importantes son Subversion y CVS.


Sistemas de control de versiones DISTRIBUIDOS:

Estos sistemas distribuidos se caracterizan porque no hay un repositorio central. Todos los desarrolladores tienen su propia copia del repositorio, con todas la versiones hasta ese momento. Como cada desarrollador tiene su propia copia, las copias se irán distanciando unas de otras, así podemos decir que habrá varias ramas del mismo proyecto. Por supuesto, puede llegar un momento en el que dos desarrolladores quieran compartir sus copias entre sí y para hacer esto le pedirán al VCS que sincronice sus dos copias, así el VCS se encargará de administrar los distintos cambios que han hecho los dos desarrolladores y crear una nueva copia con los cambios realizados por cada desarrollador.

En un sistema de control de versiones distribuido lo normal es decidir algún sitio donde esté un repositorio de fuentes que se considera oficial, de forma que ahí es de dónde los nuevos desarrolladores cogen su primera copia del proyecto y donde los desarrolladores van dejando las modificaciones validadas y aprobadas.

Una de las grandes ventajas de estos tipos de sistemas, es que el desarrollador puede trabajar offline, ya que, no es necesario como ocurría con los sistemas centralizados, que cada nueva versión que realice la tenga que subir al repositorio central.

Algunos de los VCS distribuidos más importantes son Bazaar, Git y Mercurial.

Y esto es todo por hoy amigos!!!!!