domingo, 13 de junio de 2010

Mapa de los Aspectos Legales y de las Licencias de SWL

En la publicación anterior hice referencia al mapa conceptual de Aspectos Legales y de las Licencias de SWL, así que voy a compartir algunas palabras y frases confusas según Stallman.




Palabras y frases confusas según Stallman

Comercial

Por favor no uses «comercial» como sinónimo de «no libre». Se estarían confundiendo dos asuntos completamente distintos. Un programa es comercial si se desarrolla como parte de una actividad empresarial. Un programa comercial puede ser libre o no libre, según su licencia.


Creador

aplicado a los autores, los equipara implícitamente a una deidad («el Creador»). Este término es utilizado por los editores para elevar la estatura moral de los autores por encima de la del ciudadano medio, justificando un mayor poder del copyright que los editores pueden ejercer en nombre de los autores.


Freeware

Por favor no uses el término «freeware» como sinónimo de «software libre». El término «freeware» fue utilizado con frecuencia durante la década de 1980 para hacer referencia a programas publicados sólo como ejecutables, con el código fuente no disponible.

Gestión de derechos digitales (DRM)

El software para la gestión de derechos digitales (Digital Rights Management o DRM) está diseñado en realidad para imponer restricciones a los usuarios de ordenadores. El uso de la palabra «derechos» en esta expresión responde a una propaganda pensada para que, sin darte cuenta, veas el asunto desde el punto de vista de los pocos que imponen las restricciones, mientras ignoras los derechos de los muchos a quienes las restricciones son impuestas.


Licencia de tipo BSD

La expresión «licencia de tipo BSD» lleva a confusión porque mezcla licencias que tienen importantes diferencias. Por ejemplo, la licencia BSD original con la cláusula sobre publicidad es incompatible con la GNU GPL, pero la licencia BSD revisada sí es compatible con la GPL. Para evitar confusiones es mejor nombrar la licencia específica en cuestión y evitar la vaga expresión «de tipo BSD».


Piratería

Si no crees que la copia ilegal sea como secuestrar y asesinar, podrías preferir no usar la palabra piratería para describirla. Expresiones neutrales como «copia prohibida» o «copia no autorizada» pueden utilizarse en su lugar.


RAND (razonable y no discriminatoria)

Los organismos de estandarización, que promulgan estándares restringidos de patentes que prohíben el software libre, suelen llevar a cabo una política para la obtención de licencias de patentes que requiere el pago de una tasa fija por cada copia hecha de un programa que cumpla esos estándares, término «RAND», que son las siglas de Reasonable And Non-Discriminatory («razonable y no discriminatoria»).


Software gratuito

Si quieres decir que un programa es software libre, por favor no digas que está disponible «de forma gratuita». Esa expresión significa explícitamente que tiene un «precio cero». El software libre es una cuestión de libertad, no de precio.

Software regalado

Es erróneo utilizar el término «regalar» para referirse a «distribuir un programa como software libre». Tiene el mismo problema que «software gratuito»: expresa que lo importante es el precio, no la libertad. Una forma de evitar esta confusión es decir «publicado como software libre».

Aspectos legales y licencias del software libre y de código abierto

Aspectos legales y licencias del software libre y de código abierto, fue denominado el modulo 3 de la cátedra comentada en publicaciones anteriores, les comento que estuvo lleno de muchas definiciones de términos tales como:

GPL Gnu Public Licence, LGPL, “Lesser Gnu Public Licence”, BSD y BSD modificada originalmente de “Berkley Software Distribution, MIT, Originalmente X11, Licencia Artística Licencia Artística 2.0. Información recopilada del sitio web http://www.principiolegal.com/licencias.php

De estas licencias se destacaron:
• Las licencias GPL, el autor conserva los derechos de autor (copyright), y permite la redistribución y modificación, pero controlando que todas las versiones modificadas del software permanecen bajo los términos más restrictivos de la propia licencia GNU GPL.
• Licencias BSD, el autor mantiene la protección de copyright únicamente para la renuncia de garantía y para solicitar la atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación, incluso si dichos trabajos tienen propietario.
• Copyleft, se refiere a la autorización por parte del propietario de la licencia para su copia, modificación y posterior distribución, contrariamente a lo que ocurre con el software licenciado bajo los términos de los derechos de autor. el propietario de la licencia bajo términos de Copyleft puede desarrollar una versión de dicho software bajo licencia sujeta a Copyrigth y vender o ceder este software bajo cualquiera de estas licencias, pero sin afectar a las licencias Copyleft ya otorgadas. El propietario de estas licencias puede retirar la autorización de uso de una licencia Copyleft si lo cree oportuno, pero en ese caso está obligado a indemnizar a los poseedores de las licencias en uso de este tipo.
• Freeware, se trata de un tipo de licencia en el que se autoriza el uso del software de forma libre y gratuita, aunque esta sesión pueda ser bajo determinadas condiciones, como por ejemplo que se autoriza su uso a particulares, pero no a empresas o a organismos oficiales.
• Shareware, es un tipo de distribución en el que se autoriza el uso de un programa para que el usuario lo evalúe y posteriormente lo compre.
Para mayor información consultar los sitios: http://www.gnu.org/licenses/license-list.es.html.


