EPET N° 1 "UNESCO"

Curso Esencia Linux



Tema 1: La Comunidad Linux y la Carrera en Código Abierto

Peso: 7

1.1: Evolución de Linux y los Sistemas Operativos Populares

Peso: 2

Linux es un sistema operativo de computadoras creado bajo el modelo de desarrollo de Código Abierto. A pesar de que el término se utiliza para designar todo el conjunto de componentes que forman un sistema operativo, Linux se refiere más precisamente al componente central del sistema, denominado kernel (o núcleo). Su creador, el programador finlandés Linus Torvalds, quien publicó la primera versión de Linux el 5 de octubre de 1991. Su intención fue crear un kernel para el proyecto GNU.

Sistema Operativo

Un sistema operativo es el conjunto de programas encargados de controlar los componentes de la computadora, creando el entorno en el que pueden trabajar las aplicaciones utilizadas por el usuario. Sin un sistema operativo, cada aplicación tendría que tratar directamente con los componentes de la computadora, lo que dificultaría su desarrollo y uso simultáneo (multitarea).

Proyecto GNU

En 1983, el programador estadounidense Richard Stallman inició el proyecto GNU para crear un sistema operativo de código abierto que funcionara de la misma manera que el sistema operativo Unix. Unix fue un sistema que definió conceptos técnicos utilizados por varios sistemas operativos inspirados en él.

Unix

El Unix original fue desarrollado en los años 70 por los investigadores Ken Thompson y Dennis Ritchie (entre otros), en el centro de investigación Bell Labs de la compañía AT&T. El proyecto GNU es una de estas variantes del Unix original, pero con la premisa de ser desarrollado en Código Abierto.

Código Abierto

En su sentido más amplio, el Código Abierto es un modelo de desarrollo que promueve:

A partir de los años 90, el proyecto GNU, equipado con el núcleo de Linux, dio lugar a numerosos sistemas operativos de código abierto, cada uno organizando, mejorando y creando nuevos programas a su manera. Estos sistemas operativos se denominan Distribuciones Linux.

Distribuciones Linux

Además de contener el núcleo de Linux y los programas GNU, una distribución Linux suele añadir otros recursos para facilitar su uso. Además de ofrecer un conjunto completo de aplicaciones listas para usar, las distribuciones más populares pueden actualizar e instalar nuevos programas automáticamente. Esta función se denomina gestión de paquetes. El gestor de paquetes de la distribución elimina el riesgo de instalar un programa incompatible o malicioso.

Otra ventaja de las distribuciones es su costo. Un usuario experimentado puede copiar e instalar legalmente la distribución sin tener que pagar por ella. Hay distribuciones pagadas, pero difieren poco de las que no tienen costo en términos de facilidad y recursos. Las principales distribuciones de Linux son:

Hay muchas otras distribuciones importantes además de estas dos, como Ubuntu, Fedora, Linux Mint, openSUSE, etc. Aunque cada distribución tiene sus propias peculiaridades, un usuario con cierta experiencia en Linux podrá trabajar con todas ellas. Muchos utilizan el mismo sistema de gestión de paquetes. Por ejemplo, las distribuciones Debian, Ubuntu y Linux Mint utilizan dpkg (las dos últimas fueron creadas a partir de Debian). Red Hat, CentOS y Fedora utilizan RPM. Otros, como OpenSUSE y Slackware, tienen sistemas de gestión de paquetes que son menos comunes, pero similares a dpkg y RPM en su propósito.

Además de estas distribuciones de propósito general, hay distribuciones dirigidas a una audiencia específica. Por ejemplo, Scientific Linux es una distribución centrada en la producción científica. La distribución Kali Linux es una distribución basada en Debian especializada en herramientas de seguridad y pruebas de penetración.

Arquitecturas

Desde los años 90, la arquitectura informática más común ha sido la x86, utilizada tanto en servidores como en computadoras personales. Sin embargo, hay muchas otras arquitecturas, y Linux puede instalarse en la mayoría de ellas.

Muchas de estas arquitecturas se encuentran en máquinas industriales e incluso en electrodomésticos. Para estos casos se puede encontrar o crear una versión especializada de Linux, centrada únicamente en el equipo en cuestión. Este tipo de sistema recibe el nombre de sistema embebido.

Una arquitectura que merece ser destacada es la arquitectura ARM, en la que se basan casi todos los smartphones actuales. El sistema  Android, utilizado en miles de millones de teléfonos móviles en todo el mundo, es un tipo de Linux. Aunque existe controversia acerca de llamar a Android una distribución Linux, es innegable que el núcleo de este sistema operativo es Linux. Debido a que su código de programación es abierto, incluso es posible utilizar variantes de Android, como LineageOS.

