Categoría: Lenguajes de Programación

Métricas del modelo DevOps, para tomar mejores decisiones

El objetivo principal de la práctica DevOps es agilizar el ciclo de vida del software, asegurando la calidad en cada uno de los pasos y partiendo de la automatización y la monitorización como herramientas fundamentales para conseguirlo.

Por ello, MTP nos propone ciertas métricas que se centran en ese objetivo, manteniendo también el foco en la calidad, ya que tampoco hay que olvidar que lo que se desea no es producir mal software a gran velocidad:

  1. Número de commits asociados correctamente a un ticket. Por medio de esta métrica podremos conocer en todo momento si los equipos de desarrollo están contribuyendo a la trazabilidad del código, un aspecto fundamental.
  2. Porcentaje de código cubierto por test unitario. Aunque no hay que llevar al extremo la cobertura de código por test unitario, contar con un nivel adecuado ayuda a prevenir problemas en etapas posteriores.
  3. Ratio de construcciones fallidas. Si una build, con independencia del motivo, no se completa correctamente, se pierde un tiempo valioso que repercutirá en el resto del proceso de construcción del software.
  4. Ratio de despliegues fallidos. Ya sea por indisponibilidad de entornos, por fallos en la configuración o por defectos en los tests postdespliegue, conviene llevar traza de la cantidad de despliegues que no se han completado con éxito.
  5. Tiempo medio de despliegue. Esta métrica nos ayudará a identificar procedimientos que no estén del todo maduros, por ejemplo, pasos que aún no estén automatizados o que requieran de revisión manual.
  6. Frecuencia de despliegue. Uno de los objetivos debe ser hacer despliegues pequeños y frecuentes. Esta métrica nos ayudará a saber si estamos acercándonos o alejándonos de este objetivo.
  7. Porcentaje de éxito en tests automáticos. Los tests automáticos son fundamentales en un entorno DevOps. Un despliegue puede interrumpirse por errores en los tests automáticos. Relacionar esta métrica con otras, como el número de defectos encontrados por entorno, puede ayudar a saber si los tests automáticos construidos son o no suficientes.
  8. Defectos encontrados en entornos de integración y UAT. Ya sea por fallos detectados gracias a tests automáticos o a tests de usuario, es una métrica que debería tender a cero con el tiempo. Es un indicador de la madurez de todo el proceso.
  9. Ratio de indisponibilidad. Tanto en entornos intermedios como en entornos productivos, una indisponibilidad es un problema grave. Evidentemente, el problema es mayor si un entorno de producción deja de estar disponible. Por ello, podría tener sentido dividir esta métrica por tipo de entorno.
  10. Tiempo medio para salir de indisponibilidad. La rapidez con la que se reaccione para volver a dar servicio es clave para no interrumpir el ciclo de vida y para no dañar la imagen de cara al cliente, además de limitar una potencial pérdida de ingresos.
  11. Defectos encontrados en entorno productivo. Un defecto será más costoso de corregir cuanto más tarde se detecte en el ciclo de vida. El objetivo es que esta métrica tienda a cero. Como mencionábamos anteriormente, si no vemos disminuido este valor con el tiempo, convendría ajustar las baterías de test de todo tipo aplicadas al software.
  12. Tiempo medio de resolución de defectos en entorno productivo. Cada defecto que se da en un entorno productivo supone un coste en términos de deterioro de imagen, potencial pérdida de ingresos o corrupción de datos, por poner sólo algunos ejemplos. El tiempo de resolución debe ser mínimo para mantener estas consecuencias dentro de lo admisible.
  13. “Lead time” de un cambio. Tiempo medio transcurrido entre el registro de un ticket y la puesta en producción de la funcionalidad asociada. Nos ayuda a medir el tiempo de respuesta de todo el engranaje DevOps.

 

Todas estas métricas son una ayuda a la hora de tomar decisiones, pero también para conocer si los cambios aplicados van o no en el buen camino.

Cómo garantizar la protección legal de software libre en México

En los últimos años, el universo de infraestructura viene pasando por una evolución tecnológica constante. La gran tendencia que era la promesa de revolución –los contenedores– que apoyaban al desarrollo ágil y la adopción de DevOps (Development Operations) dieron espacio a la computación sin servidor, que no está lejos de esas características y de la cuestión de alineación de procesos y herramientas entre los equipos de desarrollo y operaciones.

En paralelo, temáticas como Cloud Computing y Software Defined Anything (SDx) vienen ganando importancia en el mercado y están convirtiéndose en los cimientos para la infraestructura tecnológica del futuro.

