viernes, 1 de mayo de 2009

Eagle Mode: La interfaz del Futuro ?

Hoy voy a comentarles sobre una interfaz muy novedosa para GNU/Linux llamada "Eagle Mode", la cual nos permite navegar por nuestros archivos desde una vista de "aguila", es decir, como si estuvieramos volando y desde las alturas vieramos nuestros archivos. Para verlos mejor podemos hacer "zoom" sobre ellos. Veamos que nos dicen en Meneame: http://meneame.net/story/eagle-mode-otra-innovadora-asombrosa-interfase-escritorio

Estamos acostumbrados a la metáfora de las 'ventanas' en el escritorio, sin embargo ¿realmente es el camino más práctico e intuitivo, o más bien algo impuesto por costumbre? La gente de Eagle Mode ha ideado una metáfora asombrosa, la navegación no es abrir ventanas sino hacer zoom sobre todos los objetos, navegar y abrir archivos ya no son operaciones separadas. Aquí pueden ver el vídeo para darse una idea como funciona. Instalarlo en cualquier GNU/Linux no es complicado, vale la pena probarlo, es software libre.

Pero las palabras no bastan para describir esta novedosa interfaz: aca tenemos un video:
http://video.google.com/videoplay?docid=-5242301038861631075&hl=en


Aca unos comentarios de: http://www.idiomalibre.com/distribuciones/eagle-mode-todavia-lugar.php

Eagle Mode (o Modo Águila) merece toda nuestra atención porque utiliza una interfase en base al zoom, es decir, en base al acercamiento a imágenes, archivos, como si tuviéramos una cámara con zoom en lugar de un monitor de computadoras con un escritorio tradicional. Estas interfases gráficas no son necesariamente una novedad, pero es cierto que casi ningún sistema operativo las utiliza en la actualidad, son más bien algo excéntrico, una excepción a la regla, una rebelión contra la mediocridad: un hecho artístico-técnico, una expresión de libertad humana desde lo más hondo.

Descarga el Live-CD de 170MB para testearlo en tu PC sin necesidad de instalar nada en disco duro, o descarga el código fuente para adaptarlo a tu sistema.

martes, 14 de abril de 2009

La Virtualizacion en tu PC

Estoy probando un software de virtualizacion llamado VMWARE
Con este programa puedo "simular" que tengo un sistema operativo diferente en mi computadora, por ejemplo, puedo tener Windows Vista instalado y con vmware puedo "simular" en una ventana aparte de que dispongo de un Debian 4 por ejemplo. Pero veamos que nos dice
El Observatorio Tecnologico sobre este tema tan interesante:

INTRODUCCIÓN A LAS

MÁQUINAS VIRTUALES

¿Qué es una máquina virtual?

En muchas ocasiones surge la necesidad de probar un programa o realizar pruebas en otro sistema operativo distinto al instalado. Cual es la solución ¿formatear el equipo e instalar este sistema operativo?. ¿Crear una partición e instalarlo?. ¿Buscar otro equipo en el que sí esté instalado?. La solución es mucho mas sencilla que todo esto: lo único que hay que hacer es instalar una herramienta que emule el sistema operativo que se quiere probar, así no hay necesidad de formatear ni de cambiar de equipo. El sistema operativo emulado debería ser totalmente independiente del sistema operativo real, conviviendo ambos en total armonía y pudiendo pasar de uno a otro con facilidad.

Lo anterior se consigue mediante el uso de las máquinas virtuales. Una máquina virtual es un programa informático que crea un entorno virtual entre el sistema operativo y el hardware para que el usuario final pueda ejecutar aplicaciones en una máquina abstracta. Por decirlo de manera más sencilla, una máquina virtual es una aplicación que simula el funcionamiento de una máquina real sobre la que se pueden instalar sistemas operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicación, usar los dispositivos USB, etc.