Además de los smartphones, otros dispositivos están basados en la arquitectura ARM, como el Raspberry Pi. Raspberry Pi es básicamente una computadora completa reducida a una sola placa de circuito impreso, con un tamaño ligeramente superior al de una tarjeta de crédito. Todos los componentes básicos de un ordenador tradicional están presentes en Raspberry Pi, como procesador, memoria, salida de vídeo HDMI, audio, red ethernet, WIFI, puertos USB, etc. Sin embargo, Raspberry Pi no tiene una interfaz de disco duro interna IDE o SATA, por lo que el sistema operativo se almacena en una tarjeta SD y se inserta en la entrada del dispositivo. El Raspberry Pi no es tan potente como una computadora moderna, pero puede realizar muchas de las funciones menos exigentes.

Hay muchos modelos de tales computadoras, conocidas como Single Board Computer, o simplemente SBC, y casi siempre están equipadas con una distribución Linux adecuada para la arquitectura ARM. En el caso de Raspberry Pi, la distribución Linux más utilizada es Raspbian Linux, una distribución basada en Debian y compatible con la arquitectura ARM. Estos dispositivos se utilizan a menudo en aplicaciones de control y monitorización, a menudo comunicándose entre sí y con un servidor central. Cuando esta comunicación tiene lugar a través de Internet, este tipo de uso se denomina Internet de las cosas o simplemente IoT, el acrónimo inglés de Internet of Things.

Computación en la Nube

Dada la gran variedad de formas en que se intercambia información a través de Internet, desde el punto de vista de la infraestructura de comunicación resulta más conveniente que dicha información utilizada y generada por las aplicaciones se almacene de forma remota. Este tipo de enfoque de distribución de la información se denomina Computación en la Nube, ya que los recursos pueden estar fragmentados en diferentes ubicaciones físicas y no en un solo punto.

Es común que la contratación de un IaaS (del inglés Infrasctructure as a Service, Infraestructura como Servicio) para implementar una aplicación de gran tamaño siga el modelo del computación en la nube. Usando computadoras de alta capacidad interconectadas con Internet de alta velocidad, el proveedor de IaaS ofrece recursos -- como espacio en disco -- que pueden estar en cualquiera de estas máquinas geográficamente separadas. Este modelo le permite expandir, reducir o crear recursos bajo demanda. Los datos también se pueden reflejar en diferentes puntos geográficos para garantizar su seguridad y disponibilidad.

La naturaleza dinámica de este tipo de alojamiento no permite al contratista elegir arbitrariamente el sistema operativo que utilizará para implementar el servicio. Una distribución Linux, por ejemplo, puede instalarse a partir de una lista de opciones predefinidas por el proveedor, que ya están preparadas para funcionar en su infraestructura. El proceso de instalación se realiza normalmente a través de un navegador, en un área dedicada al contratista, que elige las cantidades y los tipos de recursos que utilizará. Otras configuraciones, como las restricciones del cortafuegos y la copia de claves SSH, también se realizan normalmente en esta misma interfaz en el navegador. Una vez instalado, se puede acceder al sistema operativo de la misma manera que a una máquina remota convencional.

1.2: Principales Aplicaciones de Código Abierto

Peso: 2

Una aplicación es un programa cuyo propósito no está directamente asociado con el funcionamiento de la computadora, sino con alguna tarea de interés para el usuario. Las distribuciones Linux ofrecen varias opciones de aplicaciones para los más diversos fines: aplicaciones de oficina, Internet, edición de audio y vídeo, etc. Siempre hay más de una opción de aplicación para el mismo propósito, dejando que el usuario elija la que más le guste.

Cada distribución ofrece una colección de aplicaciones ya instaladas de manera predeterminada. Además de estas aplicaciones preinstaladas, todas las distribuciones populares tienen un gestor de paquetes con una amplia colección de aplicaciones disponibles para la instalación, llamado repositorio de paquetes. Aunque son los mismos programas, cada distribución tiene su propio sistema de instalación de paquetes. Debian, Ubuntu y Linux Mint, por ejemplo, utilizan las herramientas dpkg y apt-get para instalar paquetes. Las distribuciones Red Hat, Fedora y CentOS utilizan las herramientas rpm, yum y dnf. Dado que el empaquetamiento de las aplicaciones es diferente para cada distribución, es muy importante instalarlas desde los repositorios correspondientes a la distribución utilizada. El gestor de paquetes de la distribución se encarga de utilizar sólo los paquetes correctos y de realizar las actualizaciones necesarias, por lo que no hay necesidad de preocuparse por estas diferencias.

Aplicaciones de Escritorio

Las aplicaciones de oficina son editores de texto, presentaciones, hojas de cálculo y otros documentos que ayudan al usuario a realizar su trabajo. Estas aplicaciones se agrupan a menudo en colecciones llamadas suites de oficina.

Durante mucho tiempo, la suite más utilizada en Linux fue el paquete OpenOffice.org. En 2010 los miembros de la comunidad de OpenOffice.org anuncian The Document Foundation. Se trata de una fundación sin ánimo de lucro, independiente, autónoma y meritocrática para fomentar el desarrollo del software de oficina de código abierto (incorporada en Berlín en 2012). El principal proyecto de la fundación es LibreOffice, un sucesor de OpenOffice.org (comúnmente conocido como OpenOffice), como puedes ver en esta línea de tiempo.