El software libre ha aparecido como una opción de utilidad y como el gran cambio en esta nueva era digital. Pero ¿cómo garantizar la protección legal de software libres en México para empresas y organizaciones gubernamentales?

Antes de responder a esa pregunta, es importante mostrar claramente la diferencia entre software libre y software open source.

Un aspecto del desarrollo de software que muchas personas tienden a olvidar es cómo el software debe ser licenciado.

Una licencia de software determina cómo el código puede ser usado y distribuido por los propietarios de una licencia (los usuarios finales), lo que puede tener un impacto significativo sobre en qué es utilizada la tecnología.

La mayoría de los software modernos son vendidos bajo una licencia propietaria, que permite al editor o creador mantener los derechos de propiedad intelectual del software.

Sin embargo, hay un punto de vista alternativo que afirma que eso coloca un nivel innecesario de control en manos de los editores de software. Al impedir que los licenciatarios copien y alteren el código fuente de un software, la idea es que los editores de software propietarios sofocan la innovación e impiden el crecimiento potencial de nuevas tecnologías.

Esa postura inspiró la creación de licencias que conceden libremente a los usuarios el derecho de estudiar, alterar y compartir el código fuente del software. Generalmente, el software licenciado de esta forma es conocido por uno de estos dos nombres: “software libre” o “software de código abierto”.

La definición de software libre presenta los criterios para definir si un programa de software específico se califica como software libre. De vez en cuando, hay una revisión de esa definición –por una comunidad de desarrolladores profesionales– para esclarecerla o desarrollar cuestiones sobre puntos en particular. Ya en el caso del “Código abierto” la forma de observarlo es diferente: éste tiene una filosofía muy distinta, basada en valores diferentes a los del software libre. Su definición práctica también es diferente, pero casi todos los programas de código abierto son, de hecho, gratuitos.

Para que un software sea considerado verdaderamente “libre”, su licencia debe garantizar libertades esenciales para sus usuarios, de acuerdo con el Free Software Movement.

Estas son las siguientes:

  • Libertad de ejecutar el programa como deseas, para cualquier finalidad.
  • Libertad de estudiar cómo el programa funciona y alterarlo para que este funcione como deseas. El acceso al código fuente es una condición previa para eso.
  • Libertad de distribuir copias de sus versiones modificadas para otras personas. Al hacer eso, puedes dar a toda la comunidad una oportunidad de beneficiarse con tus cambios. El acceso al código fuente es una condición previa para eso.

La FSF (Free Software Foundation) considera que cualquier software que no atienda a cada uno de esos criterios es considerado no-libre y por tanto, antiético.

La OSI (Open Source Initiative) también posee una lista de 10 principios que una licencia de software debe cumplir para que esta sea considerada de código abierto:

  1. Redistribución gratuita.- La licencia no debe restringir a ninguna de las partes el vender o distribuir el software como un componente de una distribución de software mayor, conteniendo programas de varias fuentes.
  2. Código fuente.- El programa debe incluir el código fuente y debe permitir la distribución del código fuente, así como del formato compilado.
  3. Trabajos Derivados.- La licencia debe permitir modificaciones y trabajos derivados, así como debe permitir que éstos sean distribuidos bajo los mismos términos que la licencia del software original.
  4. Integridad del código fuente del autor.- La licencia puede restringir que el código fuente sea distribuido de forma modificada solamente si la licencia permite la distribución de “archivos de patch” con el código fuente, para modificar el programa al momento de la creación.
  5. No Discriminación contra Personas o Grupos.- La licencia no debe discriminar a ninguna persona o grupo de personas.
  6. Ninguna Discriminación contra los Campos de Emprendimiento.– La licencia no debe restringir a nadie de hacer uso del programa en un campo específico de actuación.
  7. Distribución de la licencia.- Los derechos anexados al programa deben ser aplicados a todos aquellos a quienes el programa es distribuido, sin la necesidad de ejecución de una licencia adicional por esas partes.
  8. La licencia no debe ser específica para un producto.- Los derechos asociados al programa no deben depender del hecho que el programa sea de una distribución de software específica.
  9. La licencia No debe restringir otro software.- La licencia no debe imponer restricciones a otro software que sea distribuido junto con el software licenciado.
  10. La licencia debe ser neutra en términos de tecnología.- Ninguna disposición de la licencia puede ser basada en cualquier tecnología individual o estilo de interfaz.

¿Cómo es la situación del software libre en México?