Se pueden encontrar varios tipos de máquinas virtuales:

  • Máquinas virtuales software: este tipo de máquinas virtuales se sitúan por encima del sistema operativo y tratan de aislar a las aplicaciones del entorno sobre el que se ejecutan. Proporcionan una capa entre las aplicaciones y el sistema operativo que captura todas las llamadas al sistema y las traduce al sistema concreto de ejecución. La máquina virtual de Java o la máquina virtual del entorno .NET son dos claros ejemplos de máquinas virtuales software.
  • Entornos virtuales: este tipo de máquinas se crean para ejecutar directamente aplicaciones que necesitan un entorno determinado de ejecución sobre otro entorno totalmente diferente.
  • Maquinas virtuales hardware: este tipo de aplicaciones tratan de emular directamente el hardware. Las llamadas al hardware del sistema operativo instalado serán capturadas y convertidas en llamadas al sistema del hardware emulado. En general, la emulación del hardware recibe el nombre de virtualización. Al emularse directamente el hardware, el usuario tiene la impresión de que la máquina sobre la que está trabajando es totalmente independiente. Este tipo de máquinas virtuales serán el objeto del presente monográfico y a partir de ahora nos centraremos en ellas.

El uso de software de virtualización permite ejecutar varias máquinas virtuales con distintos sistemas operativos sobre el mismo hardware de manera simultánea. Además estas máquinas virtuales se pueden copiar y mover a otra máquina física de manera muy sencilla, lo que proporciona una manera rápida y cómoda de hacer backups o de reutilizar máquinas existentes. Las máquinas virtuales tienen discos duros virtuales que para la máquina anfitriona (es decir, para la máquina real) son simplemente ficheros de datos que se pueden copiar y manejar. La propia máquina virtual no es mas que un fichero de configuración.

Además existen en Internet muchas máquinas virtuales listas para ser ejecutadas y que permiten tener un entorno de desarrollo web en muy pocos minutos: Linux con Apache, PHP y mySQL instalado y configurado de manera directa, o bien una solución wiki lista para ser usada simplemente descargando una máquina virtual.

Herramientas de virtualización más conocidas

Existen diversas soluciones de virtualización disponibles actualmente, tanto gratuitas como de pago. Las más conocidas son las siguientes:

  • Bochs: un emulador de procesadores x86 y AMD64 con licencia de software abierto. Bochs puede ejecutarse en distintos sistemas operativos, incluyendo Linux, Windows o incluso la XBox. Puede además simular varios sistemas operativos como DOS, Windows o Linux.
  • Microsoft Virtual PC: suite de virtualización de Microsot para Windows y para MacOS. VirtualPC emula un PC estándar y todo el hardware asociado.
  • Parallels Workstation: software de virtualización de la empresa Parallels Incorporation para procesadores Intel x86.
  • QEMU: aplicación de software libre que implementa un emulador de procesador y que incluye un acelerador que permite incrementar la velocidad de las máquinas virtuales.
  • Virtual Iron: otra aplicación de virtualización que ha sido de las primeras en aprovechar las capacidades específicas de virtualización de los nuevos procesadores Intel y AMD.
  • VMWare: una completo conjunto de aplicaciones de virtualización, con herramientas de pago orientadas a la empresa y otras gratuitas más orientadas al uso personal. Hasta hace poco tiempo solo se ofrecía de manera gratuita la aplicación VMWare Player, que permitía ejecutar distintas máquinas virtuales ya creadas y que se podían descargar desde Internet. Desde fechas recientes se ofrece también de manera gratuita VMWare Server, que permite no sólo ejecutar máquinas ya creadas sino crear las máquinas desde el comienzo.
  • Xen: Una herramienta muy usada en la comunidad Linux puesto que hasta hace poco tiempo sólo podía usar Linux/Unix como sistema anfitrión. Con la versión Xen 3.0 ya se puede instalar en Windows.
  • VirtualBox: una herramienta para Windows y para Linux (la versión para MAC actualmente está en desarrollo en fase pre-alfa) liberada bajo licencia GPL y con un rendimiento similar al de otras aplicaciones como VirtualPC o VMWare.

QEMU, VMWare y Microsoft Virtual PC son las tres herramientas mas utilizadas. Por ello y por ser distribuidas de forma gratuita el monográfico se centrará en ellas. Además se ha incluido VirtualBox porque es de código abierto y permite estudiar su código en caso de estar interesado.

Utilidades y usos más frecuentes de las máquinas virtuales

¿Para qué se pueden usar las máquinas virtuales?. La capacidad de aprovechar al máximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel empresarial y a nivel doméstico. A continuación se detallan algunos de los usos más frecuentes que se le puede dar al software de virtualización:

· Consolidación de servidores: convertir muchos servidores físicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible.

· Recuperación ante desastres: las máquinas virtuales se pueden salvar muy fácilmente, y además su estado se puede almacenar, por lo que en caso de desastre se puede recuperar la información con rapidez.

· Pruebas de aplicaciones: en muchas ocasiones se necesita un entorno limpio para probar una aplicación. Usar una máquina virtual permite instalar un sistema operativo desde cero, probar la aplicación y luego eliminar la máquina.

· Ejecución de entornos completos sin instalación ni configuración: la posibilidad de descargar máquinas virtuales desde Internet permite ahorrar tiempo en instalaciones y configuraciones. Existen muchas máquinas virtuales con servidores LAMP (Linux, Apache, mySQL y PHP) completos listos para ser usados, máquinas con gestores de contenidos, wikis, etc., gratuitos y funcionales desde el primer momento.

· Aplicaciones portátiles: con el uso de las máquinas virtuales se pueden tener PCs completos listos para usar en dispositivos USB, lo que puede ser de mucha utilidad para tener un entorno privado y usarlo en cualquier PC.

Comparativa de herramientas de virtualización

A continuación se presenta una comparativa de tres de los productos de virtualización comentados: VirtualBox, VMWare Server y Virtual PC 2007.

Característica

Explicación

Producto destacado

Facilidad de instalación.

Los tres productos se instalan de manera muy sencilla mediante un asistente. VirtualBox y VirtualPC se instalan rápidamente. Sin embargo, VMWare server tarda bastante tiempo en instalarse y dependiendo de la máquina puede llegar a tardar más de media hora.

VirtualBox, VirtualPC 2007

Sistemas operativos anfitriones soportados.

VirtualBox: Windows, Linux

VMWare server: Windows, Linux

Virtual PC 2007: Windows, MacOS

VMWare server

Sistemas operativos invitados soportados.

VirtualBox: DOS, Windows, Linux, OS/2, OpenBSD, FreeBSD, Netware, Solaris.

VMWare server: DOS, Windows, Linux, FreeBSD, Netware, Solaris, Virtual Appliances.

Virtual PC 2007: DOS, Windows, OS/2

VMWare server

Soporte para USB

VirtualBox: Sí.

VMWare server: Sí.

Virtual PC 2007: No.

VirtualBox,

VMWare server

Facilidad de creación de máquinas virtuales.

VirtualBox: Fácil.

VMWare server: Fácil.

Virtual PC 2007: Fácil.

VirtualPC 2007, VirtualBox, VMWare Server

Existencia de máquinas virtuales disponibles en Internet.

VMWare server dispone de las llamadas Virtual Appliances, que son máquinas virtuales preconfiguradas y listas para ser usadas. En Internet se pueden encontrar muchas y de muchos tipos.

VMWare server

Integración con el sistema operativo anfitrión: display, carpetas compartidas, drag&drop.

Los tres sistemas disponen de herramientas que permiten mejorar la integración del sistema invitado con el anfitrión una vez instalado. En el caso de VMWare, se llaman VMWare Tools, y en el caso de Virtual PC, Virtual Machine additions. Tanto VMWare como VirtualPC permiten usar drag&drop y carpetas compartidas con el sistema anfitrión.

VMWare Server, VirtualPC 2007

Capacidad de importar máquinas creadas con otras herramientas.

VMWare server es capaz de importar máquinas creadas con VirtualPC.

VMWare Server

Rendimiento.

VirtualBox: Muy bueno.

VMWare server: Muy bueno.

Virtual PC 2007: Muy bueno si se le instalan las Virtual Machine Additions..

VirtualBox, VMWare Server, VirtualPC 2007

En resumen, se podría afirmar que las tres aplicaciones son buenas soluciones de virtualización. Probablemente la balanza se inclina por VMWare server por la existencia de máquinas virtuales disponibles en Internet que agilizan el uso de las máquinas virtuales y por la cantidad de información que existe sobre ella en la red. Además Virtual PC 2007 es una herramienta que no podrá ser usada por los usuarios de Linux, mientras que las otras dos están disponibles en versiones para Windows y para Linux.

Enlaces


Y veamos que nos dice la famosa WIKIPEDIA sobre la VIRTUALIZACION:

