Introducción al Software Libre

1 Qué es el Software Libre?

1.1 ¿Cómo empezó todo?

1.1.1 GNU

img/GNU.png

En 1984, Richard Stallman 1 comenzó a trabajar en el proyecto GNU 2, y un año más tarde fundó la Free Software Foundation (FSF 3). Stallman introdujo una definición para free software y el concepto de copyleft, el cual desarrolló para dar a los usuarios libertad y para restringir las posibilidades de apropiación del software.

1.1.2 Linux

img/tux.png

Hacia 1991, cuando la primera versión del núcleo Linux 4 fue liberada, el proyecto GNU había producido varios de los componentes del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero aún no contaba con el núcleo que permitiera completar el sistema operativo. Entonces, el núcleo creado por Linus Torvalds 5, quien se encontraba por entonces estudiando en la Universidad de Helsinki, llenó el "hueco" final que el sistema operativo GNU exigía.

1.2 Las cuatro libertades

1.2.1 libertad 0

Ejecutar el programa con cualquier propósito (privado, educativo, público, comercial, militar, etc.)

1.2.2 libertad 1

Estudiar y modificar el programa (para lo cual es necesario acceder al código fuente).

1.2.3 libertad 2

Copiar el programa de manera que se pueda ayudar al vecino o a cualquiera.

1.2.4 libertad 3

Mejorar el programa y publicar las mejoras (para lo cual es necesario acceder al código fuente).

1.3 GPL

La Licencia Pública General de GNU o más conocida por su nombre en inglés GNU General Public License 6 o simplemente su acrónimo del inglés GNU GPL, es una licencia creada por la Free Software Foundation a mediados de los 80, y está orientada principalmente a proteger la libre distribución, modificación y uso de software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios.

1.4 Copyleft

img/copyleft.png

Copyleft describe un grupo de derechos aplicados a una obra. Nace dentro de la comunidad del Software Libre como una estrategia legal para liberar el Software.

Su objetivo es: Garantizar ciertas libertades sobre la explotación y utilización de la obra y de sus obras derivadas. Cualquier trabajo derivado de un trabajo con copyleft debe a su vez atenerse a los principios del copyleft

2 Creative Commons

Las licencias Creative Commons o CC están inspiradas en la licencia GPL (General Public License) de la Free Software Foundation, sin embargo no son un tipo de licenciamiento de software. La idea principal es posibilitar un modelo legal ayudado por herramientas informáticas para así facilitar la distribución y el uso de contenidos.

Existen una serie de licencias Creative Commons 7, cada una con diferentes configuraciones o principios, como el derecho del autor original a dar libertad para citar su obra, reproducirla, crear obras derivadas, ofrecerla públicamente y con diferentes restricciones como no permitir el uso comercial o respetar la autoría original.

AttributionBY
Attribution-Share AlikeBY-SA
Attribution-No Derivative WorksBY-ND
Attribution-NoncommercialBY-NC
Attribution-Noncommercial-No Derivative WorksBY-NC-ND
Attribution-Noncommercial-ShareBY-NC-SA

img/CC-BY.png img/CC-SA.png img/CC-ND.png img/CC-NC.png

3 Distribuciones GNU/Linux

3.1 Primeras Distribuciones

  • H J Lu's "Boot-root"
  • MCC Interim Linux
  • TAMU
  • SLS (Softlanding Linux System)
  • Yggdrasil Linux

3.2 Principales Distribuciones

  • Slackware (inicialmente basada en SLS)
  • Debian
  • RedHat
  • Suse (inicialmente basada en Slackware)
  • Gentoo (basada en código fuente)

4 Consola versus Escritorio

  • Todo lo que hacemos en el entorno gráfico lo podemos hacer desde la consola…
  • No todo lo que hacemos desde la consola se puede hacer en el entorno gráfico…
  • No siempre tendremos acceso gráfico al sistema…
  • Pero siempre podremos acceder desde consola.

4.1 Ejemplos Consola