Cualquier programa, por tratarse de un trabajo escrito, implica por defecto el derecho autoral, que prohíbe la ejecución, copia, alteración o distribución del programa sin la autorización expresa del creador del trabajo. Dentro de la legislación mexicana, que sigue las directrices de la Convención de Berna Para la Protección de Obras Literarias y Artísticas, el Artículo 5 de la Ley Federal del Derecho de Autor concede la protección “a las obras a partir del momento en que fueron colocadas como soporte de material, independientemente del mérito, destino o modo de expresión”.

En tal caso, los software libres no tienen lugar en la legislación mexicana. Sin embargo, el objetivo no es negar el derecho moral del autor dentro de su concepción de software libre. La distribución del sistema operacional GNU/ Linux o Linus Torvalds es una cuestión delicada para su creador, a tal punto que los medios explícitamente la llaman de GNU/ Linux y le atribuyen autoría conjunta. El problema está más relacionado con los derechos patrimoniales y con la imposibilidad de conceder las cuatro libertades fundamentales del software libre: ejecución, modificación, reproducción y distribución.

De hecho, la reglamentación mexicana protege los derechos económicos del autor por 100 años después de su muerte, algo que en el caso del software se vuelve todavía más problemático, porque la mayoría de los programas de computadoras no son creados por un individuo sino por un grupo, lo que significa que los derechos son protegidos por 100 años después de la muerte del último miembro de este grupo.

Como se ve, todavía hay muchos puntos a ser discutidos en cuanto a la legislación de software libres, tanto en México como en el mundo. El asunto aún levanta muchas cuestiones y muchas discusiones en lo que se refiere a lo que realmente es software libre.

 

N. de P. Comstor

Distribuciones de Linux más utilizadas

De acuerdo con datos de la BSA-The Software Alliance, en México, alrededor del 49% de las computadoras cuentan con un software ilegal, lo cual genera pérdidas por aproximadamente 760 millones de dólares a la industria.

En Latinoamérica, alrededor de un 52% de las computadoras no tienen un software legal, lo que representa una pérdida de 4,957 mdd.

En tanto, en el mundo las pérdidas llegan a los  46,302 mdd, con un 37% de uso de software sin licencia.

De acuerdo también con la BSA-The Software Alliance, uno de los principales problemas que tienen las empresas al no contar con software es la vulnerabilidad ante los ciberataques, pero también pueden enfrentar problemas de pérdida de datos o corrupción de la información.

Entre los factores para que en México prevalezca el uso de software pirata son la desinformación en cuestiones tecnológicas o la evasión intencionada.

Pero para hacer frente a dichos factores existen diferentes plataformas basadas en Linux que son desarrolladas por comunidades globales y que, al ser totalmente legales, son utilizadas por empresas, emprendedores y gobiernos en diferentes partes del mundo. El software libre está basado en los siguientes principios, de acuerdo con Richard Stallman, programador estadounidense y fundador del movimiento por el software libre en el mundo:

  • Un programa es libre si puede ser ejecutado y usado de todas las formas en que uno quiera, a diferencia de los privativos tienen limitaciones por medio de la licencia de uso o incluidas en el código.
  • El código debe permitir el estudio y cambio haciéndose público.
  • La copia y distribución debe ser libre.
  • El software libre debe permitir la distribución de copias modificadas por un programador, inclusive permitir su venta.

Algunas de las distribuciones de Linux más utilizadas:

Ubuntu: Una de las distribuciones más populares es Ubuntu. Desarrollado por las comunidades de Canonical, Ubuntu es un sistema operativo que es perfecto para laptops, computadoras de escritorio y servidores. Ya sea que lo utilices en el hogar, en la escuela o en el trabajo, Ubuntu contiene todas las aplicaciones que puedas necesitar, desde procesadores de texto y aplicaciones de email, hasta software para servidor web y herramientas de programación. Ubuntu es y siempre será libre de costo. No pagas por una licencia de uso. Puedes descargar, usar y compartir Ubuntu con tus amigos, familiares, escuela o negocios libremente.

Endless OS: Endless en un sistema operativo que inicialmente, a través de la venta de computadora de muy bajo costo, buscaba ayudar a romper la brecha digital existente en países en desarrollo, todo al permitir el acceso a una gran cantidad de contenidos educativos sin necesidad de contar con Internet. Posteriormente fue creada la distribución de este sistema operativo bajo el nombre de Endless OS, y ahora sus creadores han liberado Endless OS 3.0, mismo que ya está disponible con interesantes novedades, entre las que se encuentra el arranque dual con Windows. De todas las nuevas características que incluye consigo Endless OS 3 la más importante es la posibilidad de que el usuario instale el sistema operativo en modo de arranque dual con Windows u otro sistema operativo basado en Linux.