Es compatible con los formatos de documentos de Microsoft Office. Sus aplicaciones principales, separadas por finalidad son:

LibreOffice es software libre, bajo licencia LGPLv3. La mayoría de las distribuciones Linux lo ha adoptado de manera predeterminada.

Aplicaciones para la Web

Para la mayoría de los usuarios, el propósito principal de una computadora es utilizar Internet. Hoy en día, las páginas de Internet pueden sustituir a varias aplicaciones, con la ventaja de que se puede acceder a ellas desde cualquier lugar, sin necesidad de instalar nuevos programas. Este hecho hizo del navegador la principal aplicación del sistema operativo.

Los principales navegadores de Internet en el entorno Linux son Google Chrome y Mozilla Firefox. Chrome es un navegador proporcionado por Google, pero está basado en el navegador de código abierto Chromium, que se puede instalar desde el gestor de paquetes de su distribución y es totalmente compatible con Chrome. Mantenido por Mozilla, una fundación sin ánimo de lucro, los orígenes de Firefox se remontan al precursor Netscape, habiendo sido desarrollado a partir de la liberación del código fuente de éste. Desde entonces, los desarrolladores de Mozilla Firefox han participado activamente en el desarrollo de estándares abiertos y nuevas tecnologías de Internet esenciales para la Web moderna.

MDN Web Docs

Una de las mejores fuentes para aprender a desarrollar aplicaciones para Internet es MDN Web Docs. Mantenido por Mozilla, el sitio contiene materiales de referencia y tutoriales para principiantes que cubren todas las tecnologías utilizadas en la Web. Es una fuente de referencia para todos los niveles de desarrolladores.

Además de Firefox, Mozilla desarrolla otras aplicaciones, como Thunderbird, un cliente de correo electrónico. Con el aumento del webmail, el uso de clientes de correo electrónico ha disminuido, pero muchos optan por utilizarlos debido a las características adicionales y a la integración con otras aplicaciones.

Multimedia

A pesar del avance de las aplicaciones Web, muchas tareas todavía requieren aplicaciones tradicionales. Este es el caso de las aplicaciones utilizadas para trabajar con contenidos multimedia, como imágenes, audio y vídeo.

Algunas de las aplicaciones multimedia de código abierto más populares son:

Además de los editores multimedia, la mayoría de los usuarios necesitan un buen reproductor de música y vídeo. Para el vídeo, los más populares son VLC y smplayer. Para música, hay muchas opciones como Audacious, Banshee y Amarok.

Programas para Servidores

Cuando una computadora abre una página de Internet, en realidad establece una conexión con otra computadora y le solicita cierta información. En este caso, la primer computadora se llama cliente y la segunda servidor.

La computadora servidor, que puede ser un equipo especial o una computadora doméstica, necesita programas específicos para cada tipo de información que proporcione. En el caso de las páginas de Internet, la mayoría de los servidores de todo el mundo utilizan programas de código abierto. Este tipo de servidor se llama servidor HTTP (Hyper Text Transfer Protocol), y los servidores HTTP de código abierto más populares son Apache, Nginx y lighttpd.

Además de las páginas web, los programas de servidor pueden proporcionar a los clientes varios tipos de información. También es común que los programas de servidor se comuniquen con otros programas de servidor. Este es el caso de los programas de servidor HTTP y de los programas de servidor de base de datos.

Base de Datos

Una base de datos es un conjunto organizado de información. Un programa de servidor de base de datos almacena el contenido en formatos que le permiten consultar, almacenar y relacionar rápidamente un gran volumen de información.

Cuando se accede a una página de Internet, el servidor HTTP identifica cuál era la dirección solicitada, consulta en la base de datos todos los textos, imágenes y otra información relacionada con esa dirección y envía esta información al programa cliente (en este caso, un navegador como Firefox). Del mismo modo, cuando un usuario se registra en Internet, el servidor HTTP recoge esta información enviada por el cliente y la almacena en una base de datos.

Los programas open source database servers son ampliamente utilizados, especialmente las llamadas bases de datos relacionales. Tanto en Internet como en otras aplicaciones, dos de las bases de datos relacionales más utilizadas son MySQL (que está siendo reemplazada por MariaDB) y PostgreSQL.

Intercambio de datos

Existen otros tipos de comunicación entre computadoras además del modelo cliente/servidor. En algunas redes locales, como oficinas y hogares, es conveniente que las computadoras actúen por momentos como servidores, y por otros como clientes.

Esto es necesario cuando se desea acceder a los archivos desde otra computadora dentro de la red, por ejemplo, entre un equipo portátil y uno de sobremesa, sin necesidad de copiar los archivos en un medio intermedio, como llaveros USB o CD/DVD.