En informática, virtualización es un término amplio que se refiere a la abstracción de los recursos de una computadora. Este término es bastante antiguo: viene siendo usado desde antes de 1960, y ha sido aplicado a diferentes aspectos y ámbitos de la informática, desde sistemas computacionales completos hasta capacidades o componentes individuales. El tema en común de todas las tecnologías de virtualización es la de ocultar los detalles técnicos a través de la encapsulación. La virtualización crea un interfaz externo que esconde una implementación subyacente mediante la combinación de recursos en locaciones físicas diferentes, o mediante la simplificación del sistema de control. Un reciente desarrollo de nuevas plataformas y tecnologías de virtualización han hecho que se vuelva a prestar atención a este maduro concepto. De modo similar al uso de términos como “abstracción” y “orientación a objetos”, virtualización es usado en muchos contextos diferentes. En este artículo vamos a ver los usos más comunes de este término, para esto lo dividimos en dos categorías principales:

  • Virtualización de plataforma que involucra la simulación de máquinas virtuales.
  • Virtualización de recursos que involucra la simulación de recursos combinados, fragmentados o simples.

Asimismo, el término virtualización es un concepto importante en contextos no computacionales. Muchos sistemas de control implementan interfaces virtuales en un mecanismo complejo; de esta manera el pedal del acelerador de un automóvil moderno hace más que solo aumentar el flujo del combustible hacia el motor; y el sistema de vuelos por cables (fly by wire) presenta un avión virtual simplificado que tiene muy poco que ver con la implementación física.

Virtualización de plataforma

El sentido original del término virtualización, nacido en 1960, es el de la creación de una máquina virtual utilizando una combinación de hardware y software. Para nuestra conveniencia vamos a llamar a esto virtualización de plataforma. El término máquina virtual aparentemente tiene su origen en el experimento del sistema de paginación (paging system) de IBM M44/44X. La creación y administración de las máquinas virtuales también se refiere a la creación de seudo máquinas, en los primeros días de la CP-40, y de virtualización de servidores más recientemente. Los términos virtualización y máquina virtual han adquirido, a través de los años, significados adicionales.

La virtualización de plataforma es llevada a cabo en una plataforma de hardware mediante un software “host” (“anfitrión”, un programa de control) que simula un entorno computacional (máquina virtual) para su software “guest”. Este software “guest”, que generalmente es un sistema operativo completo, corre como si estuviera instalado en una plataforma de hardware autónoma. Típicamente muchas máquinas virtuales son simuladas en una máquina física dada. Para que el sistema operativo “guest” funcione, la simulación debe ser lo suficientemente robusta como para soportar todas las interfaces externas de los sistemas guest, las cuales pueden incluir (dependiendo del tipo de virtualización) los drivers de hardware.

