+ All Categories
Home > Software > Software libre.

Software libre.

Date post: 13-Aug-2015
Category:
Upload: anadeboramoran
View: 73 times
Download: 0 times
Share this document with a friend
Popular Tags:
60
Software Libre Para una sociedad libre
Transcript

Software LibrePara una sociedad libre

Índice general

1 Software 11.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Definición de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Clasificación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Proceso de creación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.4.1 Modelos de proceso o ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4.2 Etapas en el desarrollo del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.5 Carácter evolutivo del software[17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.6.1 Modelos de ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.8.1 Libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.8.2 Artículos y revistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.9 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 Software libre 172.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Las cuatro libertades del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2.1 Formatos abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Tipos de licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3.1 Licencias GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.2 Licencias AGPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.3 Licencias estilo BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.4 Licencias estilo MPL y derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.5 Copyleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4 Comparación con el software de código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5 Implicaciones económico-políticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5.1 Modelo de negocio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6 Seguridad relativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7 Software libre en la Administración Pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.8 Ventajas del Software libre en la educación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.9 Motivaciones del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

i

ii ÍNDICE GENERAL

2.10 Regulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.1 Argentina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.2 Bolivia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.3 Ecuador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.4 España . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.5 Uruguay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10.6 Venezuela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.11 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.12 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.13 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Código abierto 263.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2 Cronología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.3 Movimiento del “código abierto” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.4 Programas en código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.5 Extensiones del concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.7 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4 Proyecto GNU 294.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3 Programas desarrollados por GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.4 Distribuciones de GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.5 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.7 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5 Software propietario 325.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.1.1 Software propietario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.2 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.3 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.4 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.5 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6 Código cerrado 356.1 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

7 Freeware 367.1 Confusiones entre licencias y versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

ÍNDICE GENERAL iii

7.2 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.3 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.4 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

8 Núcleo Linux 378.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378.2 Aspectos técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

8.2.1 Arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388.2.2 Jerarquía de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398.2.3 Kernel panic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398.2.4 Lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398.2.5 Portabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.2.6 Arquitectura de máquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.2.7 Formatos binarios soportados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

8.3 Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.3.1 Numeración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408.3.2 Fechas de publicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.3.3 Top 10 desarrolladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.3.4 Línea de tiempo del Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

8.4 Distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.5 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428.6 Marca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428.7 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8.7.1 Soporte de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428.7.2 Arquitectura monolítica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8.8 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438.9 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438.10 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

9 Microsoft Windows 459.1 Versiones más utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

9.2.1 Versiones BETA de Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469.2.2 Historial de lanzamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

9.3 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479.3.1 Windows Defender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479.3.2 Permisos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

9.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479.5 Críticas y polémicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

iv ÍNDICE GENERAL

9.9 Texto e imágenes de origen, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . . . 519.9.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519.9.2 Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539.9.3 Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Capítulo 1

Software

Software

Dentro de la categoría de software de aplicación estánincluidos los procesadores de texto como LibreOfficeWriter (arriba) y los editores gráficos rasterizados comoKrita (abajo).

Se conoce como software[1] al equipamiento lógico osoporte lógico de un sistema informático, que comprendeel conjunto de los componentes lógicos necesarios quehacen posible la realización de tareas específicas, en con-traposición a los componentes físicos que son llamadoshardware.Los componentes lógicos incluyen, entre muchos otros,

las aplicaciones informáticas; tales como el procesador detexto, que permite al usuario realizar todas las tareas con-cernientes a la edición de textos; el llamado software desistema, tal como el sistema operativo, que básicamentepermite al resto de los programas funcionar adecuada-mente, facilitando también la interacción entre los com-ponentes físicos y el resto de las aplicaciones, y propor-cionando una interfaz con el usuario.El anglicismo “software” es el más ampliamente difundi-do al referirse a este concepto, especialmente en la jergatécnica; en tanto que el término sinónimo «logicial», deri-vado del término francés logiciel, es utilizado mayormen-te en países y zonas de influencia francesa. Su abreviaturaes Sw.

1.1 Etimología

Software (pronunciación AFI:[ˈsɒftwɛəʳ]) es una palabraproveniente del inglés (literalmente: partes blandas o sua-ves), que en español no posee una traducción adecuadaal contexto, por lo cual se la utiliza asiduamente sin tra-ducir y así fue admitida por la Real Academia Española(RAE).[2] Aunque puede no ser estrictamente lo mismo,suele sustituirse por expresiones tales como programas(informáticos) o aplicaciones (informáticas) o soportes ló-gicos.[3]

Software es lo que se denomina producto en Ingeniería deSoftware.[4]

1.2 Definición de software

Existen varias definiciones similares aceptadas para soft-ware, pero probablemente la más formal sea la siguiente:

Es el conjunto de los programas de cómpu-to, procedimientos, reglas, documentacióny datos asociados, que forman parte de lasoperaciones de un sistema de computación.Extraído del estándar 729 del IEEE[5]

1

2 CAPÍTULO 1. SOFTWARE

Considerando esta definición, el concepto de software vamás allá de los programas de computación en sus distin-tos estados: código fuente, binario o ejecutable; tambiénsu documentación, los datos a procesar e incluso la in-formación de usuario forman parte del software: es decir,abarca todo lo intangible, todo lo «no físico» relacionado.El término «software» fue usado por primera vez en estesentido por John W. Tukey en 1957. En la ingeniería desoftware y las ciencias de la computación, el software estoda la información procesada por los sistemas informá-ticos: programas y datos.El concepto de leer diferentes secuencias de instrucciones(programa) desde la memoria de un dispositivo para con-trolar los cálculos fue introducido por Charles Babbagecomo parte de su máquina diferencial. La teoría que for-ma la base de la mayor parte del software moderno fuepropuesta por Alan Turing en su ensayo de 1936, «Losnúmeros computables», con una aplicación al problemade decisión.

1.3 Clasificación del software

Si bien esta distinción es, en cierto modo, arbitraria, y aveces confusa, a los fines prácticos se puede clasificar alsoftware en tres grandes tipos:

• Software de sistema: Su objetivo es desvincularadecuadamente al usuario y al programador de losdetalles del sistema informático en particular quese use, aislándolo especialmente del procesamien-to referido a las características internas de: memo-ria, discos, puertos y dispositivos de comunicacio-nes, impresoras, pantallas, teclados, etc. El softwa-re de sistema le procura al usuario y programadoradecuadas interfaces de alto nivel, controladores,herramientas y utilidades de apoyo que permitenel mantenimiento del sistema global. Incluye entreotros:

• Sistemas operativos• Controladores de dispositivos• Herramientas de diagnóstico• Herramientas de Corrección y Optimización• Servidores• Utilidades

• Software de programación: Es el conjunto de he-rramientas que permiten al programador desarrollarprogramas informáticos, usando diferentes alterna-tivas y lenguajes de programación, de una manerapráctica. Incluyen básicamente:

• Editores de texto• Compiladores• Intérpretes

• Enlazadores• Depuradores• Entornos de Desarrollo Integrados (IDE):Agrupan las anteriores herramientas, usual-mente en un entorno visual, de forma tal que elprogramador no necesite introducir múltiplescomandos para compilar, interpretar, depurar,etc. Habitualmente cuentan con una avanzadainterfaz gráfica de usuario (GUI).

• Software de aplicación: Es aquel que permite a losusuarios llevar a cabo una o varias tareas específicas,en cualquier campo de actividad susceptible de serautomatizado o asistido, con especial énfasis en losnegocios. Incluye entre muchos otros:

• Aplicaciones para Control de sistemas yautomatización industrial

• Aplicaciones ofimáticas• Software educativo• Software empresarial• Bases de datos• Telecomunicaciones (por ejemplo Internet ytoda su estructura lógica)

• Videojuegos• Software médico• Software de cálculo numérico y simbólico.• Software de diseño asistido (CAD)• Software de control numérico (CAM)

1.4 Proceso de creación del softwa-re

Se define como proceso al conjunto ordenado de pasos aseguir para llegar a la solución de un problema u obten-ción de un producto, en este caso particular, para lograrun producto software que resuelva un problema específi-co.El proceso de creación de software puede llegar a ser muycomplejo, dependiendo de su porte, características y cri-ticidad del mismo. Por ejemplo la creación de un sistemaoperativo es una tarea que requiere proyecto, gestión, nu-merosos recursos y todo un equipo disciplinado de traba-jo. En el otro extremo, si se trata de un sencillo programa(por ejemplo, la resolución de una ecuación de segundoorden), éste puede ser realizado por un solo programador(incluso aficionado) fácilmente. Es así que normalmentese dividen en tres categorías según su tamaño (líneas decódigo) o costo: de «pequeño», «mediano» y «gran porte».Existen varias metodologías para estimarlo, una de lasmás populares es el sistema COCOMO que provee mé-todos y un software (programa) que calcula y provee unaaproximación de todos los costos de producción en un

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 3

«proyecto software» (relación horas/hombre, costo mo-netario, cantidad de líneas fuente de acuerdo a lenguajeusado, etc.).Considerando los de gran porte, es necesario realizarcomplejas tareas, tanto técnicas como de gerencia, unafuerte gestión y análisis diversos (entre otras cosas), lacomplejidad de ello ha llevado a que desarrolle una in-geniería específica para tratar su estudio y realización: esconocida como Ingeniería de Software.En tanto que en los de mediano porte, pequeños equiposde trabajo (incluso un avezado analista-programador soli-tario) pueden realizar la tarea. Aunque, siempre en casosde mediano y gran porte (y a veces también en algunos depequeño porte, según su complejidad), se deben seguirciertas etapas que son necesarias para la construcción delsoftware. Tales etapas, si bien deben existir, son flexiblesen su forma de aplicación, de acuerdo a la metodología oproceso de desarrollo escogido y utilizado por el equipode desarrollo o por el analista-programador solitario (sifuere el caso).Los «procesos de desarrollo de software» poseen re-glas preestablecidas, y deben ser aplicados en la creacióndel software de mediano y gran porte, ya que en caso con-trario lo más seguro es que el proyecto no logre concluiro termine sin cumplir los objetivos previstos, y con varie-dad de fallos inaceptables (fracasan, en pocas palabras).Entre tales «procesos» los hay ágiles o livianos (ejemploXP), pesados y lentos (ejemplo RUP), y variantes inter-medias. Normalmente se aplican de acuerdo al tipo y por-te del software a desarrollar, a criterio del líder (si lo hay)del equipo de desarrollo. Algunos de esos procesos sonProgramación Extrema (en inglés eXtreme Programmingo XP), Proceso Unificado de Rational (en inglés RationalUnified Process o RUP), Feature Driven Development(FDD), etc.Cualquiera sea el «proceso» utilizado y aplicado al desa-rrollo del software (RUP, FDD, XP, etc), y casi indepen-dientemente de él, siempre se debe aplicar un «modelode ciclo de vida».[6]

Se estima que, del total de proyectos software grandesemprendidos, un 28% fracasan, un 46% caen en severasmodificaciones que lo retrasan y un 26% son totalmenteexitosos. [7]

Cuando un proyecto fracasa, rara vez es debido a fallastécnicas, la principal causa de fallos y fracasos es la fal-ta de aplicación de una buena metodología o proceso dedesarrollo. Entre otras, una fuerte tendencia, desde hacepocas décadas, es mejorar las metodologías o procesos dedesarrollo, o crear nuevas y concientizar a los profesiona-les de la informática a su utilización adecuada. Normal-mente los especialistas en el estudio y desarrollo de estasáreas (metodologías) y afines (tales como modelos y has-ta la gestión misma de los proyectos) son los ingenierosen software, es su orientación. Los especialistas en cual-quier otra área de desarrollo informático (analista, pro-gramador, Lic. en informática, ingeniero en informática,

ingeniero de sistemas, etc.) normalmente aplican sus co-nocimientos especializados pero utilizando modelos, pa-radigmas y procesos ya elaborados.Es común para el desarrollo de software de mediano por-te que los equipos humanos involucrados apliquen «me-todologías propias», normalmente un híbrido de los pro-cesos anteriores y a veces con criterios propios.El proceso de desarrollo puede involucrar numerosas yvariadas tareas,[6] desde lo administrativo, pasando porlo técnico y hasta la gestión y el gerenciamiento. Pero,casi rigurosamente, siempre se cumplen ciertas etapasmínimas; las que se pueden resumir como sigue:

• Captura, elicitación[8], especificación y análisis derequisitos (ERS)

• Diseño

• Codificación

• Pruebas (unitarias y de integración)

• Instalación y paso a producción

• Mantenimiento

En las anteriores etapas pueden variar ligeramente susnombres, o ser más globales, o contrariamente, ser másrefinadas; por ejemplo indicar como una única fase (a losfines documentales e interpretativos) de «análisis y dise-ño»; o indicar como «implementación» lo que está dichocomo «codificación»; pero en rigor, todas existen e inclu-yen, básicamente, las mismas tareas específicas.En el apartado 4 del presente artículo se brindan mayoresdetalles de cada una de las etapas indicadas.

1.4.1 Modelos de proceso o ciclo de vida

Para cada una de las fases o etapas listadas en el ítem an-terior, existen sub-etapas (o tareas). El modelo de procesoo modelo de ciclo de vida utilizado para el desarrollo, de-fine el orden de las tareas o actividades involucradas,[6]también define la coordinación entre ellas, y su enlace yrealimentación. Entre los más conocidos se puede men-cionar: modelo en cascada o secuencial, modelo espiral,modelo iterativo incremental. De los antedichos hay a suvez algunas variantes o alternativas, más o menos atrac-tivas según sea la aplicación requerida y sus requisitos.[7]

Modelo cascada

Este, aunque es más comúnmente conocido comomodeloen cascada es también llamado «modelo clásico», «mo-delo tradicional» o «modelo lineal secuencial».El modelo en cascada puro difícilmente se utiliza tal cual,pues esto implicaría un previo y absoluto conocimiento delos requisitos, la no volatilidad de los mismos (o rigidez)

4 CAPÍTULO 1. SOFTWARE

y etapas subsiguientes libres de errores; ello sólo podríaser aplicable a escasos y pequeños sistemas a desarrollar.En estas circunstancias, el paso de una etapa a otra de lasmencionadas sería sin retorno, por ejemplo pasar del di-seño a la codificación implicaría un diseño exacto y sinerrores ni probable modificación o evolución: «codifiquelo diseñado sin errores, no habrá en absoluto variantesfuturas». Esto es utópico; ya que intrínsecamente el soft-ware es de carácter evolutivo,[9] cambiante y difícilmentelibre de errores, tanto durante su desarrollo como durantesu vida operativa.[6]

Fig. 2 - Modelo cascada puro o secuencial para el ciclo de vidadel software.

Algún cambio durante la ejecución de una cualquiera delas etapas en este modelo secuencial implicaría reiniciardesde el principio todo el ciclo completo, lo cual redun-daría en altos costos de tiempo y desarrollo. La Figura 2muestra un posible esquema de el modelo en cuestión.[6]

Sin embargo, el modelo cascada en algunas de sus va-riantes es uno de los actualmente más utilizados,[10] porsu eficacia y simplicidad, más que nada en software depequeño y algunos de mediano porte; pero nunca (o muyrara vez) se lo usa en su “forma pura”, como se dijo an-teriormente. En lugar de ello, siempre se produce algu-na realimentación entre etapas, que no es completamentepredecible ni rígida; esto da oportunidad al desarrollo deproductos software en los cuales hay ciertas incertezas,cambios o evoluciones durante el ciclo de vida. Así porejemplo, una vez capturados y especificados los requisitos(primera etapa) se puede pasar al diseño del sistema, perodurante esta última fase lo más probable es que se debanrealizar ajustes en los requisitos (aunque sean mínimos),ya sea por fallas detectadas, ambigüedades o bien por quelos propios requisitos han cambiado o evolucionado; conlo cual se debe retornar a la primera o previa etapa, hacerlos reajuste pertinentes y luego continuar nuevamente conel diseño; esto último se conoce como realimentación. Lonormal en el modelo cascada será entonces la aplicacióndel mismo con sus etapas realimentadas de alguna forma,permitiendo retroceder de una a la anterior (e incluso po-der saltar a varias anteriores) si es requerido.De esta manera se obtiene el «modelo cascada realimen-tado», que puede ser esquematizado como lo ilustra laFigura 3.

Fig. 3 - Modelo cascada realimentado para el ciclo de vida.

Lo dicho es, a grandes rasgos, la forma y utilización deeste modelo, uno de los más usados y populares.[6] El mo-delo cascada realimentado resulta muy atractivo, hastaideal, si el proyecto presenta alta rigidez (pocos cambios,previsto no evolutivo), los requisitos son muy claros y es-tán correctamente especificados.[10]

Hay más variantes similares al modelo: refino de etapas(más etapas, menores y más específicas) o incluso mos-trar menos etapas de las indicadas, aunque en tal caso lafaltante estará dentro de alguna otra. El orden de esas fa-ses indicadas en el ítem previo es el lógico y adecuado,pero adviértase, como se dijo, que normalmente habrárealimentación hacia atrás.El modelo lineal o en cascada es el paradigma más anti-guo y extensamente utilizado, sin embargo las críticas aél (ver desventajas) han puesto en duda su eficacia. Pesea todo, tiene un lugar muy importante en la Ingeniería desoftware y continúa siendo el más utilizado; y siempre esmejor que un enfoque al azar.[10]

Desventajas del modelo cascada:[6]

• Los cambios introducidos durante el desarrollo pue-den confundir al equipo profesional en las etapastempranas del proyecto. Si los cambios se producenen etapa madura (codificación o prueba) pueden sercatastróficos para un proyecto grande.

• No es frecuente que el cliente o usuario final expli-cite clara y completamente los requisitos (etapa deinicio); y el modelo lineal lo requiere. La incerti-dumbre natural en los comienzos es luego difícil deacomodar.[10]

• El cliente debe tener paciencia ya que el software noestará disponible hasta muy avanzado el proyecto.Un error detectado por el cliente (en fase de opera-ción) puede ser desastroso, implicando reinicio delproyecto, con altos costos.

Modelos evolutivos

El software evoluciona con el tiempo.[11][9] Los requisi-tos del usuario y del producto suelen cambiar conforme

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 5

se desarrolla el mismo. Las fechas de mercado y la com-petencia hacen que no sea posible esperar a poner en elmercado un producto absolutamente completo, por lo quese aconsejable introducir una versión funcional limitadade alguna forma para aliviar las presiones competitivas.En esas u otras situaciones similares los desarrolladoresnecesitan modelos de progreso que estén diseñados paraacomodarse a una evolución temporal o progresiva, don-de los requisitos centrales son conocidos de antemano,aunque no estén bien definidos a nivel detalle.En el modelo cascada y cascada realimentado no setiene demasiado en cuenta la naturaleza evolutiva delsoftware,[11] se plantea como estático, con requisitos bienconocidos y definidos desde el inicio.[6]

Los evolutivos son modelos iterativos, permiten desarro-llar versiones cada vez más completas y complejas, hastallegar al objetivo final deseado; incluso evolucionar másallá, durante la fase de operación.Los modelos «iterativo incremental» y «espiral» (entreotros) son dos de los más conocidos y utilizados del tipoevolutivo.[10]

Modelo iterativo incremental En términos generales,se puede distinguir, en la Figura 4, los pasos generales quesigue el proceso de desarrollo de un producto software.En el modelo de ciclo de vida seleccionado, se identifi-can claramente dichos pasos. La descripción del sistemaes esencial para especificar y confeccionar los distintosincrementos hasta llegar al producto global y final. Lasactividades concurrentes (especificación, desarrollo y va-lidación) sintetizan el desarrollo pormenorizado de los in-crementos, que se hará posteriormente.

Fig. 4 - Diagrama genérico del desarrollo evolutivo incremental.

El diagrama de la Figura 4 muestra en forma muy esque-mática, el funcionamiento de un ciclo iterativo incremen-tal, el cual permite la entrega de versiones parciales a me-dida que se va construyendo el producto final.[6] Es decir,a medida que cada incremento definido llega a su etapade operación y mantenimiento. Cada versión emitida in-corpora a los anteriores incrementos las funcionalidadesy requisitos que fueron analizados como necesarios.El incremental es un modelo de tipo evolutivo que está ba-sado en varios ciclos CascadaRealimentados aplicados re-petidamente, con una filosofía iterativa.[10] En la Figura

5 se muestra un refino del diagrama previo, bajo un es-quema temporal, para obtener finalmente el esquema delmodelo de ciclo de vida Iterativo Incremental, con sus ac-tividades genéricas asociadas. Aquí se observa claramen-te cada ciclo cascada que es aplicado para la obtención deun incremento; estos últimos se van integrando para ob-tener el producto final completo. Cada incremento es unciclo Cascada Realimentado, aunque, por simplicidad, enla Figura 5 se muestra como secuencial puro.

Fig. 5 - Modelo iterativo incremental para el ciclo de vida delsoftware,.

Se observa que existen actividades de desarrollo (para ca-da incremento) que son realizadas en paralelo o concu-rrentemente, así por ejemplo, en la Figura, mientras serealiza el diseño detalle del primer incremento ya se estárealizando en análisis del segundo. La Figura 5 es sólo es-quemática, un incremento no necesariamente se iniciarádurante la fase de diseño del anterior, puede ser posterior(incluso antes), en cualquier tiempo de la etapa previa.Cada incremento concluye con la actividad de «opera-ción y mantenimiento» (indicada como «Operación» enla figura), que es donde se produce la entrega del produc-to parcial al cliente. El momento de inicio de cada in-cremento es dependiente de varios factores: tipo de siste-ma; independencia o dependencia entre incrementos (dosde ellos totalmente independientes pueden ser fácilmen-te iniciados al mismo tiempo si se dispone de personalsuficiente); capacidad y cantidad de profesionales involu-crados en el desarrollo; etc.Bajo este modelo se entrega software «por partes funcio-nales más pequeñas», pero reutilizables, llamadas incre-mentos. En general cada incremento se construye sobreaquel que ya fue entregado.[6]

Como se muestra en la Figura 5, se aplican secuenciasCascada en forma escalonada, mientras progresa el tiem-po calendario. Cada secuencia lineal o Cascada produ-ce un incremento y a menudo el primer incremento esun sistema básico, con muchas funciones suplementarias(conocidas o no) sin entregar.El cliente utiliza inicialmente ese sistema básico, inter-tanto, el resultado de su uso y evaluación puede aportaral plan para el desarrollo del/los siguientes incrementos(o versiones). Además también aportan a ese plan otrosfactores, como lo es la priorización (mayor o menor ur-gencia en la necesidad de cada incremento en particular)

6 CAPÍTULO 1. SOFTWARE

y la dependencia entre incrementos (o independencia).Luego de cada integración se entrega un producto conmayor funcionalidad que el previo. El proceso se repitehasta alcanzar el software final completo.Siendo iterativo, con el modelo incremental se entrega unproducto parcial pero completamente operacional en cadaincremento, y no una parte que sea usada para reajustar losrequisitos (como si ocurre en el modelo de construcciónde prototipos).[10]

El enfoque incremental resulta muy útil cuando se dispo-ne de baja dotación de personal para el desarrollo; tam-bién si no hay disponible fecha límite del proyecto por loque se entregan versiones incompletas pero que propor-cionan al usuario funcionalidad básica (y cada vez ma-yor). También es un modelo útil a los fines de versionesde evaluación.Nota: Puede ser considerado y útil, en cualquier momen-to o incremento incorporar temporalmente el paradigmaMCP como complemento, teniendo así una mixtura demodelos que mejoran el esquema y desarrollo general.Ejemplo:

Un procesador de texto que sea desarrolladobajo el paradigma Incremental podría aportar,en principio, funciones básicas de edición dearchivos y producción de documentos (algo co-mo un editor simple). En un segundo incre-mento se le podría agregar edición más sofisti-cada, y de generación y mezcla de documentos.En un tercer incremento podría considerarse elagregado de funciones de corrección ortográfi-ca, esquemas de paginado y plantillas; en uncuarto capacidades de dibujo propias y ecua-ciones matemáticas. Así sucesivamente hastallegar al procesador final requerido. Así, el pro-ducto va creciendo, acercándose a su meta fi-nal, pero desde la entrega del primer incremen-to ya es útil y funcional para el cliente, el cualobserva una respuesta rápida en cuanto a en-trega temprana; sin notar que la fecha límitedel proyecto puede no estar acotada ni tan de-finida, lo que da margen de operación y aliviapresiones al equipo de desarrollo.

Como se dijo, el Iterativo Incremental es un modelo deltipo evolutivo, es decir donde se permiten y esperan pro-bables cambios en los requisitos en tiempo de desarro-llo; se admite cierto margen para que el software puedaevolucionar.[9] Aplicable cuando los requisitos son me-dianamente bien conocidos pero no son completamenteestáticos y definidos, cuestión esa que si es indispensablepara poder utilizar un modelo Cascada.El modelo es aconsejable para el desarrollo de softwareen el cual se observe, en su etapa inicial de análisis, queposee áreas bastante bien definidas a cubrir, con suficien-te independencia como para ser desarrolladas en etapas

sucesivas. Tales áreas a cubrir suelen tener distintos gra-dos de apremio por lo cual las mismas se deben priorizaren un análisis previo, es decir, definir cual será la prime-ra, la segunda, y así sucesivamente; esto se conoce como«definición de los incrementos» con base en la prioriza-ción. Pueden no existir prioridades funcionales por partedel cliente, pero el desarrollador debe fijarlas de todosmodos y con algún criterio, ya que basándose en ellas sedesarrollarán y entregarán los distintos incrementos.El hecho de que existan incrementos funcionales del soft-ware lleva inmediatamente a pensar en un esquema dedesarrollo modular, por tanto este modelo facilita tal pa-radigma de diseño.En resumen, un modelo incremental lleva a pensar enun desarrollo modular, con entregas parciales del pro-ducto software denominados «incrementos» del sistema,que son escogidos según prioridades predefinidas de al-gún modo. El modelo permite una implementación conrefinamientos sucesivos (ampliación o mejora). Con ca-da incremento se agrega nueva funcionalidad o se cubrennuevos requisitos o bien se mejora la versión previamenteimplementada del producto software.Este modelo brinda cierta flexibilidad para que duran-te el desarrollo se incluyan cambios en los requisitospor parte del usuario, un cambio de requisitos propues-to y aprobado puede analizarse e implementarse comoun nuevo incremento o, eventualmente, podrá constituiruna mejora/adecuación de uno ya planeado. Aunque sise produce un cambio de requisitos por parte del clien-te que afecte incrementos previos ya terminados (detec-ción/incorporación tardía) se debe evaluar la factibilidady realizar un acuerdo con el cliente, ya que puede impactarfuertemente en los costos.

La selección de este modelo permite realizar entregasfuncionales tempranas al cliente (lo cual es beneficiosotanto para él como para el grupo de desarrollo). Se prio-rizan las entregas de aquellos módulos o incrementos enque surja la necesidad operativa de hacerlo, por ejemplopara cargas previas de información, indispensable paralos incrementos siguientes.[10]

El modelo iterativo incremental no obliga a especificarcon precisión y detalle absolutamente todo lo que el siste-ma debe hacer, (y cómo), antes de ser construido (comoel caso del cascada, con requisitos congelados). Sólo sehace en el incremento en desarrollo. Esto torna más ma-nejable el proceso y reduce el impacto en los costos. Estoes así, porque en caso de alterar o rehacer los requisitos,solo afecta una parte del sistema. Aunque, lógicamente,esta situación se agrava si se presenta en estado avanzado,es decir en los últimos incrementos. En definitiva, el mo-delo facilita la incorporación de nuevos requisitos duranteel desarrollo.

Con un paradigma incremental se reduce el tiempo dedesarrollo inicial, ya que se implementa funcionalidadparcial. También provee un impacto ventajoso frente alcliente, que es la entrega temprana de partes operativas

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 7

del software.El modelo proporciona todas las ventajas del modelo encascada realimentado, reduciendo sus desventajas sólo alámbito de cada incremento.El modelo incremental no es recomendable para casos desistemas de tiempo real, de alto nivel de seguridad, deprocesamiento distribuido, o de alto índice de riesgos.

Modelo espiral El modelo espiral fue propuesto ini-cialmente por Barry Boehm. Es un modelo evolutivo queconjuga la naturaleza iterativa del modelo MCP con losaspectos controlados y sistemáticos del Modelo Cascada.Proporciona potencial para desarrollo rápido de versio-nes incrementales. En el modelo Espiral el software seconstruye en una serie de versiones incrementales. En lasprimeras iteraciones la versión incremental podría ser unmodelo en papel o bien un prototipo. En las últimas ite-raciones se producen versiones cada vez más completasdel sistema diseñado.[6][10]

El modelo se divide en un número de Actividades de mar-co de trabajo, llamadas «regiones de tareas». En generalexisten entre tres y seis regiones de tareas (hay variantesdel modelo). En la Figura 6 se muestra el esquema de unModelo Espiral con 6 regiones. En este caso se explicauna variante del modelo original de Boehm, expuesto ensu tratado de 1988; en 1998 expuso un tratado más re-ciente.

Fig. 6 - Modelo espiral para el ciclo de vida del software.

Las regiones definidas en el modelo de la figura son:

• Región 1 - Tareas requeridas para establecer la co-municación entre el cliente y el desarrollador.

• Región 2 - Tareas inherentes a la definición de losrecursos, tiempo y otra información relacionada conel proyecto.

• Región 3 - Tareas necesarias para evaluar los riesgostécnicos y de gestión del proyecto.

• Región 4 - Tareas para construir una o más repre-sentaciones de la aplicación software.

• Región 5 - Tareas para construir la aplicación, ins-talarla, probarla y proporcionar soporte al usuario ocliente (Ej. documentación y práctica).

• Región 6 - Tareas para obtener la reacción del clien-te, según la evaluación de lo creado e instalado enlos ciclos anteriores.

Las actividades enunciadas para el marco de trabajo songenerales y se aplican a cualquier proyecto, grande, me-diano o pequeño, complejo o no. Las regiones que definenesas actividades comprenden un «conjunto de tareas» deltrabajo: ese conjunto sí se debe adaptar a las caracterís-ticas del proyecto en particular a emprender. Nótese quelo listado en los ítems de 1 a 6 son conjuntos de tareas,algunas de las ellas normalmente dependen del proyectoo desarrollo en si.Proyectos pequeños requieren baja cantidad de tareas ytambién de formalidad. En proyectos mayores o críticoscada región de tareas contiene labores de más alto nivelde formalidad. En cualquier caso se aplican actividadesde protección (por ejemplo, gestión de configuración delsoftware, garantía de calidad, etc.).Al inicio del ciclo, o proceso evolutivo, el equipo de in-geniería gira alrededor del espiral (metafóricamente ha-blando) comenzando por el centro (marcado con ๑ en laFigura 6) y en el sentido indicado; el primer circuito de laespiral puede producir el desarrollo de una especificacióndel producto; los pasos siguientes podrían generar unprototipo y progresivamente versiones más sofisticadasdel software.Cada paso por la región de planificación provoca ajustesen el plan del proyecto; el coste y planificación se reali-mentan en función de la evaluación del cliente. El gestorde proyectos debe ajustar el número de iteraciones reque-ridas para completar el desarrollo.El modelo espiral puede ir adaptándose y aplicarse a lolargo de todo el Ciclo de vida del software (en el mode-lo clásico, o cascada, el proceso termina a la entrega delsoftware).Una visión alternativa del modelo puede observarse exa-minando el «eje de punto de entrada de proyectos». Cadauno de los circulitos (๏) fijados a lo largo del eje repre-sentan puntos de arranque de los distintos proyectos (re-lacionados); a saber:

• Un proyecto de «desarrollo de conceptos» comien-za al inicio de la espiral, hace múltiples iteracioneshasta que se completa, es la zonamarcada con verde.

• Si lo anterior se va a desarrollar como producto real,se inicia otro proyecto: «Desarrollo de nuevo Pro-

8 CAPÍTULO 1. SOFTWARE

ducto». Que evolucionará con iteraciones hasta cul-minar; es la zona marcada en color azul.

• Eventual y análogamente se generarán proyectos de«mejoras de productos» y de «mantenimiento deproductos», con las iteraciones necesarias en cadaárea (zonas roja y gris, respectivamente).

Cuando la espiral se caracteriza de esta forma, está ope-rativa hasta que el software se retira, eventualmentepuede estar inactiva (el proceso), pero cuando se produ-ce un cambio el proceso arranca nuevamente en el puntode entrada apropiado (por ejemplo, en «mejora del pro-ducto»).El modelo espiral da un enfoque realista, que evolucionaigual que el software;[11] se adapta muy bien para desa-rrollos a gran escala.El Espiral utiliza el MCP para reducir riesgos y permi-te aplicarlo en cualquier etapa de la evolución. Mantieneel enfoque clásico (cascada) pero incorpora un marco detrabajo iterativo que refleja mejor la realidad.Este modelo requiere considerar riesgos técnicos en todaslas etapas del proyecto; aplicado adecuadamente debe re-ducirlos antes de que sean un verdadero problema.El Modelo evolutivo como el Espiral es particularmen-te apto para el desarrollo de Sistemas Operativos (com-plejos); también en sistemas de altos riesgos o críticos(Ej. navegadores y controladores aeronáuticos) y en to-dos aquellos en que sea necesaria una fuerte gestión delproyecto y sus riesgos, técnicos o de gestión.Desventajas importantes:

• Requiere mucha experiencia y habilidad para la eva-luación de los riesgos, lo cual es requisito para eléxito del proyecto.

• Es difícil convencer a los grandes clientes que se po-drá controlar este enfoque evolutivo.

Este modelo no se ha usado tanto, como el Cascada (In-cremental) o MCP, por lo que no se tiene bien medida sueficacia, es un paradigma relativamente nuevo y difícil deimplementar y controlar.

Modelo espiral Win & Win Una variante interesan-te del Modelo Espiral previamente visto (Figura 6) es el«Modelo espiral Win-Win»[7] (Barry Boehm). El Mode-lo Espiral previo (clásico) sugiere la comunicación conel cliente para fijar los requisitos, en que simplemente sepregunta al cliente qué necesita y él proporciona la infor-mación para continuar; pero esto es en un contexto idealque rara vez ocurre. Normalmente cliente y desarrolla-dor entran en una negociación, se negocia coste frente afuncionalidad, rendimiento, calidad, etc.«Es así que la obtención de requisitos requiere una nego-ciación, que tiene éxito cuando ambas partes ganan».

Las mejores negociaciones se fuerzan en obtener «Vic-toria & Victoria» (Win & Win), es decir que el clientegane obteniendo el producto que lo satisfaga, y el desa-rrollador también gane consiguiendo presupuesto y fechade entrega realista. Evidentemente, este modelo requierefuertes habilidades de negociación.El modelo Win-Win define un conjunto de actividadesde negociación al principio de cada paso alrededor de laespiral; se definen las siguientes actividades:

1. Identificación del sistema o subsistemas clave de losdirectivos(*) (saber qué quieren).

2. Determinación de «condiciones de victoria» de losdirectivos (saber qué necesitan y los satisface)

3. Negociación de las condiciones «victoria» de los di-rectivos para obtener condiciones «Victoria & Vic-toria» (negociar para que ambos ganen).

(*) Directivo: Cliente escogido con interés directo en elproducto, que puede ser premiado por la organización sitiene éxito o criticado si no.El modelo Win & Win hace énfasis en la negociacióninicial, también introduce 3 hitos en el proceso llamados«puntos de fijación», que ayudan a establecer la comple-titud de un ciclo de la espiral, y proporcionan hitos dedecisión antes de continuar el proyecto de desarrollo delsoftware.

1.4.2 Etapas en el desarrollo del software

Captura, análisis y especificación de requisitos

Al inicio de un desarrollo (no de un proyecto), esta es laprimera fase que se realiza, y, según el modelo de procesoadoptado, puede casi terminar para pasar a la próximaetapa (caso de Modelo Cascada Realimentado) o puedehacerse parcialmente para luego retomarla (caso ModeloIterativo Incremental u otros de carácter evolutivo).En simple palabras y básicamente, durante esta fase, seadquieren, reúnen y especifican las características fun-cionales y no funcionales que deberá cumplir el futuroprograma o sistema a desarrollar.Las bondades de las características, tanto del sistema oprograma a desarrollar, como de su entorno, parámetrosno funcionales y arquitectura dependen enormemente delo bien lograda que esté esta etapa. Esta es, probablemen-te, la de mayor importancia y una de las fases más difíci-les de lograr certeramente, pues no es automatizable, noes muy técnica y depende en gran medida de la habilidady experiencia del analista que la realice.Involucra fuertemente al usuario o cliente del sistema, portanto tiene matices muy subjetivos y es difícil de modelarcon certeza o aplicar una técnica que sea «la más cerca-na a la adecuada» (de hecho no existe «la estrictamente

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 9

adecuada»). Si bien se han ideado varias metodologías,incluso software de apoyo, para captura, elicitación y re-gistro de requisitos, no existe una forma infalible o ab-solutamente confiable, y deben aplicarse conjuntamentebuenos criterios y mucho sentido común por parte del olos analistas encargados de la tarea; es fundamental tam-bién lograr una fluida y adecuada comunicación y com-prensión con el usuario final o cliente del sistema.El artefacto más importante resultado de la culminaciónde esta etapa es lo que se conoce como especificación derequisitos software o simplemente documento ERS.Como se dijo, la habilidad del analista para interactuarcon el cliente es fundamental; lo común es que el clien-te tenga un objetivo general o problema que resolver, noconoce en absoluto el área (informática), ni su jerga, nisiquiera sabe con precisión qué debería hacer el produc-to software (qué y cuantas funciones) ni, mucho menos,cómo debe operar. En otros casos menos frecuentes, elcliente «piensa» que sabe precisamente lo que el softwaretiene que hacer, y generalmente acierta muy parcialmen-te, pero su empecinamiento entorpece la tarea de elicita-ción. El analista debe tener la capacidad para lidiar coneste tipo de problemas, que incluyen relaciones humanas;tiene que saber ponerse al nivel del usuario para permitiruna adecuada comunicación y comprensión.Escasas son las situaciones en que el cliente sabe con cer-teza e incluso con completitud lo que requiere de su futurosistema, este es el caso más sencillo para el analista.Las tareas relativas a captura, elicitación, modelado y re-gistro de requisitos, además de ser sumamente importan-te, puede llegar a ser dificultosa de lograr acertadamentey llevar bastante tiempo relativo al proceso total del desa-rrollo; al proceso y metodologías para llevar a cabo esteconjunto de actividades normalmente se las asume partepropia de la Ingeniería de Software, pero dada la antedi-cha complejidad, actualmente se habla de una Ingenieríade requisitos[12], aunque ella aún no existe formalmente.Hay grupos de estudio e investigación, en todo el mun-do, que están exclusivamente abocados a idear modelos,técnicas y procesos para intentar lograr la correcta captu-ra, análisis y registro de requisitos. Estos grupos son losque normalmente hablan de la Ingeniería de requisitos;es decir se plantea ésta como un área o disciplina pero nocomo una carrera universitaria en si misma.Algunos requisitos no necesitan la presencia del cliente,para ser capturados o analizados; en ciertos casos los pue-de proponer el mismo analista o, incluso, adoptar uni-lateralmente decisiones que considera adecuadas (tantoen requisitos funcionales como no funcionales). Por citarejemplos probables: Algunos requisitos sobre la arquitec-tura del sistema, requisitos no funcionales tales como losrelativos al rendimiento, nivel de soporte a errores ope-rativos, plataformas de desarrollo, relaciones internas oligas entre la información (entre registros o tablas de da-tos) a almacenar en caso de bases o bancos de datos, etc.Algunos funcionales tales como opciones secundarias o

de soporte necesarias para una mejor o más sencilla ope-ratividad; etc.La obtención de especificaciones a partir del cliente (uotros actores intervinientes) es un proceso humano muyinteractivo e iterativo; normalmente a medida que se cap-tura la información, se la analiza y realimenta con el clien-te, refinándola, puliéndola y corrigiendo si es necesario;cualquiera sea el método de ERS utilizado. EL analistasiempre debe llegar a conocer la temática y el problemaque resolver, dominarlo, hasta cierto punto, hasta el ám-bito que el futuro sistema a desarrollar lo abarque. Porello el analista debe tener alta capacidad para compren-der problemas de muy diversas áreas o disciplinas de tra-bajo (que no son específicamente suyas); así por ejemplo,si el sistema a desarrollar será para gestionar informaciónde una aseguradora y sus sucursales remotas, el analistase debe compenetrar en cómo ella trabaja y maneja suinformación, desde niveles muy bajos e incluso llegandohasta los gerenciales. Dada a gran diversidad de campos acubrir, los analistas suelen ser asistidos por especialistas,es decir gente que conoce profundamente el área para lacual se desarrollará el software; evidentemente una únicapersona (el analista) no puede abarcar tan vasta cantidadde áreas del conocimiento. En empresas grandes de desa-rrollo de productos software, es común tener analistas es-pecializados en ciertas áreas de trabajo.Contrariamente, no es problema del cliente, es decir élno tiene por qué saber nada de software, ni de diseños,ni otras cosas relacionadas; sólo se debe limitar a aportarobjetivos, datos e información (de mano propia o de susregistros, equipos, empleados, etc) al analista, y guiadopor él, para que, en primera instancia, defina el «Universode Discurso», y con posterior trabajo logre confeccionarel adecuado documento ERS.Es bien conocida la presión que sufren los desarrolladoresde sistemas informáticos para comprender y rescatar lasnecesidades de los clientes/usuarios. Cuanto más comple-jo es el contexto del problema más difícil es lograrlo, aveces se fuerza a los desarrolladores a tener que conver-tirse en casi expertos de los dominios que analizan.Cuando esto no sucede es muy probable que se genere unconjunto de requisitos[13] erróneos o incompletos y porlo tanto un producto de software con alto grado de des-aprobación por parte de los clientes/usuarios y un altísi-mo costo de reingeniería y mantenimiento. Todo aque-llo que no se detecte, o resulte mal entendido en la etapainicial provocará un fuerte impacto negativo en los requi-sitos, propagando esta corriente degradante a lo largo detodo el proceso de desarrollo e incrementando su perjui-cio cuanto más tardía sea su detección (Bell y Thayer1976)(Davis 1993).

Procesos, modelado y formas de elicitación de requi-sitos Siendo que la captura, elicitación y especificaciónde requisitos, es una parte crucial en el proceso de desa-rrollo de software, ya que de esta etapa depende el logro

10 CAPÍTULO 1. SOFTWARE

de los objetivos finales previstos, se han ideado modelosy diversas metodologías de trabajo para estos fines. Tam-bién existen herramientas software que apoyan las tareasrelativas realizadas por el ingeniero en requisitos.El estándar IEEE 830-1998 brinda una normalización delas «Prácticas Recomendadas para la Especificación deRequisitos Software».[14]

A medida que se obtienen los requisitos, normalmente selos va analizando, el resultado de este análisis, con o sinel cliente, se plasma en un documento, conocido comoERS o Especificación de Requisitos Software, cuya es-tructura puede venir definida por varios estándares, talescomo CMMI.Un primer paso para realizar el relevamiento de informa-ción es el conocimiento y definición acertada lo que seconoce como «Universo de Discurso» del problema, quese define y entiende por:Universo de Discurso (UdeD): es el contexto general enel cual el software deberá ser desarrollado y deberá ope-rar. El UdeD incluye todas las fuentes de información ytodas las personas relacionadas con el software. Esas per-sonas son conocidas también como actores de ese univer-so. El UdeD es la realidad circunstanciada por el conjuntode objetivos definidos por quienes demandaron el softwa-re.A partir de la extracción y análisis de información en suámbito se obtienen todas las especificaciones necesariasy tipos de requisitos para el futuro producto software.El objetivo de la Ingeniería de requisitos (IR) es siste-matizar el proceso de definición de requisitos permitien-do elicitar, modelar y analizar el problema, generando uncompromiso entre los ingenieros de requisitos y los clien-tes/usuarios, ya que ambos participan en la generación ydefinición de los requisitos del sistema. La IR aporta unconjunto de métodos, técnicas y herramientas que asistena los ingenieros de requisitos (analistas) para obtener re-quisitos lo más seguros, veraces, completos y oportunosposibles, permitiendo básicamente:

• Comprender el problema

• Facilitar la obtención de las necesidades del clien-te/usuario

• Validar con el cliente/usuario

• Garantizar las especificaciones de requisitos

Si bien existen diversas formas, modelos y metodologíaspara elicitar, definir y documentar requisitos, no se pue-de decir que alguna de ellas sea mejor o peor que la otra,suelen tener muchísimo en común, y todas cumplen elmismo objetivo. Sin embargo, lo que si se puede decirsin dudas es que es indispensable utilizar alguna de ellaspara documentar las especificaciones del futuro productosoftware. Así por ejemplo, hay un grupo de investigación

argentino que desde hace varios años ha propuesto y es-tudia el uso del LEL (Léxico Extendido del Lenguaje) yEscenarios comometodología, aquí[15] se presenta una delas tantas referencias y bibliografía sobre ello. Otra for-ma, más ortodoxa, de capturar y documentar requisitosse puede obtener en detalle, por ejemplo, en el trabajode la Universidad de Sevilla sobre «Metodología para elAnálisis de Requisitos de Sistemas Software».[16]

En la Figura 7 se muestra un esquema, más o menos rigu-roso, aunque no detallado, de los pasos y tareas a seguirpara realizar la captura, análisis y especificación de re-quisitos software. También allí se observa qué artefactoo documento se obtiene en cada etapa del proceso. En eldiagrama no se explicita metodología o modelo a utilizar,sencillamente se pautan las tareas que deben cumplirse,de alguna manera.

Fig. 7 - Diagrama de tareas para captura y análisis de requisitos.

Una posible lista, general y ordenada, de tareas recomen-dadas para obtener la definición de lo que se debe reali-zar, los productos a obtener y las técnicas a emplear du-rante la actividad de elicitación de requisitos, en fase deEspecificación de Requisitos Software es:

1. Obtener información sobre el dominio del problemay el sistema actual (UdeD).

2. Preparar y realizar las reuniones para elicita-ción/negociación.

3. Identificar/revisar los objetivos del usuario.

4. Identificar/revisar los objetivos del sistema.

5. Identificar/revisar los requisitos de información.

6. Identificar/revisar los requisitos funcionales.

7. Identificar/revisar los requisitos no funcionales.

8. Priorizar objetivos y requisitos.

Algunos principios básicos a tener en cuenta:

• Presentar y entender cabalmente el dominio de lainformación del problema.

• Definir correctamente las funciones que debe reali-zar el Software.

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 11

• Representar el comportamiento del software a con-secuencias de acontecimientos externos, particula-res, incluso inesperados.

• Reconocer requisitos incompletos, ambiguos o con-tradictorios.

• Dividir claramente los modelos que representan lainformación, las funciones y comportamiento y ca-racterísticas no funcionales.

Clasificación e identificación de requisitos Se pue-den identificar dos formas de requisitos:

• Requisitos de usuario: Los requisitos de usuario sonfrases en lenguaje natural junto a diagramas con losservicios que el sistema debe proporcionar, así co-mo las restricciones bajo las que debe operar.

• Requisitos de sistema: Los requisitos de sistema de-terminan los servicios del sistema y pero con lasrestricciones en detalle. Sirven como contrato.

Es decir, ambos son lo mismo, pero con distinto nivel dedetalle.Ejemplo de requisito de usuario: El sistema debe hacerpréstamos Ejemplo de requisito de sistema: Función prés-tamo: entrada código socio, código ejemplar; salida: fe-cha devolución; etc.Se clasifican en tres los tipos de requisitos de sistema:

• Requisitos funcionales

Los requisitos funcionales describen:

• Los servicios que proporciona el sistema (funcio-nes).

• La respuesta del sistema ante determinadas entradas.

• El comportamiento del sistema en situaciones parti-culares.

• Requisitos no funcionales

Los requisitos no funcionales son restricciones de los ser-vicios o funciones que ofrece el sistema (ej. cotas de tiem-po, proceso de desarrollo, rendimiento, etc.)

Ejemplo 1. La biblioteca Centraldebe ser capaz de atender simultá-neamente a todas las bibliotecas dela UniversidadEjemplo 2. El tiempo de respuestaa una consulta remota no debe sersuperior a 1/2 s

A su vez, hay tres tipos de requisitos no funcio-nales:

• Requisitos del producto. Especifican el comporta-miento del producto (Ej. prestaciones, memoria, ta-sa de fallos, etc.)

• Requisitos organizativos. Se derivan de las políticasy procedimientos de las organizaciones de los clien-tes y desarrolladores (Ej. estándares de proceso, len-guajes de programación, etc.)

• Requisitos externos. Se derivan de factores externosal sistema y al proceso de desarrollo (Ej. requisitoslegislativos, éticos, etc.)

• Requisitos del dominio.

Los requisitos del dominio se derivan del dominio de laaplicación y reflejan características de dicho dominio.Pueden ser funcionales o no funcionales.Ej. El sistema de biblioteca de la Universidad debe sercapaz de exportar datos mediante el Lenguaje de Inter-comunicación de Bibliotecas de España (LIBE). Ej. Elsistema de biblioteca no podrá acceder a bibliotecas conmaterial censurado.

Diseño del sistema

En ingeniería de software, el diseño es una fase de ciclode vida del software. Se basa en la especificación de re-quisitos producido por el análisis de los requisitos (fase deanálisis), el diseño define cómo estos requisitos se cum-plirán, la estructura que debe darse al sistema de softwarepara que se haga realidad.El diseño sigue siendo una fase separada del la programa-ción o codificación, esta última corresponde a la traduc-ción en un determinado lenguaje de programación de laspremisas adoptadas en el diseño.Las distinciones entre las actividades mencionadas has-ta ahora no siempre son claras cómo se quisiera en lasteorías clásicas de ingeniería de software. El diseño, enparticular, puede describir el funcionamiento interno deun sistema en diferentes niveles de detalle, cada una deellos se coloca en una posición intermedia entre el análisisy codificación.Normalmente se entiende por “diseño de la arquitectura”al diseño de “muy alto nivel”, que sólo define la estructuradel sistema en términos de la módulos de software de quese compone y las relaciones macroscópicas entre ellos. Aeste nivel de diseño pertenecen fórmulas como cliente-servidor o “tres niveles”, o, más generalmente, las deci-siones sobre el uso de la arquitectura de hardware especialque se utilice, el sistema operativo, DBMS, Protocolos dered, etc.

12 CAPÍTULO 1. SOFTWARE

Un nivel intermedio de detalle puede definir la descom-posición del sistema en módulos, pero esta vez con unareferencia más o menos explícita al modo de descompo-sición que ofrece el particular lenguaje de programacióncon el que el desarrollo se va a implementar, por ejem-plo, en un diseño realizado con la tecnología de objetos, elproyecto podría describir al sistema en términos de clasesy sus interrelaciones.El diseño detallado, por último, es una descripción delsistema muy cercana a la codificación (por ejemplo, des-cribir no sólo las clases en abstracto, sino también susatributos y los métodos con sus tipos).Debido a la naturaleza “intangible” del software, y depen-diendo de las herramientas que se utilizan en el proceso,la frontera entre el diseño y la codificación también pue-de ser virtualmente imposible de identificar. Por ejemplo,algunas herramientas CASE son capaces de generar có-digo a partir de diagramas UML, los que describen grá-ficamente la estructura de un sistema software.

Codificación del software

Durante esta etapa se realizan las tareas que comúnmen-te se conocen como programación; que consiste, esencial-mente, en llevar a código fuente, en el lenguaje de progra-mación elegido, todo lo diseñado en la fase anterior. Estatarea la realiza el programador, siguiendo por completolos lineamientos impuestos en el diseño y en considera-ción siempre a los requisitos funcionales y no funcionales(ERS) especificados en la primera etapa.Es común pensar que la etapa de programación o codifi-cación (algunos la llaman implementación) es la que in-sume la mayor parte del trabajo de desarrollo del softwa-re; sin embargo, esto puede ser relativo (y generalmen-te aplicable a sistemas de pequeño porte) ya que las eta-pas previas son cruciales, críticas y pueden llevar bastantemás tiempo. Se suele hacer estimaciones de un 30% deltiempo total insumido en la programación, pero esta ci-fra no es consistente ya que depende en gran medida delas características del sistema, su criticidad y el lenguajede programación elegido.[7]En tanto menor es el nivel dellenguaje mayor será el tiempo de programación requeri-do, así por ejemplo se tardaría más tiempo en codificarun algoritmo en lenguaje ensamblador que el mismo pro-gramado en lenguaje C.Mientras se programa la aplicación, sistema, o softwareen general, se realizan también tareas de depuración, estoes la labor de ir liberando al código de los errores facti-bles de ser hallados en esta fase (de semántica, sintácticay lógica). Hay una suerte de solapamiento con la fase si-guiente, ya que para depurar la lógica es necesario reali-zar pruebas unitarias, normalmente con datos de prueba;claro es que no todos los errores serán encontrados só-lo en la etapa de programación, habrán otros que se en-contrarán durante las etapas subsiguientes. La apariciónde algún error funcional (mala respuesta a los requisitos)

eventualmente puede llevar a retornar a la fase de diseñoantes de continuar la codificación.Durante la fase de programación, el código puede adoptarvarios estados, dependiendo de la forma de trabajo y dellenguaje elegido, a saber:

• Código fuente: es el escrito directamente por losprogramadores en editores de texto, lo cual genera elprograma. Contiene el conjunto de instrucciones co-dificadas en algún lenguaje de alto nivel. Puede estardistribuido en paquetes, procedimientos, bibliotecasfuente, etc.

• Código objeto: es el código binario o intermedio re-sultante de procesar con un compilador el códigofuente. Consiste en una traducción completa y deuna sola vez de éste último. El código objeto no esinteligible por el ser humano (normalmente es for-mato binario) pero tampoco es directamente ejecu-table por la computadora. Se trata de una represen-tación intermedia entre el código fuente y el códi-go ejecutable, a los fines de un enlace final con lasrutinas de biblioteca y entre procedimientos o bienpara su uso con un pequeño intérprete intermedio [amodo de distintos ejemplos véase EUPHORIA, (in-térprete intermedio), FORTRAN (compilador pu-ro) MSIL (Microsoft Intermediate Language) (intér-prete) y BASIC (intérprete puro, intérprete interme-dio, compilador intermedio o compilador puro, de-pende de la versión utilizada)].

• El código objeto no existe si el programadortrabaja con un lenguaje a modo de intérpre-te puro, en este caso el mismo intérprete seencarga de traducir y ejecutar línea por líneael código fuente (de acuerdo al flujo del pro-grama), en tiempo de ejecución. En este ca-so tampoco existe el o los archivos de códigoejecutable. Una desventaja de esta modalidades que la ejecución del programa o sistema esun poco más lenta que si se hiciera con un in-térprete intermedio, y bastante más lenta quesi existe el o los archivos de código ejecutable.Es decir no favorece el rendimiento en veloci-dad de ejecución. Pero una gran ventaja de lamodalidad intérprete puro, es que el esta for-ma de trabajo facilita enormemente la tarea dedepuración del código fuente (frente a la al-ternativa de hacerlo con un compilador puro).Frecuentemente se suele usar una forma mixtade trabajo (si el lenguaje de programación ele-gido lo permite), es decir inicialmente trabajara modo de intérprete puro, y una vez depuradoel código fuente (liberado de errores) se utilizaun compilador del mismo lenguaje para obte-ner el código ejecutable completo, con lo cualse agiliza la depuración y la velocidad de eje-cución se optimiza.

1.4. PROCESO DE CREACIÓN DEL SOFTWARE 13

• Código ejecutable: Es el código binario resultado deenlazar uno o más fragmentos de código objeto conlas rutinas y bibliotecas necesarias. Constituye unoo más archivos binarios con un formato tal que elsistema operativo es capaz de cargarlo en la me-moria RAM (eventualmente también parte en unamemoria virtual), y proceder a su ejecución directa.Por lo anterior se dice que el código ejecutable esdirectamente «inteligible por la computadora». Elcódigo ejecutable, también conocido como códigomáquina, no existe si se programa con modalidadde «intérprete puro».

Pruebas (unitarias y de integración)

Entre las diversas pruebas que se le efectúan al softwarese pueden distinguir principalmente:

• Prueba unitarias: Consisten en probar o testear pie-zas de software pequeñas; a nivel de secciones, pro-cedimientos, funciones y módulos; aquellas que ten-gan funcionalidades específicas. Dichas pruebas seutilizan para asegurar el correcto funcionamiento desecciones de código, mucho más reducidas que elconjunto, y que tienen funciones concretas con cier-to grado de independencia.

• Pruebas de integración: Se realizan una vez que laspruebas unitarias fueron concluidas exitosamente;con éstas se intenta asegurar que el sistema comple-to, incluso los subsistemas que componen las piezasindividuales grandes del software funcionen correc-tamente al operar e inteoperar en conjunto.

Las pruebas normalmente se efectúan con los llamadosdatos de prueba, que es un conjunto seleccionado de da-tos típicos a los que puede verse sometido el sistema, losmódulos o los bloques de código. También se escogen:Datos que llevan a condiciones límites al software a finde probar su tolerancia y robustez; datos de utilidad pa-ra mediciones de rendimiento; datos que provocan condi-ciones eventuales o particulares poco comunes y a las queel software normalmente no estará sometido pero puedenocurrir; etc. Los «datos de prueba» no necesariamenteson ficticios o «creados», pero normalmente sí lo son losde poca probabilidad de ocurrencia.Generalmente, existe un fase probatoria final y completadel software, llamada Beta Test, durante la cual el sis-tema instalado en condiciones normales de operación ytrabajo es probado exhaustivamente a fin de encontrarerrores, inestabilidades, respuestas erróneas, etc. que ha-yan pasado los previos controles. Estas son normalmenterealizadas por personal idóneo contratado o afectado es-pecíficamente a ello. Los posibles errores encontrados setransmiten a los desarrolladores para su depuración. Enel caso de software de desarrollo «a pedido», el usuariofinal (cliente) es el que realiza el Beta Test, teniendo paraello un período de prueba pactado con el desarrollador.

Instalación y paso a producción

La instalación del software es el proceso por el cual losprogramas desarrollados son transferidos apropiadamen-te al computador destino, inicializados, y, eventualmente,configurados; todo ello con el propósito de ser ya utiliza-dos por el usuario final. Constituye la etapa final en eldesarrollo propiamente dicho del software. Luego de éstael producto entrará en la fase de funcionamiento y pro-ducción, para el que fuera diseñado.La instalación, dependiendo del sistema desarrollado,puede consistir en una simple copia al disco rígido des-tino (casos raros actualmente); o bien, más comúnmen-te, con una de complejidad intermedia en la que los dis-tintos archivos componentes del software (ejecutables,bibliotecas, datos propios, etc.) son descomprimidos ycopiados a lugares específicos preestablecidos del disco;incluso se crean vínculos con otros productos, además delpropio sistema operativo. Este último caso, comúnmentees un proceso bastante automático que es creado y guia-do con heramientas software específicas (empaquetado ydistribución, instaladores).En productos de mayor complejidad, la segunda alterna-tiva es la utilizada, pero es realizada o guiada por espe-cialistas; puede incluso requerirse la instalación en variosy distintos computadores (instalación distribuida).También, en software de mediana y alta complejidad nor-malmente es requerido un proceso de configuración ychequeo, por el cual se asignan adecuados parámetros defuncionamiento y se testea la operatividad funcional delproducto.En productos de venta masiva las instalaciones comple-tas, si son relativamente simples, suelen ser realizadas porlos propios usuarios finales (tales como sistemas operati-vos, paquetes de oficina, utilitarios, etc.) con herramien-tas propias de instalación guiada; incluso la configuraciónsuele ser automática. En productos de diseño específico o«a medida» la instalación queda restringida, normalmen-te, a personas especialistas involucradas en el desarrollodel software en cuestión.Una vez realizada exitosamente la instalación del softwa-re, el mismo pasa a la fase de producción (operatividad),durante la cual cumple las funciones para las que fue desa-rrollado, es decir, es finalmente utilizado por el (o los)usuario final, produciendo los resultados esperados.

Mantenimiento

El mantenimiento de software es el proceso de control,mejora y optimización del software ya desarrollado e ins-talado, que también incluye depuración de errores y de-fectos que puedan haberse filtrado de la fase de pruebasde control y beta test. Esta fase es la última (antes de ite-rar, según el modelo empleado) que se aplica al ciclo devida del desarrollo de software. La fase de mantenimiento

14 CAPÍTULO 1. SOFTWARE

es la que viene después de que el software está operativoy en producción.De un buen diseño y documentación del desarrollo de-penderá cómo será la fase de mantenimiento, tanto encosto temporal como monetario. Modificaciones realiza-das a un software que fue elaborado con una documen-tación indebida o pobre y mal diseño puede llegar a sertanto o más costosa que desarrollar el software desde elinicio. Por ello, es de fundamental importancia respetardebidamente todas las tareas de las fases del desarrollo ymantener adecuada y completa la documentación.El período de la fase de mantenimiento es normalmenteel mayor en todo el ciclo de vida.[7] Esta fase involucratambién actualizaciones y evoluciones del software; nonecesariamente implica que el sistema tuvo errores. Unoo más cambios en el software, por ejemplo de adaptacióno evolutivos, puede llevar incluso a rever y adaptar desdeparte de las primeras fases del desarrollo inicial, alterandotodas las demás; dependiendo de cuán profundos sean loscambios. El modelo cascada común es particularmentecostoso en mantenimiento, ya que su rigidez implica quecualquier cambio provoca regreso a fase inicial y fuertesalteraciones en las demás fases del ciclo de vida.Durante el período de mantenimiento, es común que sur-jan nuevas revisiones y versiones del producto; que lo li-beran más depurado, con mayor y mejor funcionalidad,mejor rendimiento, etc. Varias son las facetas que pue-den ser alteradas para provocar cambios deseables, evo-lutivos, adaptaciones o ampliaciones y mejoras.Básicamente se tienen los siguientes tipos de cambios:

• Perfectivos: Aquellos que llevan a una mejora dela calidad interna del software en cualquier aspec-to: Reestructuración del código, definición más cla-ra del sistema y su documentación; optimización delrendimiento y eficiencia.

• Evolutivos: Agregados, modificaciones, incluso eli-minaciones, necesarias en el software para cubrir suexpansión o cambio, según las necesidades del usua-rio.

• Adaptivos: Modificaciones que afectan a los entor-nos en los que el sistema opera, tales como: Cambiosde configuración del hardware (por actualización omejora de componentes electrónicos), cambios enel software de base, en gestores de base de datos, encomunicaciones, etc.

• Correctivos: Alteraciones necesarias para corregirerrores de cualquier tipo en el producto softwaredesarrollado.

1.5 Carácter evolutivo delsoftware[17]

El software es el producto derivado del proceso de desa-rrollo, según la ingeniería de software. Este producto esintrínsecamente evolutivo durante su ciclo de vida. Elsoftware evoluciona, en general, generando versiones ca-da vez más completas, complejas, mejoradas, optimiza-das en algún aspecto, adecuadas a nuevas plataformas(sean de hardware o sistemas operativos), etc.Cuando un sistema deja de evolucionar, eventualmentecumplirá con su ciclo de vida, entrará en obsolescencia einevitablemente, tarde o temprano, será reemplazado porun producto nuevo.El software evoluciona sencillamente por que se debeadaptar a los cambios del entorno, sean funcionales (exi-gencias de usuarios), operativos, de plataforma o arqui-tectura hardware.La dinámica de evolución del software es el estudio delos cambios del sistema. La mayor contribución en es-ta área fue realizada por Meir M. Lehman y Belady, co-menzando en los años 70 y 80. Su trabajo continuó en ladécada de 1990, con Lehman y otros investigadores[18] derelevancia en la realimentación en los procesos de evolu-ción (Lehman, 1996; Lehman et al., 1998; lehman et al.,2001). A partir de esos estudios propusieron un conjun-to de leyes (conocidas como leyes de Lehman)[9] respec-to de los cambios producidos en los sistemas. Estas leyes(en realidad son hipótesis) son invariantes y ampliamenteaplicables.Lehman y Belady analizaron el crecimiento y la evolu-ción de varios sistemas software de gran porte; derivandofinalmente, según sus medidas, las siguientes ocho leyes:

1. Cambio continuo: Un programa que se usa en un en-torno real necesariamente debe cambiar o se volveráprogresivamente menos útil en ese entorno.

2. Complejidad creciente: A medida que un programaen evolución cambia, su estructura tiende a ser cadavez más compleja. Se deben dedicar recursos extraspara preservar y simplificar la estrucutura.

3. Evolución prolongada del programa: La evoluciónde los programas es un proceso autorregulativo. Losatributos de los sistemas, tales como tamaño, tiempoentre entregas y la cantidad de errores documenta-dos son aproximadamente invariantes para cada en-trega del sistema.

4. Estabilidad organizacional: Durante el tiempo de vi-da de un programa, su velocidad de desarrollo esaproximadamente constante e independiente de losrecursos dedicados al desarrollo del sistema.

5. Conservación de la familiaridad: Durante el tiempode vida de un sistema, el cambio incremental en cadaentrega es aproximadamente constante.

1.8. BIBLIOGRAFÍA 15

6. Crecimiento continuado: La funcionalidad ofrecidapor los sistemas tiene que crecer continuamente paramantener la satisfacción de los usuarios.

7. Decremento de la calidad: La calidad de los sistemassoftware comenzará a disminuir a menos que dichossistemas se adapten a los cambios de su entorno defuncionamiento.

8. Realimentación del sistema: Los procesos de evolu-ción incorporan sistemas de realimentación multi-agente y multibucle y estos deben ser tratados comosistemas de realimentación para lograr una mejorasignificativa del producto.

1.6 Véase también

• Portal:Software. Contenido relacionado conSoftware.

• Ingeniería de software

• Programa informático

• Aplicación informática

• Programación

• Fases del desarrollo de software

• Software colaborativo

• Software libre

• Ingeniería informática

• Hediondez del código

1.6.1 Modelos de ciclo de vida

• Modelo en cascada o secuencial

• Modelo iterativo incremental

• Modelo evolutivo espiral

• Modelo de prototipos

• Modelo de desarrollo rápido

1.7 Referencias[1] Diccionario de la lengua española 2005 (2010). wordre-

ference.com, ed. «software» (diccionario). Espasa-Calpe.Consultado el 1 de febrero de 2010.

[2] Real Academia Española. «Significado de la palabra Soft-ware».Diccionario de la Lengua Española, XXIIº Edición.Consultado el 14 de marzo de 2008.

[3] Real Academia Española. «Uso de la palabra Software».Diccionario panhispánico de dudas, 1.° Edición (octubre2005). Consultado el 8 de febrero de 2009.

[4] Pressman, Roger S. (2003). «El producto». Ingeniería delSoftware, un enfoque Práctico, Quinta edición edición. Mé-xico: Mc Graw Hill.

[5] IEEE Std, IEEE Software Engineering Standard: Glossaryof Software Engineering Terminology. IEEE ComputerSociety Press, 1993

[6] «Ciclo de Vida del Software». Grupo Alarcos - EscuelaSuperior de Informática de Ciudad Real.

[7] Pressman, Roger S. (2003). «El proceso». Ingeniería delSoftware, un enfoque Práctico, Quinta edición edición. Me-xico: Mc Graw Hill.

[8] «Término “Elicitar"». 1ra. acepción - Wiktionary. Con-sultado el 15 de diciembre de 2008.

[9] «Leyes de evolución del Software». Connexions - Educa-tional content repository.

[10] «Ciclo de vida del Software yModelos de desarrollo». Ins-tituto de Formación Profesional - Libros Digitales. Texto« lugar: Asunción del Paraguay» ignorado (ayuda)

[11] «Evolución del Software». Connexions - Educational con-tent repository.

[12] Software Requirements Engineering, 2nd Edition, IEEEComputer Society. Los Alamitos, CA, 1997 (Compendiode papers y artículos en ingeniería de requisitos)

[13] «IIIWorkshop de Engenharia de Requisitos».WER 2000,Rio de Janeiro, 2000.

[14] «Recommended Practice for Software RequirementsSpecification». IEEE-SA Standards Board.

[15] «LEL y Escenarios como metodología en Ingeniería deRequisitos». Univ. de Morón, Buenos Aires.

[16] «Metodología para el análisis de Requisitos de SistemasSoftware». Univ. de Sevilla, 2001.

[17] Sommerville, Ian (2005). «21-Evolución del software».Ingeniería del Software. España: Pearson Educacion S.A.

[18] «ACM Fellow Profile for Meir M. (Manny) Lehman».ACM. 31 de mayo de 2007. Consultado el 27 de noviem-bre de 2011.

1.8 Bibliografía

1.8.1 Libros

• JACOBSON, Ivar; BOOCH, Grady; RUM-BAUGH, James (2000). El Proceso Unificado deDesarrollo de Software. Pearson Addisson-Wesley.

• Pressman, Roger S. (2003). Ingeniería del Software,un enfoque Práctico (Quinta edición edición). McGraw Hill. ISBN 84-481-3214-9.

16 CAPÍTULO 1. SOFTWARE

• JACOBSON; BOOCH; RUMBAUGH (1999).UML - El Lenguaje Unificado de Modelado.Pearson Addisson-Wesley. Rational Software Cor-poration, Addison Wesley Iberoamericana. ISBN84-7829-028-1.

• Haeberer, A. M.; P. A. S. Veloso, G. Baum (1988).Formalización del proceso de desarrollo de software(Ed. preliminar edición). Buenos Aires: Kapelusz.ISBN 950-13-9880-3.

• Fowler, Martin; Kendall Sccott (1999).UMLGota aGota. Addison Wesley. ISBN 9789684443648.

• Loucopoulos, Pericles; Karakostas, V. (1995). Sys-tem Requirements Engineering (en inglés). London:McGraw-Hill Companies. pp. 160 p. ISBN 978-0077078430.

• Sommerville, Ian; P. Sawyer (1997). RequirementsEngineering: A Good Practice Guide (en inglés) (1ra.edition edición).Wiley& Sons. pp. 404 p. ISBN 978-0471974444.

• Gottesdiener, Ellen; P. Sawyer (2002). Require-ments by Collaboration: Workshops for DefiningNeeds (en inglés). Addison-Wesley Professional. pp.368 p. ISBN 978-0201786064.

• Sommerville, Ian (2005). Ingeniería del software(7ma. edición). Madrid: Pearson Educacion S.A.ISBN 84-7829-074-5.

1.8.2 Artículos y revistas

• Weitzenfeld - «El Proceso para Desarrollo de Soft-ware» - 2002

• Carlos Reynoso - «Métodos Heterodoxos en Desa-rrollo de Software» - 2004

• Grupo ISSI - Univ. Politécnica de Valencia - «Me-todologías Ágiles en el Desarrollo de Software» -2003

• Martin Fowler - «La Nueva Metodología» - 2003

• Cutter IT Journal – «Requirements Engineering andManagement». August 25, 2000. Cutter Consor-tium.

• «Software Requirements Engineering», 2nd Edi-tion, IEEE Computer Society. Los Alamitos, CA,1997 (Compendio de papers y artículos en ingenie-ría de requisitos).

• Lehman, M.M. - «Laws of Software Evolution Re-visited», pos. pap., EWSPT96, Oct. 1996, LNCS1149, Springer Verlag, 1997, pp. 108-124

1.9 Enlaces externos

• Wikimedia Commons alberga contenido multi-media sobre SoftwareCommons.

• Wikcionario tiene definiciones y otra informa-ción sobre software.Wikcionario

Capítulo 2

Software libre

Mapa conceptual del software libre.

Software[1]libre (en inglés free software, aunque esta de-nominación a veces se confunde con «gratis» por la am-bigüedad del término free en el idioma inglés, por lo quetambién se usa libre software) es la denominación delsoftware que respeta la libertad de todos los usuarios queadquirieron el producto y, por tanto, una vez obtenidoel mismo, puede ser usado, copiado, estudiado, modifi-cado, y redistribuido libremente de varias formas.[2] Se-gún su principal impulsora, la organización Free SoftwareFoundation, el software libre se refiere a la seguridad delos usuarios para ejecutar, copiar, distribuir y estudiar elsoftware, e incluso modificarlo y distribuirlo modificado.Un programa informático es software libre si otorga a losusuarios todas estas libertades de manera adecuada. De locontrario no es libre. Existen diversos esquemas de distri-bución que no son libres, y si bien podemos distinguirlosen base a cuánto les falta para llegar a ser libres, su usobien puede ser considerado contrario a la ética en todoslos casos por igual.[2]

El software libre suele estar disponible gratuitamente, oal precio de coste de la distribución a través de otrosmedios; sin embargo no es obligatorio que sea así, porlo tanto no hay que asociar «software libre» a «softwa-re gratuito» (denominado usualmente freeware), ya que,conservando su carácter de libre, puede ser distribuidocomercialmente. Análogamente, el software gratis o gra-tuito incluye en ocasiones el código fuente; no obstante,este tipo de software no es «libre» en el mismo sentidoque el software libre, a menos que se garanticen los dere-

chos de modificación y redistribución de dichas versionesmodificadas del programa.Tampoco debe confundirse software libre con «softwarede dominio público». Éste último es aquel que no requie-re de licencia, pues sus derechos de explotación son paratoda la humanidad, porque pertenece a todos por igual.Cualquiera puede hacer uso de él, consignando su autoríaoriginal. Este software sería aquel cuyo autor lo dona a lahumanidad o cuyos derechos de autor han expirado. Si unautor condiciona su uso bajo una licencia, por muy débilque sea, ya no es del dominio público.

2.1 Historia

Richard Matthew Stallman, creador del concepto de software li-bre y fundador de la Free Software Foundation.

Entre los años 1960 y 1970, el software no era conside-rado un producto sino un añadido que los vendedores delas grandes computadoras de la época (las mainframes)aportaban a sus clientes para que éstos pudieran usar-los. En dicha cultura, era común que los programadores ydesarrolladores de software compartieran libremente susprogramas unos con otros. Este comportamiento era par-ticularmente habitual en algunos de los mayores gruposde usuarios de la época, comoDECUS (grupo de usuariosde computadoras DEC). A finales de la década de 1970,las compañías iniciaron el hábito de imponer restriccio-nes a los usuarios, con el uso de acuerdos de licencia.

17

18 CAPÍTULO 2. SOFTWARE LIBRE

En 1971, cuando la informática todavía no había sufridosu gran auge, las personas que hacían uso de ella, en ámbi-tos universitarios y empresariales, creaban y compartíanel software sin ningún tipo de restricciones.Con la llegada de los años 1980 la situación empezó acambiar. Las computadoras más modernas comenzabana utilizar sistemas operativos privativos, forzando a losusuarios a aceptar condiciones restrictivas que impedíanrealizar modificaciones a dicho software.En caso de que algún usuario o programador encontrasealgún error en la aplicación, lo único que podía hacer eradarlo a conocer a la empresa desarrolladora para que éstalo solucionara. Aunque el programador estuviese capaci-tado para solucionar el problema y lo desease hacer sinpedir nada a cambio, el contrato le impedía que modifi-case el software.En 1971, el estadounidense Richard Matthew Stallman,estudiante de Física de la Universidad de Harvard, formóparte como hacker del Laboratorio de Inteligencia Artifi-cial del Instituto Tecnológico de Massachusetts. En losaños 1980, la cultura hacker que constituía la vida deStallman empezó a disolverse bajo la presión de la co-mercialización en la industria del software. Los demáscompañeros de Stallman, también hackers del laborato-rio, fundaron la compañía Symbolics que intentaba reem-plazar el software libre producido en las instalaciones porsoftware no libre de su propiedad. Stallman contó, añosdespués, que por aquellos años, en el laboratorio dondetrabajaba, habían recibido una impresora donada por unaempresa externa. El dispositivo, que era utilizado en redpor todos los trabajadores, parecía no funcionar a la per-fección, dado que cada cierto tiempo el papel se atascaba.Como agravante, no se generaba ningún aviso que se en-viase por red e informase a los usuarios de la situación.La pérdida de tiempo era constante, ya que en ocasiones,los trabajadores enviaban por red sus trabajos a imprimiry al ir a buscarlos se encontraban la impresora atascaday una cola enorme de trabajos pendientes. Richard Stall-man decidió arreglar el problema, e implementar el en-vío de un aviso por red cuando la impresora se bloqueara.Para ello necesitaba tener acceso al código fuente de loscontroladores de la impresora. Pidió a la empresa propie-taria de la impresora lo que necesitaba, comentando, sinpedir nada a cambio, qué era lo que pretendía realizar. Laempresa se negó a entregarle el código fuente. En ese pre-ciso instante, Stallman se vio en una encrucijada: debíaelegir entre aceptar el nuevo software propietario firman-do acuerdos de no revelación y acabar desarrollando mássoftware propietario con licencias restrictivas, que a suvez deberían ser más adelante aceptadas por sus propioscolegas. Stallman renunció a su empleo, viviendo de rea-lizar programas libres y vender las copias en cintas y el día27 de septiembre de 1983, anunció en varios grupos denoticias de Usenet el inicio del Proyecto GNU, que per-seguía crear un sistema operativo completamente libre.[3]En 1985, Stallman fundó la organización Free Softwa-

re Foundation (FSF) e introdujo la definición formal desoftware libre y el concepto de "copyleft", que desarrollópara otorgar libertad a los usuarios y para restringir lasposibilidades de apropiación del software.[4]

2.2 Las cuatro libertades del soft-ware libre

De acuerdo con la definición establecida por RichardStallman, un software es “libre” cuando garantiza las si-guientes libertades:[5][6][7]

Ciertos teóricos usan este cuarto punto (libertad 3) parajustificar parcialmente las limitaciones impuestas por lalicencia GNU GPL frente a otras licencias de softwarelibre (ver Licencias GPL). Sin embargo el sentido origi-nal es más libre, abierto y menos restrictivo que el que leotorga la propia situación de incompatibilidad, que ha si-do resuelta a cierto grado en versión 3 de la licencia GNUGPL.Tanto la Open Source Initiative[8] como la Free SoftwareFoundation,[9] mantienen en sus webs oficiales, listadosde las licencias de software libre que aprueban.El término software no libre se emplea para referirse alsoftware distribuido bajo una licencia de software másrestrictiva que no garantiza estas cuatro libertades. Lasleyes de la propiedad intelectual reservan la mayoría delos derechos de modificación, duplicación, y redistribu-ción, para el dueño del copyright; el software dispuestobajo una licencia de software libre rescinde específica-mente la mayoría de estos derechos reservados.La definición de software libre no contempla la cuestióndel precio; un eslogan frecuentemente usado es “libre co-mo en libertad, no como en cerveza gratis” o en inglés“Free as in freedom, not as in free beer” (aludiendo a laambigüedad del término inglés "free"), y es habitual vera la venta CD de software libre como distribuciones Li-nux. Sin embargo, en esta situación, el comprador del CDtiene el derecho de copiarlo y redistribuirlo. El softwaregratis puede incluir restricciones que no se adaptan a ladefinición de software libre —por ejemplo, puede no in-cluir el código fuente, puede prohibir explícitamente a losdistribuidores recibir una compensación a cambio, etc—.Para evitar la confusión, algunas personas utilizan los tér-minos “libre” (software libre) y “gratis” (software gratis)para evitar la ambigüedad de la palabra inglesa “free”. Sinembargo, estos términos alternativos son usados única-mente dentro del movimiento del software libre, aunqueestán extendiéndose lentamente hacia el resto del mundo.Otros defienden el uso del término open source software(software de código abierto). La principal diferencia en-tre los términos “open source” y “free software” es queéste último tiene en cuenta los aspectos éticos y filosófi-cos de la libertad, mientras que el “open source” se basaúnicamente en los aspectos técnicos.

2.3. TIPOS DE LICENCIAS 19

En un intento por unir los mencionados términos que serefieren a conceptos semejantes, se está extendiendo eluso de la palabra "FLOSS" con el significado de free/libreand open source software e, indirectamente, también a lacomunidad que lo produce y apoya.

2.2.1 Formatos abiertos

Los formatos abiertos permiten al software libre mante-ner sus cuatro libertades y la libre difusión de todo el códi-go y formatos utilizados, su distribución y estudio, debidoa esto, los creadores de software libre desarrollan a la vezde programas libres, formatos libres para estos programaso utilizan formatos libres ya creados anteriormente.Los formatos libres permiten a los usuarios poder traba-jar con programas libres aunque al ser libres pueden serimplementados y utilizados en cualquier programa seacerrado o no. Algunas compañías, como Microsoft, nosuelen utilizar formatos libres en sus programas, no porimpedimento si no por falta de voluntad de implementarformatos abiertos en sus programas, aún así los usuariospueden instalar software libre en sus sistemas para traba-jar con estos formatos.

2.3 Tipos de licencias

Una licencia es aquella autorización formal con caráctercontractual que un autor de un software da a un intere-sado para ejercer “actos de explotación legales”. Puedenexistir tantas licencias como acuerdos concretos se denentre el autor y el licenciatario. Desde el punto de vistadel software libre, existen distintas variantes del conceptoo grupos de licencias:[2]

2.3.1 Licencias GPL

Una de las más utilizadas es la Licencia Pública Generalde GNU (GNU GPL). El autor conserva los derechos deautor (copyright), y permite la redistribución y modifi-cación bajo términos diseñados para asegurarse de quetodas las versiones modificadas del software permane-cen bajo los términos más restrictivos de la propia GNUGPL. Esto hace que sea imposible crear un producto conpartes no licenciadas GPL: el conjunto tiene que ser GPL.Es decir, la licencia GNU GPL posibilita la modificacióny redistribución del software, pero únicamente bajo esamisma licencia. Y añade que si se reutiliza en un mismoprograma código “A” licenciado bajo licencia GNU GPLy código “B” licenciado bajo otro tipo de licencia libre,el código final “C”, independientemente de la cantidad ycalidad de cada uno de los códigos “A” y “B”, debe estarbajo la licencia GNU GPL.En la práctica esto hace que las licencias de software librese dividan en dos grandes grupos, aquellas que pueden

ser mezcladas con código licenciado bajo GNU GPL (yque inevitablemente desaparecerán en el proceso, al serel código resultante licenciado bajo GNU GPL) y las queno lo permiten al incluir mayores u otros requisitos que nocontemplan ni admiten la GNUGPL y que por lo tanto nopueden ser enlazadas ni mezcladas con código gobernadopor la licencia GNU GPL.En el sitio web oficial de GNU hay una lista de licenciasque cumplen las condiciones impuestas por la GNU GPLy otras que no.[10]

Aproximadamente el 60% del software licenciado comosoftware libre emplea una licencia GPL o de manejo.

2.3.2 Licencias AGPL

La Licencia Pública General de Affero (en inglés Af-fero General Public License, también Affero GPL oAGPL) es una licencia copyleft derivada de la LicenciaPública General de GNU diseñada específicamente paraasegurar la cooperación con la comunidad en el caso desoftware que corra en servidores de red.La Affero GPL es íntegramente una GNU GPL con unacláusula nueva que añade la obligación de distribuir elsoftware si éste se ejecuta para ofrecer servicios a travésde una red de ordenadores.La Free Software Foundation recomienda que el uso de laGNU AGPLv3 sea considerado para cualquier softwareque usualmente corra sobre una red.[11]

2.3.3 Licencias estilo BSD

Llamadas así porque se utilizan en gran cantidad de soft-ware distribuido junto a los sistemas operativos BSD.El autor, bajo tales licencias, mantiene la protección decopyright únicamente para la renuncia de garantía y pa-ra requerir la adecuada atribución de la autoría en traba-jos derivados, pero permite la libre redistribución y mo-dificación, incluso si dichos trabajos tienen propietario.Son muy permisivas, tanto que son fácilmente absorbidasal ser mezcladas con la licencia GNU GPL con quienesson compatibles. Puede argumentarse que esta licenciaasegura “verdadero” software libre, en el sentido que elusuario tiene libertad ilimitada con respecto al software,y que puede decidir incluso redistribuirlo como no libre.Otras opiniones están orientadas a destacar que este tipode licencia no contribuye al desarrollo de más softwarelibre (normalmente utilizando la siguiente analogía: “unalicencia BSD es más libre que una GPL si y sólo si se opi-na también que un país que permita la esclavitud es máslibre que otro que no la permite”).

20 CAPÍTULO 2. SOFTWARE LIBRE

2.3.4 Licencias estilo MPL y derivadas

Esta licencia es de Software Libre y tiene un gran valorporque fue el instrumento que empleó Netscape Commu-nications Corp. para liberar su Netscape Communicator4.0 y empezar ese proyecto tan importante para el mundodel Software Libre: Mozilla. Se utilizan en gran cantidadde productos de software libre de uso cotidiano en todotipo de sistemas operativos. La MPL es Software Libre ypromueve eficazmente la colaboración evitando el efec-to “viral” de la GPL (si usas código licenciado GPL, tudesarrollo final tiene que estar licenciado GPL). Desdeun punto de vista del desarrollador la GPL presenta uninconveniente en este punto, y lamentablemente muchagente se cierra en banda ante el uso de dicho código. Noobstante la MPL no es tan excesivamente permisiva comolas licencias tipo BSD. Estas licencias son denominadasde copyleft débil. La NPL (luego la MPL) fue la primeralicencia nueva después de muchos años, que se encargabade algunos puntos que no fueron tomados en cuenta porlas licencias BSD y GNU. En el espectro de las licenciasde software libre se la puede considerar adyacente a lalicencia estilo BSD, pero perfeccionada.

2.3.5 Copyleft

Símbolo del copyleft

Hay que hacer constar que el titular de los derechos deautor (copyright) de un software bajo licencia copyleftpuede también realizar una versión modificada bajo sucopyright original, y venderla bajo cualquier licencia quedesee, además de distribuir la versión original como soft-ware libre. Esta técnica ha sido usada como un modelode negocio por una serie de empresas que realizan soft-ware libre (por ejemplo MySQL); esta práctica no res-tringe ninguno de los derechos otorgados a los usuariosde la versión copyleft.

En España, toda obra derivada está tan protegida comouna original, siempre que la obra derivada parta de unaautorización contractual con el autor. En el caso genéricode que el autor retire las licencias “copyleft”, no afectaríade ningúnmodo a los productos derivados anteriores a esaretirada, ya que no tiene efecto retroactivo. En términoslegales, el autor no tiene derecho a retirar el permiso deuna licencia en vigencia. Si así sucediera, el conflicto entrelas partes se resolvería en un pleito convencional.

2.4 Comparación con el softwarede código abierto

Mapa conceptual del software libre y de código abierto.

Aunque en la práctica el software de código abierto y elsoftware libre comparten muchas de sus licencias, la FreeSoftware Foundation opina que el movimiento del soft-ware de código abierto es filosóficamente diferente delmovimiento del software libre.[12] Apareció en 1998 conun grupo de personas, entre los que cabe destacar a EricS. Raymond y Bruce Perens, que formaron la Open Sour-ce Initiative (OSI). Ellos buscaban darle mayor relevanciaa los beneficios prácticos del compartir el código fuente,e interesar a las principales casas de software y otras em-presas de la industria de la alta tecnología en el concep-to. Por otro lado, la Free Software Foundation y RichardStallman prefieren plantear el asunto en términos éticosempleando el término “software libre”.Los defensores del término “código abierto” afirman queéste evita la ambigüedad del término en ese idioma quees free en free software. El término “código abierto” fueacuñado por Christine Peterson del instituto de investi-gación Foresight Institute, y se registró para actuar comomarca registrada el término en inglés, para los productosde software libre.Mucha gente reconoce el beneficio cualitativo del procesode desarrollo de software cuando los desarrolladores pue-den usar, modificar y redistribuir el código fuente de un

2.6. SEGURIDAD RELATIVA 21

programa. El movimiento del software libre hace especialénfasis en los aspectos morales o éticos del software, vien-do la excelencia técnica como un producto secundario desu estándar ético. El movimiento de código abierto ve laexcelencia técnica como el objetivo prioritario, siendo lacompartición del código fuente un medio para dicho fin.Por dicho motivo, la Fundación del Software Libre se dis-tancia tanto del movimiento de código abierto como deltérmino “Código Abierto”.Puesto que la OSI sólo aprueba las licencias que se ajustana la Open Source Definition (definición de código abier-to), la mayoría de la gente lo interpreta como un esque-ma de distribución, e intercambia libremente los términos“código abierto” y “software libre”. Aún cuando existenimportantes diferencias filosóficas entre ambos términos,especialmente en términos de las motivaciones para eldesarrollo y el uso de tal software, raramente suelen tenerimpacto en el proceso de colaboración.Aunque el término “código abierto” elimina la ambigüe-dad de libertad frente a precio (en el caso del inglés), in-troduce una nueva: entre los programas que se ajustan ala definición de código abierto, que dan a los usuarios lalibertad de mejorarlos, y los programas que simplementetiene el código fuente disponible, posiblemente con fuer-tes restricciones sobre el uso de dicho código fuente. Mu-cha gente cree que cualquier software que tenga el códigofuente disponible es de código abierto, puesto que lo pue-den manipular (un ejemplo de este tipo de software seríael popular paquete de software gratuito Graphviz, inicial-mente no libre pero que incluía el código fuente, aunqueluego AT&T le cambió la licencia). Sin embargo, muchode este software no da a sus usuarios la libertad de distri-buir sus modificaciones, restringe el uso comercial, o engeneral restringe los derechos de los usuarios.

2.5 Implicaciones económico-políticas

Una vez que un producto de software libre ha empezado acircular, rápidamente está disponible a un costomuy bajo.Al mismo tiempo, su utilidad no decrece. El software, engeneral, podría ser considerado un bien de uso inagotable,tomando en cuenta que su costo marginal es pequeñísimoy que no es un bien sujeto a rivalidad (la posesión del bienpor un agente económico no impide que otro lo posea).Puesto que el software libre permite el libre uso, modifi-cación y redistribución, a menudo encuentra un hogar en-tre usuarios para los cuales el coste del software no librees a veces prohibitivo, o como alternativa a la piratería.También es sencillo modificarlo localmente, lo que per-mite que sean posibles los esfuerzos de traducción a idio-mas que no son necesariamente rentables comercialmen-te.La mayoría del software libre se produce por equipos in-

ternacionales que cooperan a través de la libre asocia-ción. Los equipos están típicamente compuestos por indi-viduos con una amplia variedad de motivaciones, y pue-den provenir tanto del sector privado, del sector volunta-rio o del sector público. Existen muchas posturas acercade la relación entre el software libre y el actual sistemapolítico-económico:

• Algunos consideran el software libre como un com-petidor contra el centralismo en empresas y go-biernos, una forma de orden espontáneo o deanarquismo práctico.[13]

• Algunos consideran el software libre como una for-ma de trabajo colaborativo en un modelo de merca-do, tal como se había planteado el cooperativismo.

• Algunos comparan el software libre a una economíadel regalo, donde el valor de una persona está basadoen lo que ésta da a los demás, sin que incurra valormonetario formal de por medio.

• Grupos como Oekonux e Hipatia consideran quetodo debería producirse de esta forma y que es-te modelo de producción no se limita a reempla-zar el modelo no libre de desarrollo del software.La cooperación basada en la libre asociación pue-de usarse y se usa para otros propósitos (tales comoescribir enciclopedias, por ejemplo).

• Hay proyectos de desarrollo con impulso guberna-mental que utilizan software libre, así como en pro-yectos de voluntariado en países en vías de desarro-llo.

Las implicaciones políticas y económicas del software li-bre, o su afinidad con el antiautoritarismo, es discutida.Mientras para unos estas implicaciones son notorias y re-presentan un factor importante a tomarse en cuenta, paraotros si bien podría existir una leve relación, no tiene su-ficiente relevancia.

2.5.1 Modelo de negocio

El negocio detrás del software libre se caracteriza porla oferta de servicios adicionales al software como: lapersonalización y/o instalación del mismo, soporte téc-nico, donaciones, patrocinios o como un elemento deresponsabilidad social corporativa;[14] en contraposiciónal modelo de negocio basado en licencias predominanteen el software de código cerrado.[15]

2.6 Seguridad relativa

Existe una cierta controversia sobre la seguridad del soft-ware libre frente al software no libre (siendo uno de losmayores asuntos la seguridad por oscuridad). Un método

22 CAPÍTULO 2. SOFTWARE LIBRE

usado de forma habitual para determinar la seguridad re-lativa de los productos es determinar cuántos fallos de se-guridad no resueltos existen en cada uno de los productosinvolucrados. Por lo general, los usuarios de este métodorecomiendan que no sean usados productos que no sumi-nistren un método de solucionar los fallos de seguridad,al menos hasta que no esté disponible un arreglo.

2.7 Software libre en la Adminis-tración Pública

Existen países en los cuales, sus administraciones pú-blicas, han mostrado apoyo al software libre, seamigrando total o parcialmente sus servidores y sis-temas de escritorio, sea subvencionándolo. Este esel caso de Alemania,[16][17] Brasil,[18][19] Cuba,[20]Chile,[21] China,[22] Ecuador, España,[23][24] Francia,[25]México,[26] República Dominicana,[27] y Venezuela.[28]

Además de lo anterior, la Administración Pública tienecierta función de guía de la industria que la hace tenerun gran impacto, que se considera que debe dirigirse a lacreación de un ámbito tecnológico generador de riquezanacional. Ésta puede crearse fomentando empresas, cuyonegocio sea en parte el desarrollo de nuevo software librepara la Administración, el mantenimiento y la adaptacióndel software existente.[29]

EnEspaña en el año 2009, el Centro Nacional de Referen-cia de Aplicación de las TIC basadas en Fuentes Abiertas(CENATIC), elaboró un informe junto a la UniversidadRey Juan Carlos (Grupo GsyC/LibreSoft) y TelefónicaI+D, con el fin de analizar el estado en que se encuentrael proceso de implantación del software de fuentes abier-tas en la Administración Pública española.En México, el Software Libre fue impulsado en las uni-versidades y los centros de investigación. Es por eso que,desde hace tres décadas, los estudiantes y los profesoresusan software libre para fines didácticos y de investiga-ción. Ejemplo de ello es la Delta Metropolitana, red desupercomputadoras que están en varios puntos de la Ciu-dad de México, en el CINESTAV, el IPN, la UAM, y laUNAM la cual utiliza software libre para consolidar susrecursos, hacer investigación, y generar conocimiento.

2.8 Ventajas del Software libre enla educación

Según sus impulsores, el software libre ayuda a conocer yparticipar de forma equitativa el proceso educativo, por locual parece tener beneficios en el campo educativo comolos siguientes:

1. Libertad para elegir el programa que cubra de mejormanera las necesidades educativas.

Distribución de algunas aplicaciones de software libre en el pro-ceso de educación a distancia.

2. Beneficio económico: Las licencias del software li-bre son completamente gratuitas, por lo que puedeser eliminado el pago en licencia de programas nolibres e invertir el dinero en otra área.

3. Uso por parte de los estudiantes de los mismos pro-gramas en casa y escuela, de forma legal.

4. Existencia de comunidades de intercambio educati-vo.

5. Desarrollo independiente de aplicaciones: Se favo-rece el crecimiento de desarrolladores “pequeños”de software creando así una amplia oferta de pro-gramas educativos libres.

6. Conocimiento ampliado sobre la informática: Elsoftware libre permite que los estudiantes conozcancómo trabajan los programas y fomenta el interés, lainvestigación y el aprendizaje de nuevos conceptosen el campo de la informática.

7. Diversidad de herramientas educativas en diversasáreas del conocimiento. [30]

2.9 Motivaciones del software libre• La motivación ética, esgrimida la Free SoftwareFoundation ente que argumenta que el software esconocimiento y debe poderse difundir sin trabas. Suocultación es una actitud antisocial y la posibilidadde modificar programas es una forma de libertad deexpresión, aunque sin olvidar una estructura jerar-quizada por la meritocracia[31]

• La motivación pragmática, defendida por la OpenSource Initiative, que argumenta ventajas técnicas yeconómicas, con respecto a evitar una tragedia delos anticomunes mejorando los incentivos.

Aparte de estas motivaciones, quienes trabajan con soft-ware libre suelen hacerlo por muchas otras razones,que van desde la diversión a la mera retribución eco-nómica, que es posible debido a modelos de negociosustentables.[32]

2.11. VÉASE TAMBIÉN 23

2.10 Regulación

2.10.1 Argentina

En la Argentina, en la Provincia de Río Negro, el08/03/2012 el Parlamento aprobó la Ley Ley 4747/12que establece el empleo obligatorio del sistema de Soft-ware Libre en los tres Poderes del Estado, entes descen-tralizados y empresas con participación estatal.[33]

2.10.2 Bolivia

El presidente Evo Morales Ayma, el día lunes 8 de agostodel 2011, reglamentó la Ley Nº 164 de Telecomunicacio-nes y TIC’s para el Desarrollo de Tecnologías de Informa-ción y Comunicación.[34][35]

2.10.3 Ecuador

El Presidente Rafael Correa Delgado, el día jueves 10 deabril del 2008, firmó el Decreto N° 1014; en el cual or-dena, que el software usado por las administraciones pú-blicas del país sea software libre e implícitamente basadoen estándares abiertos.[36][37]

2.10.4 España

LaOrden EDU/2341/2009, de 27 de agosto, por la que secrea el Centro Nacional de Desarrollo Curricular en Sis-temas no Propietarios, tiene como finalidad el diseño, eldesarrollo y la promoción de contenidos educativos digi-tales para colectivos educativos específicos, en el ámbitode las Tecnologías de la Información y la Comunicación,que se centra en promocionar y aplicar estrategias diri-gidas a poner a disposición de los centros escolares re-cursos y contenidos digitales de calidad, desarrollados ensoftware libre.

2.10.5 Uruguay

En Uruguay, a partir de 2003 (Comisión de Constitución,Códigos, Legislación General y Administración CarpetaNº 3565 de 2003 Repartido Nº 1510 de noviembre de2003) se estudió una “Ley de Software Libre y Forma-tos Abiertos en el Estado”. La primera versión planteabael uso de formatos abiertos en todo el Estado y SoftwareLibre en la educación, con una segunda versión presen-tada en el 2006, que ya planteaba dar preferencia al usode Software Libre en todos los organismos del Estado.[38]Luego dicha versión con modificaciones, fue la que reci-bió media sanción en la Cámara de Diputados el 19 dediciembre de 2012,[39][40] la cual fue apoyada por la co-munidad de software libre uruguaya.[41] Finalmente, laley fue aprobada en diciembre de 2013 estableciéndoseen ella que:[42]

1. El Estado deberá preferir la inversión y desarrolloen software libre sobre el que no lo es, salvo cuandoéste no cumpla las necesidades técnicas requeridas.

2. En caso de que el Estado decida invertir en softwa-re privativo, deberá justificar las razones del gasto yargumentar su elección.

3. El Estado deberá distribuir y aceptar toda informa-ción en al menos un formato abierto, estándar y li-bre.

4. El intercambio de información a través de Internetdeberá ser posible en al menos un programa con li-cencia libre.

2.10.6 Venezuela

El Decreto presidencial 3390 de fecha 23 de diciembre de2004 y publicado en la Gaceta Oficial de Venezuela Nº38095 del 28 de diciembre de 2004, establece textual-mente en su artículo 1 que los entes públicos emplearánprioritariamente Software Libre, en sus sistemas, proyec-tos y servicios informáticos, por lo que dichas organiza-ciones deben iniciar procesos de migración gradual y pro-gresiva de éstos hacia el Software Libre [43]

2.11 Véase también

• Portal:Software libre. Contenido relacionadocon Software libre.

• Anexo:Comparación de licencias de software libre

• Arquitectura de fuente abierta

• Asociación de Publicaciones Académicas de AccesoAbierto

• Biblioteca libre

• ColorIURIS

• Contenido abierto

• Contenido libre

• Copyleft

• Creative Commons

• Cultura libre

• Datos abiertos

• Diseño abierto

• Dominio público

• Estándar abierto

• Formato abierto

24 CAPÍTULO 2. SOFTWARE LIBRE

• Free Culture Forum

• Fuente abierta

• GNU

• GNU GPL

• Hardware libre

• Licencia de software libre

• Música libre

• Open content

• Publicaciones de acceso abierto

• Radio libre

• Recursos educativos abiertos

• Video libre

2.12 Referencias[1] «software», Diccionario de la lengua española (22.ª edi-

ción), Real Academia Española, 2001, http://lema.rae.es/drae/srv/search?key=software.

[2] Dominguez Ruiz, Douglas Alfredo. «Software libre».

[3] Richard Stallman (1983). «New UNIX implementation»(en inglés). Consultado el 10 de mayo de 2007.

[4] Ahmet Öztürk (julio de 2002). «Free Software» (en in-glés). Computing& Information Services Newsletter, Me-tu Computer Center, Türkçe.

[5] Free Software Foundation (9 de diciembre de 2010). «LaDefinición de Software Libre». Consultado el 14 de di-ciembre de 2010.

[6] http://osluz.unizar.es/content/blender-3d-liberar-tu-pasi%C3%B3n-lo-cambia-todo-5

[7] http://www.lluisribes.net/wp-content/uploads/2006/03/Page_1.0.jpg

[8] Open Source Initiative. «OSI licenses» (en inglés).

[9] Free Software Foundation. «Licencias de Software Li-bre».

[10] Free Software Foundation, Inc. «Licencias».

[11] Lista de licencias libres en el sitio de la FSF: “We recom-mend that developers consider using the GNU AGPL forany software which will commonly be run over a network”.

[12] «Open Source» (código fuente abierto) en el libreoSoftware libre para una sociedad libre de Stallman

[13] Eben Moglen. «Anarchism Triumphant: Free Softwareand the Death of Copyright (Anarquismo triunfante: elsoftware libre y la muerte de los derechos de autor)» (eninglés).

[14] Modelos open source y responsabilidad social Jesús Gar-cía García & Mª Isabel Alonso de MagdalenoUniversidadde Oviedo. XVI Congreso Asociación Española de conta-bilidad y Administración de empresas

[15] «¿Cómo genera dinero el software libre? - Guías en Mil-Bits».

[16] «DE: Foreign ministry: 'Cost of Open Source desktopmaintenance is by far the lowest' —».

[17] «DiarioTi: Diario Tecnologías de la Información».

[18] «El gobierno de Lula levanta la bandera del 'software' libre· ELPAÍS.com».

[19] «Intel y Novell aplauden el avance de Linux en Brasil ·ELPAÍS.com».

[20] «Cuba abandona Windows y se pasa a Linux · EL-PAÍS.com».

[21] «Regulador e IBM promueven Linux en el Gobierno, Chi-le, Tecnologías de Info., noticias».

[22] «China Earthquake Administration Chooses Linux - Chi-naTechNews.com - The Technology Source for the LatestChinese News on Internet, Computers, Digital, Science,Electronics, La...».

[23] «Extremadura usará 'software' 'libre en los 10.000 orde-nadores de la administración · ELPAÍS.com».

[24] Trejo Pulido, Ana; Domínguez Dorado, Manuel; Ram-samy, Pop (2012). El Software Libre en los OrganismosPúblicos de Ámbito Estatal. CENATIC. ISBN 978-84-15927-00-6. Consultado el 24 de febrero de 2015.

[25] «French police: we saved millions of euros by adoptingUbuntu - Ars Technica».

[26] «Michoacán ahorra muchos millones con software libre -El Universal - Finanzas».

[27] «El Estado Dominicano se evitaría invertir los US$600millones en el Gobierno Electrónico :: CLAVE digitalmóvil».

[28] Gobierno de Venezuela. «Apoyo del Gobierno Venezo-lano al Software Libre».

[29] Sala H. y Núñez Pölcher P. (mayo de 2014). «SoftwareLibre y Acceso Abierto: dos formas de transferencia detecnología». Revista CTS, vol. 9, N. 26.

[30] Da Rosa, Fernando; Heinz, Federico. Guía práctica sobresoftware libre: su selección y aplicación local en AméricaLatina y el Caribe. pp. 53–54. ISBN 92-9089-103-3. Con-sultado el 24 de febrero de 2015.

[31] La catedral y el bazar

[32] Jesús González Barahona, Joaquín Seoane Pascual Joa-quín, Gregorio Robles (2003). Introducción al software li-bre. Barcelona: Eurekamedia.

[33] http://www.legisrn.gov.ar/prensa2/desarro_prensa.php?cod=2343

2.13. ENLACES EXTERNOS 25

[34] Software Libre de Argentina (7 de noviembre de 2013).«El Software Libre en Bolivia es Ley Reglamentada». Es-tado. Consultado el 14 de diciembre de 2013.

[35] Software Libre de Argentina (17 de noviembre de 2013).«Dcreto Supremo N° 1793». Estado. Consultado el 14 dediciembre de 2013.

[36] Alan Lorenzo (11 de abril de 2008). «Ecuador migra asoftware libre vía Decreto». Consultado el 14 de diciem-bre de 2013.

[37] David Ochoa (16 de abril de 2012). «Una ley para promo-ver el software libre». Consultado el 14 de diciembre de2013.

[38] Parlamento Uruguayo”, setiembre de 2006.

[39] Proyecto de ley “Software libre y formatos abiertos en elEstado”, fuente: CESOL, Centro de Estudios de SoftwareLibre.

[40] Proyecto de ley “Software libre y formatos abiertos en elEstado”, fuente: Poder Legislativo - Cámara de Represen-tantes - Uruguay.

[41] Comunicado de la comunidad sobre “Ley de Software Librey Formatos Abiertos en el Estado”, marzo 13 de 2013.

[42] Uruguay pone el ejemplo con la ley de software libre yformatos abiertos

[43] «Decreto N° 3.390». 28 de diciembre de 2004. Consulta-do el 24 de febrero de 2015.

2.13 Enlaces externos

• Wikimedia Commons alberga contenido multi-media sobre Software libre. Commons

• Wikinoticias tiene noticias relacionadas conSoftware libre.Wikinoticias

• Wikiversidad alberga proyectos de aprendizajesobre Software libre.Wikiversidad

• Definición de open source (en inglés)

• Categorías de software libre y no libre

• Licencias de software libre (EN)

• Free Software Foundation (en inglés)

• Free Software Foundation América Latina

• Estudio sobre la valoración del software libre en lasociedad

• Guía Práctica sobre Software Libre, su selección yaplicación local en América Latina y el Caribe, unapublicación de UNESCO

• Centro Nacional de Referencia de Aplicación de lasTIC basadas en Fuentes Abiertas

• Plataforma de Comunidades Virtuales de SoftwareLibre de Venezuela

Capítulo 3

Código abierto

open sourceinitiative

R

Logotipo del código abierto.

Código abierto es la expresión con la que se conoce alsoftware distribuido y desarrollado libremente. Se focali-za más en los beneficios prácticos (acceso al código fuen-te) que en cuestiones éticas o de libertad que tanto se des-tacan en el software libre.

3.1 Historia

Se utilizó por primera vez en 1990 las comunidades desoftware libre, tratando de usarlo como reemplazo al am-biguo nombre original en inglés del software libre (freesoftware). Lo cual implica, para el caso que nos ocu-pa, “software que podemos usar, escribir, modificar y re-distribuir gratuitamente” (software gratuito) y, según laacepción española de libertad.

La expresión, para algunos, no resultó apropiada comoreemplazo para el ya tradicional free software, pues eli-minaba la idea de libertad, confundida con la simple gra-tuidad. No obstante continúa siendo ambivalente, puestoque se usa en la actualidad por parte de programadoresque no ofrecen software libre pero, en cambio, sí ofrecenel código fuente de los programas para su revisión o mo-dificación previamente autorizada por parte de sus paresacadémicos.Dada la ausencia de tal ambigüedad en la lengua espa-ñola, el término software libre es adecuado para referirsea programas que se ofrecen con total libertad de modi-ficación, uso y distribución bajo la regla implícita de nomodificar dichas libertades hacia el futuro. De hecho eninglés también se usa el término “libre software” para evi-tar ambigüedades semánticas.Desde el punto de vista de una “traducción estrictamenteliteral”, el significado textual de “código abierto” es que“se puede examinar el código fuente", por lo que puedeser interpretado como un término más débil y flexible queel del software libre. Sin embargo, ambos movimientosreconocen el mismo conjunto de licencias y mantienenprincipios equivalentes.Sin embargo, hay que diferenciar los programas de códigoabierto, que dan a los usuarios la libertad de mejorarlos,de los programas que simplemente tienen el código fuentedisponible, previa restricciones sobre su uso o modifica-ción.En la actualidad el código abierto se utiliza para definir unmovimiento nuevo de software (la Iniciativa Open Sour-ce), diferente al movimiento del software libre, incompa-tible con este último desde el punto de vista filosófico, ycompletamente equivalente desde el punto de vista prác-tico, de hecho, ambos movimientos trabajan juntos en eldesarrollo práctico de proyectos.La idea bajo el concepto de código abierto es sencilla:cuando los programadores (en Internet) pueden leer, mo-dificar y redistribuir el código fuente de un programa, ésteevoluciona, se desarrolla y mejora. Los usuarios lo adap-tan a sus necesidades, corrigen sus errores con un tiempode espera menor a la aplicada en el desarrollo de softwareconvencional o cerrado, dando como resultado la produc-ción de un mejor software.

26

3.3. MOVIMIENTO DEL “CÓDIGO ABIERTO” 27

3.2 Cronología

• 27 de septiembre de 1983: Richard Stallman iniciael proyecto GNU.

• 25 de agosto de 1991: Linus Torvalds publicaun mensaje en el grupo de noticias USENETcomp.os.minix acerca del nuevo kernel de tipo Unix(Linux) que ha estado desarrollando.

• 22 de enero de 1998: Netscape anuncia que liberaráel código fuente de Navigator.

• 3 de febrero de 1998: en la reunión de Palo Alto seacuña el término “open source” y durante la semanasiguiente Bruce Perens y Eric S. Raymond lanzanopensource.org.

• 31 de marzo de 1998: el código de Navigator ya es-tá disponible: en unas horas, mejoras del programainvaden la red.

• 7 de mayo de 1998: Corel Corporation anuncia Net-winder, un ordenador económico que corre bajoGNU/Linux.

• 11 de mayo de 1998: Corel anuncia sus planes deadaptar WordPerfect y el resto de sus programas deofimática a GNU/Linux.

• 28 de mayo de 1998: Sun Microsystems y Adaptecse unen a Linux International, las primeras grandesempresas vendedoras de equipos y sistemas opera-tivos en hacerlo.

• 13-17 de julio de 1998: Oracle e Informix anuncianque conectarán sus bases de datos a GNU/Linux.

• 10 de agosto de 1998: Sun Microsystems ofreceSolaris a usuarios individuales e instituciones edu-cativas o sin ánimo de lucro.

• 1 de noviembre de 1998: se publican los HalloweenDocuments: planes deMicrosoft contra GNU/Linuxy otros proyectos código abierto.

• 16 de diciembre de 1998: IDG anuncia que la cuotade mercado del GNU/Linux se incrementó un 212%en 1998.

• 1-5 de marzo de 1999: LinuxWorld Conference andExpo: primera exposición sobre GNU/Linux. HP,IBM, SAP inician el comienzo del apoyo de las fir-mas comerciales.

• 15 de marzo de 1999: Apple lanza Darwin bajo li-cencia código abierto.

• 4 de junio de 1999: Microsoft afirma que Li-nux vende más que Windows 98 en las grandessuperficies.[1]

Entre 1998 y 2000 se observó un gran crecimiento en lapopularidad de GNU/Linux y de la formación de muchasempresas “pro software de código abierto”. El movimien-to también capturó la atención de la principal industriadel software, llevando al software de código abierto lasofertas de compañías de software consolidadas como SunMicrosystems con StarOffice e IBM con OpenAFS.

3.3 Movimiento del “código abier-to”

Mapa conceptual del software libre y de código abierto.

La idea del código abierto se centra en la premisa de queal compartir el código, el programa resultante tiende a serde calidad superior al software propietario, es una visióntécnica. Por otro lado, el software libre tiene tendenciasfilosóficas e incluso morales: el software propietario, alno poder compartirse, es “antiético” dado que prohibircompartir entre seres humanos va en contra del sentidocomún.Al igual que el software libre, el código abierto tiene unaserie de requisitos[2] necesarios para que un programapueda considerarse dentro de este movimiento, éstos son:

• Libre redistribución: el software debe poder ser re-galado o vendido libremente.

• Código fuente: el código fuente debe estar incluidou obtenerse libremente.

• Trabajos derivados: la redistribución de modifica-ciones debe estar permitida.

• Integridad del código fuente del autor: las licenciaspueden requerir que las modificaciones sean redis-tribuidas sólo como parches.

• Sin discriminación de personas o grupos: nadie pue-de dejarse fuera.

28 CAPÍTULO 3. CÓDIGO ABIERTO

• Sin discriminación de áreas de iniciativa: los usua-rios comerciales no pueden ser excluidos.

• Distribución de la licencia: deben aplicarse los mis-mos derechos a todo el que reciba el programa

• La licencia no debe ser específica de un producto: elprograma no puede licenciarse solo como parte deuna distribución mayor.

• La licencia no debe restringir otro software: la licen-cia no puede obligar a que algún otro software quesea distribuido con el software abierto deba tambiénser de código abierto.

• La licencia debe ser tecnológicamente neutral: nodebe requerirse la aceptación de la licencia por me-dio de un acceso por clic de ratón o de otra formaespecífica del medio de soporte del software.

Este decálogo es compatible con las cuatro libertades delsoftware libre.

3.4 Programas en código abierto• Sistemas Operativos: los más conocidos, Ubuntu yDebian, basados en Linux. Android, de Google, parateléfonos inteligentes y tabletas.

• Programas: las suites ofimáticas Open Office y LibreOffice, el navegador Firefox, el cliente de correoelectrónico Thunderbird, el reproductor multimediaVLC o el editor de imágenes GIMP

• Antivirus: ClamWin

• Los programas de Apache Software Foundation yGithub.

3.5 Extensiones del concepto

Recientemente se está aplicando por extensión el término“Código abierto” o su equivalente en inglés “Open Sour-ce” a creaciones que no son programas. En concreto sehabla popularmente de cine “Open source” para referir-se a cine bajo distintos tipos de licencias libres.[3] Otroejemplo es el proyecto de una economía de código abiertode la plataformaOpen Source Ecology, comenzado con eldesarrollo de máquinas industriales de código abierto.[4]

3.6 Referencias[1] http://www.theregister.co.uk/1999/06/04/linux_is_

outselling_windows/

[2] «The Open Source Definition». Texto « Open SourceInitiative » ignorado (ayuda)

[3] Articulo “Open-source film” de la wiki inglesa

[4] The mission of Open Source Ecology (OSE) is to createthe open source economy.

3.7 Véase también• Software libre y de código abierto

• Open Source Initiative

• Software libre y Hardware libre

• Software no libre

• Código cerrado

• Diseño abierto

• Democracia OS (DOS)

3.8 Enlaces externos• Open Source Initiative

• Crítica de la FSF al término código abierto (opensource)

• Observatorio Nacional del Software de FuentesAbiertas

• Comunidad para la difusión del Open Source y deGnu Linux

• Varios, “Producir Software de Código Abierto: Co-mo Llevar a Buen Puerto un Proyecto de CódigoLibre”. O'Reilly, 2007. PDF | OpenLibra Libro gra-tuito (español).

Capítulo 4

Proyecto GNU

El proyecto GNU fue iniciado por Richard Stallman conel objetivo de crear un sistema operativo completamentelibre: el sistema GNU.[1]

El 27 de septiembre de 1983 se anunció públicamente elproyecto por primera vez en el grupo de noticias net.unix-wizards. Al anuncio original, siguieron otros ensayos es-critos por Richard Stallman como el "Manifiesto GNU",que establecieron sus motivaciones para realizar el pro-yecto GNU, entre las que destaca “volver al espíritu decooperación que prevaleció en los tiempos iniciales de lacomunidad de usuarios de computadoras”.

4.1 Etimología

GNU es un acrónimo recursivo que significa GNUNo es Unix (GNU is Not Unix). Puesto que en inglés"gnu" (en español "ñu") se pronuncia parecido a "new",Richard Stallman recomienda pronunciarlo "guh-noo".En español, se recomienda pronunciarlo ñu como elantílope africano o fonéticamente;[2] por ello, el términomayoritariamente se deletrea (G-N-U) para su mejorcomprensión[cita requerida]. En sus charlas Richard Stallmanfinalmente dice siempre: «Se puede pronunciar de cual-quier forma, la única pronunciación errónea es llamarlo"Linux"».[3][4][5]

4.2 Historia

UNIX es un sistema operativo no libre muy popular, por-que está basado en una arquitectura que ha demostradoser técnicamente estable. El sistema GNU fue diseñadopara ser totalmente compatible con UNIX. El hecho deser compatible con la arquitectura de UNIX implica queGNU esté compuesto de pequeñas piezas individuales desoftware, muchas de las cuales ya estaban disponibles, co-mo el sistema de edición de textos TeX y el sistema gráfi-co XWindow, que pudieron ser adaptados y reutilizados;otros en cambio tuvieron que ser reescritos.Para asegurar que el software GNU permaneciera librepara que todos los usuarios pudieran “ejecutarlo, copiar-lo, modificarlo y distribuirlo”, el proyecto debía ser libe-

rado bajo una licencia diseñada para garantizar esos de-rechos al tiempo que evitase restricciones posteriores delos mismos. La idea se conoce en Inglés como copyleft(lo cual significa que el autor permite la distribución libredel mismo, en clara oposición a copyright o “derecho deautor”), y está contenida en la Licencia General Públicade GNU (GPL).

Richard Stallman, iniciador del proyecto GNU

En 1985, Stallman creó la Free Software Foundation(FSF o Fundación para el Software Libre) para pro-veer soportes logísticos, legales y financieros al proyectoGNU. La FSF también contrató programadores para con-tribuir a GNU, aunque una porción sustancial del desarro-llo fue (y continúa siendo) producida por voluntarios. Amedida que GNU ganaba renombre, negocios interesadoscomenzaron a contribuir al desarrollo o comercializaciónde productos GNU y el correspondiente soporte técnico.El más prominente y exitoso de ellos fue Cygnus Solu-tions, ahora parte de Red Hat.En 1990, el sistema GNU ya tenía un editor de texto lla-mado Emacs, un exitoso compilador (GCC), y la mayorparte de las bibliotecas y utilidades que componen un sis-tema operativo UNIX típico. Pero faltaba un componenteclave llamado núcleo (kernel en inglés).En el manifiesto GNU, Stallman mencionó que “un nú-cleo inicial existe, pero se necesitan muchos otros progra-mas para emular Unix". Él se refería a TRIX, que es unnúcleo de llamadas remotas a procedimientos, desarrolla-

29

30 CAPÍTULO 4. PROYECTO GNU

do por el MIT y cuyos autores decidieron que fuera libre-mente distribuido; TRIX era totalmente compatible conUNIX versión 7. En diciembre de 1986 ya se había tra-bajado para modificar este núcleo. Sin embargo, los pro-gramadores decidieron que no era inicialmente utilizable,debido a que solamente funcionaba en “algunos equipossumamente complicados y caros” razón por la cual debe-ría ser portado a otras arquitecturas antes de que se pudie-ra utilizar. Finalmente, en 1988, se decidió utilizar comobase el núcleoMach desarrollado en la CMU. Inicialmen-te, el núcleo recibió el nombre de Alix (así se llamaba unanovia de Stallman), pero por decisión del programadorMichael Bushnell fue renombrado a Hurd. Desafortuna-damente, debido a razones técnicas y conflictos persona-les entre los programadores originales, el desarrollo deHurd acabó estancándose.

Símbolo del Copyleft

En 1991, Linus Torvalds empezó a escribir el núcleoLinux y decidió distribuirlo bajo la licencia GPL. Rá-pidamente, múltiples programadores se unieron a Li-nus en el desarrollo, colaborando a través de Internet yconsiguiendo paulatinamente que Linux llegase a ser unnúcleo compatible con UNIX. En 1992, el núcleo Li-nux fue combinado con el sistema GNU, resultando enun sistema operativo libre y completamente funcional.El Sistema Operativo formado por esta combinación esusualmente conocido como "GNU/Linux" o como una"distribución Linux" y existen diversas variantes. (Véasetambién: Controversia por la denominación GNU/Linux)También es frecuente hallar componentes de GNU insta-lados en un sistemaUNIX no libre, en lugar de los progra-mas originales para UNIX. Esto se debe a que muchos delos programas escritos por el proyecto GNU han demos-trado ser de mayor calidad que sus versiones equivalentesde UNIX. A menudo, estos componentes se conocen co-lectivamente como “herramientas GNU”. Muchos de losprogramas GNU han sido también transportados a otrossistemas operativos como Microsoft Windows y Mac OS

X.

4.3 Programas desarrollados porGNU

Caricatura del Ñu de GNU y Tux de Linux.

Listado de algunos programas desarrollados por el pro-yecto GNU:

• Bison - generador de analizadores sintácticos dise-ñado para sustituir a yacc

• Bash - intérprete de comandos

• BFD - archivos de bibliotecas

• Binutils - ensamblador GNU, enlazador GNU, y he-rramientas relacionadas

• Classpath - bibliotecas para Java

• DotGNU - sustituto de .NET

• Emacs - editor de texto extensible y autodocumen-tado

• GCC - compilador optimizado para varioslenguajes, particularmente C

• GDB - depurador de aplicaciones

• GNU Ghostscript - aplicaciones para PostScript yPDF[6]

• GIMP - programa de edición fotográfica

• Glibc - biblioteca para lenguaje C

• GMP - biblioteca para cálculos con precisión arbi-traria

• GNOME - ambiente de escritorio gráfico

4.5. VÉASE TAMBIÉN 31

• Sistema de construcción para GNU

• GNUnet - red descentralizada de comunicacionespersonales, diseñada para resistir interferencias noautorizadas

• GNUstep - implementación del conjunto de biblio-tecas OpenStep, así como herramientas para progra-mar aplicaciones gráficas

• GSL - biblioteca científica para GNU

• Guix - gestor de paquetes puramente funcional

• Gzip - aplicaciones y bibliotecas para compresión dedatos

• Hurd - un micronúcleo y un conjunto de servidoresque funcionan del mismo modo que el núcleo UNIX

• Maxima - un sistema para cálculos algebraicos

• Octave – un programa para cómputo numérico si-milar a MATLAB

• GNU MDK - un conjunto de herramientas para laprogramación en MIX

• Texinfo - sistema de documentación

• LilyPond - editor de partituras musicales.

El proyecto GNU también ayuda con el desarrollo deotros paquetes, como:

• CVS - sistema de control de versiones para códigofuente

• DDD - herramientas gráficas para detección ydepuración de errores

4.4 Distribuciones de GNU

La única variante completamenteGNUes el núcleoHurd,la cual es distribuida como Debian GNU/Hurd y otros,aunque no hay ninguna versión oficial hasta el momento.Linux es el núcleo más usado con GNU, aunque Linuxen sí no es parte de él. GNU también es utilizado conotros núcleos, como Debian GNU/kFreeBSD, DebianGNU/NetBSD, Nexenta OS o GNU-Darwin.Actualmente la versiones que la FSF recomienda, sonaquellas distribuciones que traen el kernel linux-libre, lascuales son Trisquel GNU/Linux, Parabola GNU/Linux,Ututo GNU/Linux entre otras. (Para ver estas listas Visitala web GNU)

4.5 Véase también

• Portal:Software libre. Contenido relacionadocon Software libre.

• Derecho informático

• Free Software Foundation

• Software libre

• Software no libre

• Movimiento del Software Libre

• Cultura libre

• Contenido libre

• GNU/Linux

• Anexo:Lista de paquetes GNU

4.6 Referencias[1] «The GNU Operating System». Consultado el 2009.

[2] GNU (2006). «El sistema operativo GNU – Libre, no gra-tuito. ¿Qué es el proyecto GNU?». Consultado el 2007.

[3] http://www.gnu.org/gnu/gnu-linux-faq.es.html#why

[4] http://www.youtube.com/watch?v=GsZH6CTVvYg

[5] http://ladobe.com.mx/2011/09/sir-richard-stallman-y-su-ultima-cruzada/

[6] «GNU Ghostscript».

4.7 Enlaces externos• Wikiquote alberga frases célebres de o sobreProyecto GNU. Wikiquote

• Wikimedia Commons alberga contenido multi-media sobre El proyecto GNUCommons.

• Sitio oficial de GNU

• El Proyecto GNU

• Filosofía del Proyecto GNU

• Historia del Proyecto GNU

• Anuncio original del inicio del movimiento GNU(en inglés)

Capítulo 5

Software propietario

El término ha sido creado para designar al antónimo delconcepto de software libre, por lo cual en diversos sec-tores se le han asignado implicaciones políticas relati-vas al mismo. Para la Fundación para el Software Libre(FSF), este concepto se aplica a cualquier programa in-formático que no es libre o que sólo lo es parcialmente(semilibre), sea porque su uso, redistribución o modifi-cación está prohibida, o sea porque requiere permiso ex-preso del titular del software.La persona física o jurídica (compañía, corporación, fun-dación, etc.), al poseer los derechos de autor sobre unsoftware, tiene la posibilidad de controlar y restringir losderechos del usuario sobre su programa, lo que en el soft-ware no libre implica por lo general que el usuario sólotendrá derecho a ejecutar el software bajo ciertas condi-ciones, comúnmente fijadas por el proveedor, que signifi-que la restricción de una o varias de las cuatro libertades.

5.1 Historia

En los años 60 los laboratorios Bell proporcionaron el có-digo fuente de su sistema operativo UNIX,[1] y tiempodespués comenzó a existir lo que se conoce como soft-ware de código cerrado. Sin embargo hay que destacarque, al inicio de la era de la informática, era común queagrupaciones científicas estuvieran dispuestas a ceder sucódigo a terceros sin un pago por el mismo ya que tampo-co había una política que lo reglamentara y además era unbeneficio común conocer los desarrollos ajenos en buscade la estandarización.[2]

Pasado el tiempo es en 1979 cuando el gobierno de losEstados Unidos obliga a IBM a distinguir entre softwarey hardware que hasta entonces no se distinguían clara-mente, dando lugar a los primeros intentos de cerrar elcódigo de los programas. Aún en esa época, se encontra-ba en revistas como Creative Computing y Byte hojas yhojas llenas de código libre.[3]

5.1.1 Software propietario

No existe consenso sobre el término a utilizar para refe-rirse al opuesto del software libre. La expresión softwa-

re propietario proviene del término en inglés "proprietarysoftware”. En la lengua anglosajona, "proprietary" signi-fica «poseído o controlado privadamente» («privately ow-ned and controlled»), que destaca la manutención de lareserva de derechos sobre el uso, modificación o redis-tribución del software. Inicialmente utilizado, pero conel inconveniente que la acepción proviene de una traduc-ción literal del inglés, no correspondiendo su uso comoadjetivo en el español, de manera que puede ser conside-rado como un barbarismo.El término “propietario” en español resultaría inadecua-do, pues significa que «tiene derecho de propiedad sobreuna cosa»,[4] por lo que no podría calificarse de “propie-tario” al software, porque éste no tiene propiedad sobrenada (es decir, no es dueño de nada) y, además, no podríaserlo (porque es una cosa y no una persona). Asimismo, laexpresión “software propietario” podría ser interpretadacomo “software sujeto a propiedad” (derechos o titulari-dad) y su opuesto, el software libre, también está sujetoal derecho de autor. Otra interpretación es que contraria-mente al uso popular del término, se puede afirmar deque “todo software es propietario”, por lo que la formacorrecta de referirse al software con restricciones de uso,estudio, copia o mejora es la de software privativo, segúnesta interpretación el término “propietario” podría apli-carse tanto para software libre como software privativo,ya que la diferencia entre uno y otro está en que el dueñodel software privativo lo licencia como propiedad priva-da y el de software libre como propiedad social.[5] Con laintención de corregir el defecto de la expresión “softwarepropietario” aparece el llamado “software con propieta-rio”, sin embargo se argumenta contra del término “conpropietario” justamente su similitud con proprietary eninglés, que sólo haría referencia a un aspecto del softwa-re que no es libre, manteniendo una de las principalescríticas a éste (de “software sujeto a derechos” o “propie-dad”). Adicionalmente, si “propietario” refiere al titularde los derechos de autor (y está claro que no puede refe-rir al usuario, en tanto éste es simplemente un cesionario),no resuelve la contradicción: todo el software libre tienetambién titulares de derechos de autor.Según la opinión de algunos activistas del Movimiento deSoftware Libre, el término “software propietario” fue in-troducido por empresas desarrolladoras de software pri-

32

5.3. VÉASE TAMBIÉN 33

vativo como campaña publicitaria para desacreditar alsoftware libre en cuanto a la propiedad del mismo ha-ciéndola parecer como difusa y sin ninguna garantía desoporte legal para quien lo adquiría. La expresión soft-ware privativo comenzó al ser utilizada por Richard Stall-man, desde el año 2003, en sus conferencias sobre softwa-re libre, pues sería más adecuada que “software propie-tario”. [cita requerida] El término “privativo” significa “quecausa privación o restricción de derechos o libertades”,justamente lo que se pretende describir con él: la priva-ción a los usuarios de sus libertades en relación al softwa-re, esto desde el punto de vista de las organizaciones queapoyan las opciones de software libre.[6]

La expresión software no libre (en inglés non-free soft-ware) es usado por la FSF para agrupar todo el softwa-re que no es libre, es decir, incluye al llamado en inglés"semi-free software" (software semilibre) y al "propietarysoftware".[7] Asimismo, es frecuentemente utilizado pa-ra referirse al software que no cumple con las Directricesde software libre de Debian, las cuales siguen la mismaidea básica de libertad en el software, propugnada por laFSF, y sobre las cuales está basada la definición de códigoabierto de la Open Source Initiative.Adicionalmente el software de código cerrado nace comoantónimo de software de código abierto y por lo tanto secentra más en el aspecto de ausencia de acceso al códigoque en los derechos sobre el mismo. Éste se refiere sóloa la ausencia de una sola libertad por lo que su uso debeenfocarse sólo a este tipo de software y aunque siempresignifique que es un software que no es libre, no tiene queser software de código cerrado.La expresión software privado es usada por la relaciónentre los conceptos de tener y ser privado. Este términosería inadecuado debido a que, en una de sus acepciones,la palabra “privado” se entiende como antónimo de “pú-blico”, es decir, que «no es de propiedad pública o estatal,sino que pertenece a particulares»,[8] provocando que es-ta categoría se interpretara como no referente al Estado,lo que produciría la exclusión del software no libre gene-rado por el aparato estatal. Además, el “software público”se asocia generalmente con software de dominio público.

5.2 Críticas

En la filosofía del proyecto GNU se considera inmo-ral la instalación del software privativo.[9] Su fundador,Richard Stallman ha indicado en múltiples ocasiones queel software privativo al ser adquirido por un particulargenera inmediatamente en él el siguiente dilema ético: siel poseedor del programa lo muestra a un amigo y estese lo pide prestado para copiarlo, o soy un buen cliente yentonces mal amigo -por no compartirlo con él- o soy unbuen amigo y entonces mal cliente y en algunos casos per-seguido por la ley por el hecho de prestar mi software.[10]

Dadas las características del software de código cerrado

un usuario común ignora absolutamente el contenido delmismo y por tanto si existe dentro de las líneas del có-digo alguna amenaza contra su equipo o su información,además el usuario no sólo tiene prohibido el intentar eli-minar o cambiar esa parte del código sino que puede serperseguido por la ley por el hecho de intentar conocer siexiste tal amenaza en dicho software.Por otra parte, en una sociedad de la información,[11] elsoftware se ha convertido en una herramienta importan-te de productividad, y una licencia de software privativoconstituye un acuerdo o contrato entre dos sujetos jurídi-cos que voluntariamente acuerdan las condiciones de usode un programa.

5.3 Véase también

• Software comercial

• Código cerrado

• Software libre

• Código abierto

5.4 Referencias

[1] http://www.google.com.mx/books?id=jsh-H0ndzLAC&pg=PA8&dq=historia+del+software#v=onepage&q=bell&f=false

[2] | Ebuissnes colaborativo. Eduardo Munilla

[3] La ofensiva del software libre. Peter Wayner.

[4] «Diccionario de la lengua española - Vigésima segundaedición».

[5] SasLibre Artículo Sobre Software Libre y Software Pro-pietario (Consulta: 18 de Julio de 2011)

[6] Entrevista a Richard Stallman en Argentina, Canal 7 http://www.youtube.com/watch?v=bDY-tP7R0nw#t=1m48

[7] «Categories of Free and Non-Free Software - GNU Pro-ject - Free Software Foundation (FSF)».

[8] «Diccionario de la lengua española - Vigésima segundaedición».

[9] «Categorías de Software Libre y no Libre - Proyecto GNU- Fundación para el Software libre (FSF)».

[10] Texto traducido del libro de Stallman Artículo de RichardS. Otros autores con la misma opinón sobre la moral delsoftware

[11] Ruíz de Quirol, Ricard (2007). La Sociedad de la In-formación (primera edición). UOC. ISBN 978-84-9788-607-9.

34 CAPÍTULO 5. SOFTWARE PROPIETARIO

5.5 Enlaces externos• Software libre y no de acuerdo con la FSF

Capítulo 6

Código cerrado

En informática un programa es de código cerrado cuan-do el código fuente no se encuentra disponible para cual-quier usuario, es decir no se hace público. Se le llama asíen contraposición al código abierto.El software no libre generalmente utiliza un código ce-rrado. Por su calidad de secreto industrial, su divulgaciónpodría ser constituyente de delito en algunos países.

6.1 Véase también• Software privativo

35

Capítulo 7

Freeware

No debe confundirse con software libre, en in-glés free puede ser libre o gratuito.

El término freeware (“software gratis”, del inglés freesoftware, aunque esta denominación también se confundea veces con “libre” por la ambigüedad del término en elidioma inglés) define un tipo de software que se distribuyesin coste, disponible para su uso y por tiempo ilimitado,[1]y se trata de una variante gratuita del shareware, en la quela meta es lograr que un usuario pruebe el producto du-rante un tiempo (trial) limitado y, si le satisface, que pa-gue por él, habilitando toda su funcionalidad. A veces seincluye el código fuente, pero no es lo usual.El freeware suele incluir una licencia de uso, que permitesu redistribución pero con algunas restricciones, como nomodificar la aplicación en sí ni venderla, y dar cuenta desu autor. También puede desautorizar el uso en una com-pañía con fines comerciales o en una entidad guberna-mental, o bien requerir pagos si se le va a dar uso comer-cial. Todo esto depende del tipo de licencia en concretoa la que se acoge el software.

7.1 Confusiones entre licencias yversiones

Es también habitual confundir la licencia 'freeware' co-mo una licencia sin ningún tipo de restricciones. Puedentener restricciones el uso de los mismos. Es decir, la licen-cia freeware puede permitir sólo el uso no comercial delproducto (muy habitual), uso académico, uso comercialo combinación de ellos.Hay confusión entre versiones Lite (Crippleware) y free-ware, ya que ambas son gratuitas: las versiones Lite sonversiones básicas de un producto más completo (de pa-go), y se ofrecen gratuitamente a modo de prueba paraconocer las funcionalidades del software. La diferenciacon freeware es que esta última licencia ofrece la funcio-nalidad completa del programa.La calidad del software es un factor a tener en cuenta alescoger un programa. Habitualmente y por cuestiones dedisponibilidad de recursos los programas de pago sonme-jores y más completos que los programas freeware. Aun

así, existen muchos casos donde los productos freewareson tan buenos o mejores que sus alternativas de pago.

7.2 Véase también• Software privativo

• Shareware

• Cardware

7.3 Referencias[1] Merriam-Webster definition of freeware

7.4 Enlaces externos

• Wikimedia Commons alberga contenido multi-media sobre Freeware. Commons

36

Capítulo 8

Núcleo Linux

Para el sistema operativo libre compuesto prin-cipalmente por el núcleo Linux y GNU, véaseGNU/Linux.

Linux es un sistema operativo libre, basado en Unix.[4]Es uno de los principales ejemplos de software libre y decódigo abierto.[5] Linux está licenciado bajo la GPL v2y está desarrollado por colaboradores de todo el mundo.El desarrollo del día a día tiene lugar en la Linux KernelMailing List Archive

El núcleo Linux fue concebido por el entonces estudiantede ciencias de la computación finlandés Linus Torvaldsen 1991.[6] Linux consiguió rápidamente desarrollado-res y usuarios que adoptaron códigos de otros proyec-tos de software libre para usarlo con el nuevo sistemaoperativo.[7] El núcleo Linux ha recibido contribucionesde miles de programadores de todo el mundo.[8] Normal-mente Linux se utiliza junto a un empaquetado de soft-ware, llamado distribución GNU/Linux y servidores.En contra de la creencia común, Linux es un sistema ope-rativo en sí mismo, además de un núcleo. Esto es porque apesar de que ambos conceptos son distintos, en un sistemaoperativo monolítico ambos se componen del mismo pro-grama: se denomina núcleo a la parte que se ejecuta enmodo privilegiado, y no debe tomarse en el sentido habi-tual de la palabra.

Its important to realize that these programsare not part of the operating system (...). Theoperating system is the portion of the softwarethat runs in kernel mode (...). A trend inmodern operating systems is to take thisidea of moving code up into higher layerseven further and remove as much as possiblefrom the operating system, leaving a minimalkernel (Refiriéndose a un sistema micronú-cleo basado en el modelo cliente-servidor. Elautor indica repetidamente que es razonableargumentar que las funciones que pasan aejecutarse en espacio de usuario siguen siendoparte del sistema operativo).Operating Systems Design & Implementation,Tanenbaum y Woodhull.

En cambio, en los sistemas micronúcleo esta corres-pondencia núcleo-sistema no se da, como es el caso deDarwin, sistema operativo de OSX, cuyo núcleo es XNU.Por contra, no hay que confundir distribución con sistemaoperativo, aunque es muy habitual que se llame “sistemaoperativo” a lo que realmente es una distribución. De es-ta manera, Linux nunca es igual que GNU/Linux, siendoeste último una distribución que contiene a Linux comosistema, junto con una serie de programas y herramientasdel Proyecto GNU.

8.1 Historia

En abril de 1991,[2] Linus Torvalds, de 21 años, empezóa trabajar en unas simples ideas para un núcleo de un sis-tema operativo. Comenzó con un intento por obtener unnúcleo de sistema operativo gratuito similar a Unix quefuncionara con microprocesadores Intel 80386. Luego, el26 de agosto de 1991, Torvalds escribió en el grupo denoticias comp.os.minix:[9]

“Estoy haciendo un sistema operativo (gra-tuito, sólo un hobby, no será nada grandeni profesional como GNU) para clones AT386(486). Llevo en ello desde abril y está em-pezando a estar listo. Me gustaría saber su opi-nión sobre las cosas que les gustan o disgustanen minix, ya que mi SO tiene algún parecidocon él.[...] Actualmente he portado bash(1.08)y gcc(1.40), y parece que las cosas funcionan.Esto implica que tendré algo práctico dentro deunos meses...”

Después de esto, muchas personas ayudaron con el có-digo. En septiembre de 1991 se lanzó la versión 0.01 deLinux. Tenía 10.239 líneas de código. En octubre de eseaño(1991), se lanzó la versión 0.02 de Linux; luego, endiciembre se lanzó la versión 0.11(1991). Esta versiónfue la primera en ser self-hosted (autoalbergada). Es de-cir, Linux 0.11 podía ser compilado por una computado-ra que ejecutase Linux 0.11, mientras que las versiones

37

38 CAPÍTULO 8. NÚCLEO LINUX

anteriores de Linux se compilaban usando otros sistemasoperativos. Cuando lanzó la siguiente versión, Torvaldsadoptó la GPL como su propio boceto de licencia, la cualno permitía su redistribución con otra licencia que no seaGPL.

Hardware

Desktop ComputerWorkstation

Home ComputerDesktop replacement laptop

Thin client

Mobile computerNote-/ Net-/ Smartbook

TabletSmartphone

PDA / Handheld game console

Wearable ComputerWristwatch

Virtual Retina DisplayHead-mounted display

Embedded ComputerCustomer-premises equipment

Measurement EquipmentLaboratory Equipment

Layer3-Switchesother embedded systems

SupercomputerComputer Cluster

Mainframe computer

Linux Network scheduler

Network stackNetfilter

Linux device drivers

Linux file system drivers

Linux Process Scheduler

Linux Security Modules

Linux kernelHuman-Machine-

Interface

Speech recognitionAttitude sensorMotion sensor

Display, SoundVibration

Keyboard & Mousealso Braille, Touch-Display, Speech recognition,Graphics tablet, 3D-Mouse, Wii nunchak, etc.

Touch-DisplayAttitude sensor, Motion sensor,Speech recognition

remote(SSH, HTTP, ...)

remote(SSH, HTTP,Serial, I2C, ...)

Pool of

free a

nd

op

en

-sou

rce a

nd

pro

pri

eta

ry s

oft

ware

High-performance computing(HPC)

Real-time computing(RTC)

Gra

ph

ical U

ser

Inte

rfaces

(Sh

ells)

Distributed computing

Wearable UI

Touch UI

Desktop UI

OfficeImage Processing

Desktop Publishing (DTP)

Digital Audio WorkstationDJ Mixing Software

Software DevelopmentPackage management systems

Web server solution stacks (LAMP)

Routing daemons

Home cinema solutions

Distributed Computing

CAD, CAM & CAE Software

Win

dow

ing

Syste

ms

Video processing software3D computer graphicsComputer animation

Motion graphics

Debian software archives: 37,000software packages

Video games

La ubicuidad del núcleo Linux

Se inició un grupo de noticias llamado alt.os.linux y el 19de enero de 1992 se publicó en ese grupo el primer post.El 31 demarzo, alt.os.linux se convirtió en comp.os.linux.XFree86, una implementación del X Window System,fue portada a Linux, la versión del núcleo 0.95 fue la pri-mera en ser capaz de ejecutarla. Este gran salto de ver-siones (de 0.1x a 0.9x) fue por la sensación de que unaversión 1.0 acabada no parecía estar lejos. Sin embargo,estas previsiones resultaron ser un poco optimistas: desde1993 a principios de 1994, se desarrollaron 15 versionesdiferentes de 0.99 (llegando a la versión 0.99r15).El 14 de marzo de 1994, se lanzó Linux 1.0.0, que cons-taba de 176.250 líneas de código. En marzo de 1995 selanzó Linux 1.2.0, que ya estaba compuesto de 310.950líneas de código.

• Mayo de 1996: Torvalds decidió adoptar al pingüinoTux como mascota para Linux.

• 9 de junio de 1996: Se lanzó la versión 2 de Linux,con una recepción positiva.

• 25 de enero de 1999: Se lanzó Linux 2.2.0 con1.800.847 líneas de código.

• 18 de diciembre de 1999: se publicaron parches deIBM Mainframe para 2.2.13, permitiendo de estaforma que Linux fuera usado en ordenadores cor-porativos.

• 4 de enero de 2001: se lanzó Linux 2.4.0 con3.377.902 líneas de código.

• 17 de diciembre de 2003: se lanzó Linux 2.6.0 con5.929.913 líneas de código.

• 24 de diciembre de 2008: se lanzó Linux 2.6.28 con10.195.402 líneas de código.[10]

• 20 de octubre de 2010: se lanzó Linux 2.6.36 con13.499.457 líneas de código.[11]

• 30 de mayo de 2011: Linus Torvalds anunció[12] quela versión del núcleo dará el salto a la 3.0 en la si-guiente publicación.

• 21 de julio de 2011: Torvalds publicó en su perfilen la red social Google+ que el núcleo versión 3.0estaba listo con la frase “3.0 Pushed Out”.[13]

• 22 de julio de 2011: Fue lanzada la versión 3.0 delnúcleo en http://www.kernel.org

• 12 de mayo y 13 de mayo de 2012 Fueron lan-zadas las versiones 3.3.6 y 3.4-rc7 del núcleo enhttp://www.kernel.org respectivamente.

• 2 de febrero de 2015 Fue lanzada la versión 3.19

Su código fuente está disponible para descarga en el sitioweb oficial: http://www.kernel.org

8.2 Aspectos técnicos

8.2.1 Arquitecturas

Diagrama del núcleo 2.4.0.

Actualmente Linux es un núcleo monolítico híbrido. Loscontroladores de dispositivos y las extensiones del nú-cleo normalmente se ejecutan en un espacio privilegia-do conocido como anillo 0 (ring 0), con acceso irrestric-to al hardware, aunque algunos se ejecutan en espaciode usuario. A diferencia de los núcleos monolíticos tra-dicionales, los controladores de dispositivos y las exten-siones al núcleo se pueden cargar y descargar fácilmentecomo módulos, mientras el sistema continúa funcionan-do sin interrupciones. También, a diferencia de los nú-cleos monolíticos tradicionales, los controladores pueden

8.2. ASPECTOS TÉCNICOS 39

ser prevolcados (detenidos momentáneamente por acti-vidades más importantes) bajo ciertas condiciones. Es-ta habilidad fue agregada para gestionar correctamenteinterrupciones de hardware, y para mejorar el soporte demultiprocesamiento simétrico.El hecho de que Linux no fuera desarrollado siguiendoel diseño de un micronúcleo (diseño que, en aquella épo-ca, era considerado el más apropiado para un núcleo pormuchos teóricos informáticos) fue asunto de una famosay acalorada discusión entre Linus Torvalds y Andrew S.Tanenbaum. [14] [15]

8.2.2 Jerarquía de directorios

En Linux existe un sistema de archivos que carga y con-tiene todos los directorios, redes, programas, particiones,dispositivos, etc. que el sistema sabe reconocer, o por lomenos, identificar. Este sistema de ficheros y directorios,tiene como base al carácter (/); ese mismo carácter sirvetambién para demarcar los directorios, como por ejem-plo: "/home/usuario/imagen.jpg". El directorio especifi-cado por una ruta consistente sólo por este carácter con-tiene toda la jerarquía de los directorios que constituyentodo el sistema. A este directorio suele llamárselo direc-torio raíz. En Linux, a los discos no se les asigna una letracomo en Windows (p.e. “C:"), sino que se les asigna undirectorio de la jerarquía del directorio raíz (/), como porejemplo: "/media/floppy". Es práctica común en el siste-ma de ficheros de Linux, utilizar varias sub-jerarquías dedirectorios, según las diferentes funciones y estilos de uti-lización de los archivos.[16] Estos directorios pueden cla-sificarse en:

• Estáticos: Contiene archivos que no cambian sin laintervención del administrador (root), sin embargo,pueden ser leídos por cualquier otro usuario. (/bin,/sbin, /opt, /boot, /usr/bin...)

• Dinámicos: Contiene archivos que son cambiantes,y pueden leerse y escribirse (algunos solo por su res-pectivo usuario y el root). Contienen configuracio-nes, documentos, etc. Para estos directorios, es re-comendable una copia de seguridad con frecuencia,o mejor aún, deberían ser montados en una parti-ción aparte en el mismo disco, como por ejemplo,montar el directorio /home en otra partición del mis-mo disco, independiente de la partición principal delsistema; de esta forma, puede repararse el sistemasin afectar o borrar los documentos de los usuarios.(/var/mail, /var/spool, /var/run, /var/lock, /home...)

• Compartidos: Contiene archivos que se pueden en-contrar en un ordenador y utilizarse en otro, o inclu-so compartirse entre usuarios.

• Restringidos: Contiene ficheros que no se puedencompartir, solo son modificables por el administra-dor. (/etc, /boot, /var/run, /var/lock...)

8.2.3 Kernel panic

Kernel panic.

En Linux, un panic es un error casi siempre insalvable delsistema detectado por el núcleo en oposición a los erroressimilares detectados en el código del espacio de usuario.Es posible para el código del núcleo indicar estas condi-ciones mediante una llamada a la función de pánico si-tuada en el archivo header sys/system.h. Sin embargo, lamayoría de las alertas son el resultado de excepciones enel código del núcleo que el procesador no puede mane-jar, como referencias a direcciones de memorias inváli-das. Generalmente esto es indicador de la existencia de unbug en algún lugar de la cadena de alerta. También puedenindicar un fallo en el hardware como un fallo de la RAMo errores en las funciones aritméticas en el procesador, opor un error en el software. En muchas ocasiones es posi-ble reiniciar o apagar adecuadamente el núcleo medianteuna combinación de teclas como ALT+SysRq+REISUB.

8.2.4 Lenguajes de programación

Linux está escrito en el lenguaje de programación C, en lavariante utilizada por el compilador GCC (que ha intro-ducido un número de extensiones y cambios al C están-dar), junto a unas pequeñas secciones de código escritascon el lenguaje ensamblador. Por el uso de sus extensio-nes al lenguaje, GCC fue durante mucho tiempo el únicocompilador capaz de construir correctamente Linux. Sinembargo, Intel afirmó haber modificado su compilador Cde forma que permitiera compilarlo correctamente.Asimismo se usan muchos otros lenguajes en alguna for-ma, básicamente en la conexión con el proceso de cons-trucción del núcleo (el método a través del cual las imáge-nes arrancables son creadas desde el código fuente). Estosincluyen a Perl, Python y varios lenguajes shell scripting.Algunos drivers también pueden ser escritos en C++, For-tran, u otros lenguajes, pero esto no es aconsejable. El sis-tema de construcción de Linux oficialmente solo soportaGCC como núcleo y compilador de controlador.

40 CAPÍTULO 8. NÚCLEO LINUX

Ipod ejecutando un núcleo Linux.

8.2.5 Portabilidad

Aún cuando Linus Torvalds no ideó originalmente Li-nux como un núcleo portable, ha evolucionado en esadirección. Linux es ahora de hecho, uno de los núcleosmás ampliamente portados, y funciona en sistemas muydiversos que van desde iPAQ (una handheld) hasta unzSeries (un mainframe masivo). Está planeado que Li-nux sea el sistema operativo principal de las nuevassupercomputadoras de IBM, Blue Gene cuando su desa-rrollo se complete.De todos modos, es importante notar que los esfuerzosde Torvalds también estaban dirigidos a un tipo diferentede portabilidad. Según su punto de vista, la portabilidades la habilidad de compilar fácilmente en un sistema apli-caciones de los orígenes más diversos; así, la popularidadoriginal de Linux se debió en parte al poco esfuerzo ne-cesario para tener funcionando las aplicaciones favoritasde todos, ya sean GPL o de Código abierto.Las arquitecturas principales soportadas por Linux sonDEC Alpha, ARM, AVR32, Blackfin, ETRAX CRIS,FR-V, H8, IA64, M32R, m68k, MicroBlaze, MIPS,MN10300, PA-RISC, PowerPC, System/390, SuperH,SPARC, x86, x86 64 y Xtensa[17]

8.2.6 Arquitectura de máquina virtual

El núcleo Linux puede correr sobre muchas arquitecturasde máquina virtual, tanto como host del sistema operati-vo o como cliente. La máquina virtual usualmente emulala familia de procesadores Intel x86, aunque en algunoscasos también son emulados procesadores de PowerPC oARM.

8.2.7 Formatos binarios soportados

Linux 1.0 admitía sólo el formato binario a.out. La si-guiente serie estable (Linux 1.2) agregó la utilización delformato ELF, el cual simplifica la creación de bibliote-cas compartidas (usadas de forma extensa por los actua-les ambientes de escritorio como GNOME y KDE). ELFes el formato usado de forma predeterminada por el GCCdesde alrededor de la versión 2.6.0. El formato a.out ac-tualmente no es usado, convirtiendo a ELF en el formatobinario utilizado por Linux en la actualidad.Linux tiene la capacidad de permitir al usuario aña-dir el manejo de otros formatos binarios. Tambiénbinfmt_misc permite correr el programa asociado a unarchivo de datos.

8.3 Versiones

Infografía del Núcleo Linux

Más allá de haber desarrollado su propio código y de in-tegrar los cambios realizados por otros programas, LinusTorvalds continua lanzando nuevas versiones del núcleoLinux. Estos son llamados núcleos “vanilla”, lo que sig-nifica que no han sido modificados por nadie.

8.3.1 Numeración

La versión del núcleo Linux original constaba de cua-tro números. Por ejemplo, asumamos que el número dela versión está compuesta de esta forma: A.B.C[.D] (ej.:2.2.1, 2.4.13 ó 2.6.12.3).

• El número A denota la versión del núcleo. Es el quecambia con menor frecuencia y solo lo hace cuandose produce un gran cambio en el código o en el con-cepto del núcleo. Históricamente sólo ha sido mo-dificado tres veces: en 1994 (versión 1.0), en 1996(versión 2.0), en 2011 (versión 3.0) y en 2015 (ver-sión 4.0).

• El número B denota la subversión del núcleo.

Antes de la serie de Linux 2.6.x, los númerospares indicaban la versión “estable” lanzada.

8.4. DISTRIBUCIONES 41

Por ejemplo una para uso de fabricación, co-mo el 1.2, 2.4 ó 2.6. Los números impares, encambio, como la serie 2.5.x, son versiones dedesarrollo, es decir que no son consideradas deproducción.

Comenzando con la serie Linux 2.6.x, no haygran diferencia entre los números pares o im-pares con respecto a las nuevas herramientasdesarrolladas en la misma serie del núcleo. Li-nus Torvalds dictaminó que este será el modeloen el futuro.

• El número C indica una revisión mayor en el nú-cleo. En la forma anterior de versiones con tres nú-meros, esto fue cambiado cuando se implementaronen el núcleo los parches de seguridad, bugfixes, nue-vas características o drivers. Con la nueva política,solo es cambiado cuando se introducen nuevos dri-vers o características; cambios menores se reflejanen el número D.

• El número D se produjo cuando un grave error, querequiere de un arreglo inmediato, se encontró en elcódigo NFS de la versión 2.6.8. Sin embargo, no ha-bía otros cambios como para lanzar una nueva revi-sión (la cual hubiera sido 2.6.9). Entonces se lanzóla versión 2.6.8.1, con el error arreglado como úni-co cambio. Con 2.6.11, esto fue adoptado como lanueva política de versiones. Bug-fixes y parches deseguridad son actualmente manejados por el cuartonúmero dejando los cambios mayores para el núme-ro C.

También, algunas veces luego de las versiones puede ha-ber algunas letras como “rc1” o “mm2”. El “rc” se refie-re a release candidate e indica un lanzamiento no oficial.Otras letras usualmente (pero no siempre) hacen referen-cia a las iniciales de la persona. Esto indica una bifurca-ción en el desarrollo del núcleo realizado por esa persona,por ejemplo ck se refiere a Con Kolivas, ac a Alan Cox,mientras que mm se refiere a Andrew Morton.El modelo de desarrollo para Linux 2.6 fue un cambiosignificativo desde el modelo de desarrollo de Linux 2.5.Previamente existía una rama estable (2.4) donde se ha-bían producido cambios menores y seguros, y una ramainestable (2.5) donde estaban permitidos cambios mayo-res. Esto significó que los usuarios siempre tenían una ver-sión 2.4 a prueba de fallos y con lo último en seguridad ycasi libre de errores, aunque tuvieran que esperar por lascaracterísticas de la rama 2.5. La rama 2.5 fue eventual-mente declarada estable y renombrada como 2.6. Pero envez de abrir una rama 2.7 inestable, los desarrolladores denúcleos eligieron continuar agregando los cambios en larama “estable” 2.6. De esta forma no había que seguirmanteniendo una rama vieja pero estable y se podía ha-cer que las nuevas características estuvieran rápidamente

disponibles y se pudieran realizar más pruebas con el úl-timo código.Sin embargo, el modelo de desarrollo del nuevo 2.6 tam-bién significó que no había una rama estable para aquellosque esperaban seguridad y bug fixes sin necesitar las últi-mas características. Los arreglos solo estaban en la últimaversión, así que si un usuario quería una versión con to-dos los bug fixed conocidos también tendría las últimascaracterísticas, las cuales no habían sido bien probadas.Una solución parcial para esto fue la versión ya mencio-nada de cuatro números (y en 2.6.x.y), la cual significa-ba lanzamientos puntuales creados por el equipo estable(Greg Kroah-Hartman, Chris Wright, y quizás otros). Elequipo estable solo lanzaba actualizaciones para el núcleomás reciente, sin embargo esto no solucionó el problemadel faltante de una serie estable de núcleo. Distribuido-res de Linux, como Red Hat y Debian, mantienen los nú-cleos que salen con sus lanzamientos, de forma que unasolución para algunas personas es seguir el núcleo de unadistribución.Como respuesta a la falta de un núcleo estable y de genteque coordinara la colección de corrección de errores, endiciembre de 2005 Adrian Bunk anunció que continuaríalanzando núcleos 2.6.16 aun cuando el equipo estable lan-zara 2.6.17. Además pensó en incluir actualizaciones decontroladores, haciendo que el mantenimiento de la serie2.6.16 sea muy parecido a las viejas reglas de manteni-miento para las serie estables como 2.4. El núcleo 2.6.16será reemplazado próximamente por el 2.6.27 como nú-cleo estable en mantenimiento durante varios años.Dado el nuevo modelo de desarrollo, que mantiene fija lasubversión de 2.6, tras durante el Linux Kernel Summitde ese año, Linus Torvalds decidiómodificar el sistema denumeración, sustituyendo los dos primeros números poruna única cifra, de forma que Linux 2.6.39 fue seguidapor Linux 3.0 [18]

8.3.2 Fechas de publicación

8.3.3 Top 10 desarrolladores

8.3.4 Línea de tiempo del Linux

8.4 Distribuciones

Una distribución Linux es un conjunto de software acom-pañado del núcleo Linux que se enfoca a satisfacer lasnecesidades de un grupo específico de usuarios. De estemodo hay distribuciones para hogares, empresas y servi-dores.Las distribuciones son ensambladas por individuos, em-presas u otros organismos. Cada distribución puede in-cluir cualquier número de software adicional, incluyen-do software que facilite la instalación del sistema. La ba-se del software incluido con cada distribución incluye el

42 CAPÍTULO 8. NÚCLEO LINUX

Sharp Zaurus, un computador de bolsillo con Linux.

núcleo Linux, en la mayoría de los casos las herramien-tas GNU, al que suelen añadirse también multitud depaquetes de software.Las herramientas que suelen incluirse en la distribuciónde este sistema operativo se obtienen de diversas fuentes,y en especial de proyectos de software libre, como: GNU,GNOME (creado por GNU) y KDE. También se inclu-yen utilidades de otros proyectos como Mozilla, Perl,Ruby, Python, PostgreSQL, MySQL, Xorg, casi todascon licencia GPL o compatibles con ésta (LGPL, MPL).Usualmente se utiliza la plataforma X.Org Server, basadaen la antigua XFree86, para sostener la interfaz gráfica.

8.5 Copyright

Inicialmente, Torvalds distribuyó Linux bajo los térmi-nos de una licencia que prohibía la explotación comercial.Pero esta licencia fue reemplazada, poco tiempo después,por la GNU GPL (versión 2 exclusivamente). Los térmi-nos de esta última licencia permiten la distribución y ven-ta de copias o incluso modificaciones, pero requiere quetodas las copias del trabajo original y trabajos de autoríaderivados del original sean publicados bajo los mismostérminos, y que el código fuente siempre pueda obtener-se por el mismo medio que el programa licenciado.Torvalds se ha referido a haber licenciado Linux bajo la

GPL como “la mejor cosa que he hecho” (en inglés, “thebest thing I ever did”).[24]

Sin embargo, la versión oficial del núcleo Linux contienefirmware de código cerrado[cita requerida], por ello, el Pro-yecto Linux-libre, auspiciado por la FSFLA, publica ymantiene versiones modificadas del núcleo Linux a lasque se les ha quitado todo el software no libre.

8.6 Marca

A día de hoy, Linux es una marca registrada de LinusTorvalds en los Estados Unidos.[25]

Hasta 1994 nadie registró la marca Linux en Estados Uni-dos. El 15 de agosto de 1994 cuando William R. DellaCroce, Jr. registró la marca Linux, pidió el pago de re-galías a los distribuidores de Linux. En 1996, Torvaldsy algunas organizaciones afectadas denunciaron a DellaCroce y en 1997 el caso se cerró y la marca fue asignadaa Torvalds.[26]

Desde entonces, el Linux Mark Institute gestiona la mar-ca. En 2005 el LMI envió algunas cartas a empresas dis-tribuidoras de Linux exigiendo el pago de una cuota porel uso comercial del nombre. Esto es así porque la legis-lación estadounidense exige que el dueño de una marcala defienda, por lo que se tuvo que pedir dinero por usarla marca Linux, algunas compañías de forma totalmentevoluntaria han cumplido con dicha exigencia, a sabiendasde que dicho dinero se iba a usar para caridad o defenderla marca Linux.[27]

8.7 Críticas

8.7.1 Soporte de hardware

El núcleo Linux ha sido criticado con frecuencia por fal-ta de controladores para cierto hardware de computado-ras de escritorio. Sin embargo, el progresivo incrementoen la adopción de Linux en el escritorio ha mejorado elsoporte de hardware por parte de terceros o de los pro-pios fabricantes, provocando que, en los últimos años, losproblemas de compatibilidad se reduzcan.Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell o MIPS Technologies[28] tienen progra-madores en el equipo de desarrolladores del núcleo Li-nux que se encargan de mantener los controladores parael hardware que fabrican. Este grupo de programadorestambién se le suman los que provee grandes distribuido-res de soluciones Linux como Novell o Red Hat.

8.7.2 Arquitectura monolítica

Andy Tanenbaum escribió el 29 de enero de 1992:

8.9. REFERENCIAS 43

...Linux es un sistema monolítico. Esto esretroceder un paso gigante hacia la década de1970. Es como tomar un programa existenteescrito en C y reescribirlo en BASIC. Para mí,escribir un sistema monolítico en 1991 es ver-daderamente una idea pobre.[29]

8.8 Véase también

• Portal:Linux. Contenido relacionado conLinux.

• Portal:Software Libre. Contenido relacionadocon Software Libre.

• Historia de Linux

• Disputas de SCO sobre Linux

• Glibc

• GNU/Linux

• GNU GRUB

• Llamada al sistema

• LinuxDNA

• Linux-libre

• Linux From Scratch

• Proceso de arranque en Linux

• Shell (informática)

8.9 Referencias[1] LMKL.ORG - the Linux Kernel Mailing List Archive, Si-

tio Oficial de Linux Kernel Mailing List.

[2] «Sobre Linux». Linux.org. Consultado el 19 de julio de2012.

[3] «The linux-kernel mailing list FAQ:Why is the Linux ker-nel written in C/assembly?». Tux.Org (en inglés). Consul-tado el 22 de mayo de 2013.

[4] linux.org, ed. (2010). «What is Linux» (en inglés). Archi-vado desde el original el 27 de mayo de 2010. Consultadoel 11 de agosto de 2011.

[5] Linus Torvalds (25 de septiembre de 2006). «Re: GPLv3Position Statement» (en inglés). Consultado el 22 de mayode 2013.

[6] Marjorie Richardson (1 de noviembre de 1999).«Interview: Linus Torvalds». Linux Journal (en inglés).Consultado el 20 de agosto de 2009.

[7] «Free as in Freedom by Sam Williams. O'Reilly books,2002». Oreilly.com. Consultado el 12 de noviembre de2010.

[8] Greg Kroah-Hartman (abril de 2008). «Linux Kernel De-velopment: How Fast it is Going, Who is Doing It, WhatThey are Doing, and Who is Sponsoring It» (en inglés).«Since 2005, over 3700 individual developers from over200 different companies have contributed to the kernel.»

[9] Linus Torvalds (25-08-1991) Message from discussionWhat would you like to see most in minix? Newsgroups:comp.os.minix, Google Groups (en inglés).

[10] "Linux Kernel Data 2.6.28.”

[11] "Linux Kernel Data 2.6.36.”

[12] Linus Torvalds (30 de mayo de 2011). «Linux 3.0-rc1».Consultado el 30 de mayo de 2011.

[13] Linus Torvalds (21 de julio de 2011). «Linux 3 PushedOut - Linus Torvalds Google Plus Profile». Consultado el27 de julio de 2011.

[14] GNU/Linux Kernel Híbrido (en español)

[15] Resumen de la afamada discusión entre Linus Torvalds yAndrew Tanenbaum (en inglés)

[16] Organización de los directorios en Linux

[17] /pub/scm / linux/kernel/git/torvalds/linux-2.6.git / tree

[18] 29 de mayo de 2011, anuncio de Linux 3.0-rc1

[19] Fechas de publicación de Linux

[20] Contados con “find -type f | wc -l”

[21] Lines of Code (Líneas de código), contados con “find -name *.[hcS] | xargs cat | wc -l”

[22] http://www.linuxfoundation.org/news-media/announcements/2012/04/linux-foundation-releases-annual-linux-development-reportThe Linux Foundation Releases Annual Linux Develop-ment Report

[23] The Linux Foundation Releases Annual Linux Develop-ment Report

[24] Yamagata, Hiroo (11 de noviembre de 1997). «The Prag-matist of Free Software: Linus Torvalds Interview». Con-sultado el 30 de octubre de 2011.

[25] «Registro en Estados Unidos No: 1916230». Oficina dePatentes y Marcas Comerciales de Estados Unidos. Con-sultado el 30 de octubre de 2011.

[26] «Linux Timeline». Linux Journal. 31 de mayo de 2006.

[27] «Linus gets tough on Linux trademark». 5 de septiembrede 2005. Consultado el 30 de octubre de 2011.

[28] «Who writes Linux». Agosto de 2009.

[29] A. S. Tanenbaum (29 de enero de 1992), «LINUXis obsolete», http://groups.google.com/group/comp.os.minix/browse_thread/thread/c25870d7a41696d2/f447530d082cd95d?tvc=2, consultado el 30 de octubrede 2011.

44 CAPÍTULO 8. NÚCLEO LINUX

8.10 Enlaces externos

• Wikimedia Commons alberga contenido multi-media sobre Núcleo LinuxCommons.

• Sitio web oficial de Linux

• Código fuente completo de varias versiones de Li-nux

• Kernel Newbies

Capítulo 9

Microsoft Windows

Microsoft Windows (conocido generalmente comoWindows o MS Windows), es el nombre de una fami-lia de distribuciones de software para PC, smartphone,servidores y sistemas empotrados, desarrollados y vendi-dos por Microsoft, y disponibles para múltiples arquitec-turas, tales como x86 y ARM.Desde un punto de vista técnico, no son sistemas operati-vos, sino que contienen uno (tradicionalmente MS-DOS,o el más actual cuyo núcleo es Windows NT) junto conuna amplia variedad de software; no obstante, es usual(aunque no necesariamente correcto) denominar al con-junto como sistema operativo en lugar de distribución.Microsoft introdujo un entorno operativo denominadoWindows el 20 de noviembre de 1985 como un com-plemento para MS-DOS en respuesta al creciente interésen las interfaces gráficas de usuario (GUI).[1] MicrosoftWindows llegó a dominar el mercado mundial de compu-tadoras personales, con más del 90% de la cuota de mer-cado, superando a Mac OS, que había sido introducidoen 1984.Las versiones más recientes de Windows son Windows10,Windows 8.1 yWindows 8 para equipos de escritorio,Windows Server 2012 para servidores y Windows Phone8 y 8.1 para dispositivos móviles. La primera versión enespañol fue Windows 3.0.La primera versión se lanzó en 1985 y comenzó a utilizar-se de forma generalizada gracias a su interfaz gráfica deusuario (GUI, Graphical User Interface) basada en ven-tanas. Hasta ese momento (y hasta mucho después comocorazón de Windows), el sistema operativo más extendi-do era MS-DOS (Microsoft Disk Operating System), quepor aquel entonces contaba con una interfaz basada enlínea de comandos.El 30 de septiembre de 2014, Microsoft presentó Win-dows 10, la nueva versión del sistema operativo que lle-gara de forma oficial a finales del 2015, siendo la primeraversión que busca la unificación de dispositivos (escrito-rio, portátiles, smartphones y tablets) bajo una experien-cia común, con lo que se espera eliminar algunos proble-mas que se presentaron con Windows 8/ 8.1. Se indicóque durante la conferencia BUILD 2015 se darán a co-nocer más detalles.

9.1 Versiones más utilizadas

9.2 Historia

Sólo servidores

2012

8

8.1

2012 R2

20112012

20132014

otras versiones

árbol familiar de productos

otras versiones

Basados en MS-DOS y 9x

Basados en NT kernel

otras versiones

Árbol genealógico de Windows.

La primera versión de Microsoft Windows, versión 1.0,presentada en noviembre de 1985, compitió con el sis-tema operativo de Apple. Carecía de un cierto grado defuncionalidad y logró muy poca popularidad. Windows1.0 no era un sistema operativo completo; más bien erauna extensión gráfica de MS-DOS. Windows versión 2.0fue lanzado en noviembre de 1987 y fue un poco más po-pular que su predecesor.Windows 2.03 (lanzado en enerode 1988) incluyó por primera vez ventanas que podían so-laparse unas a otras. El resultado de este cambio llevó aApple a presentar una demanda contra Microsoft, debidoa que infringían derechos de autor.Windows versión 3.0, lanzado en 1990, fue la primeraversión de Microsoft Windows que consiguió un amplioéxito comercial, vendiendo 2 millones de copias en losprimeros seis meses. Presentaba mejoras en la interfaz deusuario y en la multitarea. Recibió un lavado de cara enWindows 3.1, que se hizo disponible para el público engeneral el 1 de marzo de 1992. El soporte de Windows3.1 terminó el 31 de diciembre de 2001.En julio de 1993, Microsoft lanzó Windows NT basa-do en un nuevo kernel. NT era considerado como el sis-tema operativo profesional y fue la primera versión deWindows en utilizar la Multitarea apropiativa. WindowsNT más tarde sería reestructurado para funcionar tam-bién como un sistema operativo para el hogar, con Win-dows XP.

45

46 CAPÍTULO 9. MICROSOFT WINDOWS

Segundo logo de Microsoft Windows (1992-2001)

El 24 de agosto de 1995, Microsoft lanzó Windows 95,una versión nueva para los consumidores, que incluíagrandes cambios que en la interfaz de usuario y la utiliza-ción de la multitarea apropiativa. Windows 95 fue dise-ñado para sustituir no solo a Windows 3.1, sino también aWindows para Workgroups y a MS-DOS. También fue elprimer sistema operativo Windows que utilizó las capaci-dades Plug and Play. Los cambios que trajo Windows 95eran revolucionarios, a diferencia de las siguientes versio-nes, comoWindows 98 yWindows Me. El soporte están-dar para Windows 95 finalizó el 31 de diciembre de 2000y el soporte ampliado para Windows 95 finalizó el 31 dediciembre de 2001.El siguiente para la línea del usuario fue lanzado el 25 dejunio de 1998, Microsoft Windows 98. Sustancialmentefue criticado por su lentitud y por su falta de fiabilidaden comparación con Windows 95, pero muchos de susproblemas básicos fueron posteriormente rectificados conel lanzamiento de Windows 98 Second Edition en 1999.El soporte estándar para Windows 98 terminó el 30 dejunio de 2002, y el soporte ampliado para Windows 98terminó el 11 de julio de 2006.Como parte de su línea «profesional», Microsoft lanzóWindows 2000 en febrero de 2000. La versión de con-sumidor tras Windows 98 fue Windows Me (WindowsMillennium Edition). Lanzado en septiembre de 2000,Windows Me implementaba una serie de nuevas tecnolo-gías para Microsoft: en particular fue el «Universal Plugand Play». Durante el 2004 parte del código fuente deWindows 2000 se filtró en internet, esto era malo paraMicrosoft porque el mismo núcleo utilizado en Windows2000 se utilizó en Windows XP.En octubre de 2001, Microsoft lanzó Windows XP, unaversión que se construyó en el kernel deWindows NT quetambién conserva la usabilidad orientada al consumidorde Windows 95 y sus sucesores. En dos ediciones distin-tas, «Home» y «Professional», el primero carece por mu-cho de la seguridad y características de red de la ediciónProfessional. Además, la primera edición «Media Cen-

ter» fue lanzada en 2002, con énfasis en el apoyo a la fun-cionalidad de DVD y TV, incluyendo grabación de TV yun control remoto. El soporte estándar paraWindows XPterminó el 14 de abril de 2009. El soporte extendido fi-nalizó el 8 de abril de 2014.En abril de 2003, se introdujo Windows Server 2003, re-emplazando a la línea de productos de servidor de Win-dows 2000 con un número de nuevas características y unfuerte enfoque en la seguridad; esta versión fue continua-da por Windows Server 2003 R2 en diciembre de 2005.El 30 de enero de 2007, Microsoft lanzó Windows Vis-ta. Contiene una serie de características nuevas, desde unshell rediseñado y la interfaz de usuario da importantescambios técnicos, con especial atención a las caracterís-ticas de seguridad. Está disponible en varias ediciones di-ferentes y ha sido objeto de muy severas críticas debidoa su patente inestabilidad, sobredemanda de recursos dehardware, alto costo, y muy alta incompatibilidad con suspredecesores, hecho que no ocurría con éstos.El 22 de octubre de 2009, Microsoft lanzó Windows 7. Adiferencia de su predecesor, Windows Vista, que introdu-jo a un gran número de nuevas características, Windows7 pretendía ser una actualización incremental, enfocadaa la línea de Windows, con el objetivo de ser compati-ble con aplicaciones y hardware que Windows Vista noera compatible. Windows 7 tiene soporte multi-touch, unWindows shell rediseñado con una nueva barra de tareas,conocido como Superbar, un sistema red llamado Home-Group, y mejoras en el rendimiento sobre todo en velo-cidad y en menor consumo de recursos.El 29 de octubre de 2012, Microsoft lanzó Windows 8.Por primera vez desde Windows 95, el botón Inicio ya noestá disponible en la barra de tareas, aunque la pantalla deinicio está aún activa haciendo clic en la esquina inferiorizquierda de la pantalla y presionando la tecla Inicio en elteclado. Presenta un Explorador deWindows rediseñado,con la famosa interfaz ribbon de Microsoft Office. SegúnMicrosoft han vendido 60 millones de licencias, aunqueha recibido muchas críticas por parte de los usuarios. Seconservan la gran mayoría de las características de su pre-decesor, Windows 7, con excepción de la nueva interfazgráfica y algunos cambios menores.

9.2.1 Versiones BETA de Windows

Las versiones Beta, Alpha o de pruebas, son versionesgratuitas que se crean como base para el próximo sistemaoperativo de Windows a lanzar. En ellas se colocan algu-nas funciones que Microsoft ha puesto por defecto y quelas lanza al público para demostrarles a los usuarios decómo podría ser la futura versión de Windows. Mientrasestas versiones estén activas, los usuarios pueden reportarerrores que se encuentren en el sistema operativo, (ya queno tienen soporte para actualizaciones) y si el reporte essolucionado, Microsoft le dará una cantidad de dinero alusuario que ha reportado dicho error.

9.4. APLICACIONES 47

Las versiones de prueba son muy diferentes a las origi-nales, puesto que no se comercializan y que tienen nom-bres distintos. Por ejemplo, la versión que se utilizó paracrear Windows 94, fue nominada “Chicago”. Estos nom-bres también se suelen llamar “Codenames”. En algunasversiones de prueba (como Windows 8.1 BETA), no lle-van un respectivo codename, y por este motivo llevan elnombre de la próxima versión de Windows de la respec-tiva versión de pruebas, junto a su indicador “Beta”.

9.2.2 Historial de lanzamientos

9.3 Seguridad

Una de las principales críticas que con frecuencia recibenlos sistemas operativos Windows es la debilidad del sis-tema en lo que a seguridad se refiere y el alto índice devulnerabilidades críticas. El propio Bill Gates, fundadorde Microsoft, ha asegurado en repetidas ocasiones que laseguridad es objetivo primordial para su empresa.[44]

Partiendo de la base de que no existe un sistema com-pletamente libre de errores, las críticas se centran en lalentitud con la que la empresa reacciona ante un proble-ma de seguridad que pueden llegar a meses[45][46][47][48]o incluso años[49][50] de diferencia desde que se avisa dela vulnerabilidad hasta que se publica un parche.En algunos casos la falta de respuesta por parte deMicrosoft[51][52] ha provocado que se desarrollen par-ches que arreglan problemas de seguridad hechos porterceros.[53]

Uno de los pilares en que se basa la seguridad de los pro-ductos Windows es la seguridad por ocultación, en ge-neral, un aspecto característico del software propietarioque sin embargo parece ser uno de los responsables dela debilidad de este sistema operativo ya que, la propiaseguridad por ocultación, constituye una infracción delprincipio de Kerckhoff, el cual afirma que la seguridadde un sistema reside en su diseño y no en una supuestaignorancia del diseño por parte del atacante.[54]

9.3.1 Windows Defender

El 6 de enero de 2005, Microsoft lanzó una versión Betade Microsoft AntiSpyware, basado en Giant AntiSpywa-re publicado anteriormente. El 14 de febrero de 2006,Microsoft AntiSpyware se convirtió en Windows Defen-der con el lanzamiento de la Beta 2. Windows Defenderera un programa diseñado para proteger contra spywarey otro software no deseado. Los usuarios de WindowsXP y Windows Server 2003 que tienen copias origina-les de Microsoft Windows pueden descargar librementeel programa desde el sitio web de Microsoft y WindowsDefender se suministra como parte de Windows Vista y7. En Windows 8, Windows Defender y Microsoft Secu-rity Essentials se han combinado en un solo programa,

denominado Windows Defender. Sus características y lainterfaz de usuario se basan en Microsoft Security Essen-tials. Asímismo, Windows Defender se transformó en unprograma antivirus y Spyware. A pesar de que está acti-vada de forma predeterminada, se puede desactivar parautilizar otra solución antivirus.

9.3.2 Permisos de archivos

En todas las versiones de Windows con NT 3 se han ba-sado en un sistema de permisos de sistema de archivosdenominado AGDLP (cuentas, Global, Local, permisos)AGLP que en esencia donde se aplican los permisos dearchivo a la carpeta en forma de un grupo local que luegotiene otros 'grupos globales’ como miembros. Estos gru-pos globales mantienen otros grupos o a usuarios segúnlas diferentes versiones de Windows que utiliza. Este sis-tema varía de otros productos de proveedores tales comoLinux y NetWare debido a la 'estática' asignación de per-miso se aplica directorio para el archivo o carpeta. Sinembargo con este proceso de AGLP/AGDLP/AGUDLPpermite a un pequeño número de permisos estáticos paraaplicarse y permite cambios fáciles a los grupos de cuen-tas sin volver a aplicar los permisos de archivo de los ar-chivos y carpetas.

9.4 Aplicaciones

Son aplicaciones que trae preinstaladas el sistema opera-tivo Windows.

Windows 8

En Windows 8 se han introducido nuevas aplicaciones.

• Fotos

• Vídeo

• Música (Xbox Music)

• Calendario

• Mensajes

• Internet Explorer fue un navegador web deInternet producido por Microsoft para su platafor-maWindows. Fue creado en 1995 tras la adquisiciónpor parte de Microsoft del código fuente de Mosaic,un navegador desarrollado por Spyglass, siendo re-bautizado entonces como Internet Explorer. Las pri-meras versiones, basadas en Mosaic, no supusie-ron ninguna amenaza para el entonces dominanteNetscape Navigator, ya que eran bastante simples yno eran compatibles con algunas de las extensionesmás populares de Netscape que dominaban la web

48 CAPÍTULO 9. MICROSOFT WINDOWS

de la época (como losmarcos o JavaScript). Es el na-vegador de Internet con mayor cuota de mercado, yaque se incluye integrado por defecto con Windows,hecho que le ha costado a Microsoft demandas pormonopolio en Europa.[55]

• Windows Anytime Upgrade es el método de ac-tualizar Windows incluida en Windows vista y ac-tualmente en Windows 7 y Windows 8, el usuariointroduce un código en la aplicación el cual en 10minutos actualizara a una versión más avanzada deWindows, el pack de actualización se compra a tra-vés de Microsoft Store o con el fabricante OEM.

• Windows Media Center es una aplicación conuna interfaz de usuario, diseñado para servir comoequipo personal de cine en casa. Está incluido enWindows XP Media Center Edition como parte dedicha versión especial del sistema operativo, ya quela aplicación no puede ser añadida a una instalaciónexistente de windows XP. También se incluye en lasediciones superiores de Windows Vista (Vista Ho-me Premium y Vista Ultimate), Windows 7 (todaslas ediciones exceptuando Starter y Home Basic) yen Windows 8 Pro.

• WordPad es un procesador de textos básico que seincluye con casi todas las versiones de MicrosoftWindows desde Windows 95 hacia arriba. Es másavanzado que el Bloc de notas pero más sencillo queel procesador de textos de Microsoft Works y Mi-crosoft Word.

• Windows Media Player (conocido en español co-mo “Reproductor de Windows Media”) es un repro-ductor multimedia que permite reproducir músicay vídeo de formatos compatibles (.mp3,.mp4,.waw,wmv, etc...). La última versión de este reproductorha sido la versión 12. Windows Media Player estáincluido en todas las versiones de Windows, inclu-yendo Windows XP, Windows Vista, Windows 7 yWindows 8.

• Paint es un programa simple de dibujo gráfico desa-rrollado por Microsoft. Su antecesor fue el Paint-Brush, incluido desde Windows 1.0 hasta Windows3.1. Desde entonces, Paint ha acompañado al siste-ma operativo Microsoft Windows desde Windows95.

9.5 Críticas y polémicas

Microsoft fue demandado por el gobierno de EstadosUnidos durante el año 1998 por competencia desleal, yespecialmente por la inclusión del navegador Internet Ex-plorer en su versión Windows 95.[56] Tras esta denuncia,

la pena le conllevó aMicrosoft lanzar una versión deWin-dows 95 sin su navegador de Internet.En 2004 Microsoft lanzó una campaña, llamada «Getthe facts», en la que mostraba cientos de empresasconocidas que migraron de GNU/Linux a WindowsServer y aumentaron su productividad y otro tipo decomparativas,[57] aunque la cerró poco después, en2007.[58] Los defensores de GNU/Linux desarrollaron supropio estudio argumentando que, en contra de uno de losreclamos deMicrosoft, GNU/Linux tiene menores costosadministrativos que servidores basados en Windows.[59]Otro estudio realizado por el Yankee Group afirma quela actualización desde una versión de Windows Server aotra plataforma tiene un coste inferior al de cambiar deGNU/Linux a Windows Server.[60]

En 2007 Windows Vista tuvo que enfrentarse a pruebasde que su sistema ofertado funcional a partir de 512 MiBrequería más de 4 GiB para serlo, ello avalado por unconsultor de IBM experto en el sistema.[61] estando «so-brecargado» de objetos, los cuales hacen que los compu-tadores que actualmente están funcionando conWindowsXP no soporten adecuadamente el sistema y no ofrez-can al usuario una experiencia fluida de uso, aunque «sibien es cierto que gracias a características como el Super-fetch, ReadyBoost, ReadyDrive y similares el rendimien-to de Vista incluso puede llegar a ser superior al de XPen computadores potentes».[62]

Debido al fracaso de Windows Vista, en 2007 Microsoftautorizó a hacer downgrade hacia Windows XP en lasversiones Business, Entreprise y Ultimate.[63]

9.6 Véase también

• Microsoft

• Comparación de sistemas operativos

• Lista de sistemas operativos

Contenido relacionado:

• Arquitectura de Windows NT

• Componentes relacionados de Microsoft Windows

• Explorador de Windows

• Windows Genuine Advantage

• Windows Media

• Wintel

• Surface

• Windows Phone

9.7. REFERENCIAS 49

9.7 Referencias[1] «The Unusual History of Microsoft Windows». Consulta-

do el 22 de abril de 2007.

[2] «Operating SystemMarket Share».Net Market Share. NetApplications. abril. Consultado el 2 de febrero de 2014.

[3] «Global Web Stats». W3Counter. Awio Web Services.enero de 2014. Consultado el 7 de abril de 2014.

[4] «StatCounter Global Stats». Global Stats. StatCounter.enero de 2014. Consultado el 7 de abril de 2014.

[5] http://support.microsoft.com/lifecycle/?p1=3187

[6] http://support.microsoft.com/lifecycle/?p1=3187

[7] http://support.microsoft.com/lifecycle/?p1=3187

[8] http://support.microsoft.com/lifecycle/?p1=3187

[9] http://support.microsoft.com/lifecycle/?p1=7864

[10] http://support.microsoft.com/lifecycle/?p1=7864

[11] http://support.microsoft.com/lifecycle/?p1=3194

[12] http://support.microsoft.com/lifecycle/?p1=3194

[13] http://support.microsoft.com/lifecycle/?p1=6898

[14] http://support.microsoft.com/lifecycle/?p1=6898

[15] http://support.microsoft.com/lifecycle/?p1=6898

[16] http://support.microsoft.com/lifecycle/?p1=6898

[17] http://support.microsoft.com/lifecycle/?p1=7274

[18] http://support.microsoft.com/lifecycle/?p1=7274

[19] http://support.microsoft.com/lifecycle/?p1=6519

[20] http://support.microsoft.com/lifecycle/?p1=6519

[21] http://support.microsoft.com/lifecycle/?p1=3223

[22] http://support.microsoft.com/lifecycle/?p1=3223

[23] http://www.microsoft.com/es-xl/windows/business/retiring-xp.aspx

[24] http://support.microsoft.com/lifecycle/?p1=10394

[25] http://support.microsoft.com/lifecycle/?p1=10394

[26] http://support.microsoft.com/lifecycle/?p1=11707

[27] http://support.microsoft.com/lifecycle/?p1=11707

[28] http://support.microsoft.com/lifecycle/default.aspx?LN=en-us&x=13&y=13&p1=12624

[29] http://support.microsoft.com/lifecycle/?p1=12925

[30] http://support.microsoft.com/lifecycle/?p1=12925

[31] «Microsoft Delivers New Wave of Technologies to HelpBusinesses Thrive in Today’s Economy». Microsoft. 11 demayo de 2009. Consultado el 22 de mayo de 2009.

[32] http://support.microsoft.com/lifecycle/?p1=14498

[33] http://support.microsoft.com/lifecycle/?p1=14498

[34] http://support.microsoft.com/lifecycle/?p1=17098

[35] http://support.microsoft.com/lifecycle/?p1=16168

[36] http://support.microsoft.com/lifecycle/?p1=16168

[37] http://support.microsoft.com/lifecycle/?p1=15820

[38] http://support.microsoft.com/lifecycle/?p1=17383

[39] http://support.microsoft.com/lifecycle/?p1=17383

[40] http://www.xatakawindows.com/windows/microsoft-dara-2-anos-a-los-usuarios-de-windows-8-para-instalar-windows-8-1

[41] http://www.noticias3d.com/noticia.asp?idnoticia=58722

[42] http://www.xatakawindows.com/windows/microsoft-dara-2-anos-a-los-usuarios-de-windows-8-para-instalar-windows-8-1

[43] http://support.microsoft.com/lifecycle/?p1=16718

[44] «Bill Gates dice que la seguridad es el gran objetivo deMicrosoft». Clarín.com. 16 de marzo de 2006. Consulta-do el 13 de febrero de 2011.

[45] «Un fallo en Word permitió intrusión en los ordenadoresdel Departamento de Estado». Texto « Kriptópolis » ig-norado (ayuda)

[46] «Microsoft tarda 18 meses en parchear una vulnerabilidadde Explorer».

[47] «Microsoft advierte de la existencia de un nuevo 'agujero'de seguridad en Windows · ELPAÍS.com».

[48] «Microsoft admite -por fin- una grave vulnerabilidad enWindows». Texto «Kriptópolis» ignorado (ayuda)

[49] Leyden, John (14 de agosto de 2009). «MS Zero-day se-curity bug was two years in the making» (en inglés). TheRegister. Consultado el 10 de enero de 2010.

[50] «El agujero de seguridad que Microsoft tardó siete añosen cerrar - 20minutos.es».

[51] «Si esperamos a Microsoft».

[52] «El problema WMF y la ética de una computación con-fiable».

[53] «Parche NO oficial para la vulnerabilidad WMF».

[54] «Seguridad: El gran debate: la seguridad por oscuridad».

[55] «Microsoft lanzará la ventana de elección de navegador enEuropa». Gigle.net. 20 de febrero de 2010. Consultado el13 de febrero de 2011.

[56] «El Gobierno de EEUU y 20 estados demandan a Micro-soft por competencia desleal». El Mundo. 19 de mayo de1998. Consultado el 13 de febrero de 2011.

[57] «Get The Facts onWindows and Linux: TSTT».Microsoft(en inglés). 2005. Consultado el 2 de febrero de 2012.

50 CAPÍTULO 9. MICROSOFT WINDOWS

[58] Foley , Mary Jo (23 de agosto de 2007). «Microsoft killsits 'Get the Facts’ anti-Linux site». Zdnet.com (en inglés).Consultado el 2 de febrero de 2012.

[59] Jaques, Robert (13 de febrero de 2006). MLinux fans hitback at Microsoft TCO claims (en inglés). Consultado el25 de mayo de 2008.

[60] «Yankee Independently Pits Windows TCO vs. LinuxTCO» (en inglés). eWeek.com. 24 demayo de 2004. Con-sultado el 25 de mayo de 2008.

[61] Thibodeau, Patrick (20 de febrero de 2007). «Buyinga new PC? “Windows Vista Capable” a barely hits themark». Computerworld (en inglés). Consultado el 2 de fe-brero de 2012.

[62] Albornoz, Yirá (23 de junio de 2008). «Mejorando el ren-dimiento de Windows Vista: Cuales trucos sirven y cualesno». Consultado el 2 de febrero de 2012.

[63] «Microsoft da vía libre... al XP». ELPAÍS.com. 24 de sep-tiembre de 2007. Consultado el 13 de febrero de 2011.

9.8 Enlaces externos• Sitio oficial de Microsoft Windows

• Microsoft Windows History Timeline

• Wikiquote alberga frases célebres de o sobreMicrosoft Windows. Wikiquote

• Wikimedia Commons alberga contenido multi-media sobreMicrosoft Windows. Commons

9.9. TEXTO E IMÁGENES DE ORIGEN, COLABORADORES Y LICENCIAS 51

9.9 Texto e imágenes de origen, colaboradores y licencias

9.9.1 Texto• Software Fuente: http://es.wikipedia.org/wiki/Software?oldid=82662900 Colaboradores: Youssefsan, Macar~eswiki, Mac, Oblongo, Sab-

but, Sauron, JorgeGG, Pieter, Lourdes Cardenal, Julie, Angus, Rumpelstiltskin, Comae, Aloriel, Dodo, Ejmeza, Faustito, Ejrrjs, Jynus,SimónK, Rsg, Tostadora, Tano4595, Yakoo, PeiT, Dianai, Loco085, Robotico, Balderai, DamianFinol, Elsenyor, FAR, Digigalos, Alexan,Boticario, Soulreaper, Orgullomoore, Javierchiclana, Hispa, Airunp, JMPerez, Edub, Yrithinnd, Taichi, Gussisaurio, Magister Mathema-ticae, Dem, Kokoo, Viko~eswiki, Platonides, Alhen, Superzerocool, Neok deck, Yrbot, Seanver, BOT-Superzerocool, Oscar ., Vitamine,.Sergio, Mortadelo2005, Gaeddal, Museo8bits, Icvav, GermanX, Ferbr1, Equi, Unaiaia, Beto29, Robespierre, Lobillo, Gaijin, Davidam,Carutsu, Eloy, Santiperez, FedericoMP, Sonia Rod, Bichologo, Banfield, Muramasa, Kepler Oort, Maldoror, Tabeissan, Er Komandan-te, Ciencia Al Poder, Cheveri, Arturus, Chlewbot, Tomatejc, Jarke, Filipo, Siabef, Folkvanger, Carlosblh, The worst user, Garygillmore,Paintman, Jorgechp, Dropzink, BOTpolicia, Qwertyytrewqqwerty, JEDIKNIGHT1970, CEM-bot, Jorgelrm, Ebnz~eswiki, Gabriel Acquis-tapace, Renebeto, -jem-, Alexav8, X.Cyclop, Durero, Jjvaca, Retama, Baiji, Acastro, Eamezaga, Rastrojo, Rosarinagazo, Antur, Jjafjjaf,Dorieo, Montgomery, FrancoGG, Ingenioso Hidalgo, Un Mercenario, P.o.l.o., Roberto Fiadone, Diosa, Yeza, RoyFocker, Juan25, And-ya, PhJ, Rafadose, Cratón, Isha, Bernard, Chuck es dios, Gusgus, Góngora, Mpeinadopa, Jabrahamdc, JAnDbot, Jugones55, JuanPaBJ16,VanKleinen, Kved, Mansoncc, Muro de Aguas, Vladimirdlc, Gaius iulius caesar, Iulius1973, Zufs, Gsrdzl, Beaire1, Museobichoxp, Com-monsDelinker, TXiKiBoT, Lovecat1024, Izzues, Gustronico, Gacq, Elisardojm, Humberto, Netito777, Jlinfante, Warcraft~eswiki, Xpel1,ZrzlKing, Amanuense, Chabbot, MotherForker, Idioma-bot, Qoan, Software~eswiki, Pólux, Biasoli, Bucephala, Cipión, Cinevoro, Ale-ja bri3, VolkovBot, Snakeyes, Technopat, Tiernuchin, Queninosta, Libertad y Saber, Dbarbagallo, Matdrodes, Autonomia, Synthebot,DJ Nietzsche, BlackBeast, Shooke, Goinza, JavierPajon, Lucien leGrey, Luis1970, Muro Bot, Edmenb, MiguelAngel fotografo, Racso,Adriglezmunera, Mjollnir1984, Gerakibot, SieBot, Mushii, Marcos Germán Guglielmetti, Ctrl Z, PaintBot, Ensada, Yiyi3, Carmin, Villa-sephiroth, Drinibot, Bigsus-bot, Marcelo, Mel 23, OboeCrack, Abel.orian, Manwë, Greek, Lobo, BuenaGente, Mafores, Chico512, Tirit-hel, Mutari, Prietoquilmes, Jarisleif, Javierito92, UsuarioRafaelgarcia, HUB, Nicop, DragonBot, Farisori, EDGARNICE1, McMalamute,Eduardosalg, Paquete, Leonpolanco, Petruss, Walter closser, Poco a poco, BetoCG, CestBOT, Takashi kurita, Paporrubio, Açipni-Lovrij,Kintaro, Osado, Ravave, Jmha1914, SilvonenBot, Camilo, UA31, SergioN, AVBOT, JAQG, DayL6, David0811, Oliver-INJUD-PETEN,LucienBOT, MastiBot, Adelpine, Cristiangy, MarcoAurelio, CHICHENEITOR, Ezarate, Mayra 7sp, Diegusjaimes, DumZiBoT, Melan-cholieBot, Laisladelsol, Wikijens, Sdepares, Arjuno3, Saloca, Madalberta, Andreasmperu, Luckas-bot, Dalton2, Wesker J, Nallimbot,Ptbotgourou, Jotterbot, Cainite, Letuño, Vic Fede, Angelsaracho, Cfga, Dangelin5, Jorge 2701, ANAYSNARK, Monkey in Your Tank,Nixón, ArthurBot, Ruy Pugliesi, Inventionary, SuperBraulio13, Manuelt15, Xqbot, Jkbw, Dreitmen, Dossier2, Cally Berry, Savig, Ca-rol1221, Ricardogpn, Kismalac, Igna, Torrente, Botarel, MauritsBot, Panderine!, MAfotBOT, Hprmedina, TobeBot, Caritdf, RedBot,Fidelleandro, DixonDBot, Jesuscc29, Alfredalva, AnselmiJuan, Fitoschido, TorQue Astur, Emporio2012, KamikazeBot, Dinamik-bot,Jorge c2010, Wikiléptico, Axvolution, Edslov, Franco Slad, EmausBot, Savh, HRoestBot, ChessBOT, Sergio Andres Segovia, LeafGreen,Tuc negre, Grillitus, KLBot, Eder589, Rubpe19, MercurioMT, Emiduronte, Jcaraballo, Bpk, Cedecomsa, MadriCR, Waka Waka, Lau-rauda, Lauratomsig, Tokvo, Alexander20102010, Arezitopedia, Cesar fuente, Marly yaneth, Antonorsi, Abián, Herny gay, MerlIwBot,Gara4514, KLBot2, UAwiki, Sebrev, Ginés90, Invadibot, Kbronson, DerKrieger, Chico del Pantano, Acratta, Ihernandezsa, Vetranio,Alexanderrojas1, Helmy oved, Makecat-bot, Armonizador, 2rombos, Brianrock97, MaKiNeoH, Neptunia, Legobot, Mininogatito, Add-bot, AnonymousCmc, Diegogalicia27, ConnieGB, JacobRodrigues, Anonymus2013, Gazpachero, Monicagdl, Troloman777, Higuita02,Zzzzzzzz1710, Jarould, Crystallizedcarbon, Aramiza, Analiac03, Andresmoreno234, Rolando Hedeckel y Anónimos: 961

• Software libre Fuente: http://es.wikipedia.org/wiki/Software_libre?oldid=82166063 Colaboradores: Youssefsan, Iranzop, Mac, Sebelk,4lex, Moriel, Frutoseco, Kronoss, Sauron, JorgeGG, ManuelGR, Julie, Rumpelstiltskin, Sanbec, Aparejador, Comae, Rosarino, Dodo, Ej-meza, Levhita, Triku, Jynus, Ascánder, Alstradiaan, Delatorre, Rsg, AlbertoDV, Elwikipedista, Tano4595, Ramjar, Yakoo, Enric Naval,Bafomet, Xenoforme, Hdanniel, Gengiskanhg, Xavidp, Xatufan, JavierCantero, Juantomas, Tian2992, Cinabrium, JosebaAbaitua, Jgb,Almorca, AlGarcia, Loco085, Ecemaml, DamianFinol, Tlahtopil, Desatonao, Elsenyor, FAR, Iarenaza, Boticario, Soulreaper, Mescalier,Hispa, Airunp, Edub, Yrithinnd, Taichi, Rembiapo pohyiete (bot), Caiser, Sbassi, Magister Mathematicae, Worldman, RedTony, Valadrem,Alhen, Flazcano, Superzerocool, Chobot, Insulae, Caiserbot, Gerkijel, Yrbot, Amadís, Seanver, BOT-Superzerocool, Varano, Vitamine,.Sergio, Toniher, Mortadelo2005, GermanX, Equi, Beto29, Juanje, The Photographer, Iajorge, Gronky, Kalessin~eswiki, No sé qué nickponer, Trebol6, Libero, Martini 001, Ayudoentodo 1, Santiperez, FedericoMP, Gustavo.ovalle, R1chard, Fravia, Quiliro, Bcoto, Cien-cia Al Poder, Leonardocaballero, Lasneyx, Josx, Jarke, Demiannnn, Nihilo, Paintman, Clizarraga, Clapp, Axxgreazz, Camontuyu, Jstitch,BOTpolicia, Ál, Wikipaco, CEM-bot, Heavy, Meltryth, Gabriel Acquistapace, Fedaro, Damifb, Laura Fiorucci, Slerena, -jem-, Danoex,Alexav8, Durero, Jjvaca, Retama, Baiji, Jcsans, Roberpl, Pacovila, Bombadil1986, Antur, Montgomery, Thijs!bot, Srengel, PabloCaste-llano, VARGUX, RoyFocker, Csoliverez, Annagul, Patriciadedo, Mario modesto, Ninovolador, Tintinando, Botones, Isha, Hanjin, Arci-bel, Vitorres, Mpeinadopa, JAnDbot, Darolu, Cmontero, VanKleinen, Kved, Telma~eswiki, Ronaldfpb, CarlosRuiz, BetBot~eswiki, Homologos, Muro de Aguas, Gaius iulius caesar, Xavigivax, Jrbiolinux, CommonsDelinker, TXiKiBoT, Lupa18, ColdWind, Gacq, Humber-to, Netito777, Greyes~eswiki, ZrzlKing, Phirosiberia, Chabbot, Mcanto, Pólux, BL, Ramiropol, Zeroth, Biasoli, Openmexico, Snakeyes,Technopat, The Bear That Wasn't, C'est moi, Queninosta, Nicoguaro, Chechurisk, Libertad y Saber, Lmaguina, Josell2, Carlosbz27, Ser-gio Yinyang, Matdrodes, Elabra sanchez, Synthebot, House, DJ Nietzsche, Mgarciasolipa, BlackBeast, Shooke, Lucien leGrey, Mr. MemoCham, Nolan~eswiki, Muro Bot, Edmenb, El Pantera, SieBot, Mikefarrel, Camr, Ctrl Z, Rimac, Kansai, Roberto.estrella, Pepe piton, Ugly,Lepoilu8, Pascow, Elnegrojose, Aleposta, Belb, Tirithel, Mutari, Jmmuguerza, Locos epraix, M S, Javierito92, HUB, Poccms~eswiki,Kikobot, The Yils, Nicop, Fonsi80, Jamkaster, Estirabot, Tosin2627, Eduardosalg, Veon, Botellín, Leonpolanco, Alejandrocaro35, Kakapoop, LordT, Furti, Artra, Camarlengo, Petruss, Poco a poco, PetrohsW, Alexbot, Leandropadula, Raulshc, Açipni-Lovrij, Kintaro, Ravave,UA31, Ucevista, Dv ESP, Fcldlibre, AVBOT, Swatnio, David0811, Eveliux, ShinodaLop, Angel GN, MarcoAurelio, NjardarBot, Enra-mos, Diegusjaimes, Davidgutierrezalvarez, MelancholieBot, Javu61, HerculeBot, Arjuno3, Dalton2, WikiDreamer Bot, Roinpa, Jotterbot,Electrodan, Vic Fede, Hack-Master, Gonchibolso12, LyingB, Yesenia anai, Ser Ant, IVAN SAUCEDO, Marcela Cabrera Ruiz, Isela cv,Leonking, Marioxcc, Kavor, Shekatsu8er, Popopopo4443, ArthurBot, Morenisco, SuperBraulio13, Macruza, Ortisa, Locobot, Manuelt15,Xqbot, Jkbw, Dreitmen, Nessye, Ricardogpn, Coms23, Surfaz, Nopetro~eswiki, Botarel, KvedBOT, AstaBOTh15, Neozonik, BOTirithel,TiriBOT, MAfotBOT, Halfdrag, RedBot, Kizar, Cypress213, P2prules, Cyxmedia, Negro4000, AnselmiJuan, Leugim1972, ClaraDelRey,PatruBOT, CVBOT, Dinamik-bot, Mr.Ajedrez, KSEltar, Antiafd1, Tarawa1943, Asoliverez, Foundling, GrouchoBot, EmausBot, Savh,Keppler es, HRoestBot, Barbanegra, Sergio Andres Segovia, J. A. Gélvez, Fedeanton, Grillitus, Rubpe19, Cal Jac02, Bpk, Jchildrens86,MadriCR, Waka Waka, Caritademenu, Diamondland, Laocratis, Manubot, Mowero, Antonorsi, Rezabot, Matis 1003, JABO, Yuram,KLBot2, Angelfelipegonzalez, Sebrev, LyingB0, MetroBot, Allan Aguilar, Laurarua, HolaTio, NamerThomas, Seasz, Acratta, Glykanera,Darwuinpajaro, Isacdaavid, OdnetninI, Mega-buses, Creosota, DanielithoMoya, HG Alvarez, DLeandroc, Helmy oved, Yorkot, Syum90,

52 CAPÍTULO 9. MICROSOFT WINDOWS

Baute2010, Noma la golosa, MaKiNeoH, -Raul Fer-, Javier duvan, Lautaro 97, Addbot, Mettallzoar, Balles2601, Iartola, Arkantos13, Lu-na197, Jose Martin Jimenez, Mr. Violín, Unapoollacomounaolla, Otrapollacomounaolla, SienCondom, Lagoset, Laberinto16, PizzaDuran,MrCharro, Yenrry16, RousyAyala, Lluvia.vargasm, Kellytepa, Jarould, XBala, Matiia, Maidelrt, Crystallizedcarbon, Lupingr, Betobertocaballin, Jostag, Jrsheik, Misterborracho, Diostar y Anónimos: 753

• Código abierto Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_abierto?oldid=82664473Colaboradores:Youssefsan, Zeno Gantner,Suisui, Moriel, Sauron, Pilaf, Sanbec, Drjackzon, Dodo, Ejmeza, Ascánder, Rsg, Yakoo, JavierCantero, Oviedo, MatiasBellone, Juansem-pere, Petronas, Hispa, Sicarul, Airunp, Platonides, Alhen, Sbrant, Acracia, Varano, Gaeddal, Icvav, GermanX, K1k1, Beto29, Gothmog,Gronky, Basquetteur, Nihilo, BOTpolicia, Xobra, JEDIKNIGHT1970, CEM-bot, Gabriel Acquistapace, Damifb, Laura Fiorucci, Rodrigo-cris, Especiales, Retama, Rickynet, Antur, Goyo de la Brisa~eswiki, PabloCastellano, VARGUX, Mahadeva, Santicluke, JAnDbot, Darolu,Mion, Cmontero, Muro de Aguas, Gaius iulius caesar, ColdWind, Gacq, Bedwyr, Idioma-bot, Pólux, BL, Biasoli, Openmexico, Technopat,Chechurisk, Matdrodes, DJ Nietzsche, Shooke, Lucien leGrey, 3coma14, Muro Bot, Juandiego05, PaQmbral, El Pantera, Ptn, Rallyfreak,MiguelAngelCaballero, Asai-fib~eswiki, Ortellado, Pablinsky, Mafores, Javi1977, Locos epraix, DragonBot, Fonsi80, Xyozine, Eduardo-salg, Pedro alberto ramos arredondo, Botellín, Leonpolanco, Gallowolf, Poco a poco, AVBOT, Diegusjaimes, Hack-Master, Mario GarcíaH., Vivaelcelta, Aganon77, SuperBraulio13, Locobot, Manuelt15, Xqbot, Jkbw, Josemiguel93, Ricardogpn, Erickjoan, Surfaz, Igna, Pa-vlo Shevelo, Botarel, Revoluc, AstaBOTh15, Betomorales, TobeBot, RedBot, Neoaverroes, ClaraDelRey, HUBOT, Alekino, GrouchoBot,Savh, Allforrous, Liant, Mecamático, Byletog, MerlIwBot, Mmfilesi, Invadibot, Tesssla, Elvisor, Ore07, Helmy oved, Makecat-bot, JoséA.2, Rebelplankton, Legobot, Balles2601, Cumbiarey, Neo Zeitgeist, Lagoset, Jarould, Rogerh91, Matiia, Saralekker y Anónimos: 169

• Proyecto GNU Fuente: http://es.wikipedia.org/wiki/Proyecto_GNU?oldid=79053760 Colaboradores:Maveric149,Mac, Juancri, Youand-me, Pino, GomoX, Fibonacci, Moriel, Frutoseco, JorgeGG, Pilaf, Pieter, Astaffolani, ManuelGR, Robbot, Sanbec, Zwobot, Diego Caro,Dodo, Ascánder, Sms, Tano4595, Yakoo, Robotito, Cinabrium, Robotico, Niqueco, Garyknight, Alexan, Hispa, Airunp, Taichi, Emijrp,Rembiapo pohyiete (bot), Caiser, Murven, RobotQuistnix, Superzerocool, Yrbot, Acracia, Varano, Vitamine, BOTijo, Mortadelo2005,Ombresaco, GermanX, Equi, K1k1, KRONOS, Gronky, Tabeissan, Juanjo Conti, Paintman, BOTpolicia, Xreina, CEM-bot, DRoBeR,Jorgelrm, Gabriel Acquistapace, Damifb, -jem-, Alexav8, Ignacio Icke, Xexito, Jjafjjaf, Matias1977, Montgomery, Resped, VARGUX,Jdelmen, Yeza, Alakasam, Isha, Ernesto Trento, JAnDbot, Rafa3040, Maxreaper, Beaire1, CommonsDelinker, TXiKiBoT, Solid Reign,SuperJoe, ColdWind, Bot-Schafter, Humberto, Netito777, Bedorlan, Chabbot, Dav7mx, Delphidius, Jurock, Josell2, Sergio Yinyang, Mat-drodes, Shooke, AlleborgoBot, Muro Bot, Dinopmi, SieBot, Ctrl Z, Ark74, Hompis, Bigsus-bot, FoxNET, Kifling, Figolo, Belb, Mafores,Javi1977, Prietoquilmes, Gato ocioso, LordT, Petruss, PetrohsW, Toolserver, Camilo, Shalbat, AVBOT, David0811, Diegusjaimes, Me-lancholieBot, Andreasmperu, Luckas-bot, Salatielcegarra, Luzbelito92, Hack-Master, LyingB, Vivaelcelta, Nixón, SuperBraulio13, Jkbw,EnlazaBOTquote, Botarel, MauritsBot, Semana34, AstaBOTh15, TiriBOT, MAfotBOT, Halfdrag, Kizar, Marsal20, PatruBOT, Dinamik-bot, KSEltar, Jorge c2010, Miss Manzana, EmausBot, AVIADOR, ZéroBot, TuHan-Bot, Diego09310, Africanus, Grillitus, Chuispaston-Bot, WikitanvirBot, Miguel.baillon, Fandelosotakus90, Hiperfelix, Sweet11, KLBot2, MetroBot, Federicotg, Allan Aguilar, Isacdaavid,EduLeo, Legobot, Quiro9 y Anónimos: 179

• Software propietario Fuente: http://es.wikipedia.org/wiki/Software_propietario?oldid=82364554 Colaboradores: Sebelk, 4lex, Pilaf, Pie-ter, AlexAlonso, Sanbec, Comae, Ejmeza, Ascánder, Alstradiaan, Tano4595, El Moska, Yakoo, Cinabrium, Niqueco, Petronas, Edub,Rembiapo pohyiete (bot), Miguel Pérez Francisco, Orgullobot~eswiki, RobotQuistnix, Alhen, Yrbot, BOT-Superzerocool, BOTijo, To-niher, YurikBot, Mortadelo2005, Davidam, Eskimbot, Banfield, Kimero, Chlewbot, Vhmontenegro, Nihilo, BOTpolicia, CEM-bot, Jor-gelrm, Gabriel Acquistapace, Laura Fiorucci, Alexav8, Montgomery, Thijs!bot, TXiKi, Mahadeva, JAnDbot, GeorgeArthur, TXiKiBoT,ColdWind, Gacq, Netito777, Kana kanji, Biasoli, Aibot, Technopat, Nicoguaro, Mstreet linux, Josell2, Matdrodes, Muro Bot, SieBot,Mikefarrel, Loveless, Bigsus-bot, Roberto.estrella, Mel 23, Pascow, Pedro Felipe, Mafores, Jarisleif, HUB, Kikobot, Eduardosalg, Da-niche, Niksfish, BotSottile, UA31, AVBOT, LucienBOT, Diegusjaimes, Davidgutierrezalvarez, Mikiguti, Linfocito B, Arjuno3, Saloca,Andreasmperu, Luckas-bot, SirWalter, Kaleemsagard, Hack-Master, ArthurBot, SuperBraulio13, Jkbw, Esceptic0, Coms23, Surfaz, Igna,Semana34, EmBOTellado, MAfotBOT, MondalorBot, Blacki4, Patomera, Follonerus, Cypress213, AnselmiJuan, Fitoschido, PatruBOT,Ganímedes, Ripchip Bot, Jorge c2010, Rincondelgabo, BlueCast, Wikiléptico, EmausBot, Grillitus, Dattellix, Getur, MadriCR, Waka Wa-ka, WikitanvirBot, GM83, Antonorsi, MerlIwBot, KLBot2, Chrishonduras, ChayitaBOT, Travelour, Cyberdelic, Gusama Romero, Jr JL,DLeandroc, Helmy oved, Tsunderebot, Nik herrera guzman, Addbot, Balles2601, Jarould, Enycek y Anónimos: 173

• Código cerrado Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_cerrado?oldid=72852818 Colaboradores: Pino, Joseaperez, Dodo,Ejrrjs, Ascánder, Sms, Yakoo, JCCO,Digigalos, Hari Seldon, RobotQuistnix, FlaBot, Usrwp, AtilaElHuno, Gabriel Acquistapace, Thijs!bot,JAnDbot, TXiKiBoT, Rei-bot, AlnoktaBOT, Shooke, Muro Bot, SieBot, PaintBot, Javierito92, UA31, X-DNA-X, DiegoFb, MerlIwBot,Addbot, Balles2601 y Anónimos: 11

• Freeware Fuente: http://es.wikipedia.org/wiki/Freeware?oldid=82640268 Colaboradores: Robbot, Sms, Alstradiaan, SimónK,Ricky~eswiki, Elwikipedista, JavierCantero, Kordas, FAR, Digigalos, Magister Mathematicae, Scancode, Platonides, BOTijo, .Sergio,Banfield, Chessa, José., Tomatejc, Gizmo II, CEM-bot, Meltryth, Gabriel Acquistapace, JMCC1, Especiales, VARGUX, Escarbot, Yeza,RoyFocker, Hoipoi~eswiki, Isha, JAnDbot, Gaius iulius caesar, TXiKiBoT, Caminodelzen, Sergiosh, SuperJoe, Gacq, Netito777, Rei-bot,Bedwyr, Manuel Trujillo Berges, Bucephala, AlnoktaBOT, Tidsa, D'Anconia, Matdrodes, Synthebot, Torres david, Lucien leGrey,Luis1970, Muro Bot, SieBot, Loveless, Cobalttempest, Bjankuloski06es, Ballesss, BOTarate, Manwë, NormaLaGloriosa, Correogsk,VLSmaster, Tirithel, Mutari, Agus3985, Locos epraix, Javierito92, Fonsi80, Akor.Rebel, PixelBot, Veon, Pablo323, Alexbot, Fsplanet,Frei sein, AVBOT, David0811, Louperibot, J.delanoy, SpBot, Diegusjaimes, Gaston95-uy, CarsracBot, Andreasmperu, Luckas-bot,Lautaro kamegaki, Nixón, ArthurBot, SuperBraulio13, Ortisa, Locobot, Xqbot, Jkbw, Dreitmen, Nessye, Semana34, Capm90, D'ohBot,BOTirithel, Aledesanfer95, MAfotBOT, Delband, Halfdrag, Arciniegasdiaz, Leugim1972, PatruBOT, Dinamik-bot, Ernestogon, AlphBot, Comsidery, Foundling, EmausBot, Savh, KLBot, Hechauka, Addbot y Anónimos: 158

• Núcleo Linux Fuente: http://es.wikipedia.org/wiki/N%C3%BAcleo_Linux?oldid=82529819 Colaboradores: Youssefsan, Fibonacci, Mo-riel, JorgeGG, Pilaf, Rafael Soriano, Mdiagom, Sanbec, Dodo, Triku, Ascánder, Antonio Páramo, Ramjar, Jsanchezes, El Moska, Yakoo,LadyInGrey, Felixmoreno, Fernandomirandamuro, Marcoscaceres, Cinabrium, Rgcamus, Txuspe, Niqueco, Digigalos, Deleatur, Hispa,Edub, Emijrp, Rembiapo pohyiete (bot), JOPARA, Magister Mathematicae, Miguel Pérez Francisco, Platonides, Superzerocool, Yrbot,Acracia, Vitamine, BOTijo, Dangarcia, Zoquero, GermanX, The Photographer, Gronky, Banfield, Götz, Er Komandante, Touareg, Toma-tejc, Argentilinux, JorSol, Clapp, BOTpolicia, CEM-bot, Jorgelrm, Texai, Retama, Melenas1414, Festor, Willicab, Alvaro qc, PabloCas-tellano, EKhan, VARGUX, Aeris17, Seymourpoler, RoyFocker, Juan25, Mario modesto, Alakasam, Santicluke, Jtoselli, Botones, Dogor,Dvega78, Mpeinadopa, Hameryko, JAnDbot, Darolu, Cmontero, Ingolll, Mansoncc, Rafa3040, Esnou, Amdkde, ColdWind, Gacq, Neti-to777, Arnillas, Phirosiberia, Nioger, Pólux, Biasoli, Delucardenal, Cinevoro, Skyhack, VolkovBot, Snakeyes, Technopat, Galandil, Nico-guaro, Josell2,Matdrodes, Elabra sanchez, BlackBeast, Shooke, Lucien leGrey, Amitie 10g,Muro Bot, Hulric,Marianomario06, Gerakibot,SieBot, Rodz, Ctrl Z, Brownout, MiguelAngelCaballero, Bigsus-bot, BOTarate, A Vázquez O., Aguarate, Renzoramirezroca, Joanrufe, Lo-cos epraix, Jarisleif, Piero71, Estirabot, Eduardosalg, Botellín, Leonpolanco, LordT, PetrohsW, CestBOT, Cont3mpo, Açipni-Lovrij, Bjsg,

9.9. TEXTO E IMÁGENES DE ORIGEN, COLABORADORES Y LICENCIAS 53

UA31, Fcldlibre, AVBOT, LucienBOT,MastiBot, NjardarBot, SpBot, Diegusjaimes, DumZiBoT, Linfocito B, Arjuno3, Leonardomurguia,Andreasmperu, Luzbelito92, LordboT, LyingB, Arenelion, Billinghurst, Rbuj, Tuxedoar, ArthurBot, Thedemon007, SuperBraulio13, Xq-bot, Jkbw, Serpof, Cally Berry, Ricardogpn, Zeoroth, Surfaz, C9003947, Botarel, Rodoelgrande, Leek~eswiki, Pandres95, AstaBOTh15,Alexis PM, TiriBOT, Halfdrag, RedBot, Kizar, Omerta-ve, AnselmiJuan, Angelito7, TjBot, Alvarovmz, EmausBot, Savh, ZéroBot, SergioAndres Segovia, Grillitus, Rubpe19, Emiduronte, WikitanvirBot, GutiRadical, K-F.U.N 2, Mjbmrbot, Daviba, Palissy, GM83, Moisés P.Parra O., Fernandoxxx, MerlIwBot, Cruzacalles, KLBot2, Ayaita, Cabargas, Eduardox123, MetroBot, Invadibot, Allan Aguilar, Vichock,Bibliofilotranstornado, Isacdaavid, Pablo claret, Leae89, Elvisor, Ivans Sensei, Helmy oved, Italo2121, Fito Flos, Angeldefuego22, ClaudioAlfredo Muñoz Rivera, Daniel cebrian, Jj477447, Javier duvan, -ecarv-, Michelle Cornejo, Addbot, Fdipilla, Ekkt0r, ScotXW, Frox10,JacobRodrigues, JellOx, Pummchis3192, R122513, Patrios, Lagoset, Chalomadek, Carlos antonio garay morales, Gerardo rdz, Jarould,Lazaro Villalba, BenjaBot, REDSHG, Guerra24, Artutao y Anónimos: 342

• Microsoft Windows Fuente: http://es.wikipedia.org/wiki/Microsoft_Windows?oldid=82561080 Colaboradores:Mac, Sildur, Joseaperez,4lex, Oblongo, Moriel, JorgeGG, Pilaf, Wesisnay, Lourdes Cardenal, ManuelGR, Foster~eswiki, Angus, Mdiagom, Sanbec, Aparejador,Zwobot, Madek, Comae, Asierra, Dodo, Ejmeza, Jynus, Ascánder, Sms, Rsg, Cookie, Tostadora, Tano4595, Murphy era un optimista,Jsanchezes, Nosoccomtothom, Marcel~eswiki, El Moska, Yakoo, Enric Naval, PeiT, Wricardoh, Dianai, Gengiskanhg, JavierCantero, Ju-lianortega, Tian2992, Cinabrium, JCCO, Robotico, Tlahtopil, Chewie, Renabot, Richy, Napoleón333, FireBird~eswiki, Mendocino, Crom,Digigalos, Taragui, MarhaultElsdragon, Soulreaper, Orgullomoore, Topopardo, Hispa, Airunp, JMPerez, Edub, Yrithinnd, Taichi, Patri-cio.lorente, Rembiapo pohyiete (bot), Raph~eswiki, Magister Mathematicae, RedTony, Charlitos, Orgullobot~eswiki, Further (bot), Robot-Quistnix, Platonides, Unf, Alhen, Superzerocool, Chobot, Caiserbot, Mabuimo, Unificacion, Yrbot, Seanver, BOT-Superzerocool, Oscar .,Adrruiz, FlaBot, Vitamine, Dubstar, .Sergio, YurikBot, Mortadelo2005, ZeRobLaCk, Gaeddal, Icvav, GermanX, Willtron, Beto29, Loqu-Bot, KnightRider, Guervos, Cucaracha, Tigerfenix, OrlandoSM, Eskimbot, Dborsuk, Sodaxp, Banfield, Kepler Oort, Purodha, Maldoror,Monta990, X3rm1, Er Komandante, FrozenFlame, Cheveri, DZPM, Seshomaru, Lancaster, Tomatejc, The worst user, Tafol, Usrwp, Paint-man, Alexquendi, Pitzyper, Axxgreazz, Jorgechp, Alfa989, JEDIKNIGHT1970, Gizmo II, CEM-bot, Jorgelrm, Bastique, Laura Fiorucci,Alex15090, -jem-, El dva, Penquista, Federoy, Iqlia, Exos, Antur, Juanfran GG, Dorieo, Montgomery, FrancoGG, Ggenellina, Webrom,Thijs!bot, Villarrobledense, Grillo-, Sgtpeppers, VARGUX, Mahadeva, Yeza, RoyFocker, Walterjb, Bryant1410, IrwinSantos, Emmanue-lleonello, Locovich, Alakasam, DokiDoki, PhJ, LMLM, Cratón, Isha, Gusgus, Mpeinadopa, Rrmsjp, Cocorafa, Vmars, JAnDbot, Johns,Marceki111, Trapdoor~eswiki, OceanO, Lgm7, JuanPaBJ16, Pepelopex, Mdvaz, Pacoperez6, Kved, Chali2, Yamaneko, Mansoncc, DeathMaster, Satin, Lucifer984, Muro de Aguas, Limbo@MX, Gsrdzl, CommonsDelinker, TXiKiBoT, Danielantonionunez, Trabajonacho, Di-meque, Luis junco, Esnou, Jf.aguilarmoya, Geniopet, SuperJoe, ColdWind, Gacq, Dhcp, Humberto, Netito777, Aqm, Jucamo, Rei-bot,Algarabia, Xjres, Idioma-bot, Pólux, Wartemplar, Zeroth, Biasoli, Bucephala, Octubre1987, Espanish AlB, AlnoktaBOT, Cinevoro, Vol-kovBot, Drever, Snakeyes, LostCitizen, Technopat, Galandil, Lord-LTSmash, Mstreet linux, Josell2, Matdrodes, Fran 3003, Synthebot,House, DJ Nietzsche, BlackBeast, Gabriel nasr, Shooke, Teckizt, Barri, AlleborgoBot, IIM 78, Muro Bot, Edmenb, Adels, MRK2001,SieBot, Danielba894, Loveless, Phosky, Kcmraz, Andresau, Cobalttempest, Lamban, Drinibot, Bigsus-bot, BOTarate, Kalpo, Nimo-DT,Enigmaelectronica, Mel 23, Macrut, Edu2503, Correogsk, Gaboflowers, Furado, Sotcr, BuenaGente, Aleposta, Belb, Chico512, SalvadorBaltazar, Jarisleif, Javierito92, Lprd2007, HUB, Rexrodo, Kikobot, Edsoncll, DragonBot, Pumk, AlbertoMaria, Darkmarth, PixelBot, Esti-rabot, Eduardosalg, AAF07, Leonpolanco, Pan con queso, Epiovesan, El oso panda, Alejandrocaro35, LordT, TronaBot, MaratRevolution,Petruss, Alejandro Lodes, Rαge, Frei sein, Raulshc, Açipni-Lovrij, UA31, Shalbat, AVBOT, David0811, AlbertoMacedo, SF007, Lucien-BOT, Danifronter, Louperibot, MastiBot, Angel GN, Tanhabot, Maleonm01, Ialad, Diegusjaimes, DumZiBoT, Linfocito B, Victormoz,Arjuno3, Andreasmperu, Luckas-bot, Emiharry, Nallimbot, SirWalter, Ptbotgourou, FariBOT, Jotterbot, Hack-Master, FaiBOT, LyingB,Arseny1992, Vivaelcelta, Agusx12, Nixón, ArthurBot, SuperBraulio13, PAULOGARCIA2005, Locobot, Manuelt15, Xqbot, Jkbw, Enla-zaBOTquote, Pablocuchis3902, Ricardogpn, Surfaz, Igna, Germanazo, JorgeEA7, Botarel, Davaguco, AstaBOTh15, JuanCRS, Amgc56,Daniel1996k, LeonimuZ, Misael431, BOTirithel, TiriBOT, Jafu53, Jakeukalane, TobeBot, Halfdrag, Dreitbot, Kriz cold, Abece, Fitoschi-do, Maktin18, Leugim1972, TorQue Astur, PatruBOT, CVBOT, Bkn anime, MickMurillo, Diego Sanguinetti, Angelevyn, Tarawa1943,Nachosan, Jorge c2010, Foundling, Wikiléptico, David Moreno Morales, WikiAnthony, Adrigal96, DiegoBM, Nubia100, Miss Manza-na, Edslov, EmausBot, Savh, AVIADOR, ZéroBot, HRoestBot, Africanus, Elver060492, Yowindows, Yoxp, Dondervogel 2, Richarddkm,Keonda2, Grillitus, Arpabone, JackieBot, HernandoJoseAJ, Chulalo, Rubpe19, Rudy666, Techsmith~eswiki, MercurioMT, Mecamático,3dmen, Emiduronte, Jcaraballo, Khiari, MadriCR, Albertojuanse, Waka Waka, WikitanvirBot, FanHabbo, Pagiusalvi, Cientifico crazy4.00, Chichan111, Santavera, Shinobilanterncorps, Patrias, GM83, PedR, Nash0h, Reglaje, Abián, MerlIwBot, Cruzacalles, Satanás vade retro, KLBot2, TeleMania, Carlos.david.98, Aitorponce, Vicky 699, Camilovehi, VR0, Deivis, AvocatoBot, Peloxo88, Travelour, Me-troBot, Escuela90, Bonifacio13, Jasontoro2011, Gusama Romero, Andres Quispe Torres, Logos89, Mechita korn, Mega-buses, LlamaAl,Elstef41, Creosota, Stfanka, Helmy oved, GeekBing, Angeldefuego22, Akdkiller, RomanLier, Lobo azul, Chevebot, 2rombos, Profesor-Favalli, Syum90, Deslaiter, Nickelmax, Totemkin, Elshiba1, Miguel2706, MaKiNeoH, Romulo Flores, La sejona mono, GianfrancoSergi,Ivanflorido90, Jean70000, Addbot, Victordesfe, Luis.esteban.moreno, $amuelrey, Benjamin.Monterroza, Camr19, JuanG83, Edvasquin,Rogger González, Are ruiz, Javier hernando, Darldil, Gumerxindo2, Danielzambranoo, JacobRodrigues, Horse2102, Narutomonz, Friend-ZonexD, Mmaattiiuuss, Pao050, MrCharro, Pmerola, Felipe 775, Pene Gordo69cm, Jarould, Matiia, Lazaro Villalba, Jarinton, BenAffleck,HenryCaivil, Rony poporin manco, Paulo Abraham, GordoFrikii, MultiStudiosMexico, Pronates, Cristiano2015, BenjaBot, Therubio123,RexFan22, Betoberto caballin, Carlesbou, Jose tumbaco, Lolxdpls, DanielNavarro xD, ElYaiko, Mixtime, Mixtime5000, Aramiza, Ja ponpon Ja, Intimidad amorosa, Ariel0345 y Anónimos: 1127

9.9.2 Imágenes• Archivo:Commons-emblem-contradict.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/24/

Commons-emblem-contradict.svg Licencia: GPL Colaboradores:• File:Gnome-emblem-important.svg Artista original: GNOME icon artists, Fitoschido• Archivo:Commons-emblem-question_book_orange.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/1/1f/

Commons-emblem-question_book_orange.svg Licencia: CC BY-SA 3.0 Colaboradores: <a href='//commons.wikimedia.org/wiki/File:Commons-emblem-issue.svg' class='image'><img alt='Commons-emblem-issue.svg' src='//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/25px-Commons-emblem-issue.svg.png' width='25' height='25'srcset='//upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/38px-Commons-emblem-issue.svg.png1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Commons-emblem-issue.svg/50px-Commons-emblem-issue.svg.png 2x'data-file-width='48' data-file-height='48' /></a> + <a href='//commons.wikimedia.org/wiki/File:Question_book.svg' class='image'><imgalt='Question book.svg' src='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/25px-Question_book.svg.png'

54 CAPÍTULO 9. MICROSOFT WINDOWS

width='25' height='20' srcset='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/38px-Question_book.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/50px-Question_book.svg.png 2x' data-file-width='252' data-file-height='199' /></a> Artista original: GNOME icon artists, Jorge 2701

• Archivo:Commons-logo.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg Licencia: Public domainColaboradores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be slightlywarped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version, created byReidab.

• Archivo:Copyleft.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/8/8b/Copyleft.svg Licencia: Public domain Colaborado-res: Trabajo propio Artista original: Zscout370, Sertion, e.a.

• Archivo:Decrease2.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/e/ed/Decrease2.svg Licencia: Public domain Colabora-dores: Trabajo propio Artista original: Sarang

• Archivo:Flag_of_the_United_States.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/a/a4/Flag_of_the_United_States.svg Licencia: Public domain Colaboradores: SVG implementation of U. S. Code: Title 4, Chapter 1, Section 1 [1] (the United StatesFederal “Flag Law”). Artista original: Dbenbenn, Zscout370, Jacobolus, Indolences, Technion.

• Archivo:Gnu-and-penguin-color.png Fuente: http://upload.wikimedia.org/wikipedia/commons/8/80/Gnu-and-penguin-color.png Li-cencia: CC-BY-SA-3.0 Colaboradores: Transferido desde en.wikipedia a Commons. Artista original: Free Software Foundation

• Archivo:Heckert_GNU_white.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/22/Heckert_GNU_white.svg Licencia:CC BY-SA 2.0 Colaboradores: gnu.org Artista original: Aurelio A. Heckert <[email protected]>

• Archivo:Increase2.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/b/b0/Increase2.svg Licencia: Public domain Colabora-dores: Trabajo propio Artista original: Sarang

• Archivo:Infografia_NucleoLinux.png Fuente: http://upload.wikimedia.org/wikipedia/commons/e/ec/Infografia_NucleoLinux.png Li-cencia: CC BY 4.0 Colaboradores: www.cidetys.org.pa Artista original:Mónica Mora

• Archivo:Ipod_linux_booting_kernel.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/b/b8/Ipod_linux_booting_kernel.jpg Licencia: CC-BY-SA-3.0 Colaboradores: Trabajo propio Artista original: Elke Wetzig (Elya)

• Archivo:Kernel-panic.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/7/71/Kernel-panic.jpg Licencia: CC BY 2.0 Cola-boradores: http://flickr.com/photos/kevincollins/74279815/ Artista original: Kevin

• Archivo:Krita2-2alpha1-with-Dungeon-Girl.png Fuente: http://upload.wikimedia.org/wikipedia/commons/e/ef/Krita2-2alpha1-with-Dungeon-Girl.png Licencia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Happy Mr Me-mebot

• Archivo:Lgp-total.png Fuente: http://upload.wikimedia.org/wikipedia/commons/f/fd/Lgp-total.png Licencia: GPL Colaboradores: ? Ar-tista original: ?

• Archivo:LibreOffice_Writer_4.0.1.2.png Fuente: http://upload.wikimedia.org/wikipedia/commons/0/07/LibreOffice_Writer_4.0.1.2.png Licencia: CC BY-SA 3.0 Colaboradores: Trabajo propio, The Document Foundation para la imagen del programa, texto y foto delartículo “Nebulosa del Cangrejo” de la Wikipedia en español Artista original: German

• Archivo:Linux_3.0.0_boot.png Fuente: http://upload.wikimedia.org/wikipedia/commons/b/b7/Linux_3.0.0_boot.png Licencia: GPLColaboradores: Trabajo propio Artista original: Attys

• Archivo:Linux_kernel_ubiquity.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/3/3a/Linux_kernel_ubiquity.svgLicencia: CC BY-SA 3.0 Colaboradores: Esta imagen incluye elementos que han sido tomados o adaptados de esta: <ahref='//commons.wikimedia.org/wiki/File:Tux-shaded.svg' class='image'><img alt='Tux-shaded.svg' src='//upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/17px-Tux-shaded.svg.png' width='17' height='20' srcset='//upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/25px-Tux-shaded.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tux-shaded.svg/33px-Tux-shaded.svg.png 2x' data-file-width='249' data-file-height='297' /></a> Tux-shaded.svg. Artista original:ScotXW

• Archivo:MapaConceptualFLOSS.png Fuente: http://upload.wikimedia.org/wikipedia/commons/7/79/MapaConceptualFLOSS.png Li-cencia: CC BY 3.0 Colaboradores: Trabajo propio Artista original: VARGUX

• Archivo:Mapa_conceptual_del_software_libre.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/6/61/Mapa_conceptual_del_software_libre.svg Licencia: CC BY-SA 3.0 Colaboradores: http://es.gnu.org http://es.gnu.org/~{}reneme/fsmap/fsmap-es-w.svg Ar-tista original: René Mérou

• Archivo:Microsoft_Windows_logo_(Pre-XP).svg Fuente: http://upload.wikimedia.org/wikipedia/commons/6/64/Microsoft_Windows_logo_%28Pre-XP%29.svg Licencia: Public domain Colaboradores: Este archivo se derivó de: Microsoft Windows logo andwordmark (Pre-XP).svgArtista original:Microsoft

• Archivo:ModeloCascadaRealimentado.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/4/4a/ModeloCascadaRealimentado.jpg Licencia: GFDL Colaboradores: ? Artista original: ?

• Archivo:Modelo_Cascada_Secuencial.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/0/01/Modelo_Cascada_Secuencial.jpg Licencia: CC-BY-SA-3.0 Colaboradores: ? Artista original: ?

• Archivo:Modelo_Espiral_Boehm.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/8/84/Modelo_Espiral_Boehm.jpg Li-cencia: CC-BY-SA-3.0 Colaboradores: Trabajo propio Artista original: SergioN

• Archivo:Modelo_Gral_Evolutivo_Incremental.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/f/fe/Modelo_Gral_Evolutivo_Incremental.jpg Licencia: CC-BY-SA-3.0 Colaboradores: Trabajo propio Artista original: SergioN

• Archivo:Modelo_Iterativo_Incremental.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/c/c4/Modelo_Iterativo_Incremental.jpg Licencia: CC BY 3.0 Colaboradores: Trabajo propio Artista original: SergioN

• Archivo:NewTux.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/b/b0/NewTux.svg Licencia: Attribution Colaboradores:Based on original image by Larry Ewing, created using Sodipodi Artista original: gg3po (kde-look.org source)

9.9. TEXTO E IMÁGENES DE ORIGEN, COLABORADORES Y LICENCIAS 55

• Archivo:Nuvola_devices_cdrom_unmount.png Fuente: http://upload.wikimedia.org/wikipedia/commons/9/9d/Nuvola_devices_cdrom_unmount.png Licencia: LGPL Colaboradores: http://icon-king.com Artista original: David Vignoni / ICON KING

• Archivo:Opensource.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/4/42/Opensource.svg Licencia: CC BY 2.5 Colabo-radores: en:Simon Phipps, president of OSI Artista original: Open Source Initiative official SVG

• Archivo:Proceso_Ing_Requisitos.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/b/bb/Proceso_Ing_Requisitos.jpg Li-cencia: GFDL Colaboradores: ? Artista original: ?

• Archivo:Richard_Matthew_Stallman.jpeg Fuente: http://upload.wikimedia.org/wikipedia/commons/f/f7/Richard_Matthew_Stallman.jpeg Licencia: CC-BY-SA-3.0 Colaboradores: Taken from the cover of the O'Reilly book w:Free as in Freedom: RichardStallman’s Crusade for Free Software Artista original: Sam Williams

• Archivo:Sharp_Zaurus.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/0/04/Sharp_Zaurus.jpg Licencia: CC-BY-SA-3.0Colaboradores:

• Transferred from en.wikipedia Artista original:Wapcaplet• Archivo:Software-294x567.JPG Fuente: http://upload.wikimedia.org/wikipedia/commons/f/fe/Software-294x567.JPG Licencia: CC

BY-SA 4.0 Colaboradores: Trabajo propio Artista original: Jrsheik• Archivo:Spanish_Wikiquote.SVG Fuente: http://upload.wikimedia.org/wikipedia/commons/1/13/Spanish_Wikiquote.SVG Licencia:

CC BY-SA 3.0 Colaboradores: derived from Wikiquote-logo.svg Artista original: James.mcd.nz• Archivo:Tux.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg Licencia: Attribution Colaboradores: [1] Artistaoriginal: Larry Ewing, Simon Budig, Anja Gerwinski

• Archivo:Wikinews-logo.svgFuente: http://upload.wikimedia.org/wikipedia/commons/2/24/Wikinews-logo.svgLicencia:CCBY-SA3.0Colaboradores: This is a cropped version of Image:Wikinews-logo-en.png. Artista original: Vectorized by Simon 01:05, 2 August 2006(UTC) Updated by Time3000 17 April 2007 to use officialWikinews colours and appear correctly on dark backgrounds. Originally uploadedby Simon.

• Archivo:Wikiversity-logo-Snorky.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg Licen-cia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Snorky

• Archivo:Wiktionary-logo-es.png Fuente: http://upload.wikimedia.org/wikipedia/commons/0/06/Wiktionary-logo-es.png Licencia: CCBY-SA 3.0 Colaboradores: originally uploaded there by author, self-made by author Artista original: es:Usuario:Pybalo

• Archivo:Windows_Family_Tree-es.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/2a/Windows_Family_Tree-es.svgLicencia: CC BY 2.5 Colaboradores:

• Windows_Family_Tree.svg Artista original:Windows_Family_Tree.svg: NOKIA 3120 classic• Archivo:X_mark.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/a/a2/X_mark.svg Licencia: Public domain Colaborado-res: Trabajo propio Artista original: User:Gmaxwell

• Archivo:Yes_check.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/f/fb/Yes_check.svg Licencia: Public domain Colabo-radores: Trabajo propio Artista original: SVG by Gregory Maxwell, simplified by Sarang

• Archivo:_Windows_logo_and_watermark_-_2012.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/8/83/Windows_logo_and_wordmark_-_2012.svg Licencia: Public domain Colaboradores: Este archivo se derivó de: Windows 8 logo and wordmark.svg Artistaoriginal: File:Windows 8 logo and wordmark.svg: Multiple editors; see image description page

9.9.3 Licencia de contenido• Creative Commons Attribution-Share Alike 3.0


Recommended