Entre computadoras Linux, se acostumbra a compartir archivos y espacio en disco con NFS (Network File System, Sistema de Archivos de Red). NFS es el mecanismo estándar para compartir archivos en entornos tipo Unix.

Si hay computadoras en la red con otros sistemas operativos, es más conveniente utilizar una comunicación que sea común para todos. En Linux, esto se consigue usando Samba. Además de poder acceder a los archivos o al espacio desde entornos Windows, Samba puede simular un servidor de archivos de este tipo, permitiendo compartir para computadoras con Windows u otras computadoras Linux con Samba.

Otros tipos de comunicación entre dos computadoras son los que necesitan ser intermediadas por un tercero. Es el caso del correo electrónico. Cuando se envía un correo electrónico, el mensaje se almacena en un servidor hasta que el usuario destinatario accede a él para leer el mensaje. Este proceso tiene la ventaja de eliminar la necesidad de que las computadoras del remitente y del destinatario estén disponibles al mismo tiempo, además de permitir la comunicación entre computadoras que no están conectados directamente en la misma red. El principal programa servidor de correo de código abierto es Postfix, uno de los más utilizados en el mundo.

Cuando el objetivo es implementar la modalidad de computación en la nube, que agrega varias funciones de almacenamiento y compartición remota, existen opciones como Nextcloud. Ofrece soluciones similares a servicios como Google Drive o Dropbox. Sin embargo, a diferencia de ellos, es posible instalar Nextcloud en un servidor en particular, evitando almacenar datos sensibles en servidores de terceros. La instalación se realiza en un servidor web convencional, como Apache. Además del recurso de compartir archivos, pueden ofrecer otros recursos disponibles en forma de complementos que pueden ser activados o desactivados según las necesidades.

También hay programas de servidor de muchos otros tipos, cada uno para propósitos muy específicos. En organizaciones muy grandes, se puede utilizar un servidor que proporciona información para la identificación de empleados o contactos de proveedores. Este tipo de información puede ser enviada a los programas cliente por un servidor llamado OpenLDAP. OpenLDAP es un servidor de código abierto para el protocolo llamado Lightweight Directory Access Protocol.

Administración de Redes

Tanto los programas cliente como los programas servidor requieren que la conexión de red funcione sin problemas. Para este propósito, hay programas del sistema operativo que trabajan para establecer y mantener la conexión de red. Dos servicios esenciales para el funcionamiento de la red son DHCP (Dynamic Host Configuration Protocol) y DNS (Domain Name Server). El primero, DHCP, es responsable de establecer automáticamente la conexión tan pronto como se inserte un cable de red o se acceda a una red inalámbrica. El segundo, DNS, es responsable de traducir un nombre como www.lpi.org en un número de identificación (número IP) que será utilizado por el cliente para localizar el servidor y establecer la conexión.

Lenguajes de programación

Todos los programas, ya sean servidores, clientes, aplicaciones y el propio sistema operativo, se realizan utilizando uno o más lenguajes de programación. Los programas también son archivos, pero el sistema operativo los trata como una secuencia de instrucciones y condiciones que deben cumplir el procesador y otros dispositivos.

Hay muchos lenguajes de programación. Una de las mayores virtudes de Linux es ofrecer programas para aprender y desarrollar prácticamente cualquier lenguaje de programación. Algunos de los lenguajes más populares son:

Antes de convertirse en un programa, cada programa es un archivo de texto, llamado código fuente. En lenguajes compilados -- como C y Java -- el código fuente debe ser previamente convertido en un archivo binario para poder ser usado. Esta operación la realiza el programa compilador.

En lenguajes interpretados, como JavaScript, Perl, Python y PHP, el programa no necesita ser compilado previamente, lo que facilita su desarrollo y modificación. Debido a que se convierte a instrucciones binarias cada vez que se ejecuta, un programa de lenguaje interpretado tiende a ser más lento que su equivalente en lenguaje compilado.

1.3: Entendiendo el Software de Código Abierto y sus Licencias

Peso: 1

El modelo de negocio con programas de código abierto puede plantear algunas dudas porque es diferente del modelo de venta de copias con restricciones. Muchos consumidores de software están tan acostumbrados a la idea de comprar una copia para poder usar un programa que les resulta difícil entender otras formas de comercio.

Al comprar una licencia de uso de programas de código cerrado (también chamado código privativo), el usuario tiene permiso de utilizar una copia de programa pero no tiene acceso a su código fuente. El fabricante toma esa actitud para incorporar mecanismos de protección contra copias ilegales y para esconder de sus competidores la manera en que su programa funciona internamente.

Es posible que este procedimiento no suponga una gran diferencia para un usuario normal. Para una empresa de tecnología, un profesional de la informática o un investigador, puede suponer grandes perjuicios.

Los defensores del código abierto creen que el acceso universal al código fuente del programa es esencial. Al igual que en el conocimiento científico, creen que el avance tecnológico es mucho mayor cuando los expertos analizan y enfrentan diferentes métodos y enfoques a un problema. Además de la apertura del código, los estándares abiertos se formulan para asegurar que cualquier parte interesada capaz pueda seguir, intervenir e incluso crear sus propias soluciones.