Existen muchos enfoques a la virtualización de plataformas, aquí se listan con base en cuan completamente es implementada una simulación de hardware (estos términos no son reconocidos universalmente como tales, sin embargo todos los conceptos pueden ser ubicados en la bibliografía del tema).

  • Emulación o simulación: la máquina virtual simula un hardware completo, admitiendo un sistema operativo “guest” sin modificar para una CPU completamente diferente. Este enfoque fue muy utilizado para permitir la creación de software para nuevos procesadores antes de que estuvieran físicamente disponibles. Por ejemplo Bochs, PearPC, Qemu sin aceleración, y el emulador Hercules. La emulación es puesta en práctica utilizando una variedad de técnicas, desde state machines hasta el uso de la recopilación dinámica en una completa plataforma virtual.
  • Virtualización nativa y virtualización completa: la máquina virtual simula un hardware suficiente para permitir un sistema operativo “guest” sin modificar (uno diseñado para la misma CPU) para correr de forma aislada. Típicamente, muchas instancias pueden correr al mismo tiempo. Este enfoque fue el pionero en 1966 con CP-40 y CP[-67]/CMS, predecesores de la familia de máquinas virtuales de IBM. Algunos ejemplos: VMware Workstation, VMware Server, Parallels Desktop, Virtual Iron, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro y z/VM.
  • Virtualización parcial (y aquí incluimos el llamado “address space virtualization”): la máquina virtual simula múltiples instancias de mucho (pero no de todo) del entorno subyacente del hardware, particularmente address spaces. Este entorno admite compartir recursos y aislar procesos, pero no permite instancias separadas de sistemas operativos “guest”. Aunque no es vista como dentro de la categoría de máquina virtual, históricamente éste fue un importante acercamiento, y fue usado en sistemas como CTSS, el experimental IBM M44/44X, y podría decirse que en sistemas como OS/VS1, OS/VS2 y MVS.
  • Paravirtualización: la máquina virtual no necesariamente simula un hardware, en cambio ofrece un API especial que solo puede usarse mediante la modificación del sistema operativo “guest”. La llamada del sistema al hypervisor tiene el nombre de “hypercall” en Xen y Parallels Workstation; está implementada vía el hardware instruction DIAG (“diagnose”) en el CMS de VM en el caso de IBM (este fue el origen del término hypervisor). Ejemplo: VMware ESX Server, Win4Lin 9x y z/VM.
  • Virtualización a nivel del sistema operativo: virtualizar un servidor físico a nivel del sistema operativo permitiendo múltiples servidores virtuales aislados y seguros correr en un solo servidor físico. El entorno del sistema operativo “guest” comparte el mismo sistema operativo que el del sistema “host” (el mismo kernel del sistema operativo es usado para implementar el entorno del “guest”). Las aplicaciones que corren en un entorno “guest” dado lo ven como un sistema autónomo. Ejemplos: Linux-VServer, Virtuozzo, OpenVZ, Solaris Containers y FreeBSD Jails.
  • Virtualización de aplicaciones: consiste en el hecho de correr una desktop o una aplicación de server localmente, usando los recursos locales, en una máquina virtual apropiada. Esto contrasta con correr la aplicación como un software local convencional (software que fueron “instalados” en el sistema). Semejantes aplicaciones virtuales corren en un pequeño entorno virtual que contienen los componentes necesarios para ejecutar, como entradas de registros, archivos, entornos variables, elementos de uso de interfaces y objetos globales. Este entorno virtual actúa como una capa entre la aplicación y el sistema operativo, y elimina los conflictos entre aplicaciones y entre las aplicaciones y el sistema operativo. Los ejemplos incluyen el Java Virtual Machine de Sun, Softricity, Thinstall, Altiris y Trigence (esta metodología de virtualización es claramente diferente a las anteriores; solo una pequeña línea divisoria los separa de entornos de máquinas virtuales como Smalltalk, FORTH, Tel, P-code).

Virtualización de los recursos

El concepto básico de la virtualización de plataforma, descrita anteriormente, se extendió a la virtualización de recursos específicos del sistema como la capacidad de almacenamiento, nombre de los espacios y recursos de la red.

  • Los términos resource aggregation, spanning o concatenation (name spaces) se utiliza cuando se combinan componentes individuales en un mayor recurso o en un recurso de uso común (resource pools). Por ejemplo:
  • RAID y volume managers combinan muchos discos en un gran disco lógico.
  • La Virtualización de almacenamiento (Storage virtualization) refiere al proceso de abstraer el almacenamiento lógico del almacenamiento físico, y es comúnmente usado en SANs (Storage Area Network). Los recursos de almacenamientos físicos son agregados al storage pool, del cual es creado el almacenamiento lógico. Múltiples dispositivos de almacenamiento independientes, que pueden estar dispersos en la red, le aparecen al usuario como un dispositivo de almacenamiento independiente del lugar físico, monolítico y que puede ser administrado centralmente.
  • Channel bonding[1] y el equipamiento de red utilizan para trabajar múltiples enlaces combinados mientras ofrecen un enlace único y con mayor amplitud de banda.
  • Red privada virtual (en inglés Virtual Private Network, VPN), Traducción de dirección de red (en inglés Network Address Translation, NAT) y tecnologías de red similares crean una red virtual dentro o a través de subredes.
  • Sistemas de computación multiprocessor y multi-core muchas veces presentan lo que aparece como un procesador único, rápido e independiente.
  • Cluster, grid computing y servidores virtuales usan las tecnologías anteriormente mencionadas para combinar múltiples y diferentes computadoras en una gran metacomputadora.
  • Particionamiento es la división de un solo recurso (generalmente grande), como en espacio de disco o ancho de banda de la red, en un número más pequeño y con recursos del mismo tipo más fáciles de utilizar. Esto es muchas veces llamado “zoning”, especialmente en almacenamiento de red.
  • Encapsulación es el ocultamiento de los recursos complejos mediante la creación de un interfaz simple. Por ejemplo, muchas veces CPUs incorporan memoria caché o segmentación (pipeline) para mejorar el rendimiento, pero estos elementos no son reflejados en su interfaz virtual externa. Interfaces virtuales similares que ocultan implementaciones complejas se encuentran en los discos, módems, routers y otros dispositivos “inteligentes” (smart).