Cub Linux: Básicamente Cub Linux es una distribución basada en Ubuntu con un escritorio idéntico a Chrome OS. Si no te gusta el estilo de este sistema operativo no te pierdes de absolutamente nada instalando Ubuntu 14.04. Como en la página lo dicen, Cub Linux no es un fork de Chromium Linux ni una fusión de Chromium OS con Ubuntu, es una distribución que busca ser agradable y lo más compatible posible (a diferencia de Chromium OS). Cub Linux es una continuación/reencarnación de Chromixium, una distribución con el mismo propósito, pero según los desarrolladores Google los contactó para que le cambiasen el nombre debido a su éxito. Así como pasó con Backtrack y Kali Linux, pasó con Chromixium y Cub Linux.

Antix: Para hacer funcionar AntiX solo se necesita un Pentium II y 64MB de RAM, aunque se recomienda disponer de 128MB. Por eso puede ser instalado en equipos de finales de los años 90 sin problema. Se puede descargar su imagen que ocupa menos de 700MB, por lo que puede ser quemada en un CD para su instalación. Incluye bastantes paquetes de aplicaciones preinstaladas, como LibreOffice, MPLayer, navegador ligero Iceweasel, cliente de correo Claws, etc. Su entorno de escritorio se basa en GNOME y está escrito en lenguaje C++, se trata de IceWM.

SparkyLinux: SparkyLinux es una distribución basada en Debian. Incluye entornos de escritorios como Razor-QT, LXDE, OpenBox/JWM, e17 y MATE, un gran abanico para elegir tu entorno preferido. SparckLinux está especialmente creada para funcionar en equipos viejos con pocos recursos de hardware, lo que no impide contar con un buen sistema operativo y completo. Y aunque dispones de una guía completa para aprender a usarla, no es una distribución sencilla.

Sparky2

Puppy Linux: Puppy es una distribución pensada para usar el mínimo de recursos posibles. Tiene interesantes aplicaciones, dispone de varios entornos de escritorio ligeros (LXDE, JWM, IceWM), es fácil, competa, puede arrancar desde un pendrive o instalarla en el disco duro. En la página web oficial cuenta con una gran Wiki para consultar dudas o resolver problemas. Se puede descargar, su imagen solo pesa unos 100MB y está disponible en versión LiveCD o LiveUSB. Cosume tan poca memoria, que con OpenOffice abierto no pasará de 256MB RAM ocupados.

Linux Mint: Hoy en día Linux Mint es un proyecto que desarrolla sus propios entornos de escritorio, sus propios programas, y que poco a poco se va independizando de Ubuntu, demostrando que se pueden hacer las cosas de manera diferente. Linux Mint 18 es la consecuencia de esta filosofía. Como ya es habitual, está disponible inicialmente en dos versiones, una con el escritorio Cinnamon (moderno pero sin florituras) y MATE (con el viejo estilo de Gnome).

Lubuntu: Lubuntu es la distribución más popular de todas estas, es un Ubuntu con entorno de escritorio ligero LXDE para ordenadores con menos recursos. Al ser una distro oficial, su desarrollo y actualización va a la par de Ubuntu. Puede funcionar en equipos con poca memoria RAM, chipsets viejos y en discos duros con poca capacidad. Si tienes un equipo portátil, Lubuntu también sería una opción a tener en cuenta. Además, el software que viene preinstalado también está especialmente seleccionado para consumir pocos recursos. Otra ventaja es la gran comunidad detrás de Ubuntu, con lo que no te faltará el soporte, las actualizaciones, etc.

Ubuntu Mate: Ubuntu MATE, como su propio nombre lo indica, está basada en Ubuntu, una de las distribuciones de Linux más grandes. Ubuntu MATE toma la base del sistema operativo Ubuntu y añade el escritorio MATE. Es un sistema estable, con un intuitivo entorno de escritorio, configurable y muy fácil de utilizar. Es ideal para aquellos que queremos el máximo rendimiento de nuestros equipos e ideal para los ordenadores viejos y ya casi inutilizables.

 

Manjaro Linux: Manjaro es una distribución Linux bastante nueva, basada en Arch Linux pero con una interfaz amigable para su instalación. Eso facilita mucho las cosas, los que conozcan la instalación de Arch Linux lo sabrán. Puedes descargarla en tres ediciones oficiales y además se puede elegir entre un entorno de escritorio con OpenBox o XFCE, ambos bastante ligeros. Es una gran distribución, bonita, sencilla y muy completa. No es la que menos recursos necesita, pero puede ser una buena alternativa intermedia entre otra distro más pesada y las más ligeras.