Nombres

No todos los programas de código abierto son libres y no todos los programas libres son de código abierto. Los términos Software Libre y Código Abierto se utilizan para designar programas cuyo código fuente puede ser estudiado, modificado y compartido sin restricciones. En inglés, la ambigüedad del término Free Software -que puede entenderse como software libre y como software gratuito- puede llevar a la conclusión de que se trata simplemente de programas que pueden obtenerse gratuitamente. Aunque a menudo aplicable, esta percepción oculta los principales aspectos del código abierto. Por otro lado, la expresión código abierto transmite la idea de acceso al funcionamiento interno, pero no tanto sobre su modificación y compartición.

Hay otros términos que pretenden ser más didácticos. De la unión del término software libre y el código abierto surgió FOSS: Free Open Source Software, o Software Libre de Código Abierto. Para reducir la ambigüedad de free, también se utiliza el término FLOSS: Free/Libre Open Source Software. Este último se usa más comúnmente cuando se quiere enfatizar la gratuidad y la libertad de estudiar, modificar y compartir. A lo largo de este texto se utiliza el término código abierto para designar a FOSS y FLOSS.

Modelo de Negocios

Si en el código abierto no existe necesariamente la venta de copias de los programas compilados, la empresa o el profesional es remunerado de otras maneras. Algunas de ellas son:

Además de estas opciones, no se impide que un proveedor cobre por la organización y compilación de programas en un CD, por ejemplo. Sin embargo, es posible que también se le pida que proporcione los códigos fuente de los programas. Este factor será determinado por el tipo de licencia utilizada por el programa en cuestión.

Licencias

En términos generales, un programa de código abierto es aquel que tiene código fuente disponible sin restricciones. Sin embargo, hay diferencias en cuanto a lo que es o deja de ser una restricción. ¿Es posible que un programa esté en parte cerrado y en parte abierto? ¿Puede el creador de programas impedir que su código se utilice para ciertos fines? Estas preguntas se definen en la licencia adoptada por el programa.

Los gobiernos, las empresas y los usuarios necesitan tener seguridad contractual sobre la tecnología que adoptan. Tanto el cliente como el proveedor pueden resultar perjudicados si las reglas de adquisición y uso no están claras. Los modos de licencia más antiguos no son adecuados.

Una patente favorece económicamente al programador, pero impide la mejora y el intercambio de tecnología. Otras formas de propiedad intelectual, como las marcas registradas y los derechos de autor (copyright), garantizan la autoría y las estrategias de comercialización, pero no responden por sí solas a las peculiaridades del código abierto. Se desarrollaron y se siguen desarrollando licencias específicas para este nuevo modelo de producción.

Licencias GNU

La licencia de código abierto más tradicional es la GPL: GNU General Public License. Como su nombre indica, esta licencia está directamente relacionada con el proyecto GNU, pero puede ser usada por cualquier proyecto de código abierto. La GPL gira en torno a cuatro libertades principales:

Esta última libertad está asociada al concepto de copyleft. Es decir, el programa tiene copyright inverso. En lugar de limitar el uso del código fuente, el desarrollador es libre de mantener el código abierto. Específicamente en el caso de la licencia GPL, el desarrollador puede usar y distribuir software basado en código GPL sólo si ese código modificado también está licenciado bajo la GPL. Para la Free Software Foundation, esta característica define si un programa de código abierto puede ser llamado software libre.

Free Software Foundation

El proyecto GNU y sus subproyectos son mantenidos por la Free Software Foundation, o simplemente FSF. La FSF es una organización sin ánimo de lucro que promueve la libertad de los usuarios de ordenadores y la defensa de los derechos de los usuarios de software libre.

La licencia GPL completa puede obtenerse en http://www.gnu.org/licenses/gpl.html. La Free Software Foundation también ofrece otros tipos de licencias libres:

Las licencias de GNU no son las únicas licencias de código abierto. Al igual que la Free Software Foundation, la Open Source Initiative es una organización sin ánimo de lucro que promueve la difusión del código abierto. Mientras que la FSF es menos flexible en cuanto al concepto de código libre y publica su propia licencia, la Open Source Initiative busca difundir todo tipo de programas no privativos.

Open Source Initiative

El objetivo principal de la Open Source Initiative (o simplemente OSI) es publicar la definición formal de código abierto. En resumen, el código abierto es el código fuente que puede ser utilizado, modificado y compartido sin restricciones. OSI no publica licencias, pero evalúa las licencias disponibles y las aprueba o desaprueba como licencias de código abierto. Según OSI, la GPL en sí misma es una auténtica licencia de código abierto.