4.1.1 Reescalar fotos mediante imagemagick
mkdir -p 800;for f in *.jpg;do echo $f;convert -filter cubic -resize 800 $f ./800/$f;done
4.1.2 Grabar un CD usando wodim
wodim -v dev=/dev/hda speed=4 imagen.iso  
4.1.3 Grabar un DVD usando growisofs
nice --10 growisofs -dvd-compat -speed=2 -Z /dev/hda -R -J -V iso /home/iso
4.1.4 Reemplazar texto en varios archivos
for i in *.txt;do cat $i | sed s/hola/chau/g >$i.tmp;mv $i.tmp $i;done
4.1.5 Backup de archivos usando rsync
rsync -e ssh -vzogtprul /home/directorio/ usuario@host:/backup/directorio
4.1.6 Instalar aplicaciones usando apt-get/aptitude
apt-get install aplicacion
aptitude install aplicacion
4.1.7 Acceso remoto usando ssh, scp, screen
ssh usuario@equipo comando

scp * usuario@equipo:/directorio

screen C-a c
screen C-a d
screen -r

5 Línea de Tiempo GNU/Linux

6 Aplicaciones libres

Existen programas libres para hacer todo lo que habitualmente se necesita hacer con una computadora. No es más dificil ni más fácil usarlos, en la mayoría de los casos sólo es ligeramente distinto.

WebChatFTP/P2POficinaGraficosMultimedia3D
FirefoxaMSNaMuleOO WriterScribusMplayerBlender
KonqueroremesenegFTPAbiWordInkscapeVLCk3d
KompoZerPidginKTorrentKileThe GimpAudacitypythoncad
AkregatorEkigaLimeWireOO CalcF-SpotAudaciousraster3d
LifereaChatZillaVuzeGnumericimgSeekKino
RSSOwlKonversationFreeloaderOO ImpressXsaneAvidemux
AmayaKopetencftpKPDFDigikam
BluefishKVIrcrtorrentEvinceImagick
EpiphanyX-ChatKorganizer
QuantaOO Base
KMailOO Draw
ThunderbirdLatex
Evolution

7 Virtualizar o Emular

7.1 QEMU

QEMU 8 es un emulador de procesadores basado en la traducción dinámica de binarios (conversión del código binario de la arquitectura fuente en código entendible por la arquitectura huésped). QEMU también tiene capacidades de virtualización dentro de un sistema operativo, ya sea Linux, Windows, o cualquiera de los sistemas operativos admitidos (de hecho es la forma más común de uso). Esta máquina virtual puede ejecutarse en cualquier tipo de Microprocesador o arquitectura (x86, x86-64, PowerPC, MIPS, SPARC, etc.). Está licenciado en parte con la LGPL y la GPL de GNU.

El objetivo principal es emular un sistema operativo dentro de otro sin tener que reparticionar el disco duro, empleando para su ubicación cualquier directorio dentro de éste.

El programa no dispone de GUI, pero existe otro programa llamado QEMU manager que hace las veces de interfaz gráfica si se utiliza QEMU desde Windows. También existe una versión para Linux llamado qemu-launcher. En Mac OS X puede utilizarse el programa Q que dispone de una interfaz gráfica para crear y administrar las máquinas virtuales.

7.2 VirtualBox

Sun xVM VirtualBox 9 es un software de virtualización para arquitecturas x86 que fue desarrollado originalmente por la empresa alemana innotek GmbH, pero que pasó a ser propiedad de la empresa Sun Microsystems en febrero de 2008 cuando ésta compró a innotek. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como "sistemas invitados", dentro de otro sistema operativo "anfitrión", cada uno con su propio ambiente virtual. Por ejemplo, se podrían instalar diferentes distribuciones de Linux en un VirtualBox instalado en Windows XP o viceversa.

Entre los sistemas operativos soportados (en modo anfitrión) se encuentran GNU/Linux, Mac OS X, OS/2 Warp , Windows, y Solaris/OpenSolaris, y dentro de éstos es posible virtualizar los sistemas operativos FreeBSD, GNU/Linux, OpenBSD, OS/2 Warp, Windows y Solaris.

La aplicación fue inicialmente ofrecida bajo una Licencia de software no libre|licencia de software privado, pero en enero de 2007, después de años de desarrollo, surgió VirtualBox OSE (Open Source Edition) bajo la licencia GPL 2.

7.3 Xen

Xen 10 es una máquina virtual de código abierto desarrollada por la Universidad de Cambridge. La meta del diseño es poder ejecutar instancias de sistemas operativos con todas sus características, de forma completamente funcional en un equipo sencillo. Xen proporciona aislamiento seguro, control de recursos, garantías de calidad de servicio y migración de máquinas virtuales en caliente. Los sistemas operativos deben ser modificados explícitamente para correr Xen (aunque manteniendo la compatibilidad con aplicaciones de usuario). Esto permite a Xen alcanzar virtualización de alto rendimiento sin un soporte especial de hardware