Enlaces generales

Open Source en Hungría

Link: http://web.cenatic.es/index.php?option=com_content&view=article&id=7181%3Aopen-source-en-hungria&catid=3%3Asobre-el-sector-del-sfa&Itemid=5&lang=es

El gobierno húngaro ha anunciado que va a modificar las reglas de implantación de uso de software de código abierto en organizaciones del sector público. Eso hará que la presencia del software Open Source sea del 50% en ese país, que anteriormente tenía como protagonistas a Microsoft y Novell en sus instituciones públicas. Ahora se dedicará el mismo presupuesto a soluciones Open Source que a soluciones propietarias

Ferenc Baja, ministro de Tecnologías de la Información en Hungría, anunció el pasado 2 de abril que el gasto público en software se repartiría por igual en soluciones propietarias y en desarrollos Open Source. Esto significa que habrá un presupuesto de aproximadamente 40 millones de euros para soluciones de Código Abierto, lo que animará la implantación de este tipo de desarrollos en la administración pública húngara.

Gábor Szentiványi, CEO de ULX Open Source Consulting -uno de los proveedores de soluciones Open Source del país- comentaba que «nuestra empresa da la bienvenida a esta noticia desde el Secretariado de Estado para la Informática, que esperábamos desde hace tiempo. Será la primera vez que las soluciones Open Source tengan el mismo estatus que el de los vendedores de soluciones propietarias en los organismos públicos».

lunes, 6 de abril de 2009

Proyecto VegnuX




Buenos señores hoy me tropece con una nueva distro linux venezolana: se llama VEGNUX, y por lo que se ve, esta en fase avanzada.

Honestamente no la he probado, pero me parece interesante que cada vez mas tenemos distros desarrolladas en nuestro pais.

Curiosamente se basa en la distribucion http://www.linuxfromscratch.org/ y no en Debian como ya es costumbre y su logo es un turpial.

Aca les dejo el enlace al blog http://vegnux.blogspot.com/

domingo, 5 de abril de 2009

Software Libre

Software libre (en inglés free software) es la denominación del software que brinda libertad a los usuarios sobre su producto adquirido y por tanto, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. Según la Free Software Foundation, el 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 de los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y última libertad mencionadas, el acceso al código fuente es un requisito previo).

El software libre suele estar disponible gratuitamente, o al precio de coste de la distribución a través de otros medios; sin embargo noes obligatorio que sea así, por ende no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratis" o "gratuito" incluye en algunas ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa. Tampoco debe confundirse software libre con "software de dominio público". Éste último es aquél que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquél cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de éste, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es dominio público.

Libertades del software libre

De acuerdo con tal definición, el software es "libre" si garantiza las siguientes libertades:
  • Libertad 0: la libertad de usar el programa, con cualquier propósito
  • Libertad 1: la libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades.
  • Libertad 2: la libertad de distribuir copias, con lo que puedes ayudar a tu vecino.
  • Libertad 3: la libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie.

Las libertades 1 y 3 requieren que esté disponible el código fuente porque estudiar y modificar software sin su código fuente es muy poco viable. Ciertos teóricos usan este cuarto punto (libertad 3) para justificar parcialmente las limitaciones impuestas por la licencia GNU GPL frente a otras licencias de software libre (ver Licencias GPL). Sin embargo el sentido original es más libre, abierto y menos restrictivo que el que le otorga la propia situación de incompatibilidad, que podría ser resuelta en la próxima versión 3.0 de la licencia GNU GPL, causa en estos momentos graves perjuicios a la comunidad de programadores de software libre, que muchas veces no pueden reutilizar o mezclar códigos de dos licencias distintas, pese a que las libertades teóricamente lo deberían permitir.