Para que una licencia sea aprobada por la OSI, debe cumplir con los criterios específicos de la definición de código abierto mantenida por la OSI. Ellos son:

  1. Distribución Libre. La licencia no puede restringir a ninguna de las partes de vender o dar el programa como un componente de una selección de programas de diferentes fuentes. La licencia no puede requerir el pago de una regalía u otra tarifa por la venta.

  2. Código Fuente. El programa debe incluir el código fuente, y debe permitir la distribución tanto en código fuente como en formato compilado. En caso de que el código fuente no acompañe al producto, deberá disponerse de medios suficientes para obtenerlo, preferentemente cobrando no más que su costo de reproducción o copiando a través de Internet sin costo adicional.

  3. Trabajos Derivados. La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que sean distribuidos bajo los mismos términos que la licencia original.

  4. Integridad de Código Fuente del Autor. La licencia puede impedir la distribución de código fuente modificado sólo si permite la distribución de archivos de parches con el fin de modificar el programa durante la compilación. La licencia debe permitir explícitamente la distribución de programas compilados a partir de código fuente modificado. La licencia puede requerir que las obras derivadas tengan un nombre o una versión diferente a la original.

  5. Sin Discriminación Contra Personas o Grupos. La licencia no puede discriminar a ninguna persona o grupo de personas.

  6. Sin Discriminación Contra Campos de Acción. La licencia no puede impedir el uso del programa en ciertos campos de actividad. Por ejemplo, no puede impedir que el programa sea utilizado en un negocio o en investigación genética.

  7. La licencia no puede impedir el uso de un programa en ciertos campos de actividad. Por ejemplo, no puede impedir que el programa sea utilizado en un negocio o en investigación genética.
  8. Distribución de licencias. Las reglas adjuntas al programa se aplican a quienquiera que se redistribuya el programa, sin necesidad de utilizar una licencia adicional para esas partes.

  9. La licencia puede no ser específica del producto. Las reglas asignadas al programa no pueden depender de su vínculo con una distribución en particular. Si el programa se extrae de la distribución y se utiliza o distribuye dentro de los términos de su licencia, todas las partes a las que se redistribuya el tendrán los mismos derechos que la licencia original del programa.

  10. La licencia no puede restringir otros programas. La licencia no puede imponer restricciones a otros programas distribuidos con el programa licenciado. Por ejemplo, la licencia puede no requerir que todos los programas distribuidos en el mismo medio sean de código abierto.

  11. La licencia debe ser tecnológicamente neutra. Ninguna disposición de la licencia puede estar asociada a una tecnología o modalidad de interfaz en particular..

Estos son los criterios para que una licencia se llame de código abierto. Por lo tanto, no todos los programas que ofrecen algún tipo de acceso a su código fuente pueden ser llamados de código abierto. Existen muchas licencias aprobadas, entre las que destacan:

Mientras que algunas licencias, como la GPL, prohíben que el programa sea modificado y redistribuido sin que el usuario tenga acceso al código fuente, otras no son tan estrictas. Un programa con una licencia BSD, por ejemplo, puede ser modificado y redistribuido sin el código fuente siempre y cuando la licencia BSD original sea abandonada.

Todas las licencias de código abierto aprobadas por la Open Source Initiative se pueden encontrar en http://opensource.org/licenses.

Otras Licencias

La cultura del trabajo colaborativo se ha expandido más allá del desarrollo tecnológico. Hoy en día, es común que los textos originales, obras de arte y otras obras se publiquen con licencias libres. Se destacan las licencias Creative Commons, que permiten al autor decidir cómo se puede utilizar su obra, si se podrá modificar y compartir.

1.4: Habilidades en TIC y Trabajo en Linux

Peso: 2

A menos que vivas en una comunidad extremadamente aislada, las Tecnologías de la Información y la Comunicación (TIC) están presentes en todos los aspectos de la vida de una persona: desde el ocio hasta el trabajo, es difícil localizar una actividad que no implique directa o indirectamente el uso de un recurso informático.

Dado que la presencia de la tecnología es irrevocable, es importante saber más sobre ella. Si esta recomendación es válida para cualquier persona, se convierte en un requisito cuando se trata de un profesional de las TIC.

La  Computadora

Aunque la tecnología está tan cerca, su complejidad y diversidad pueden dificultar la comprensión de conceptos importantes. El concepto mismo de computador ha sufrido muchas transformaciones a lo largo de las décadas. A principios del siglo XX, el computador era la persona encargada de calcular y revisar largas series de operaciones matemáticas, para los más diversos fines. En ese momento, el matemático inglés Alan Turing desarrolló la idea de una máquina que pudiera realizar el trabajo de un computador.

El concepto, de forma simplificada, proponía la idea de una máquina capaz de leer los valores y las operaciones a realizar con ellos. Estos valores y operaciones se guardarían secuencialmente, como agujeros en una cinta. Los agujeros y su ausencia formarían un patrón binario de representación numérica, permitiendo que la computadora se ocupe de toda la información que pueda ser expresada numéricamente.