Xen utiliza una técnica llamada paravirtualización para alcanzar alto rendimiento. Con la paravirtualización, se puede alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse con técnicas tradicionales de virtualización. A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos basados en software para simular hardware, Xen requiere portar los sistemas operativos para adaptarse al API de Xen. Hasta el momento hay ports para NetBSD, Linux, FreeBSD y Plan 9. En 2005, Novell muestra un port de NetWare para Xen. Un port de Windows XP fue creado durante el desarrollo inicial de Xen, pero las licencias de Microsoft prohíben su lanzamiento público.

7.4 OpenVZ

OpenVZ 11 es una tecnología de virtualización en el nivel de sistema operativo para Linux. OpenVZ permite que un servidor físico ejecute múltiples instancias de sistemas operativos aislados, conocidos como Servidores Privados Virtuales (SPV o VPS en inglés) o Entornos Virtuales (EV).

Si se lo compara a máquinas virtuales tales como VMware, VirtualBox y las tecnologías de virtualización tales como Xen, OpenVZ ofrece menor flexibilidad en la elección del sistema operativo: tanto los huéspedes como los anfitriones deben ser Linux (aunque las distribuciones de GNU/Linux pueden ser diferentes en diferentes EVs). Sin embargo, la virtualización en el nivel de sistema operativo de OpenVZ proporciona mejor rendimiento, escalabilidad, densidad, administración de recursos dinámicos, y facilidad de administración que las alternativas.

OpenVZ es una base de Virtuozzo que es un software comercial desarrollado por SWsoft, Inc., OpenVZ es un producto de software libre y licenciado bajo los términos de la licencia GNU GPL versión 2.

7.5 LXC

LXC 12 (Linux Containers) es una tecnología de virtualización en el nivel de sistema operativo (SO) para Linux. OpenVZ permite que un servidor físico ejecute múltiples instancias de sistemas operativos aislados, conocidos como Servidores Privados Virtuales (SPV o VPS en inglés) o Entornos Virtuales (EV). LXC no provee de una máquina virtual, más bien provee un entorno virtual que tiene su propio espacio de procesos y redes.

Es similar a otras tecnologías de virtualización en el nivel de SO como OpenVZ y Linux-VServer, asimismo se asemeja a aquellas de otros sistemas operativos como FreeBSD jail y Solaris Containers.

LXC se basa en la funcionalidad cgroups del Linux que está disponible desde la versión 2.6.29, desarrollada como parte de LXC. También se basa en otras funcionalidades de aislamiento de espacio de nombres, que fueron desarrolladas e integradas dentro de la línea principal del núcleo de Linux.

8 Cómo Migrar?

La migración a GNU/Linux es un proceso, esto es, ha de hacerse en etapas, concediendole a cada una, y concediendose el usuario, todo el tiempo que necesiten ambos: la etapa y el usuario.

  • Migran las personas, no los programas.
  • Una migración compulsiva está destinada al fracaso.

En la primera parte, A - Migrando al usuario, hablamos del protagonista de la migración: el usuario. En la segunda parte, B - Migrando programas, veremos los muchos recursos para conocer, probar y evaluar aplicaciones y distribuciones. En C - Capacitación analizamos qué es lo que debe saber el usuario y cómo adquirir ese conocimiento. Contenidos:

A. Migrando al usuario B. Migrando programas C. Capacitación

9 Créditos

  • Todos los párrafos que hacen referencia a Wikipedia son obra derivada de la misma bajo licencia GFDL 13.
  • La sección Cómo Migrar está extraído del sitio web de María Elena Casañas 14.
  • El comienzo de la sección Consola versus Escritorio es obra derivada del Curso de administración básica GNU/Linux de Jesús David Navarro 15.
  • La sección Copyleft es obra derivada de Un pequeño parche para una sociedad minada de bugs 16.
  • La sección Aplicaciones Libres es obra derivada de Qué es el software libre y porqué es importante para mi? 17.
  • El resto del documento está bajo Licencia Creative Commons by-sa Argentina 2.5 18.

Fecha: 2013-04-08

Autor: Osiris Alejandro Gómez

Org version 7.9.2 with Emacs version 23

Validate XHTML 1.0