En el sitio web oficial de OSI está la lista completa de las licencias de software libre actualmente aprobadas y tenidas como tales.

El término software no libre se emplea para referirse al software distribuido bajo una licencia de software más restrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad intelectual reservan la mayoría de los derechos de modificación, duplicación y redistribución para el dueño del copyright; el software dispuesto bajo una licencia de software libre rescinde específicamente la mayoría de estos derechos reservados.

La definición de software libre no contempla el asunto del precio; un eslogan frecuentemente usado es "libre como en libertad, no como en cerveza gratis" o en inglés "Free as in freedom, not as in free beer" (aludiendo a la ambigüedad del término inglés "free"), y es habitual ver a la venta CDs de software libre como distribuciones GNU/Linux. Sin embargo, en esta situación, el comprador del CD tiene el derecho de copiarlo y redistribuirlo. El software gratis puede incluir restricciones que no se adaptan a la definición de software libre —por ejemplo, puede no incluir el código fuente, puede prohibir explícitamente a los distribuidores recibir una compensación a cambio, etc—.

Para evitar la confusión, algunas personas utilizan los términos "libre" (Libre software) y "gratis" (Gratis software) para evitar la ambigüedad de la palabra inglesa "free". Sin embargo, estos términos alternativos son usados únicamente dentro del movimiento del software libre, aunque están extendiéndose lentamente hacia el resto del mundo. Otros defienden el uso del término open source software (software de código abierto, también llamado de fuentes abiertas). La principal diferencia entre los términos "open source" y "free software" es que éste último tiene en cuenta los aspectos éticos y filosóficos de la libertad, mientras que el "open source" se basa únicamente en los aspectos técnicos.

En un intento por unir los mencionados términos que se refieren a conceptos semejantes, se está extendiendo el uso de la palabra "FLOSS" con el significado de "Free - Libre - Open Source Software" e, indirectamente, también a la comunidad que lo produce y apoya.




Ingenieria de Sistemas

Ingeniería de sistemas es un modo de enfoque interdisciplinario que permite estudiar y comprender la realidad, con el propósito de implementar u optimizar sistemas complejos. Puede verse como la aplicación tecnológica de la teoría de sistemas a los esfuerzos de la ingeniería, adoptando en todo este trabajo el paradigma sistémico. La ingeniería de sistemas integra otras disciplinas y grupos de especialidad en un esfuerzo de equipo, formando un proceso de desarrollo estructurado.

Una de las principales diferencias de la ingeniería de sistemas respecto a otras disciplinas de ingeniería tradicionales, consiste en que la ingeniería de sistemas no construye productos tangibles. Mientras que los ingenieros civiles podrían diseñar edificios o puentes, los ingenieros electrónicos podrían diseñar circuitos, los ingenieros de sistemas tratan con sistemas abstractos con ayuda de las metodologías de la ciencia de sistemas, y confían además en otras disciplinas para diseñar y entregar los productos tangibles que son la realización de esos sistemas. Otro ámbito que caracteriza a la ingeniería de sistemas es la interrelación con otras disciplinas en un trabajo transdisciplinario.

Ámbito

Esta área comenzó a desarrollarse en la segunda parte del siglo XX con el veloz avance de la ciencia de sistemas. Las empresas empezaron a tener una creciente aceptación de que la ingeniería de sistemas podía gestionar el comportamiento impredecible y la aparición de características imprevistas de los sistemas (propiedades emergentes). Las decisiones tomadas al comienzo de un proyecto, cuyas consecuencias pueden no haber sido entendidas claramente, tienen una enorme implicación más adelante en la vida del sistema. Un ingeniero de sistemas debe explorar estas cuestiones y tomar decisiones críticas. No hay métodos que garanticen que las decisiones tomadas hoy serán válidas cuando el sistema entre en servicio años o décadas después de ser concebido, pero hay metodologías que ayudan al proceso de toma de decisiones.

Ejemplos como la metodología de sistemas blandos (Soft Systems Methodology), la dinámica de sistemas, modelo de sistemas viables (Viable System Model), teoría del Caos, teoría de la complejidad, y otros que también están siendo explorados, evaluados y desarrollados para apoyar al ingeniero en el proceso de toma de decisiones. La Ingeniería de Sistemas a menudo involucra la utilización de modelos y la simulación de algunos aspectos del sistema propuesto para validar hipótesis o explorar teorías.