La aguja que lee los valores y las operaciones de los agujeros en la cinta es responsable de cambiar la operación y copiar los valores a los registros del procesador, que realiza la operación. El resultado de la operación se almacena como agujeros en el siguiente espacio vacío de la cinta, que a su vez puede ser utilizado en una nueva operación.

Tal concepto puede ser aplicado en un mecanismo puramente mecánico, pero a medida que la complejidad aumenta, su construcción se vuelve inviable. El avance de la electrónica y de los chips, pequeños conjuntos de transistores utilizados para realizar operaciones lógicas, ha hecho posible el desarrollo de procesadores muy complejos y rápidos. Otros dispositivos electrónicos, como las RAM y los discos rígidos, realizan la función de la cinta perforada. El concepto de la máquina Turing sigue siendo el mismo en las computadoras modernas, que ahora funcionan con señales electrónicas y medios magnéticos y ópticos.

El inconveniente es que, a medida que aumenta la versatilidad y los componentes informáticos, su funcionamiento se vuelve más complejo. Por eso también es importante elaborar medios para que esta operación sea más accesible.

Computación Personal

Durante mucho tiempo, las computadoras estuvieron restringidas a grandes empresas e instituciones de investigación. A partir de finales de los años setenta, se empezaron a fabricar equipos domésticos y surgió el usuario común.

El usuario común, aunque no entienda el funcionamiento de una computadora en su totalidad, es capaz de interactuar con ella si hay un conjunto simplificado de instrucciones de funcionamiento.

Interactuar con la computadora

Este conjunto simplificado de instrucciones se denomina interfaz de computadora/usuario o simplemente interfaz. La interfaz traduce la solicitud realizada por el usuario a la computadora, que a su vez genera información que será traducida por la interfaz que se presentará al usuario.

Hay muchos tipos de interfaz de usuario. En una de sus formas más simples, la entrada de información se puede realizar mediante un panel con algunos botones y el resultado del cálculo se visualiza con luces intermitentes. Por otro lado, ya son comunes las interfaces que identifican los movimientos sutiles del usuario y muestran imágenes sofisticadas en pantallas de alta resolución.

De las muchas interfaces ya creadas, quizás la más consolidada es la interfaz de texto. Aunque muchos usuarios están más acostumbrados a usar un puntero controlado por un ratón sobre las ilustraciones que aparecen en la pantalla, la interfaz de texto es ampliamente utilizada por los profesionales en el universo Unix y otros sistemas operativos.

Terminal

La interfaz de texto se denomina terminal o consola. Estos nombres provienen de la época en que se utilizaba un dispositivo llamado terminal, que se conectaba a la computadora para operarla. La consola era una simple pantalla que mostraba información de texto sobre la computadora. También es común referirse a la interfaz de texto como línea de comandos.

Hoy en día, existe un programa llamado emulador de terminal que puede ser utilizado para trabajar la línea de comandos. Los diferentes entornos gráficos de escritorio ofrecen varias opciones de emuladores de terminal, como Konsole, Gnome Terminal o xterm. Otra posibilidad es cambiar a la consola de texto que le permite acceder a la línea de comandos, utilizando la combinación de teclas Ctrl + Alt + F2. La principal ventaja de la línea de comandos es su simplicidad y versatilidad. También son más sencillos desde el punto de vista del uso de los recursos de hardware, ya que se necesitan muchos menos niveles de traducción entre los comandos de texto y las instrucciones entendidas por la computadora. Aunque al principio parezca contradictorio, la línea de comandos puede ser más versátil que una aplicación gráfica. Los comandos pueden combinarse entre sí, permitiendo un control preciso y la producción de resultados elaborados.

Estas características hacen de la línea de comandos una buena interfaz para un usuario profesional. Mientras que una interfaz gráfica requiere un número de programas adicionales y equipos más complejos, la consola es parte de cada sistema operativo Unix y puede ser utilizada incluso cuando una interfaz gráfica no está disponible.

Contudo, existem tarefas onde aplicativos em interfaces gráficas são mais apropriados. É o caso de navegador de Internet, que hoje é uma das principais interfaces de operación de um computador. As páginas de Internet muitas vezes funcionam como aplicativos, num ambiente chamado Plataforma Web.

Sin embargo, hay tareas en las que las aplicaciones en interfaces gráficas son más apropiadas. Es el caso del navegador de Internet, que hoy en día es una de las principales interfaces de funcionamiento de un ordenador. Las páginas de Internet suelen funcionar como aplicaciones, en un entorno llamado Plataforma Web.

La plataforma Web

Muchas actividades personales y profesionales se realizan en el navegador. A pesar de la practicidad, se debe tener cierto cuidado al utilizar este entorno. Los principales navegadores ofrecen características para preservar la seguridad y privacidad del usuario.

Seguridad

Cuando se utiliza cualquier tipo de comunicación de red, siempre existe la posibilidad de que la información transmitida y recibida sea interceptada. Para evitar que un interceptor pueda leer la información, es importante verificar que el navegador esté utilizando el protocolo HTTPS. Siempre que se transmita información confidencial, como contraseñas y otros datos personales, el término https:// debe aparecer junto a la dirección de la página. Así, la información será encriptada y sólo el origen y el destino de la comunicación podrán leer la información.