Xubuntu: Es hermano de Lubuntu, ambas oficiales reconocidas por Canonical, también se trata de un Ubuntu con entorno de escritorio ligero, pero esta vez Xubuntu dispone de entorno Xfce. Si tienes un equipo con recursos limitados o quieres tener un sistema lo más ligero y rápido posible, es una gran elección. Xubuntu se contenta con solo 800Mhz de procesador, 384 MB de memoria RAM y un disco duro de al menos 4GB.

Peppermint OS: Peppermint OS es otra distribución ligera basada en Lubuntu, es decir, Ubuntu Linux con entorno LXDE. Además de tener en mente la ligereza y optimización para equipos con pocos recursos o de bajo consumo, los desarrolladores también han tenido muy presente la nube. Por tanto, si dispones de un equipo con un hardware poco potente, con 192MB de RAM, y además te gusta Lubuntu pero necesitas capacidades orientadas a la computación en la nube, ésta es la mejor elección para ti.

Basic Linux: Si bien hace años que no se actualiza merece aparecer en esta lista porque ocupa 2,8MB. Perfecto para un disquete. Sus requisitos son procesador 386 o compatible y 3MB de RAM. Y a pesar de su tamaño, cuenta con escritorio gráfico, en concreto JWM. Según su página oficial, es una distro que permite navegar por la web y consultar el correo y está pensado especialmente para portátiles antiguos. En caso que quieras instalar paquetes y programas, es compatible con los instaladores de Slackware.

Nanolinux: Su nombre lo dice todo. Nanolinux es un Linux de 14MB para funcionar en cualquier computadora que, como mínimo, puedas encender. El escritorio utiliza SLWM y cuenta con las herramientas básicas, como navegador web (Dillo), procesador de texto, hoja de cálculo, cliente IRC, dibujo, visor de imágenes y algún que otro juego.

SliTaz: Si buscas algo un poco más práctico para el usuario medio, SliTaz es una de las distribuciones Linux más ligeras y populares. Su instalador más pequeño es de 35MB y ocupa 80MB en disco, si bien luego podemos instalar más aplicaciones. Su escritorio elegido es Openbox y JWM como gestor de ventanas y sólo pide 256MB de RAM para funcionar. Por lo demás, ofrece una selección de programas que lo hace totalmente funcional. SliTaz se puede instalar de diferentes formas (CD, USB, tarjeta SD, máquina virtual).

Void: Desde España nos llega Void, una distro Linux para uso general que sólo requiere 96MB de RAM y 350MB de espacio en disco para funcionar. Entre sus ventajas, cuenta con su propio sistema de binarios para facilitar la instalación de nuevos programas. Por lo demás, funciona tanto en arquitecturas x86 como ARM y MIPS, por lo que se puede instalar en gran variedad de dispositivos.

Linux Lite: Otra opción interesante de Linux para espacios reducidos es Linux Lite, que como indica en su página oficial, es sencillo, rápido y gratuito. En el caso de Linux Lite, basado en Ubuntu, estamos hablando más de un Linux ligero que pequeño. Su instalador viene en forma de DVD (más de 900MB) pero por otra parte los requisitos son ideales para equipos a los que queremos dar una segunda vida: 700Mhz de procesador y 512MB de RAM. Linux Lite hace frente a todas las necesidades que podamos tener: ofimática, internet, multimedia. Su selección de herramientas y programas es enorme, y además permite instalar, actualizar y desinstalar programas fácilmente.

Bodhi Linux: Siendo una de las distribuciones más pequeñas, resulta curioso que Bodhi Linux consiga ser también una distro todoterreno. Basada en Ubuntu, ofrece un sistema operativo para distintos usos que no descuida el aspecto gráfico (incluye temas) pero que funciona en equipos modestos. A los programas preinstalados, como el navegador ligero Midori, puedes añadir los que encuentres en su gestor de instalación, AppCenter.

Arch Linux: Dejando por el camino distribuciones Linux pequeñas que hace años que ya no se actualizan, llegamos a una veterana, Arch Linux, que a pesar de sus poco más de 500MB de instalador ofrece un Linux ligero para equipos modestos o antiguos. Aunque no está pensada para todos los públicos, se actualiza con frecuencia y cuenta con más de 17.000 paquetes para instalar programas con su propio gestor de paquetes, pacman.