Otra definición

Para Wymore, el objeto de la Ingeniería de Sistemas es el "análisis y diseño de sistemas hombre-máquina, complejos y de gran tamaño", incluyendo por tanto los sistemas de actividad humana. En estos casos el inconveniente habitual suele ser la dificultad de expresar los objetivos de manera precisa. Encontramos una definición muy general en el IEEE Standard Dictionary of Electrical and Electronic Terms:

"Ingeniería de Sistemas es la aplicación de las ciencias matemáticas y físicas para desarrollar sistemas que utilicen económicamente los materiales y fuerzas de la naturaleza para el beneficio de la humanidad".

Una definición especialmente completa (y que data de 1974) nos la ofrece un estándar militar de las fuerzas aéreas estadounidenses sobre gestión de la ingeniería.

"Ingeniería de Sistemas es la aplicación de esfuerzos científicos y de ingeniería para: (1) transformar una necesidad de operación en una descripción de parámetros de rendimiento del sistema y una configuración del sistema a través del uso de un proceso iterativo de definición, síntesis, análisis, diseño, prueba y evaluación; (2) integrar parámetros técnicos relacionados para asegurar la compatibilidad de todos los interfaces de programa y funcionales de manera que optimice la definición y diseño del sistema total; (3) integrar factores de fiabilidad, mantenibilidad, seguridad, supervivencia, humanos y otros en el esfuerzo de ingeniería total a fin de cumplir los objetivos de coste, planificación y rendimiento técnico".

Como vemos, en la literatura se pueden encontrar tantas definiciones del término como autores se han ocupado del tema. A pesar de ello, podemos dar otra basada en las ideas de Hall, Wymore y M'Pherson:

"Ingeniería de Sistemas es un conjunto de metodologías para la resolución de problemas mediante el análisis, diseño y gestión de sistemas"

Como era de esperar por el amplio espectro de sus intereses, la Ingeniería de Sistemas no puede apoyarse en una metodología monolítica. Cada una de las metodologías que comprende puede ser útil en una fase concreta del proceso o para un tipo concreto de sistemas; lo que todas ellas comparten es su enfoque: el enfoque de sistemas.

Historia

La primera referencia que describe ampliamente el procedimiento de la Ingeniería de Sistemas fue publicada en 1950 por Melvin J. Kelly, entonces director de los laboratorios de la Bell Telephone, subsidiaria de investigación y desarrollo de la AT&T. Esta compañía desempeñó un papel importante en el nacimiento de la Ingeniería de Sistemas por tres razones: la acuciante complejidad que planteaba el desarrollo de redes telefónicas, su tradición de investigación relativamente liberal y su salud financiera.

Así, en 1943 se fusionaban los departamentos de Ingeniería de Conmutación e Ingeniería de Transmisión bajo la denominación de Ingeniería de Sistemas. En opinión de Arthur D. Hall, "la función de Ingeniería de Sistemas se había practicado durante muchos años, pero su reconocimiento como entidad organizativa generó mayor interés y recursos en la organización".

En 1950 se creaba un primer curso de postgrado sobre el tema en el MIT y sería el propio Hall el primer autor de un tratado completo sobre el tema [Hall, 1962]. Para Hall, la Ingeniería de Sistemas es una tecnología por la que el conocimiento de investigación se traslada a aplicaciones que satisfacen necesidades humanas mediante una secuencia de planes, proyectos y programas de proyectos.

Hall definiría asimismo un marco para las tareas de esta nueva tecnología, una matriz tridimensional de actividades en la que los ejes representaban respectivamente:

  • La dimensión temporal: son las fases características del trabajo de sistemas, desde la idea inicial hasta la retirada del sistema
  • La dimensión lógica: son los pasos que se llevan a cabo en cada una de las fases anteriores, desde la definición del problema hasta la planificación de acciones
  • La dimensión del conocimiento: se refiere al conocimiento especializado de las diversas profesiones y disciplinas. (Esta dimensión, ortogonal a las anteriores, no ha sido incluida en la tabla a efectos de una mayor claridad)