La encriptación prácticamente elimina la posibilidad de que una contraseña o cualquier otra información sensible sea interceptada. Aún así, existe la posibilidad de que las contraseñas sean robadas al descifrar algoritmos obsoletos o al almacenar incorrectamente las contraseñas en el proveedor del servicio. Para mitigar los daños en caso de robo de la contraseña, se recomienda utilizar una contraseña diferente para cada servicio. De esta manera, la contraseña robada sólo se puede utilizar en la cuenta comprometida. El administrador de contraseñas en los navegadores modernos almacena las diferentes contraseñas de forma segura, pero es muy importante que la contraseña maestra de estos administradores sea fuerte, preferiblemente de más de 15 caracteres, que contenga letras, números y otros símbolos y no se comparta ni almacene en ningún medio inseguro.

Privacidad

Además de los ataques por interceptación, es posible que otra persona con acceso a la computadora pueda obtener la información de otros usuarios que han utilizado el navegador. Para evitar que el navegador conserve información como datos personales, contraseñas, historial de visitas, etc., se recomienda utilizar el modo de navegación privada. Este recurso, disponible en todos los navegadores modernos, es indispensable cuando se utiliza la computadora de otra persona o una de uso público.

Las ventanas en modo privado tampoco almacenan cookies de forma persistente. Las cookies son pequeños marcadores que el servidor web utiliza para identificar cada navegador individualmente. Si bien las cookies son útiles para ciertos fines, como la conservación de una cesta de compra en una tienda en línea o el almacenamiento de las preferencias del usuario, también pueden utilizarse para identificar y controlar al usuario sin su consentimiento.

Además de la informática personal, otros conceptos relacionados con las Tecnologías de la Información y la Comunicación deben ser considerados por un profesional en la materia. Antes de la informática personal, la informática corporativa tiene sus propias características y requiere más conocimientos.

Computación corporativa

Para un profesional de las TIC, no basta con elegir los equipos y programas que satisfacen sus necesidades personales, sino los que satisfacen las necesidades de su actividad profesional o de la empresa para la que trabaja.

En una computadora personal, además de ser deseable que los equipos y programas no presenten fallas, también es deseable que estén actualizados con los últimos recursos. Distribuciones como Linux Mint y Fedora buscan ofrecer las últimas versiones de los programas en sus paquetes. Sin embargo, muchas de las nuevas características no han sido probadas exhaustivamente, y pueden causar cierta inestabilidad que será corregida tan pronto como sea detectada.

En una computadora corporativa, también se desea que las últimas características estén presentes. Sin embargo, las inestabilidades deben ser completamente rechazadas. Por ejemplo, la inestabilidad que hace que un servidor sea inaccesible, incluso por unos momentos, puede causar grandes daños.

Es para este tipo de uso que existen las llamadas distribuciones corporativas. En estas distribuciones, como Debian, CentOS y Ubuntu Server, sólo hay programas probados a fondo, que prácticamente eliminan la aparición de fallos.

Además de la posibilidad de implementar una solución interna para las necesidades de la empresa o entidad, el profesional de las TIC puede transferir la carga de la operación de la infraestructura de TI a un proveedor externo, que muy probablemente empleará las mismas distribuciones corporativas que se utilizarían internamente, pero en sus propios servidores remotos. Este equipo es generalmente más eficiente que el que una pequeña y mediana empresa podría mantener. Este tipo de proveedor de servicios TIC, al que a menudo se hace referencia como proveedor de servicios en la nube, suele ofrecer diferentes niveles de servicio:

Una de las ventajas que ofrece un proveedor de computación en la nube es la escalabilidad del servicio bajo demanda. Si es necesario, se puede pedir al proveedor que aumente o reduzca la capacidad contratada. Esto es posible porque los servicios en la nube suelen utilizar tecnologías de virtualización que permiten una asignación dinámica de recursos. Muchos proveedores de computación en la nube emplean tecnologías de virtualización ofrecidas por el propio Linux, como KVM o Xen.

Virtualización

La virtualización es la capacidad de ejecutar simultáneamente más de un sistema operativo en el mismo equipo. Esta característica permite un mejor uso de los recursos de hardware en máquinas grandes. Incluso si se ejecutan en la misma máquina, los sistemas virtualizados son completamente independientes entre sí y tienen los mismos propósitos y modos de uso de un sistema tradicional no virtualizado.

Las soluciones de código abierto son muy diversas y versátiles, pero pueden no ser la respuesta a todas las preguntas. Ciertas necesidades exigen sistemas operativos o programas privativos, que no tienen equivalente en código abierto. La ausencia de pago por parte del programa no implica que no habrá otros costos. Además del costo de implementación, es probable que se requiera apoyo, mantenimiento y capacitación. Sólo un estudio de caso puede definir la opción más apropiada.