Para cerrar el foro realizamos la publicación del mapa mental que comprende algunas generalidades y errores relacionados al entorno legal y jurídico de la industria del Software Libre.

lunes, 17 de mayo de 2010

Ingeniería del Software Libre

En esta oportunidad quisiera compartir un gráfico que nos permite resumir muchos aspectos de la ingeniería de software:

domingo, 18 de abril de 2010

Algo sobre Metodologías Ágiles

En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término “ágil” aplicado al desarrollo de software. En esta reunión participan un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto.

Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas.
Tras esta reunión se creó The Agile Alliance3, una organización, sin ánimo de lucro, dedicada a promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las organizaciones para que adopten dichos conceptos. El punto de partida es fue el Manifiesto Ágil, un documento que resume la filosofía ágil (http://es.wikipedia.org/wiki/Manifiesto_%C3%A1gil).

Aunque los creadores e impulsores de las metodologías ágiles más populares han suscrito el manifiesto ágil y coinciden con los principios enunciados en dicho manifiesto, cada metodología tiene características propias y hace hincapié en algunos aspectos más específicos. A continuación se resumen algunas metodologías ágiles. La mayoría de ellas ya estaban siendo utilizadas con éxito en proyectos reales pero les faltaba una mayor difusión y reconocimiento.

Extreme Programming (XP)  Metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico.

SCRUM  Desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle. Define un marco para la gestión de proyectos, que se ha utilizado con éxito durante los últimos 10 años. Está especialmente indicada para proyectos con un rápido cambio de requisitos. Sus principales características se pueden resumir en dos. El desarrollo de software se realiza mediante iteraciones, denominadas sprints, con una duración de 30 días. El resultado de cada sprint es un incremento ejecutable que se muestra al cliente. La segunda característica importante son las reuniones a lo largo proyecto, entre ellas destaca la reunión diaria de 15 minutos del equipo de desarrollo para coordinación e integración.

Crystal Methodologies Se trata de un conjunto de metodologías para el desarrollo de software caracterizadas por estar centradas en las personas que componen el equipo y la reducción al máximo del número de artefactos producidos. Han sido desarrolladas por Alistair Cockburn. El desarrollo de software se considera un juego cooperativo de invención y comunicación, limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas, así como tener políticas de trabajo en equipo definidas. Estas políticas dependerán del tamaño del equipo, estableciéndose una clasificación por colores, por ejemplo Crystal Clear (3 a 8 miembros) y Crystal Orange (25 a 50 miembros).

Dynamic Systems Development Method (DSDM) Define el marco para desarrollar un proceso de producción de software. Nace en 1994 con el objetivo de crear una metodología RAD unificada. Sus principales características son: es un proceso iterativo e incremental y el equipo de desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad, estudio del negocio, modelado funcional, diseño y construcción, y finalmente implementación. Las tres últimas son iterativas, además de existir realimentación a todas las fases.

Adaptive Software Development (ASD) Su impulsor es Jim Highsmith. Sus principales características son: iterativo, orientado a los componentes software más que a las tareas y tolerante a los cambios. El ciclo de vida que propone tiene tres fases esenciales: especulación, colaboración y aprendizaje. En la primera de ellas se inicia el proyecto y se planifican las características del software; en la segunda desarrollan las características y finalmente en la tercera se revisa su calidad, y se entrega al cliente. La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo.

Feature -Driven Development (FDD) Define un proceso iterativo que consta de 5 pasos. Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseño e implementación del sistema partiendo de una lista de características que debe reunir el software. Sus impulsores son Jeff De Luca y Peter Coad.

Lean Development  (LD) Definida por Bob Charette.s a partir de su experiencia en proyectos con la industria japonesa del automóvil en los años 80 y utilizada en numerosos proyectos de telecomunicaciones en Europa. En LD, los cambios se consideran riesgos,  pero si se manejan adecuadamente se pueden convertir en oportunidades que mejoren la productividad del cliente. Su principal característica es introducir un mecanismo para implementar dichos cambios.