SlideShare una empresa de Scribd logo
Software Libre
Para una sociedad libre
Índice general
1 Software 1
1.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Definición de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Clasificación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Proceso de creación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4.1 Modelos de proceso o ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.2 Etapas en el desarrollo del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Carácter evolutivo del software[17]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6.1 Modelos de ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8.1 Libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.8.2 Artículos y revistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.9 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Software libre 17
2.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Las cuatro libertades del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1 Formatos abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Tipos de licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Licencias GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Licencias AGPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Licencias estilo BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.4 Licencias estilo MPL y derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.5 Copyleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Comparación con el software de código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Implicaciones económico-políticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.1 Modelo de negocio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Seguridad relativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7 Software libre en la Administración Pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8 Ventajas del Software libre en la educación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9 Motivaciones del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
i
ii ÍNDICE GENERAL
2.10 Regulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.1 Argentina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.2 Bolivia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.3 Ecuador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.4 España . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.5 Uruguay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.6 Venezuela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.11 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.12 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.13 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Código abierto 26
3.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Cronología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 Movimiento del “código abierto” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Programas en código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Extensiones del concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Proyecto GNU 29
4.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Programas desarrollados por GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 Distribuciones de GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5 Software propietario 32
5.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.1 Software propietario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.4 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.5 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Código cerrado 35
6.1 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7 Freeware 36
7.1 Confusiones entre licencias y versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
ÍNDICE GENERAL iii
7.2 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.4 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
8 Núcleo Linux 37
8.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Aspectos técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.2.1 Arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.2.2 Jerarquía de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.2.3 Kernel panic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.2.4 Lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.2.5 Portabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.2.6 Arquitectura de máquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.2.7 Formatos binarios soportados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.3 Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.3.1 Numeración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.3.2 Fechas de publicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.3.3 Top 10 desarrolladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.3.4 Línea de tiempo del Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.4 Distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.5 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.6 Marca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.7 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.7.1 Soporte de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.7.2 Arquitectura monolítica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.8 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.9 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.10 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9 Microsoft Windows 45
9.1 Versiones más utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.2.1 Versiones BETA de Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.2.2 Historial de lanzamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.3 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.3.1 Windows Defender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.3.2 Permisos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.5 Críticas y polémicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
iv ÍNDICE GENERAL
9.9 Texto e imágenes de origen, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . . . 51
9.9.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
9.9.2 Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.9.3 Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Capítulo 1
Software
Software
Dentro de la categoría de software de aplicación están
incluidos los procesadores de texto como LibreOffice
Writer (arriba) y los editores gráficos rasterizados como
Krita (abajo).
Se conoce como software[1]
al equipamiento lógico o
soporte lógico de un sistema informático, que comprende
el conjunto de los componentes lógicos necesarios que
hacen posible la realización de tareas específicas, en con-
traposición a los componentes físicos que son llamados
hardware.
Los componentes lógicos incluyen, entre muchos otros,
las aplicaciones informáticas; tales como el procesador de
texto, que permite al usuario realizar todas las tareas con-
cernientes a la edición de textos; el llamado software de
sistema, tal como el sistema operativo, que básicamente
permite 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 jerga
té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 abreviatura
es Sw.
1.1 Etimología
Software (pronunciación AFI:[ˈsɒftwɛəʳ]) es una palabra
proveniente del inglés (literalmente: partes blandas o sua-
ves), que en español no posee una traducción adecuada
al 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 de
Software.[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ón
y datos asociados, que forman parte de las
operaciones 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 va
más allá de los programas de computación en sus distin-
tos estados: código fuente, binario o ejecutable; también
su 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 este
sentido por John W. Tukey en 1957. En la ingeniería de
software y las ciencias de la computación, el software es
toda 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 Babbage
como parte de su máquina diferencial. La teoría que for-
ma la base de la mayor parte del software moderno fue
propuesta por Alan Turing en su ensayo de 1936, «Los
números computables», con una aplicación al problema
de decisión.
1.3 Clasificación del software
Si bien esta distinción es, en cierto modo, arbitraria, y a
veces confusa, a los fines prácticos se puede clasificar al
software en tres grandes tipos:
• Software de sistema: Su objetivo es desvincular
adecuadamente al usuario y al programador de los
detalles del sistema informático en particular que
se 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 programador
adecuadas interfaces de alto nivel, controladores,
herramientas y utilidades de apoyo que permiten
el mantenimiento del sistema global. Incluye entre
otros:
• 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 desarrollar
programas informáticos, usando diferentes alterna-
tivas y lenguajes de programación, de una manera
prá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 el
programador no necesite introducir múltiples
comandos para compilar, interpretar, depurar,
etc. Habitualmente cuentan con una avanzada
interfaz gráfica de usuario (GUI).
• Software de aplicación: Es aquel que permite a los
usuarios llevar a cabo una o varias tareas específicas,
en cualquier campo de actividad susceptible de ser
automatizado o asistido, con especial énfasis en los
negocios. Incluye entre muchos otros:
• Aplicaciones para Control de sistemas y
automatización industrial
• Aplicaciones ofimáticas
• Software educativo
• Software empresarial
• Bases de datos
• Telecomunicaciones (por ejemplo Internet y
toda 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 a
seguir para llegar a la solución de un problema u obten-
ción de un producto, en este caso particular, para lograr
un producto software que resuelva un problema específi-
co.
El proceso de creación de software puede llegar a ser muy
complejo, dependiendo de su porte, características y cri-
ticidad del mismo. Por ejemplo la creación de un sistema
operativo 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 segundo
orden), éste puede ser realizado por un solo programador
(incluso aficionado) fácilmente. Es así que normalmente
se dividen en tres categorías según su tamaño (líneas de
código) o costo: de «pequeño», «mediano» y «gran porte».
Existen varias metodologías para estimarlo, una de las
más populares es el sistema COCOMO que provee mé-
todos y un software (programa) que calcula y provee una
aproximació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 lenguaje
usado, etc.).
Considerando los de gran porte, es necesario realizar
complejas tareas, tanto técnicas como de gerencia, una
fuerte gestión y análisis diversos (entre otras cosas), la
complejidad de ello ha llevado a que desarrolle una in-
geniería específica para tratar su estudio y realización: es
conocida como Ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos
de trabajo (incluso un avezado analista-programador soli-
tario) pueden realizar la tarea. Aunque, siempre en casos
de mediano y gran porte (y a veces también en algunos de
pequeño porte, según su complejidad), se deben seguir
ciertas etapas que son necesarias para la construcción del
software. Tales etapas, si bien deben existir, son flexibles
en su forma de aplicación, de acuerdo a la metodología o
proceso de desarrollo escogido y utilizado por el equipo
de desarrollo o por el analista-programador solitario (si
fuere el caso).
Los «procesos de desarrollo de software» poseen re-
glas preestablecidas, y deben ser aplicados en la creación
del software de mediano y gran porte, ya que en caso con-
trario lo más seguro es que el proyecto no logre concluir
o 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 (ejemplo
XP), 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 son
Programación Extrema (en inglés eXtreme Programming
o XP), Proceso Unificado de Rational (en inglés Rational
Unified 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 «modelo
de ciclo de vida».[6]
Se estima que, del total de proyectos software grandes
emprendidos, un 28% fracasan, un 46% caen en severas
modificaciones que lo retrasan y un 26% son totalmente
exitosos. [7]
Cuando un proyecto fracasa, rara vez es debido a fallas
técnicas, la principal causa de fallos y fracasos es la fal-
ta de aplicación de una buena metodología o proceso de
desarrollo. Entre otras, una fuerte tendencia, desde hace
pocas décadas, es mejorar las metodologías o procesos de
desarrollo, 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 ingenieros
en 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 y
variadas tareas,[6]
desde lo administrativo, pasando por
lo técnico y hasta la gestión y el gerenciamiento. Pero,
casi rigurosamente, siempre se cumplen ciertas etapas
mínimas; las que se pueden resumir como sigue:
• Captura, elicitación[8]
, especificación y análisis de
requisitos (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 sus
nombres, o ser más globales, o contrariamente, ser más
refinadas; por ejemplo indicar como una única fase (a los
fines documentales e interpretativos) de «análisis y dise-
ño»; o indicar como «implementación» lo que está dicho
como «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 mayores
detalles 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 proceso
o 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 y
realimentació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 su
vez 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 como modelo
en 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 de
los requisitos, la no volatilidad de los mismos (o rigidez)
4 CAPÍTULO 1. SOFTWARE
y etapas subsiguientes libres de errores; ello sólo podría
ser aplicable a escasos y pequeños sistemas a desarrollar.
En estas circunstancias, el paso de una etapa a otra de las
mencionadas sería sin retorno, por ejemplo pasar del di-
seño a la codificación implicaría un diseño exacto y sin
errores ni probable modificación o evolución: «codifique
lo diseñado sin errores, no habrá en absoluto variantes
futuras». Esto es utópico; ya que intrínsecamente el soft-
ware es de carácter evolutivo,[9]
cambiante y difícilmente
libre de errores, tanto durante su desarrollo como durante
su vida operativa.[6]
Fig. 2 - Modelo cascada puro o secuencial para el ciclo de vida
del software.
Algún cambio durante la ejecución de una cualquiera de
las etapas en este modelo secuencial implicaría reiniciar
desde el principio todo el ciclo completo, lo cual redun-
daría en altos costos de tiempo y desarrollo. La Figura 2
muestra 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]
por
su eficacia y simplicidad, más que nada en software de
pequeño y algunos de mediano porte; pero nunca (o muy
rara 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 completamente
predecible ni rígida; esto da oportunidad al desarrollo de
productos software en los cuales hay ciertas incertezas,
cambios o evoluciones durante el ciclo de vida. Así por
ejemplo, una vez capturados y especificados los requisitos
(primera etapa) se puede pasar al diseño del sistema, pero
durante esta última fase lo más probable es que se deban
realizar ajustes en los requisitos (aunque sean mínimos),
ya sea por fallas detectadas, ambigüedades o bien por que
los propios requisitos han cambiado o evolucionado; con
lo cual se debe retornar a la primera o previa etapa, hacer
los reajuste pertinentes y luego continuar nuevamente con
el diseño; esto último se conoce como realimentación. Lo
normal en el modelo cascada será entonces la aplicación
del 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 la
Figura 3.
Fig. 3 - Modelo cascada realimentado para el ciclo de vida.
Lo dicho es, a grandes rasgos, la forma y utilización de
este modelo, uno de los más usados y populares.[6]
El mo-
delo cascada realimentado resulta muy atractivo, hasta
ideal, 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 la
faltante 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. Pese
a todo, tiene un lugar muy importante en la Ingeniería de
software y continúa siendo el más utilizado; y siempre es
mejor 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 etapas
tempranas del proyecto. Si los cambios se producen
en etapa madura (codificación o prueba) pueden ser
catastróficos para un proyecto grande.
• No es frecuente que el cliente o usuario final expli-
cite clara y completamente los requisitos (etapa de
inicio); y el modelo lineal lo requiere. La incerti-
dumbre natural en los comienzos es luego difícil de
acomodar.[10]
• El cliente debe tener paciencia ya que el software no
estará disponible hasta muy avanzado el proyecto.
Un error detectado por el cliente (en fase de opera-
ción) puede ser desastroso, implicando reinicio del
proyecto, 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 el
mercado un producto absolutamente completo, por lo que
se aconsejable introducir una versión funcional limitada
de alguna forma para aliviar las presiones competitivas.
En esas u otras situaciones similares los desarrolladores
necesitan modelos de progreso que estén diseñados para
acomodarse 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 se
tiene demasiado en cuenta la naturaleza evolutiva del
software,[11]
se plantea como estático, con requisitos bien
conocidos y definidos desde el inicio.[6]
Los evolutivos son modelos iterativos, permiten desarro-
llar versiones cada vez más completas y complejas, hasta
llegar al objetivo final deseado; incluso evolucionar más
allá, durante la fase de operación.
Los modelos «iterativo incremental» y «espiral» (entre
otros) son dos de los más conocidos y utilizados del tipo
evolutivo.[10]
Modelo iterativo incremental En términos generales,
se puede distinguir, en la Figura 4, los pasos generales que
sigue 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 sistema
es esencial para especificar y confeccionar los distintos
incrementos hasta llegar al producto global y final. Las
actividades 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 etapa
de operación y mantenimiento. Cada versión emitida in-
corpora a los anteriores incrementos las funcionalidades
y requisitos que fueron analizados como necesarios.
El incremental es un modelo de tipo evolutivo que está ba-
sado en varios ciclos Cascada Realimentados 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 del
modelo 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 de
un incremento; estos últimos se van integrando para ob-
tener el producto final completo. Cada incremento es un
ciclo Cascada Realimentado, aunque, por simplicidad, en
la Figura 5 se muestra como secuencial puro.
Fig. 5 - Modelo iterativo incremental para el ciclo de vida del
software,.
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 se
realiza 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» en
la 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 (dos
de ellos totalmente independientes pueden ser fácilmen-
te iniciados al mismo tiempo si se dispone de personal
suficiente); 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 sobre
aquel que ya fue entregado.[6]
Como se muestra en la Figura 5, se aplican secuencias
Cascada en forma escalonada, mientras progresa el tiem-
po calendario. Cada secuencia lineal o Cascada produ-
ce un incremento y a menudo el primer incremento es
un 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 aportar
al plan para el desarrollo del/los siguientes incrementos
(o versiones). Además también aportan a ese plan otros
factores, 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 con
mayor funcionalidad que el previo. El proceso se repite
hasta alcanzar el software final completo.
Siendo iterativo, con el modelo incremental se entrega un
producto parcial pero completamente operacional en cada
incremento, y no una parte que sea usada para reajustar los
requisitos (como si ocurre en el modelo de construcción
de 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 lo
que 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 versiones
de evaluación.
Nota: Puede ser considerado y útil, en cualquier momen-
to o incremento incorporar temporalmente el paradigma
MCP como complemento, teniendo así una mixtura de
modelos que mejoran el esquema y desarrollo general.
Ejemplo:
Un procesador de texto que sea desarrollado
bajo el paradigma Incremental podría aportar,
en principio, funciones básicas de edición de
archivos 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 el
agregado de funciones de corrección ortográfi-
ca, esquemas de paginado y plantillas; en un
cuarto capacidades de dibujo propias y ecua-
ciones matemáticas. Así sucesivamente hasta
llegar 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 cual
observa una respuesta rápida en cuanto a en-
trega temprana; sin notar que la fecha límite
del proyecto puede no estar acotada ni tan de-
finida, lo que da margen de operación y alivia
presiones al equipo de desarrollo.
Como se dijo, el Iterativo Incremental es un modelo del
tipo 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 pueda
evolucionar.[9]
Aplicable cuando los requisitos son me-
dianamente bien conocidos pero no son completamente
estáticos y definidos, cuestión esa que si es indispensable
para poder utilizar un modelo Cascada.
El modelo es aconsejable para el desarrollo de software
en el cual se observe, en su etapa inicial de análisis, que
posee á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 priorizar
en 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 parte
del cliente, pero el desarrollador debe fijarlas de todos
modos y con algún criterio, ya que basándose en ellas se
desarrollarán y entregarán los distintos incrementos.
El hecho de que existan incrementos funcionales del soft-
ware lleva inmediatamente a pensar en un esquema de
desarrollo modular, por tanto este modelo facilita tal pa-
radigma de diseño.
En resumen, un modelo incremental lleva a pensar en
un 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 con
refinamientos sucesivos (ampliación o mejora). Con ca-
da incremento se agrega nueva funcionalidad o se cubren
nuevos requisitos o bien se mejora la versión previamente
implementada del producto software.
Este modelo brinda cierta flexibilidad para que duran-
te el desarrollo se incluyan cambios en los requisitos
por parte del usuario, un cambio de requisitos propues-
to y aprobado puede analizarse e implementarse como
un nuevo incremento o, eventualmente, podrá constituir
una mejora/adecuación de uno ya planeado. Aunque si
se 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 factibilidad
y realizar un acuerdo con el cliente, ya que puede impactar
fuertemente en los costos.
La selección de este modelo permite realizar entregas
funcionales tempranas al cliente (lo cual es beneficioso
tanto para él como para el grupo de desarrollo). Se prio-
rizan las entregas de aquellos módulos o incrementos en
que surja la necesidad operativa de hacerlo, por ejemplo
para cargas previas de información, indispensable para
los incrementos siguientes.[10]
El modelo iterativo incremental no obliga a especificar
con precisión y detalle absolutamente todo lo que el siste-
ma debe hacer, (y cómo), antes de ser construido (como
el caso del cascada, con requisitos congelados). Sólo se
hace en el incremento en desarrollo. Esto torna más ma-
nejable el proceso y reduce el impacto en los costos. Esto
es 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 durante
el desarrollo.
Con un paradigma incremental se reduce el tiempo de
desarrollo inicial, ya que se implementa funcionalidad
parcial. También provee un impacto ventajoso frente al
cliente, 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 en
cascada realimentado, reduciendo sus desventajas sólo al
ámbito de cada incremento.
El modelo incremental no es recomendable para casos de
sistemas de tiempo real, de alto nivel de seguridad, de
procesamiento distribuido, o de alto índice de riesgos.
Modelo espiral El modelo espiral fue propuesto ini-
cialmente por Barry Boehm. Es un modelo evolutivo que
conjuga la naturaleza iterativa del modelo MCP con los
aspectos controlados y sistemáticos del Modelo Cascada.
Proporciona potencial para desarrollo rápido de versio-
nes incrementales. En el modelo Espiral el software se
construye en una serie de versiones incrementales. En las
primeras iteraciones la versión incremental podría ser un
modelo en papel o bien un prototipo. En las últimas ite-
raciones se producen versiones cada vez más completas
del 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 general
existen entre tres y seis regiones de tareas (hay variantes
del modelo). En la Figura 6 se muestra el esquema de un
Modelo Espiral con 6 regiones. En este caso se explica
una variante del modelo original de Boehm, expuesto en
su 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 los
recursos, tiempo y otra información relacionada con
el proyecto.
• Región 3 - Tareas necesarias para evaluar los riesgos
té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 o
cliente (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 en
los ciclos anteriores.
Las actividades enunciadas para el marco de trabajo son
generales y se aplican a cualquier proyecto, grande, me-
diano o pequeño, complejo o no. Las regiones que definen
esas actividades comprenden un «conjunto de tareas» del
trabajo: ese conjunto sí se debe adaptar a las caracterís-
ticas del proyecto en particular a emprender. Nótese que
lo listado en los ítems de 1 a 6 son conjuntos de tareas,
algunas de las ellas normalmente dependen del proyecto
o desarrollo en si.
Proyectos pequeños requieren baja cantidad de tareas y
también de formalidad. En proyectos mayores o críticos
cada región de tareas contiene labores de más alto nivel
de formalidad. En cualquier caso se aplican actividades
de protección (por ejemplo, gestión de configuración del
software, 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 la
Figura 6) y en el sentido indicado; el primer circuito de la
espiral puede producir el desarrollo de una especificación
del producto; los pasos siguientes podrían generar un
prototipo y progresivamente versiones más sofisticadas
del software.
Cada paso por la región de planificación provoca ajustes
en el plan del proyecto; el coste y planificación se reali-
mentan en función de la evaluación del cliente. El gestor
de proyectos debe ajustar el número de iteraciones reque-
ridas para completar el desarrollo.
El modelo espiral puede ir adaptándose y aplicarse a lo
largo de todo el Ciclo de vida del software (en el mode-
lo clásico, o cascada, el proceso termina a la entrega del
software).
Una visión alternativa del modelo puede observarse exa-
minando el «eje de punto de entrada de proyectos». Cada
uno 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 iteraciones
hasta que se completa, es la zona marcada 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 de
productos», 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, eventualmente
puede estar inactiva (el proceso), pero cuando se produ-
ce un cambio el proceso arranca nuevamente en el punto
de entrada apropiado (por ejemplo, en «mejora del pro-
ducto»).
El modelo espiral da un enfoque realista, que evoluciona
igual 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. Mantiene
el enfoque clásico (cascada) pero incorpora un marco de
trabajo iterativo que refleja mejor la realidad.
Este modelo requiere considerar riesgos técnicos en todas
las 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 del
proyecto 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 su
eficacia, es un paradigma relativamente nuevo y difícil de
implementar 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 con
el cliente para fijar los requisitos, en que simplemente se
pregunta al cliente qué necesita y él proporciona la infor-
mación para continuar; pero esto es en un contexto ideal
que rara vez ocurre. Normalmente cliente y desarrolla-
dor entran en una negociación, se negocia coste frente a
funcionalidad, 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 cliente
gane obteniendo el producto que lo satisfaga, y el desa-
rrollador también gane consiguiendo presupuesto y fecha
de entrega realista. Evidentemente, este modelo requiere
fuertes habilidades de negociación.
El modelo Win-Win define un conjunto de actividades
de negociación al principio de cada paso alrededor de la
espiral; se definen las siguientes actividades:
1. Identificación del sistema o subsistemas clave de los
directivos(*) (saber qué quieren).
2. Determinación de «condiciones de victoria» de los
directivos (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 el
producto, que puede ser premiado por la organización si
tiene éxito o criticado si no.
El modelo Win & Win hace énfasis en la negociación
inicial, 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 de
decisión antes de continuar el proyecto de desarrollo del
software.
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 la
primera fase que se realiza, y, según el modelo de proceso
adoptado, puede casi terminar para pasar a la próxima
etapa (caso de Modelo Cascada Realimentado) o puede
hacerse parcialmente para luego retomarla (caso Modelo
Iterativo Incremental u otros de carácter evolutivo).
En simple palabras y básicamente, durante esta fase, se
adquieren, reúnen y especifican las características fun-
cionales y no funcionales que deberá cumplir el futuro
programa o sistema a desarrollar.
Las bondades de las características, tanto del sistema o
programa a desarrollar, como de su entorno, parámetros
no funcionales y arquitectura dependen enormemente de
lo 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, no
es muy técnica y depende en gran medida de la habilidad
y experiencia del analista que la realice.
Involucra fuertemente al usuario o cliente del sistema, por
tanto tiene matices muy subjetivos y es difícil de modelar
con 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 conjuntamente
buenos criterios y mucho sentido común por parte del o
los 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ón
de esta etapa es lo que se conoce como especificación de
requisitos software o simplemente documento ERS.
Como se dijo, la habilidad del analista para interactuar
con el cliente es fundamental; lo común es que el clien-
te tenga un objetivo general o problema que resolver, no
conoce en absoluto el área (informática), ni su jerga, ni
siquiera 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, el
cliente «piensa» que sabe precisamente lo que el software
tiene 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 con
este tipo de problemas, que incluyen relaciones humanas;
tiene que saber ponerse al nivel del usuario para permitir
una 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 futuro
sistema, 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 acertadamente
y llevar bastante tiempo relativo al proceso total del desa-
rrollo; al proceso y metodologías para llevar a cabo este
conjunto de actividades normalmente se las asume parte
propia de la Ingeniería de Software, pero dada la antedi-
cha complejidad, actualmente se habla de una Ingeniería
de 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 los
que normalmente hablan de la Ingeniería de requisitos;
es decir se plantea ésta como un área o disciplina pero no
como 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 (tanto
en requisitos funcionales como no funcionales). Por citar
ejemplos probables: Algunos requisitos sobre la arquitec-
tura del sistema, requisitos no funcionales tales como los
relativos al rendimiento, nivel de soporte a errores ope-
rativos, plataformas de desarrollo, relaciones internas o
ligas 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 (u
otros actores intervinientes) es un proceso humano muy
interactivo 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 analista
siempre debe llegar a conocer la temática y el problema
que resolver, dominarlo, hasta cierto punto, hasta el ám-
bito que el futuro sistema a desarrollar lo abarque. Por
ello 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ón
de una aseguradora y sus sucursales remotas, el analista
se debe compenetrar en cómo ella trabaja y maneja su
información, desde niveles muy bajos e incluso llegando
hasta los gerenciales. Dada a gran diversidad de campos a
cubrir, los analistas suelen ser asistidos por especialistas,
es decir gente que conoce profundamente el área para la
cual se desarrollará el software; evidentemente una única
persona (el analista) no puede abarcar tan vasta cantidad
de á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 él
no tiene por qué saber nada de software, ni de diseños,
ni otras cosas relacionadas; sólo se debe limitar a aportar
objetivos, datos e información (de mano propia o de sus
registros, equipos, empleados, etc) al analista, y guiado
por él, para que, en primera instancia, defina el «Universo
de Discurso», y con posterior trabajo logre confeccionar
el adecuado documento ERS.
Es bien conocida la presión que sufren los desarrolladores
de sistemas informáticos para comprender y rescatar las
necesidades de los clientes/usuarios. Cuanto más comple-
jo es el contexto del problema más difícil es lograrlo, a
veces 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 un
conjunto de requisitos[13]
erróneos o incompletos y por
lo 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 etapa
inicial provocará un fuerte impacto negativo en los requi-
sitos, propagando esta corriente degradante a lo largo de
todo el proceso de desarrollo e incrementando su perjui-
cio cuanto más tardía sea su detección (Bell y Thayer
1976)(Davis 1993).
Procesos, modelado y formas de elicitación de requi-
sitos Siendo que la captura, elicitación y especificación
de 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 modelos
y diversas metodologías de trabajo para estos fines. Tam-
bién existen herramientas software que apoyan las tareas
relativas realizadas por el ingeniero en requisitos.
El estándar IEEE 830-1998 brinda una normalización de
las «Prácticas Recomendadas para la Especificación de
Requisitos Software».[14]
A medida que se obtienen los requisitos, normalmente se
los va analizando, el resultado de este análisis, con o sin
el cliente, se plasma en un documento, conocido como
ERS o Especificación de Requisitos Software, cuya es-
tructura puede venir definida por varios estándares, tales
como CMMI.
Un primer paso para realizar el relevamiento de informa-
ción es el conocimiento y definición acertada lo que se
conoce como «Universo de Discurso» del problema, que
se define y entiende por:
Universo de Discurso (UdeD): es el contexto general en
el cual el software deberá ser desarrollado y deberá ope-
rar. El UdeD incluye todas las fuentes de información y
todas 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 conjunto
de 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 necesarias
y 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 un
compromiso entre los ingenieros de requisitos y los clien-
tes/usuarios, ya que ambos participan en la generación y
definición de los requisitos del sistema. La IR aporta un
conjunto de métodos, técnicas y herramientas que asisten
a los ingenieros de requisitos (analistas) para obtener re-
quisitos lo más seguros, veraces, completos y oportunos
posibles, 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ías
para 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 el
mismo objetivo. Sin embargo, lo que si se puede decir
sin dudas es que es indispensable utilizar alguna de ellas
para documentar las especificaciones del futuro producto
software. 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) y
Escenarios como metodología, aquí[15]
se presenta una de
las tantas referencias y bibliografía sobre ello. Otra for-
ma, más ortodoxa, de capturar y documentar requisitos
se puede obtener en detalle, por ejemplo, en el trabajo
de la Universidad de Sevilla sobre «Metodología para el
Aná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 seguir
para realizar la captura, análisis y especificación de re-
quisitos software. También allí se observa qué artefacto
o documento se obtiene en cada etapa del proceso. En el
diagrama 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 de
Especificación de Requisitos Software es:
1. Obtener información sobre el dominio del problema
y 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 la
informació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 la
informació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 son
frases en lenguaje natural junto a diagramas con los
servicios 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 las
restricciones en detalle. Sirven como contrato.
Es decir, ambos son lo mismo, pero con distinto nivel de
detalle.
Ejemplo de requisito de usuario: El sistema debe hacer
pré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 Central
debe ser capaz de atender simultá-
neamente a todas las bibliotecas de
la Universidad
Ejemplo 2. El tiempo de respuesta
a una consulta remota no debe ser
superior 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íticas
y 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 externos
al sistema y al proceso de desarrollo (Ej. requisitos
legislativos, éticos, etc.)
• Requisitos del dominio.
Los requisitos del dominio se derivan del dominio de la
aplicación y reflejan características de dicho dominio.
Pueden ser funcionales o no funcionales.
Ej. El sistema de biblioteca de la Universidad debe ser
capaz de exportar datos mediante el Lenguaje de Inter-
comunicación de Bibliotecas de España (LIBE). Ej. El
sistema de biblioteca no podrá acceder a bibliotecas con
material censurado.
Diseño del sistema
En ingeniería de software, el diseño es una fase de ciclo
de vida del software. Se basa en la especificación de re-
quisitos producido por el análisis de los requisitos (fase de
análisis), el diseño define cómo estos requisitos se cum-
plirán, la estructura que debe darse al sistema de software
para 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 las
premisas adoptadas en el diseño.
Las distinciones entre las actividades mencionadas has-
ta ahora no siempre son claras cómo se quisiera en las
teorías clásicas de ingeniería de software. El diseño, en
particular, puede describir el funcionamiento interno de
un sistema en diferentes niveles de detalle, cada una de
ellos se coloca en una posición intermedia entre el análisis
y codificación.
Normalmente se entiende por “diseño de la arquitectura”
al diseño de “muy alto nivel”, que sólo define la estructura
del sistema en términos de la módulos de software de que
se compone y las relaciones macroscópicas entre ellos. A
este 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 especial
que se utilice, el sistema operativo, DBMS, Protocolos de
red, 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 una
referencia más o menos explícita al modo de descompo-
sición que ofrece el particular lenguaje de programación
con el que el desarrollo se va a implementar, por ejem-
plo, en un diseño realizado con la tecnología de objetos, el
proyecto podría describir al sistema en términos de clases
y sus interrelaciones.
El diseño detallado, por último, es una descripción del
sistema muy cercana a la codificación (por ejemplo, des-
cribir no sólo las clases en abstracto, sino también sus
atributos 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. Esta
tarea la realiza el programador, siguiendo por completo
los 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 bastante
más tiempo. Se suele hacer estimaciones de un 30% del
tiempo total insumido en la programación, pero esta ci-
fra no es consistente ya que depende en gran medida de
las características del sistema, su criticidad y el lenguaje
de programación elegido.[7]
En tanto menor es el nivel del
lenguaje mayor será el tiempo de programación requeri-
do, así por ejemplo se tardaría más tiempo en codificar
un algoritmo en lenguaje ensamblador que el mismo pro-
gramado en lenguaje C.
Mientras se programa la aplicación, sistema, o software
en general, se realizan también tareas de depuración, esto
es la labor de ir liberando al código de los errores facti-
bles de ser hallados en esta fase (de semántica, sintáctica
y 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ón
de algún error funcional (mala respuesta a los requisitos)
eventualmente puede llevar a retornar a la fase de diseño
antes de continuar la codificación.
Durante la fase de programación, el código puede adoptar
varios estados, dependiendo de la forma de trabajo y del
lenguaje elegido, a saber:
• Código fuente: es el escrito directamente por los
programadores en editores de texto, lo cual genera el
programa. Contiene el conjunto de instrucciones co-
dificadas en algún lenguaje de alto nivel. Puede estar
distribuido en paquetes, procedimientos, bibliotecas
fuente, etc.
• Código objeto: es el código binario o intermedio re-
sultante de procesar con un compilador el código
fuente. Consiste en una traducción completa y de
una sola vez de éste último. El código objeto no es
inteligible 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 las
rutinas de biblioteca y entre procedimientos o bien
para su uso con un pequeño intérprete intermedio [a
modo 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 programador
trabaja con un lenguaje a modo de intérpre-
te puro, en este caso el mismo intérprete se
encarga de traducir y ejecutar línea por línea
el 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ódigo
ejecutable. Una desventaja de esta modalidad
es que la ejecución del programa o sistema es
un poco más lenta que si se hiciera con un in-
térprete intermedio, y bastante más lenta que
si 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 la
modalidad intérprete puro, es que el esta for-
ma de trabajo facilita enormemente la tarea de
depuración del código fuente (frente a la al-
ternativa de hacerlo con un compilador puro).
Frecuentemente se suele usar una forma mixta
de trabajo (si el lenguaje de programación ele-
gido lo permite), es decir inicialmente trabajar
a modo de intérprete puro, y una vez depurado
el código fuente (liberado de errores) se utiliza
un compilador del mismo lenguaje para obte-
ner el código ejecutable completo, con lo cual
se 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 de
enlazar uno o más fragmentos de código objeto con
las rutinas y bibliotecas necesarias. Constituye uno
o más archivos binarios con un formato tal que el
sistema operativo es capaz de cargarlo en la me-
moria RAM (eventualmente también parte en una
memoria virtual), y proceder a su ejecución directa.
Por lo anterior se dice que el código ejecutable es
directamente «inteligible por la computadora». El
código ejecutable, también conocido como código
máquina, no existe si se programa con modalidad
de «intérprete puro».
Pruebas (unitarias y de integración)
Entre las diversas pruebas que se le efectúan al software
se 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 se
utilizan para asegurar el correcto funcionamiento de
secciones de código, mucho más reducidas que el
conjunto, y que tienen funciones concretas con cier-
to grado de independencia.
• Pruebas de integración: Se realizan una vez que las
pruebas unitarias fueron concluidas exitosamente;
con éstas se intenta asegurar que el sistema comple-
to, incluso los subsistemas que componen las piezas
individuales grandes del software funcionen correc-
tamente al operar e inteoperar en conjunto.
Las pruebas normalmente se efectúan con los llamados
datos de prueba, que es un conjunto seleccionado de da-
tos típicos a los que puede verse sometido el sistema, los
módulos o los bloques de código. También se escogen:
Datos que llevan a condiciones límites al software a fin
de 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 que
el software normalmente no estará sometido pero pueden
ocurrir; etc. Los «datos de prueba» no necesariamente
son ficticios o «creados», pero normalmente sí lo son los
de poca probabilidad de ocurrencia.
Generalmente, existe un fase probatoria final y completa
del software, llamada Beta Test, durante la cual el sis-
tema instalado en condiciones normales de operación y
trabajo es probado exhaustivamente a fin de encontrar
errores, inestabilidades, respuestas erróneas, etc. que ha-
yan pasado los previos controles. Estas son normalmente
realizadas por personal idóneo contratado o afectado es-
pecíficamente a ello. Los posibles errores encontrados se
transmiten a los desarrolladores para su depuración. En
el caso de software de desarrollo «a pedido», el usuario
final (cliente) es el que realiza el Beta Test, teniendo para
ello 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 los
programas 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 el
desarrollo propiamente dicho del software. Luego de ésta
el 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 y
copiados a lugares específicos preestablecidos del disco;
incluso se crean vínculos con otros productos, además del
propio sistema operativo. Este último caso, comúnmente
es un proceso bastante automático que es creado y guia-
do con heramientas software específicas (empaquetado y
distribució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 varios
y distintos computadores (instalación distribuida).
También, en software de mediana y alta complejidad nor-
malmente es requerido un proceso de configuración y
chequeo, por el cual se asignan adecuados parámetros de
funcionamiento y se testea la operatividad funcional del
producto.
En productos de venta masiva las instalaciones comple-
tas, si son relativamente simples, suelen ser realizadas por
los propios usuarios finales (tales como sistemas operati-
vos, paquetes de oficina, utilitarios, etc.) con herramien-
tas propias de instalación guiada; incluso la configuración
suele 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 desarrollo
del 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 pruebas
de control y beta test. Esta fase es la última (antes de ite-
rar, según el modelo empleado) que se aplica al ciclo de
vida del desarrollo de software. La fase de mantenimiento
14 CAPÍTULO 1. SOFTWARE
es la que viene después de que el software está operativo
y en producción.
De un buen diseño y documentación del desarrollo de-
penderá cómo será la fase de mantenimiento, tanto en
costo 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 ser
tanto o más costosa que desarrollar el software desde el
inicio. Por ello, es de fundamental importancia respetar
debidamente todas las tareas de las fases del desarrollo y
mantener adecuada y completa la documentación.
El período de la fase de mantenimiento es normalmente
el mayor en todo el ciclo de vida.[7]
Esta fase involucra
también actualizaciones y evoluciones del software; no
necesariamente implica que el sistema tuvo errores. Uno
o más cambios en el software, por ejemplo de adaptación
o evolutivos, puede llevar incluso a rever y adaptar desde
parte de las primeras fases del desarrollo inicial, alterando
todas las demás; dependiendo de cuán profundos sean los
cambios. El modelo cascada común es particularmente
costoso en mantenimiento, ya que su rigidez implica que
cualquier cambio provoca regreso a fase inicial y fuertes
alteraciones 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 de
la 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 del
rendimiento y eficiencia.
• Evolutivos: Agregados, modificaciones, incluso eli-
minaciones, necesarias en el software para cubrir su
expansió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: Cambios
de configuración del hardware (por actualización o
mejora de componentes electrónicos), cambios en
el software de base, en gestores de base de datos, en
comunicaciones, etc.
• Correctivos: Alteraciones necesarias para corregir
errores de cualquier tipo en el producto software
desarrollado.
1.5 Carácter evolutivo del
software[17]
El software es el producto derivado del proceso de desa-
rrollo, según la ingeniería de software. Este producto es
intrínsecamente evolutivo durante su ciclo de vida. El
software 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, eventualmente
cumplirá con su ciclo de vida, entrará en obsolescencia e
inevitablemente, tarde o temprano, será reemplazado por
un producto nuevo.
El software evoluciona sencillamente por que se debe
adaptar 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 de
los 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 la
década de 1990, con Lehman y otros investigadores[18]
de
relevancia 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 ampliamente
aplicables.
Lehman y Belady analizaron el crecimiento y la evolu-
ción de varios sistemas software de gran porte; derivando
finalmente, 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 programa
en evolución cambia, su estructura tiende a ser cada
vez más compleja. Se deben dedicar recursos extras
para preservar y simplificar la estrucutura.
3. Evolución prolongada del programa: La evolución
de los programas es un proceso autorregulativo. Los
atributos de los sistemas, tales como tamaño, tiempo
entre 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 es
aproximadamente constante e independiente de los
recursos dedicados al desarrollo del sistema.
5. Conservación de la familiaridad: Durante el tiempo
de vida de un sistema, el cambio incremental en cada
entrega es aproximadamente constante.
1.8. BIBLIOGRAFÍA 15
6. Crecimiento continuado: La funcionalidad ofrecida
por los sistemas tiene que crecer continuamente para
mantener la satisfacción de los usuarios.
7. Decremento de la calidad: La calidad de los sistemas
software comenzará a disminuir a menos que dichos
sistemas se adapten a los cambios de su entorno de
funcionamiento.
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 como
sistemas de realimentación para lograr una mejora
significativa del producto.
1.6 Véase también
• Portal:Software. Contenido relacionado con
Software.
• 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 (octubre
2005). Consultado el 8 de febrero de 2009.
[4] Pressman, Roger S. (2003). «El producto». Ingeniería del
Software, un enfoque Práctico, Quinta edición edición. Mé-
xico: Mc Graw Hill.
[5] IEEE Std, IEEE Software Engineering Standard: Glossary
of Software Engineering Terminology. IEEE Computer
Society Press, 1993
[6] «Ciclo de Vida del Software». Grupo Alarcos - Escuela
Superior de Informática de Ciudad Real.
[7] Pressman, Roger S. (2003). «El proceso». Ingeniería del
Software, 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 y Modelos 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, IEEE
Computer Society. Los Alamitos, CA, 1997 (Compendio
de papers y artículos en ingeniería de requisitos)
[13] «III Workshop de Engenharia de Requisitos». WER 2000,
Rio de Janeiro, 2000.
[14] «Recommended Practice for Software Requirements
Specification». IEEE-SA Standards Board.
[15] «LEL y Escenarios como metodología en Ingeniería de
Requisitos». Univ. de Morón, Buenos Aires.
[16] «Metodología para el análisis de Requisitos de Sistemas
Software». 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 de
Desarrollo de Software. Pearson Addisson-Wesley.
• Pressman, Roger S. (2003). Ingeniería del Software,
un enfoque Práctico (Quinta edición edición). Mc
Graw 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. ISBN
84-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). UML Gota a
Gota. 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). Requirements
Engineering: 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 Defining
Needs (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 and
Management». 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, LNCS
1149, 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 que
también se usa libre software) es la denominación del
software que respeta la libertad de todos los usuarios que
adquirieron el producto y, por tanto, una vez obtenido
el 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 Software
Foundation, el software libre se refiere a la seguridad de
los usuarios para ejecutar, copiar, distribuir y estudiar el
software, e incluso modificarlo y distribuirlo modificado.
Un programa informático es software libre si otorga a los
usuarios todas estas libertades de manera adecuada. De lo
contrario no es libre. Existen diversos esquemas de distri-
bución que no son libres, y si bien podemos distinguirlos
en base a cuánto les falta para llegar a ser libres, su uso
bien puede ser considerado contrario a la ética en todos
los casos por igual.[2]
El software libre suele estar disponible gratuitamente, o
al precio de coste de la distribución a través de otros
medios; sin embargo no es obligatorio que sea así, por
lo tanto no hay que asociar «software libre» a «softwa-
re gratuito» (denominado usualmente freeware), ya que,
conservando su carácter de libre, puede ser distribuido
comercialmente. 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 sentido
que el software libre, a menos que se garanticen los dere-
chos de modificación y redistribución de dichas versiones
modificadas del programa.
Tampoco debe confundirse software libre con «software
de dominio público». Éste último es aquel que no requie-
re de licencia, pues sus derechos de explotación son para
toda la humanidad, porque pertenece a todos por igual.
Cualquiera puede hacer uso de él, consignando su autoría
original. Este software sería aquel cuyo autor lo dona a la
humanidad o cuyos derechos de autor han expirado. Si un
autor condiciona su uso bajo una licencia, por muy débil
que 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 de
las 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 y
desarrolladores de software compartieran libremente sus
programas unos con otros. Este comportamiento era par-
ticularmente habitual en algunos de los mayores grupos
de usuarios de la época, como DECUS (grupo de usuarios
de 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 sufrido
su gran auge, las personas que hacían uso de ella, en ámbi-
tos universitarios y empresariales, creaban y compartían
el software sin ningún tipo de restricciones.
Con la llegada de los años 1980 la situación empezó a
cambiar. Las computadoras más modernas comenzaban
a utilizar sistemas operativos privativos, forzando a los
usuarios a aceptar condiciones restrictivas que impedían
realizar modificaciones a dicho software.
En caso de que algún usuario o programador encontrase
algún error en la aplicación, lo único que podía hacer era
darlo a conocer a la empresa desarrolladora para que ésta
lo solucionara. Aunque el programador estuviese capaci-
tado para solucionar el problema y lo desease hacer sin
pedir 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 los
años 1980, la cultura hacker que constituía la vida de
Stallman empezó a disolverse bajo la presión de la co-
mercialización en la industria del software. Los demás
compañ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 por
software no libre de su propiedad. Stallman contó, años
después, que por aquellos años, en el laboratorio donde
trabajaba, habían recibido una impresora donada por una
empresa externa. El dispositivo, que era utilizado en red
por 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 imprimir
y al ir a buscarlos se encontraban la impresora atascada
y 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 los
controladores de la impresora. Pidió a la empresa propie-
taria de la impresora lo que necesitaba, comentando, sin
pedir nada a cambio, qué era lo que pretendía realizar. La
empresa se negó a entregarle el código fuente. En ese pre-
ciso instante, Stallman se vio en una encrucijada: debía
elegir entre aceptar el nuevo software propietario firman-
do acuerdos de no revelación y acabar desarrollando más
software propietario con licencias restrictivas, que a su
vez deberían ser más adelante aceptadas por sus propios
colegas. Stallman renunció a su empleo, viviendo de rea-
lizar programas libres y vender las copias en cintas y el día
27 de septiembre de 1983, anunció en varios grupos de
noticias 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 de
software libre y el concepto de "copyleft", que desarrolló
para otorgar libertad a los usuarios y para restringir las
posibilidades de apropiación del software.[4]
2.2 Las cuatro libertades del soft-
ware libre
De acuerdo con la definición establecida por Richard
Stallman, un software es “libre” cuando garantiza las si-
guientes libertades:[5][6][7]
Ciertos teóricos usan este cuarto punto (libertad 3) para
justificar parcialmente las limitaciones impuestas por la
licencia GNU GPL frente a otras licencias de software
libre (ver Licencias GPL). Sin embargo el sentido origi-
nal es más libre, abierto y menos restrictivo que el que le
otorga la propia situación de incompatibilidad, que ha si-
do resuelta a cierto grado en versión 3 de la licencia GNU
GPL.
Tanto la Open Source Initiative[8]
como la Free Software
Foundation,[9]
mantienen en sus webs oficiales, listados
de las licencias de software libre que aprueban.
El término software no libre se emplea para referirse al
software distribuido bajo una licencia de software más
restrictiva que no garantiza estas cuatro libertades. Las
leyes de la propiedad intelectual reservan la mayoría de
los derechos de modificación, duplicación, y redistribu-
ción, para el dueño del copyright; el software dispuesto
bajo 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ón
del 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 la
ambigüedad del término inglés "free"), y es habitual ver
a la venta CD de software libre como distribuciones Li-
nux. Sin embargo, en esta situación, el comprador del CD
tiene el derecho de copiarlo y redistribuirlo. El software
gratis puede incluir restricciones que no se adaptan a la
definición de software libre —por ejemplo, puede no in-
cluir el código fuente, puede prohibir explícitamente a los
distribuidores recibir una compensación a cambio, etc—.
Para evitar la confusión, algunas personas utilizan los tér-
minos “libre” (software libre) y “gratis” (software gratis)
para evitar la ambigüedad de la palabra inglesa “free”. Sin
embargo, estos términos alternativos son usados única-
mente dentro del movimiento del software libre, aunque
están extendiéndose lentamente hacia el resto del mundo.
Otros defienden el uso del término open source software
(software de código abierto). 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 se
refieren a conceptos semejantes, se está extendiendo el
uso de la palabra "FLOSS" con el significado de free/libre
and open source software e, indirectamente, también a la
comunidad 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, debido
a esto, los creadores de software libre desarrollan a la vez
de programas libres, formatos libres para estos programas
o utilizan formatos libres ya creados anteriormente.
Los formatos libres permiten a los usuarios poder traba-
jar con programas libres aunque al ser libres pueden ser
implementados y utilizados en cualquier programa sea
cerrado o no. Algunas compañías, como Microsoft, no
suelen utilizar formatos libres en sus programas, no por
impedimento si no por falta de voluntad de implementar
formatos abiertos en sus programas, aún así los usuarios
pueden 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ácter
contractual que un autor de un software da a un intere-
sado para ejercer “actos de explotación legales”. Pueden
existir tantas licencias como acuerdos concretos se den
entre el autor y el licenciatario. Desde el punto de vista
del software libre, existen distintas variantes del concepto
o grupos de licencias:[2]
2.3.1 Licencias GPL
Una de las más utilizadas es la Licencia Pública General
de GNU (GNU GPL). El autor conserva los derechos de
autor (copyright), y permite la redistribución y modifi-
cación bajo términos diseñados para asegurarse de que
todas las versiones modificadas del software permane-
cen bajo los términos más restrictivos de la propia GNU
GPL. Esto hace que sea imposible crear un producto con
partes no licenciadas GPL: el conjunto tiene que ser GPL.
Es decir, la licencia GNU GPL posibilita la modificación
y redistribución del software, pero únicamente bajo esa
misma licencia. Y añade que si se reutiliza en un mismo
programa código “A” licenciado bajo licencia GNU GPL
y código “B” licenciado bajo otro tipo de licencia libre,
el código final “C”, independientemente de la cantidad y
calidad de cada uno de los códigos “A” y “B”, debe estar
bajo la licencia GNU GPL.
En la práctica esto hace que las licencias de software libre
se dividan en dos grandes grupos, aquellas que pueden
ser mezcladas con código licenciado bajo GNU GPL (y
que inevitablemente desaparecerán en el proceso, al ser
el código resultante licenciado bajo GNU GPL) y las que
no lo permiten al incluir mayores u otros requisitos que no
contemplan ni admiten la GNU GPL y que por lo tanto no
pueden ser enlazadas ni mezcladas con código gobernado
por la licencia GNU GPL.
En el sitio web oficial de GNU hay una lista de licencias
que cumplen las condiciones impuestas por la GNU GPL
y otras que no.[10]
Aproximadamente el 60% del software licenciado como
software 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 o
AGPL) es una licencia copyleft derivada de la Licencia
Pública General de GNU diseñada específicamente para
asegurar la cooperación con la comunidad en el caso de
software que corra en servidores de red.
La Affero GPL es íntegramente una GNU GPL con una
cláusula nueva que añade la obligación de distribuir el
software si éste se ejecuta para ofrecer servicios a través
de una red de ordenadores.
La Free Software Foundation recomienda que el uso de la
GNU AGPLv3 sea considerado para cualquier software
que 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 de
copyright ú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 absorbidas
al ser mezcladas con la licencia GNU GPL con quienes
son compatibles. Puede argumentarse que esta licencia
asegura “verdadero” software libre, en el sentido que el
usuario 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 tipo
de licencia no contribuye al desarrollo de más software
libre (normalmente utilizando la siguiente analogía: “una
licencia 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ás
libre 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 valor
porque fue el instrumento que empleó Netscape Commu-
nications Corp. para liberar su Netscape Communicator
4.0 y empezar ese proyecto tan importante para el mundo
del Software Libre: Mozilla. Se utilizan en gran cantidad
de productos de software libre de uso cotidiano en todo
tipo de sistemas operativos. La MPL es Software Libre y
promueve eficazmente la colaboración evitando el efec-
to “viral” de la GPL (si usas código licenciado GPL, tu
desarrollo final tiene que estar licenciado GPL). Desde
un punto de vista del desarrollador la GPL presenta un
inconveniente en este punto, y lamentablemente mucha
gente se cierra en banda ante el uso de dicho código. No
obstante la MPL no es tan excesivamente permisiva como
las licencias tipo BSD. Estas licencias son denominadas
de copyleft débil. La NPL (luego la MPL) fue la primera
licencia nueva después de muchos años, que se encargaba
de algunos puntos que no fueron tomados en cuenta por
las licencias BSD y GNU. En el espectro de las licencias
de software libre se la puede considerar adyacente a la
licencia estilo BSD, pero perfeccionada.
2.3.5 Copyleft
Símbolo del copyleft
Hay que hacer constar que el titular de los derechos de
autor (copyright) de un software bajo licencia copyleft
puede también realizar una versión modificada bajo su
copyright original, y venderla bajo cualquier licencia que
desee, además de distribuir la versión original como soft-
ware libre. Esta técnica ha sido usada como un modelo
de 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 usuarios
de la versión copyleft.
En España, toda obra derivada está tan protegida como
una original, siempre que la obra derivada parta de una
autorización contractual con el autor. En el caso genérico
de que el autor retire las licencias “copyleft”, no afectaría
de ningún modo a los productos derivados anteriores a esa
retirada, ya que no tiene efecto retroactivo. En términos
legales, el autor no tiene derecho a retirar el permiso de
una licencia en vigencia. Si así sucediera, el conflicto entre
las partes se resolvería en un pleito convencional.
2.4 Comparación con el software
de 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 el
software libre comparten muchas de sus licencias, la Free
Software Foundation opina que el movimiento del soft-
ware de código abierto es filosóficamente diferente del
movimiento del software libre.[12]
Apareció en 1998 con
un grupo de personas, entre los que cabe destacar a Eric
S. Raymond y Bruce Perens, que formaron la Open Sour-
ce Initiative (OSI). Ellos buscaban darle mayor relevancia
a 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 Richard
Stallman prefieren plantear el asunto en términos éticos
empleando 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 que
es free en free software. El término “código abierto” fue
acuñado por Christine Peterson del instituto de investi-
gación Foresight Institute, y se registró para actuar como
marca registrada el término en inglés, para los productos
de software libre.
Mucha gente reconoce el beneficio cualitativo del proceso
de 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 de
su estándar ético. El movimiento de código abierto ve la
excelencia técnica como el objetivo prioritario, siendo la
compartició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 del
término “Código Abierto”.
Puesto que la OSI sólo aprueba las licencias que se ajustan
a 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 existen
importantes diferencias filosóficas entre ambos términos,
especialmente en términos de las motivaciones para el
desarrollo y el uso de tal software, raramente suelen tener
impacto 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 a
la definición de código abierto, que dan a los usuarios la
libertad de mejorarlos, y los programas que simplemente
tiene 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ódigo
fuente disponible es de código abierto, puesto que lo pue-
den manipular (un ejemplo de este tipo de software sería
el popular paquete de software gratuito Graphviz, inicial-
mente no libre pero que incluía el código fuente, aunque
luego AT&T le cambió la licencia). Sin embargo, mucho
de este software no da a sus usuarios la libertad de distri-
buir sus modificaciones, restringe el uso comercial, o en
general restringe los derechos de los usuarios.
2.5 Implicaciones económico-
políticas
Una vez que un producto de software libre ha empezado a
circular, rápidamente está disponible a un costo muy bajo.
Al mismo tiempo, su utilidad no decrece. El software, en
general, podría ser considerado un bien de uso inagotable,
tomando en cuenta que su costo marginal es pequeñísimo
y que no es un bien sujeto a rivalidad (la posesión del bien
por 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 libre
es 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 acerca
de la relación entre el software libre y el actual sistema
polí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 de
anarquismo 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ía
del regalo, donde el valor de una persona está basado
en lo que ésta da a los demás, sin que incurra valor
monetario formal de por medio.
• Grupos como Oekonux e Hipatia consideran que
todo 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 como
escribir 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, para
otros 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 por
la oferta de servicios adicionales al software como: la
personalización y/o instalación del mismo, soporte téc-
nico, donaciones, patrocinios o como un elemento de
responsabilidad social corporativa;[14]
en contraposición
al modelo de negocio basado en licencias predominante
en 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 los
mayores 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 productos
involucrados. Por lo general, los usuarios de este método
recomiendan 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, sea
migrando total o parcialmente sus servidores y sis-
temas de escritorio, sea subvencionándolo. Este es
el 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 tiene
cierta función de guía de la industria que la hace tener
un gran impacto, que se considera que debe dirigirse a la
creación de un ámbito tecnológico generador de riqueza
nacional. Ésta puede crearse fomentando empresas, cuyo
negocio sea en parte el desarrollo de nuevo software libre
para la Administración, el mantenimiento y la adaptación
del software existente.[29]
En Españ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 Universidad
Rey Juan Carlos (Grupo GsyC/LibreSoft) y Telefónica
I+D, con el fin de analizar el estado en que se encuentra
el 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 profesores
usan software libre para fines didácticos y de investiga-
ción. Ejemplo de ello es la Delta Metropolitana, red de
supercomputadoras que están en varios puntos de la Ciu-
dad de México, en el CINESTAV, el IPN, la UAM, y la
UNAM la cual utiliza software libre para consolidar sus
recursos, hacer investigación, y generar conocimiento.
2.8 Ventajas del Software libre en
la educación
Según sus impulsores, el software libre ayuda a conocer y
participar de forma equitativa el proceso educativo, por lo
cual parece tener beneficios en el campo educativo como
los siguientes:
1. Libertad para elegir el programa que cubra de mejor
manera 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 puede
ser eliminado el pago en licencia de programas no
libres 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: El
software libre permite que los estudiantes conozcan
cómo trabajan los programas y fomenta el interés, la
investigación y el aprendizaje de nuevos conceptos
en 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 Software
Foundation ente que argumenta que el software es
conocimiento y debe poderse difundir sin trabas. Su
ocultación es una actitud antisocial y la posibilidad
de modificar programas es una forma de libertad de
expresión, aunque sin olvidar una estructura jerar-
quizada por la meritocracia[31]
• La motivación pragmática, defendida por la Open
Source Initiative, que argumenta ventajas técnicas y
económicas, con respecto a evitar una tragedia de
los 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 negocio
sustentables.[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, el
08/03/2012 el Parlamento aprobó la Ley Ley 4747/12
que 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 agosto
del 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 de
abril 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 basado
en estándares abiertos.[36][37]
2.10.4 España
La Orden EDU/2341/2009, de 27 de agosto, por la que se
crea el Centro Nacional de Desarrollo Curricular en Sis-
temas no Propietarios, tiene como finalidad el diseño, el
desarrollo y la promoción de contenidos educativos digi-
tales para colectivos educativos específicos, en el ámbito
de 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 en
software libre.
2.10.5 Uruguay
En Uruguay, a partir de 2003 (Comisión de Constitución,
Códigos, Legislación General y Administración Carpeta
Nº 3565 de 2003 Repartido Nº 1510 de noviembre de
2003) se estudió una “Ley de Software Libre y Forma-
tos Abiertos en el Estado”. La primera versión planteaba
el uso de formatos abiertos en todo el Estado y Software
Libre en la educación, con una segunda versión presen-
tada en el 2006, que ya planteaba dar preferencia al uso
de 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 de
diciembre de 2012,[39][40]
la cual fue apoyada por la co-
munidad de software libre uruguaya.[41]
Finalmente, la
ley fue aprobada en diciembre de 2013 estableciéndose
en ella que:[42]
1. El Estado deberá preferir la inversión y desarrollo
en 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 y
argumentar 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 Internet
deberá ser posible en al menos un programa con li-
cencia libre.
2.10.6 Venezuela
El Decreto presidencial 3390 de fecha 23 de diciembre de
2004 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án
prioritariamente 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 relacionado
con Software libre.
• Anexo:Comparación de licencias de software libre
• Arquitectura de fuente abierta
• Asociación de Publicaciones Académicas de Acceso
Abierto
• 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). «La
Definició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 for
any software which will commonly be run over a network”.
[12] «Open Source» (código fuente abierto) en el libreo
Software libre para una sociedad libre de Stallman
[13] Eben Moglen. «Anarchism Triumphant: Free Software
and the Death of Copyright (Anarquismo triunfante: el
software libre y la muerte de los derechos de autor)» (en
inglés).
[14] Modelos open source y responsabilidad social Jesús Gar-
cía García & Mª Isabel Alonso de MagdalenoUniversidad
de 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 desktop
maintenance 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 Latest
Chinese 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 Organismos
Pú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 adopting
Ubuntu - Ars Technica».
[26] «Michoacán ahorra muchos millones con software libre -
El Universal - Finanzas».
[27] «El Estado Dominicano se evitaría invertir los US$600
millones en el Gobierno Electrónico :: CLAVE digital
mó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). «Software
Libre y Acceso Abierto: dos formas de transferencia de
tecnología». Revista CTS, vol. 9, N. 26.
[30] Da Rosa, Fernando; Heinz, Federico. Guía práctica sobre
software libre: su selección y aplicación local en América
Latina 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 de
diciembre de 2013.
[36] Alan Lorenzo (11 de abril de 2008). «Ecuador migra a
software 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 de
2013.
[38] Parlamento Uruguayo”, setiembre de 2006.
[39] Proyecto de ley “Software libre y formatos abiertos en el
Estado”, fuente: CESOL, Centro de Estudios de Software
Libre.
[40] Proyecto de ley “Software libre y formatos abiertos en el
Estado”, fuente: Poder Legislativo - Cámara de Represen-
tantes - Uruguay.
[41] Comunicado de la comunidad sobre “Ley de Software Libre
y Formatos Abiertos en el Estado”, marzo 13 de 2013.
[42] Uruguay pone el ejemplo con la ley de software libre y
formatos 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 con
Software libre.Wikinoticias
• Wikiversidad alberga proyectos de aprendizaje
sobre 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 la
sociedad
• Guía Práctica sobre Software Libre, su selección y
aplicación local en América Latina y el Caribe, una
publicación de UNESCO
• Centro Nacional de Referencia de Aplicación de las
TIC basadas en Fuentes Abiertas
• Plataforma de Comunidades Virtuales de Software
Libre de Venezuela
Capítulo 3
Código abierto
open source
initiative
R
Logotipo del código abierto.
Código abierto es la expresión con la que se conoce al
software 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 de
software libre, tratando de usarlo como reemplazo al am-
biguo nombre original en inglés del software libre (free
software). 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 la
acepción española de libertad.
La expresión, para algunos, no resultó apropiada como
reemplazo 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, puesto
que se usa en la actualidad por parte de programadores
que no ofrecen software libre pero, en cambio, sí ofrecen
el código fuente de los programas para su revisión o mo-
dificación previamente autorizada por parte de sus pares
académicos.
Dada la ausencia de tal ambigüedad en la lengua espa-
ñola, el término software libre es adecuado para referirse
a programas que se ofrecen con total libertad de modi-
ficación, uso y distribución bajo la regla implícita de no
modificar dichas libertades hacia el futuro. De hecho en
inglé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 estrictamente
literal”, el significado textual de “código abierto” es que
“se puede examinar el código fuente", por lo que puede
ser interpretado como un término más débil y flexible que
el del software libre. Sin embargo, ambos movimientos
reconocen el mismo conjunto de licencias y mantienen
principios equivalentes.
Sin embargo, hay que diferenciar los programas de código
abierto, que dan a los usuarios la libertad de mejorarlos,
de los programas que simplemente tienen el código fuente
disponible, previa restricciones sobre su uso o modifica-
ción.
En la actualidad el código abierto se utiliza para definir un
movimiento 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, y
completamente equivalente desde el punto de vista prác-
tico, de hecho, ambos movimientos trabajan juntos en el
desarrollo 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, éste
evoluciona, se desarrolla y mejora. Los usuarios lo adap-
tan a sus necesidades, corrigen sus errores con un tiempo
de espera menor a la aplicada en el desarrollo de software
convencional 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 inicia
el proyecto GNU.
• 25 de agosto de 1991: Linus Torvalds publica
un mensaje en el grupo de noticias USENET
comp.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 se
acuña el término “open source” y durante la semana
siguiente Bruce Perens y Eric S. Raymond lanzan
opensource.org.
• 31 de marzo de 1998: el código de Navigator ya es-
tá disponible: en unas horas, mejoras del programa
invaden la red.
• 7 de mayo de 1998: Corel Corporation anuncia Net-
winder, un ordenador económico que corre bajo
GNU/Linux.
• 11 de mayo de 1998: Corel anuncia sus planes de
adaptar WordPerfect y el resto de sus programas de
ofimática a GNU/Linux.
• 28 de mayo de 1998: Sun Microsystems y Adaptec
se unen a Linux International, las primeras grandes
empresas vendedoras de equipos y sistemas opera-
tivos en hacerlo.
• 13-17 de julio de 1998: Oracle e Informix anuncian
que conectarán sus bases de datos a GNU/Linux.
• 10 de agosto de 1998: Sun Microsystems ofrece
Solaris a usuarios individuales e instituciones edu-
cativas o sin ánimo de lucro.
• 1 de noviembre de 1998: se publican los Halloween
Documents: planes de Microsoft contra GNU/Linux
y otros proyectos código abierto.
• 16 de diciembre de 1998: IDG anuncia que la cuota
de mercado del GNU/Linux se incrementó un 212%
en 1998.
• 1-5 de marzo de 1999: LinuxWorld Conference and
Expo: 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 grandes
superficies.[1]
Entre 1998 y 2000 se observó un gran crecimiento en la
popularidad de GNU/Linux y de la formación de muchas
empresas “pro software de código abierto”. El movimien-
to también capturó la atención de la principal industria
del software, llevando al software de código abierto las
ofertas de compañías de software consolidadas como Sun
Microsystems 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 que
al compartir el código, el programa resultante tiende a ser
de calidad superior al software propietario, es una visión
técnica. Por otro lado, el software libre tiene tendencias
filosóficas e incluso morales: el software propietario, al
no poder compartirse, es “antiético” dado que prohibir
compartir entre seres humanos va en contra del sentido
común.
Al igual que el software libre, el código abierto tiene una
serie de requisitos[2]
necesarios para que un programa
pueda 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 incluido
u obtenerse libremente.
• Trabajos derivados: la redistribución de modifica-
ciones debe estar permitida.
• Integridad del código fuente del autor: las licencias
pueden 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: el
programa no puede licenciarse solo como parte de
una distribución mayor.
• La licencia no debe restringir otro software: la licen-
cia no puede obligar a que algún otro software que
sea distribuido con el software abierto deba también
ser de código abierto.
• La licencia debe ser tecnológicamente neutral: no
debe requerirse la aceptación de la licencia por me-
dio de un acceso por clic de ratón o de otra forma
específica del medio de soporte del software.
Este decálogo es compatible con las cuatro libertades del
software libre.
3.4 Programas en código abierto
• Sistemas Operativos: los más conocidos, Ubuntu y
Debian, basados en Linux. Android, de Google, para
teléfonos inteligentes y tabletas.
• Programas: las suites ofimáticas Open Office y Libre
Office, el navegador Firefox, el cliente de correo
electrónico Thunderbird, el reproductor multimedia
VLC o el editor de imágenes GIMP
• Antivirus: ClamWin
• Los programas de Apache Software Foundation y
Github.
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 se
habla popularmente de cine “Open source” para referir-
se a cine bajo distintos tipos de licencias libres.[3]
Otro
ejemplo es el proyecto de una economía de código abierto
de la plataforma Open Source Ecology, comenzado con el
desarrollo 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 Source
Initiative » ignorado (ayuda)
[3] Articulo “Open-source film” de la wiki inglesa
[4] The mission of Open Source Ecology (OSE) is to create
the 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 (open
source)
• Observatorio Nacional del Software de Fuentes
Abiertas
• Comunidad para la difusión del Open Source y de
Gnu Linux
• Varios, “Producir Software de Código Abierto: Co-
mo Llevar a Buen Puerto un Proyecto de Código
Libre”. O'Reilly, 2007. PDF | OpenLibra Libro gra-
tuito (español).
Capítulo 4
Proyecto GNU
El proyecto GNU fue iniciado por Richard Stallman con
el objetivo de crear un sistema operativo completamente
libre: el sistema GNU.[1]
El 27 de septiembre de 1983 se anunció públicamente el
proyecto 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 de
cooperación que prevaleció en los tiempos iniciales de la
comunidad de usuarios de computadoras”.
4.1 Etimología
GNU es un acrónimo recursivo que significa GNU
No 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 el
antílope africano o fonéticamente;[2]
por ello, el término
mayoritariamente se deletrea (G-N-U) para su mejor
comprensión[cita requerida]
. En sus charlas Richard Stallman
finalmente 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 demostrado
ser técnicamente estable. El sistema GNU fue diseñado
para ser totalmente compatible con UNIX. El hecho de
ser compatible con la arquitectura de UNIX implica que
GNU esté compuesto de pequeñas piezas individuales de
software, muchas de las cuales ya estaban disponibles, co-
mo el sistema de edición de textos TeX y el sistema gráfi-
co X Window, que pudieron ser adaptados y reutilizados;
otros en cambio tuvieron que ser reescritos.
Para asegurar que el software GNU permaneciera libre
para 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 de
los mismos. La idea se conoce en Inglés como copyleft
(lo cual significa que el autor permite la distribución libre
del mismo, en clara oposición a copyright o “derecho de
autor”), y está contenida en la Licencia General Pública
de 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 proyecto
GNU. 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. A
medida que GNU ganaba renombre, negocios interesados
comenzaron a contribuir al desarrollo o comercialización
de 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 mayor
parte de las bibliotecas y utilidades que componen un sis-
tema operativo UNIX típico. Pero faltaba un componente
clave 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 un
nú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 con
UNIX 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 equipos
sumamente 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 como
base el núcleo Mach desarrollado en la CMU. Inicialmen-
te, el núcleo recibió el nombre de Alix (así se llamaba una
novia de Stallman), pero por decisión del programador
Michael Bushnell fue renombrado a Hurd. Desafortuna-
damente, debido a razones técnicas y conflictos persona-
les entre los programadores originales, el desarrollo de
Hurd acabó estancándose.
Símbolo del Copyleft
En 1991, Linus Torvalds empezó a escribir el núcleo
Linux 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 y
consiguiendo paulatinamente que Linux llegase a ser un
núcleo compatible con UNIX. En 1992, el núcleo Li-
nux fue combinado con el sistema GNU, resultando en
un sistema operativo libre y completamente funcional.
El Sistema Operativo formado por esta combinación es
usualmente conocido como "GNU/Linux" o como una
"distribución Linux" y existen diversas variantes. (Véase
también: Controversia por la denominación GNU/Linux)
También es frecuente hallar componentes de GNU insta-
lados en un sistema UNIX no libre, en lugar de los progra-
mas originales para UNIX. Esto se debe a que muchos de
los programas escritos por el proyecto GNU han demos-
trado ser de mayor calidad que sus versiones equivalentes
de UNIX. A menudo, estos componentes se conocen co-
lectivamente como “herramientas GNU”. Muchos de los
programas GNU han sido también transportados a otros
sistemas operativos como Microsoft Windows y Mac OS
X.
4.3 Programas desarrollados por
GNU
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 varios
lenguajes, particularmente C
• GDB - depurador de aplicaciones
• GNU Ghostscript - aplicaciones para PostScript y
PDF[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 comunicaciones
personales, diseñada para resistir interferencias no
autorizadas
• 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 de
datos
• Hurd - un micronúcleo y un conjunto de servidores
que 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 la
programación en MIX
• Texinfo - sistema de documentación
• LilyPond - editor de partituras musicales.
El proyecto GNU también ayuda con el desarrollo de
otros paquetes, como:
• CVS - sistema de control de versiones para código
fuente
• DDD - herramientas gráficas para detección y
depuración de errores
4.4 Distribuciones de GNU
La única variante completamente GNU es el núcleo Hurd,
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 Linux
en sí no es parte de él. GNU también es utilizado con
otros núcleos, como Debian GNU/kFreeBSD, Debian
GNU/NetBSD, Nexenta OS o GNU-Darwin.
Actualmente la versiones que la FSF recomienda, son
aquellas distribuciones que traen el kernel linux-libre, las
cuales son Trisquel GNU/Linux, Parabola GNU/Linux,
Ututo GNU/Linux entre otras. (Para ver estas listas Visita
la web GNU)
4.5 Véase también
• Portal:Software libre. Contenido relacionado
con 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 sobre
Proyecto 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 del
concepto 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 un
software, tiene la posibilidad de controlar y restringir los
derechos del usuario sobre su programa, lo que en el soft-
ware no libre implica por lo general que el usuario sólo
tendrá 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 tiempo
después comenzó a existir lo que se conoce como soft-
ware de código cerrado. Sin embargo hay que destacar
que, al inicio de la era de la informática, era común que
agrupaciones científicas estuvieran dispuestas a ceder su
có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 un
beneficio común conocer los desarrollos ajenos en busca
de la estandarización.[2]
Pasado el tiempo es en 1979 cuando el gobierno de los
Estados Unidos obliga a IBM a distinguir entre software
y hardware que hasta entonces no se distinguían clara-
mente, dando lugar a los primeros intentos de cerrar el
código de los programas. Aún en esa época, se encontra-
ba en revistas como Creative Computing y Byte hojas y
hojas 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 "proprietary
software”. En la lengua anglosajona, "proprietary" signi-
fica «poseído o controlado privadamente» («privately ow-
ned and controlled»), que destaca la manutención de la
reserva de derechos sobre el uso, modificación o redis-
tribución del software. Inicialmente utilizado, pero con
el inconveniente que la acepción proviene de una traduc-
ción literal del inglés, no correspondiendo su uso como
adjetivo 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 sobre
una cosa»,[4]
por lo que no podría calificarse de “propie-
tario” al software, porque éste no tiene propiedad sobre
nada (es decir, no es dueño de nada) y, además, no podría
serlo (porque es una cosa y no una persona). Asimismo, la
expresión “software propietario” podría ser interpretada
como “software sujeto a propiedad” (derechos o titulari-
dad) y su opuesto, el software libre, también está sujeto
al derecho de autor. Otra interpretación es que contraria-
mente al uso popular del término, se puede afirmar de
que “todo software es propietario”, por lo que la forma
correcta de referirse al software con restricciones de uso,
estudio, copia o mejora es la de software privativo, según
esta 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ño
del software privativo lo licencia como propiedad priva-
da y el de software libre como propiedad social.[5]
Con la
intención de corregir el defecto de la expresión “software
propietario” aparece el llamado “software con propieta-
rio”, sin embargo se argumenta contra del término “con
propietario” justamente su similitud con proprietary en
inglés, que sólo haría referencia a un aspecto del softwa-
re que no es libre, manteniendo una de las principales
críticas a éste (de “software sujeto a derechos” o “propie-
dad”). Adicionalmente, si “propietario” refiere al titular
de 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 tiene
también titulares de derechos de autor.
Según la opinión de algunos activistas del Movimiento de
Software 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 al
software libre en cuanto a la propiedad del mismo ha-
ciéndola parecer como difusa y sin ninguna garantía de
soporte 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 “que
causa 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 que
apoyan 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 "propietary
software".[7]
Asimismo, es frecuentemente utilizado pa-
ra referirse al software que no cumple con las Directrices
de software libre de Debian, las cuales siguen la misma
idea básica de libertad en el software, propugnada por la
FSF, y sobre las cuales está basada la definición de código
abierto de la Open Source Initiative.
Adicionalmente el software de código cerrado nace como
antónimo de software de código abierto y por lo tanto se
centra más en el aspecto de ausencia de acceso al código
que en los derechos sobre el mismo. Éste se refiere sólo
a la ausencia de una sola libertad por lo que su uso debe
enfocarse sólo a este tipo de software y aunque siempre
signifique que es un software que no es libre, no tiene que
ser software de código cerrado.
La expresión software privado es usada por la relación
entre los conceptos de tener y ser privado. Este término
serí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 que
el software privativo al ser adquirido por un particular
genera inmediatamente en él el siguiente dilema ético: si
el poseedor del programa lo muestra a un amigo y este
se lo pide prestado para copiarlo, o soy un buen cliente y
entonces mal amigo -por no compartirlo con él- o soy un
buen 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 del
mismo 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 ser
perseguido por la ley por el hecho de intentar conocer si
existe tal amenaza en dicho software.
Por otra parte, en una sociedad de la información,[11]
el
software se ha convertido en una herramienta importan-
te de productividad, y una licencia de software privativo
constituye un acuerdo o contrato entre dos sujetos jurídi-
cos que voluntariamente acuerdan las condiciones de uso
de 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 segunda
edició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 segunda
edició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 Richard
S. Otros autores con la misma opinón sobre la moral del
software
[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ón
podrí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 free
software, aunque esta denominación también se confunde
a veces con “libre” por la ambigüedad del término en el
idioma inglés) define un tipo de software que se distribuye
sin coste, disponible para su uso y por tiempo ilimitado,[1]
y se trata de una variante gratuita del shareware, en la que
la 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 se
incluye el código fuente, pero no es lo usual.
El freeware suele incluir una licencia de uso, que permite
su redistribución pero con algunas restricciones, como no
modificar la aplicación en sí ni venderla, y dar cuenta de
su 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 concreto
a la que se acoge el software.
7.1 Confusiones entre licencias y
versiones
Es también habitual confundir la licencia 'freeware' co-
mo una licencia sin ningún tipo de restricciones. Pueden
tener restricciones el uso de los mismos. Es decir, la licen-
cia freeware puede permitir sólo el uso no comercial del
producto (muy habitual), uso académico, uso comercial
o combinación de ellos.
Hay confusión entre versiones Lite (Crippleware) y free-
ware, ya que ambas son gratuitas: las versiones Lite son
versiones básicas de un producto más completo (de pa-
go), y se ofrecen gratuitamente a modo de prueba para
conocer las funcionalidades del software. La diferencia
con freeware es que esta última licencia ofrece la funcio-
nalidad completa del programa.
La calidad del software es un factor a tener en cuenta al
escoger un programa. Habitualmente y por cuestiones de
disponibilidad de recursos los programas de pago son me-
jores y más completos que los programas freeware. Aun
así, existen muchos casos donde los productos freeware
son 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éase
GNU/Linux.
Linux es un sistema operativo libre, basado en Unix.[4]
Es uno de los principales ejemplos de software libre y de
código abierto.[5]
Linux está licenciado bajo la GPL v2
y está desarrollado por colaboradores de todo el mundo.
El desarrollo del día a día tiene lugar en la Linux Kernel
Mailing List Archive
El núcleo Linux fue concebido por el entonces estudiante
de ciencias de la computación finlandés Linus Torvalds
en 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 sistema
operativo.[7]
El núcleo Linux ha recibido contribuciones
de 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 a
pesar de que ambos conceptos son distintos, en un sistema
operativo monolítico ambos se componen del mismo pro-
grama: se denomina núcleo a la parte que se ejecuta en
modo privilegiado, y no debe tomarse en el sentido habi-
tual de la palabra.
Its important to realize that these programs
are not part of the operating system (...). The
operating system is the portion of the software
that runs in kernel mode (...). A trend in
modern operating systems is to take this
idea of moving code up into higher layers
even further and remove as much as possible
from the operating system, leaving a minimal
kernel (Refiriéndose a un sistema micronú-
cleo basado en el modelo cliente-servidor. El
autor indica repetidamente que es razonable
argumentar que las funciones que pasan a
ejecutarse en espacio de usuario siguen siendo
parte 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 de
Darwin, sistema operativo de OS X, cuyo núcleo es XNU.
Por contra, no hay que confundir distribución con sistema
operativo, aunque es muy habitual que se llame “sistema
operativo” a lo que realmente es una distribución. De es-
ta manera, Linux nunca es igual que GNU/Linux, siendo
este último una distribución que contiene a Linux como
sistema, junto con una serie de programas y herramientas
del 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 un
núcleo de sistema operativo gratuito similar a Unix que
funcionara con microprocesadores Intel 80386. Luego, el
26 de agosto de 1991, Torvalds escribió en el grupo de
noticias comp.os.minix:[9]
“Estoy haciendo un sistema operativo (gra-
tuito, sólo un hobby, no será nada grande
ni profesional como GNU) para clones AT
386(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 disgustan
en minix, ya que mi SO tiene algún parecido
con é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 de
unos meses...”
Después de esto, muchas personas ayudaron con el có-
digo. En septiembre de 1991 se lanzó la versión 0.01 de
Linux. Tenía 10.239 líneas de código. En octubre de ese
año(1991), se lanzó la versión 0.02 de Linux; luego, en
diciembre se lanzó la versión 0.11(1991). Esta versión
fue 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 sistemas
operativos. Cuando lanzó la siguiente versión, Torvalds
adoptó la GPL como su propio boceto de licencia, la cual
no permitía su redistribución con otra licencia que no sea
GPL.
Hardware
Desktop Computer
Workstation
Home Computer
Desktop replacement laptop
Thin client
Mobile computer
Note-/ Net-/ Smartbook
Tablet
Smartphone
PDA / Handheld game console
Wearable Computer
Wristwatch
Virtual Retina Display
Head-mounted display
Embedded Computer
Customer-premises equipment
Measurement Equipment
Laboratory Equipment
Layer3-Switches
other embedded systems
Supercomputer
Computer Cluster
Mainframe computer
Linux Network scheduler
Network stack
Netfilter
Linux device drivers
Linux file system drivers
Linux Process Scheduler
Linux Security Modules
Linux kernel
Human-Machine-
Interface
Speech recognition
Attitude sensor
Motion sensor
Display, Sound
Vibration
Keyboard & Mouse
also Braille, Touch-Display, Speech recognition,
Graphics tablet, 3D-Mouse, Wii nunchak, etc.
Touch-Display
Attitude sensor, Motion sensor,
Speech recognition
remote
(SSH, HTTP, ...)
remote
(SSH, HTTP,
Serial, I2C, ...)
Pooloffreeandopen-sourceand
proprietarysoftware
High-performance computing
(HPC)
Real-time computing
(RTC)
GraphicalUserInterfaces
(Shells)
Distributed computing
Wearable UI
Touch UI
Desktop UI
Office
Image Processing
Desktop Publishing (DTP)
Digital Audio Workstation
DJ Mixing Software
Software Development
Package management systems
Web server solution stacks (LAMP)
Routing daemons
Home cinema solutions
Distributed Computing
CAD, CAM & CAE Software
WindowingSystems
Video processing software
3D computer graphics
Computer animation
Motion graphics
Debian software archives: 37,000
software packages
Video games
La ubicuidad del núcleo Linux
Se inició un grupo de noticias llamado alt.os.linux y el 19
de enero de 1992 se publicó en ese grupo el primer post.
El 31 de marzo, 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 una
versión 1.0 acabada no parecía estar lejos. Sin embargo,
estas previsiones resultaron ser un poco optimistas: desde
1993 a principios de 1994, se desarrollaron 15 versiones
diferentes 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 se
lanzó Linux 1.2.0, que ya estaba compuesto de 310.950
líneas de código.
• Mayo de 1996: Torvalds decidió adoptar al pingüino
Tux 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 con
1.800.847 líneas de código.
• 18 de diciembre de 1999: se publicaron parches de
IBM Mainframe para 2.2.13, permitiendo de esta
forma que Linux fuera usado en ordenadores cor-
porativos.
• 4 de enero de 2001: se lanzó Linux 2.4.0 con
3.377.902 líneas de código.
• 17 de diciembre de 2003: se lanzó Linux 2.6.0 con
5.929.913 líneas de código.
• 24 de diciembre de 2008: se lanzó Linux 2.6.28 con
10.195.402 líneas de código.[10]
• 20 de octubre de 2010: se lanzó Linux 2.6.36 con
13.499.457 líneas de código.[11]
• 30 de mayo de 2011: Linus Torvalds anunció[12]
que
la 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 perfil
en la red social Google+ que el núcleo versión 3.0
estaba listo con la frase “3.0 Pushed Out”.[13]
• 22 de julio de 2011: Fue lanzada la versión 3.0 del
nú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 en
http://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 sitio
web 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. Los
controladores 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 espacio
de 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ácilmente
como 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 correctamente
interrupciones de hardware, y para mejorar el soporte de
multiprocesamiento simétrico.
El hecho de que Linux no fuera desarrollado siguiendo
el diseño de un micronúcleo (diseño que, en aquella épo-
ca, era considerado el más apropiado para un núcleo por
muchos teóricos informáticos) fue asunto de una famosa
y 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 lo
menos, identificar. Este sistema de ficheros y directorios,
tiene como base al carácter (/); ese mismo carácter sirve
tambié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 constituyen
todo el sistema. A este directorio suele llamárselo direc-
torio raíz. En Linux, a los discos no se les asigna una letra
como en Windows (p.e. “C:"), sino que se les asigna un
directorio de la jerarquía del directorio raíz (/), como por
ejemplo: "/media/floppy". Es práctica común en el siste-
ma de ficheros de Linux, utilizar varias sub-jerarquías de
directorios, 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 la
intervenció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 del
sistema; de esta forma, puede repararse el sistema
sin 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 pueden
compartir, 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 del
sistema detectado por el núcleo en oposición a los errores
similares 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, la
mayoría de las alertas son el resultado de excepciones en
el 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 un
bug en algún lugar de la cadena de alerta. También pueden
indicar un fallo en el hardware como un fallo de la RAM
o errores en las funciones aritméticas en el procesador, o
por un error en el software. En muchas ocasiones es posi-
ble reiniciar o apagar adecuadamente el núcleo mediante
una 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 la
variante 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 escritas
con el lenguaje ensamblador. Por el uso de sus extensio-
nes al lenguaje, GCC fue durante mucho tiempo el único
compilador capaz de construir correctamente Linux. Sin
embargo, Intel afirmó haber modificado su compilador C
de 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). Estos
incluyen 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 soporta
GCC 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 esa
dirección. Linux es ahora de hecho, uno de los núcleos
más ampliamente portados, y funciona en sistemas muy
diversos que van desde iPAQ (una handheld) hasta un
zSeries (un mainframe masivo). Está planeado que Li-
nux sea el sistema operativo principal de las nuevas
supercomputadoras de IBM, Blue Gene cuando su desa-
rrollo se complete.
De todos modos, es importante notar que los esfuerzos
de Torvalds también estaban dirigidos a un tipo diferente
de portabilidad. Según su punto de vista, la portabilidad
es la habilidad de compilar fácilmente en un sistema apli-
caciones de los orígenes más diversos; así, la popularidad
original de Linux se debió en parte al poco esfuerzo ne-
cesario para tener funcionando las aplicaciones favoritas
de todos, ya sean GPL o de Código abierto.
Las arquitecturas principales soportadas por Linux son
DEC 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 arquitecturas
de máquina virtual, tanto como host del sistema operati-
vo o como cliente. La máquina virtual usualmente emula
la familia de procesadores Intel x86, aunque en algunos
casos también son emulados procesadores de PowerPC o
ARM.
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 del
formato 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). ELF
es el formato usado de forma predeterminada por el GCC
desde alrededor de la versión 2.6.0. El formato a.out ac-
tualmente no es usado, convirtiendo a ELF en el formato
binario utilizado por Linux en la actualidad.
Linux tiene la capacidad de permitir al usuario aña-
dir el manejo de otros formatos binarios. También
binfmt_misc permite correr el programa asociado a un
archivo 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, Linus
Torvalds continua lanzando nuevas versiones del núcleo
Linux. 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 de
la 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 que
cambia con menor frecuencia y solo lo hace cuando
se 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úmeros
pares 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, en
cambio, como la serie 2.5.x, son versiones de
desarrollo, es decir que no son consideradas de
producción.
Comenzando con la serie Linux 2.6.x, no hay
gran diferencia entre los números pares o im-
pares con respecto a las nuevas herramientas
desarrolladas en la misma serie del núcleo. Li-
nus Torvalds dictaminó que este será el modelo
en 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 implementaron
en 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 reflejan
en el número D.
• El número D se produjo cuando un grave error, que
requiere de un arreglo inmediato, se encontró en el
có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 la
nueva política de versiones. Bug-fixes y parches de
seguridad son actualmente manejados por el cuarto
nú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 cambio
significativo 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 rama
inestable (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 y
casi libre de errores, aunque tuvieran que esperar por las
características de la rama 2.5. La rama 2.5 fue eventual-
mente declarada estable y renombrada como 2.6. Pero en
vez de abrir una rama 2.7 inestable, los desarrolladores de
núcleos eligieron continuar agregando los cambios en la
rama “estable” 2.6. De esta forma no había que seguir
manteniendo 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 aquellos
que esperaban seguridad y bug fixes sin necesitar las últi-
mas características. Los arreglos solo estaban en la última
versión, así que si un usuario quería una versión con to-
dos los bug fixed conocidos también tendría las últimas
caracterí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). El
equipo estable solo lanzaba actualizaciones para el núcleo
más reciente, sin embargo esto no solucionó el problema
del 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 una
solución para algunas personas es seguir el núcleo de una
distribución.
Como respuesta a la falta de un núcleo estable y de gente
que coordinara la colección de corrección de errores, en
diciembre de 2005 Adrian Bunk anunció que continuaría
lanzando núcleos 2.6.16 aun cuando el equipo estable lan-
zara 2.6.17. Además pensó en incluir actualizaciones de
controladores, haciendo que el mantenimiento de la serie
2.6.16 sea muy parecido a las viejas reglas de manteni-
miento para las serie estables como 2.4. El núcleo 2.6.16
será 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 la
subversión de 2.6, tras durante el Linux Kernel Summit
de ese año, Linus Torvalds decidió modificar el sistema de
numeración, sustituyendo los dos primeros números por
una única cifra, de forma que Linux 2.6.39 fue seguida
por 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 las
necesidades de un grupo específico de usuarios. De este
modo 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 de
paquetes de software.
Las herramientas que suelen incluirse en la distribución
de 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 todas
con licencia GPL o compatibles con ésta (LGPL, MPL).
Usualmente se utiliza la plataforma X.Org Server, basada
en 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 que
todas las copias del trabajo original y trabajos de autoría
derivados del original sean publicados bajo los mismos
té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, “the
best thing I ever did”).[24]
Sin embargo, la versión oficial del núcleo Linux contiene
firmware de código cerrado[cita requerida]
, por ello, el Pro-
yecto Linux-libre, auspiciado por la FSFLA, publica y
mantiene versiones modificadas del núcleo Linux a las
que se les ha quitado todo el software no libre.
8.6 Marca
A día de hoy, Linux es una marca registrada de Linus
Torvalds 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. Della
Croce, Jr. registró la marca Linux, pidió el pago de re-
galías a los distribuidores de Linux. En 1996, Torvalds
y algunas organizaciones afectadas denunciaron a Della
Croce y en 1997 el caso se cerró y la marca fue asignada
a 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 por
el uso comercial del nombre. Esto es así porque la legis-
lación estadounidense exige que el dueño de una marca
la defienda, por lo que se tuvo que pedir dinero por usar
la marca Linux, algunas compañías de forma totalmente
voluntaria han cumplido con dicha exigencia, a sabiendas
de que dicho dinero se iba a usar para caridad o defender
la 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 incremento
en la adopción de Linux en el escritorio ha mejorado el
soporte de hardware por parte de terceros o de los pro-
pios fabricantes, provocando que, en los últimos años, los
problemas 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 para
el hardware que fabrican. Este grupo de programadores
tambié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 es
retroceder un paso gigante hacia la década de
1970. Es como tomar un programa existente
escrito 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 con
Linux.
• Portal:Software Libre. Contenido relacionado
con 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 de
2012.
[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. Consultado
el 11 de agosto de 2011.
[5] Linus Torvalds (25 de septiembre de 2006). «Re: GPLv3
Position Statement» (en inglés). Consultado el 22 de mayo
de 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 de
2010.
[8] Greg Kroah-Hartman (abril de 2008). «Linux Kernel De-
velopment: How Fast it is Going, Who is Doing It, What
They are Doing, and Who is Sponsoring It» (en inglés).
«Since 2005, over 3700 individual developers from over
200 different companies have contributed to the kernel.»
[9] Linus Torvalds (25-08-1991) Message from discussion
What 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 Pushed
Out - Linus Torvalds Google Plus Profile». Consultado el
27 de julio de 2011.
[14] GNU/Linux Kernel Híbrido (en español)
[15] Resumen de la afamada discusión entre Linus Torvalds y
Andrew 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-report
The 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 de
Patentes 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 septiembre
de 2005. Consultado el 30 de octubre de 2011.
[28] «Who writes Linux». Agosto de 2009.
[29] A. S. Tanenbaum (29 de enero de 1992), «LINUX
is obsolete», http://groups.google.com/group/comp.
os.minix/browse_thread/thread/c25870d7a41696d2/
f447530d082cd95d?tvc=2, consultado el 30 de octubre
de 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 como
Windows 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 con
una 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 denominado
Windows el 20 de noviembre de 1985 como un com-
plemento para MS-DOS en respuesta al creciente interés
en las interfaces gráficas de usuario (GUI).[1]
Microsoft
Windows 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 introducido
en 1984.
Las versiones más recientes de Windows son Windows
10, Windows 8.1 y Windows 8 para equipos de escritorio,
Windows Server 2012 para servidores y Windows Phone
8 y 8.1 para dispositivos móviles. La primera versión en
españ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 de
usuario (GUI, Graphical User Interface) basada en ven-
tanas. Hasta ese momento (y hasta mucho después como
corazón de Windows), el sistema operativo más extendi-
do era MS-DOS (Microsoft Disk Operating System), que
por aquel entonces contaba con una interfaz basada en
lí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 primera
versió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
2011
2012
2013
2014
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 de
funcionalidad y logró muy poca popularidad. Windows
1.0 no era un sistema operativo completo; más bien era
una extensión gráfica de MS-DOS. Windows versión 2.0
fue lanzado en noviembre de 1987 y fue un poco más po-
pular que su predecesor. Windows 2.03 (lanzado en enero
de 1988) incluyó por primera vez ventanas que podían so-
laparse unas a otras. El resultado de este cambio llevó a
Apple a presentar una demanda contra Microsoft, debido
a que infringían derechos de autor.
Windows versión 3.0, lanzado en 1990, fue la primera
versión de Microsoft Windows que consiguió un amplio
éxito comercial, vendiendo 2 millones de copias en los
primeros seis meses. Presentaba mejoras en la interfaz de
usuario y en la multitarea. Recibió un lavado de cara en
Windows 3.1, que se hizo disponible para el público en
general el 1 de marzo de 1992. El soporte de Windows
3.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 de
Windows en utilizar la Multitarea apropiativa. Windows
NT 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ía
grandes 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 a
Windows para Workgroups y a MS-DOS. También fue el
primer sistema operativo Windows que utilizó las capaci-
dades Plug and Play. Los cambios que trajo Windows 95
eran revolucionarios, a diferencia de las siguientes versio-
nes, como Windows 98 y Windows Me. El soporte están-
dar para Windows 95 finalizó el 31 de diciembre de 2000
y el soporte ampliado para Windows 95 finalizó el 31 de
diciembre de 2001.
El siguiente para la línea del usuario fue lanzado el 25 de
junio de 1998, Microsoft Windows 98. Sustancialmente
fue criticado por su lentitud y por su falta de fiabilidad
en comparación con Windows 95, pero muchos de sus
problemas básicos fueron posteriormente rectificados con
el lanzamiento de Windows 98 Second Edition en 1999.
El soporte estándar para Windows 98 terminó el 30 de
junio de 2002, y el soporte ampliado para Windows 98
terminó 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 (Windows
Millennium Edition). Lanzado en septiembre de 2000,
Windows Me implementaba una serie de nuevas tecnolo-
gías para Microsoft: en particular fue el «Universal Plug
and Play». Durante el 2004 parte del código fuente de
Windows 2000 se filtró en internet, esto era malo para
Microsoft porque el mismo núcleo utilizado en Windows
2000 se utilizó en Windows XP.
En octubre de 2001, Microsoft lanzó Windows XP, una
versión que se construyó en el kernel de Windows NT que
también conserva la usabilidad orientada al consumidor
de 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ón
Professional. 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 y
un control remoto. El soporte estándar para Windows XP
terminó 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 un
fuerte 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 un
shell rediseñado y la interfaz de usuario da importantes
cambios 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 debido
a su patente inestabilidad, sobredemanda de recursos de
hardware, alto costo, y muy alta incompatibilidad con sus
predecesores, hecho que no ocurría con éstos.
El 22 de octubre de 2009, Microsoft lanzó Windows 7. A
diferencia de su predecesor, Windows Vista, que introdu-
jo a un gran número de nuevas características, Windows
7 pretendía ser una actualización incremental, enfocada
a la línea de Windows, con el objetivo de ser compati-
ble con aplicaciones y hardware que Windows Vista no
era compatible. Windows 7 tiene soporte multi-touch, un
Windows 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 no
está disponible en la barra de tareas, aunque la pantalla de
inicio está aún activa haciendo clic en la esquina inferior
izquierda de la pantalla y presionando la tecla Inicio en el
teclado. Presenta un Explorador de Windows rediseñado,
con la famosa interfaz ribbon de Microsoft Office. Según
Microsoft han vendido 60 millones de licencias, aunque
ha recibido muchas críticas por parte de los usuarios. Se
conservan la gran mayoría de las características de su pre-
decesor, Windows 7, con excepción de la nueva interfaz
gráfica y algunos cambios menores.
9.2.1 Versiones BETA de Windows
Las versiones Beta, Alpha o de pruebas, son versiones
gratuitas que se crean como base para el próximo sistema
operativo de Windows a lanzar. En ellas se colocan algu-
nas funciones que Microsoft ha puesto por defecto y que
las lanza al público para demostrarles a los usuarios de
cómo podría ser la futura versión de Windows. Mientras
estas versiones estén activas, los usuarios pueden reportar
errores que se encuentren en el sistema operativo, (ya que
no tienen soporte para actualizaciones) y si el reporte es
solucionado, Microsoft le dará una cantidad de dinero al
usuario 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ó para
crear Windows 94, fue nominada “Chicago”. Estos nom-
bres también se suelen llamar “Codenames”. En algunas
versiones de prueba (como Windows 8.1 BETA), no lle-
van un respectivo codename, y por este motivo llevan el
nombre 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 reciben
los sistemas operativos Windows es la debilidad del sis-
tema en lo que a seguridad se refiere y el alto índice de
vulnerabilidades críticas. El propio Bill Gates, fundador
de Microsoft, ha asegurado en repetidas ocasiones que la
seguridad 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 la
lentitud 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 de
la vulnerabilidad hasta que se publica un parche.
En algunos casos la falta de respuesta por parte de
Microsoft[51][52]
ha provocado que se desarrollen par-
ches que arreglan problemas de seguridad hechos por
terceros.[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 propietario
que sin embargo parece ser uno de los responsables de
la debilidad de este sistema operativo ya que, la propia
seguridad por ocultación, constituye una infracción del
principio de Kerckhoff, el cual afirma que la seguridad
de un sistema reside en su diseño y no en una supuesta
ignorancia del diseño por parte del atacante.[54]
9.3.1 Windows Defender
El 6 de enero de 2005, Microsoft lanzó una versión Beta
de 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 Defender
era un programa diseñado para proteger contra spyware
y otro software no deseado. Los usuarios de Windows
XP y Windows Server 2003 que tienen copias origina-
les de Microsoft Windows pueden descargar libremente
el programa desde el sitio web de Microsoft y Windows
Defender se suministra como parte de Windows Vista y
7. En Windows 8, Windows Defender y Microsoft Secu-
rity Essentials se han combinado en un solo programa,
denominado Windows Defender. Sus características y la
interfaz de usuario se basan en Microsoft Security Essen-
tials. Asímismo, Windows Defender se transformó en un
programa antivirus y Spyware. A pesar de que está acti-
vada de forma predeterminada, se puede desactivar para
utilizar 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 archivos
denominado AGDLP (cuentas, Global, Local, permisos)
AGLP que en esencia donde se aplican los permisos de
archivo a la carpeta en forma de un grupo local que luego
tiene otros 'grupos globales’ como miembros. Estos gru-
pos globales mantienen otros grupos o a usuarios según
las diferentes versiones de Windows que utiliza. Este sis-
tema varía de otros productos de proveedores tales como
Linux y NetWare debido a la 'estática' asignación de per-
miso se aplica directorio para el archivo o carpeta. Sin
embargo con este proceso de AGLP/AGDLP/AGUDLP
permite a un pequeño número de permisos estáticos para
aplicarse 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 de
Internet producido por Microsoft para su platafor-
ma Windows. Fue creado en 1995 tras la adquisición
por 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 dominante
Netscape Navigator, ya que eran bastante simples y
no eran compatibles con algunas de las extensiones
más populares de Netscape que dominaban la web
48 CAPÍTULO 9. MICROSOFT WINDOWS
de la época (como los marcos o JavaScript). Es el na-
vegador de Internet con mayor cuota de mercado, ya
que se incluye integrado por defecto con Windows,
hecho que le ha costado a Microsoft demandas por
monopolio 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 usuario
introduce un código en la aplicación el cual en 10
minutos actualizara a una versión más avanzada de
Windows, 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 con
una interfaz de usuario, diseñado para servir como
equipo personal de cine en casa. Está incluido en
Windows XP Media Center Edition como parte de
dicha versión especial del sistema operativo, ya que
la aplicación no puede ser añadida a una instalación
existente de windows XP. También se incluye en las
ediciones superiores de Windows Vista (Vista Ho-
me Premium y Vista Ultimate), Windows 7 (todas
las ediciones exceptuando Starter y Home Basic) y
en Windows 8 Pro.
• WordPad es un procesador de textos básico que se
incluye con casi todas las versiones de Microsoft
Windows desde Windows 95 hacia arriba. Es más
avanzado que el Bloc de notas pero más sencillo que
el 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úsica
y vídeo de formatos compatibles (.mp3,.mp4,.waw,
wmv, etc...). La última versión de este reproductor
ha sido la versión 12. Windows Media Player está
incluido en todas las versiones de Windows, inclu-
yendo Windows XP, Windows Vista, Windows 7 y
Windows 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 Windows
3.1. Desde entonces, Paint ha acompañado al siste-
ma operativo Microsoft Windows desde Windows
95.
9.5 Críticas y polémicas
Microsoft fue demandado por el gobierno de Estados
Unidos durante el año 1998 por competencia desleal, y
especialmente por la inclusión del navegador Internet Ex-
plorer en su versión Windows 95.[56]
Tras esta denuncia,
la pena le conllevó a Microsoft lanzar una versión de Win-
dows 95 sin su navegador de Internet.
En 2004 Microsoft lanzó una campaña, llamada «Get
the facts», en la que mostraba cientos de empresas
conocidas que migraron de GNU/Linux a Windows
Server y aumentaron su productividad y otro tipo de
comparativas,[57]
aunque la cerró poco después, en
2007.[58]
Los defensores de GNU/Linux desarrollaron su
propio estudio argumentando que, en contra de uno de los
reclamos de Microsoft, GNU/Linux tiene menores costos
administrativos que servidores basados en Windows.[59]
Otro estudio realizado por el Yankee Group afirma que
la actualización desde una versión de Windows Server a
otra plataforma tiene un coste inferior al de cambiar de
GNU/Linux a Windows Server.[60]
En 2007 Windows Vista tuvo que enfrentarse a pruebas
de que su sistema ofertado funcional a partir de 512 MiB
requería más de 4 GiB para serlo, ello avalado por un
consultor de IBM experto en el sistema.[61]
estando «so-
brecargado» de objetos, los cuales hacen que los compu-
tadores que actualmente están funcionando con Windows
XP no soporten adecuadamente el sistema y no ofrez-
can al usuario una experiencia fluida de uso, aunque «si
bien 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 XP
en computadores potentes».[62]
Debido al fracaso de Windows Vista, en 2007 Microsoft
autorizó a hacer downgrade hacia Windows XP en las
versiones 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 System Market Share». Net Market Share. Net
Applications. 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 Help
Businesses Thrive in Today’s Economy». Microsoft. 11 de
mayo 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-
[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-
[43] http://support.microsoft.com/lifecycle/?p1=16718
[44] «Bill Gates dice que la seguridad es el gran objetivo de
Microsoft». 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 ordenadores
del Departamento de Estado». Texto « Kriptópolis » ig-
norado (ayuda)
[46] «Microsoft tarda 18 meses en parchear una vulnerabilidad
de 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 en
Windows». 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). The
Register. Consultado el 10 de enero de 2010.
[50] «El agujero de seguridad que Microsoft tardó siete años
en 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 en
Europa». Gigle.net. 20 de febrero de 2010. Consultado el
13 de febrero de 2011.
[56] «El Gobierno de EEUU y 20 estados demandan a Micro-
soft por competencia desleal». El Mundo. 19 de mayo de
1998. Consultado el 13 de febrero de 2011.
[57] «Get The Facts on Windows 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 kills
its '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 hit
back at Microsoft TCO claims (en inglés). Consultado el
25 de mayo de 2008.
[60] «Yankee Independently Pits Windows TCO vs. Linux
TCO» (en inglés). eWeek.com. 24 de mayo de 2004. Con-
sultado el 25 de mayo de 2008.
[61] Thibodeau, Patrick (20 de febrero de 2007). «Buying
a new PC? “Windows Vista Capable” a barely hits the
mark». 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 cuales
no». 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 sobre
Microsoft Windows. Wikiquote
• Wikimedia Commons alberga contenido multi-
media sobre Microsoft 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é nick
poner, 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, Homo
logos, 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. Memo
Cham, 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, Kaka
poop, 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, Betoberto
caballin, Jostag, Jrsheik, Misterborracho, Diostar y Anónimos: 753
• Código abierto Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_abierto?oldid=82664473 Colaboradores: 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ía
H., 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, Alph
Bot, 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, Mariano mario06, 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, Sergio
Andres 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, Claudio
Alfredo 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, Death
Master, 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, Salvador
Baltazar, Jarisleif, Javierito92, Lprd2007, HUB, Rexrodo, Kikobot, Edsoncll, DragonBot, Pumk, Alberto Maria, 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 crazy
4.00, Chichan111, Santavera, Shinobilanterncorps, Patrias, GM83, PedR, Nash0h, Reglaje, Abián, MerlIwBot, Cruzacalles, Satanás va
de 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 pon
pon 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.png
1.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'><img
alt='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 domain
Colaboradores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be slightly
warped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version, created by
Reidab.
• 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 States
Federal “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 <aurium@gmail.com>
• 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 del
artí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: GPL
Colaboradores: Trabajo propio Artista original: Attys
• Archivo:Linux_kernel_ubiquity.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/3/3a/Linux_kernel_ubiquity.svg
Licencia: CC BY-SA 3.0 Colaboradores: Esta imagen incluye elementos que han sido tomados o adaptados de esta: <a
href='//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 and
wordmark (Pre-XP).svg
Artista 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: Richard
Stallman’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.0
Colaboradores:
• 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] Artista
original: Larry Ewing, Simon Budig, Anja Gerwinski
• Archivo:Wikinews-logo.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/24/Wikinews-logo.svg Licencia: CC BY-SA 3.0
Colaboradores: 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 official Wikinews colours and appear correctly on dark backgrounds. Originally uploaded
by 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: CC
BY-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.svg
Licencia: 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 Artista
original: 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

Más contenido relacionado

PDF
Enseñanza mesclada
PDF
Informática y tics
PDF
CUANTO SABES DE HTML
PDF
Mini Manual De Visual Basic Para Excel
PDF
Manual guadalinex edu
PDF
Curso Completo De Html [447 Paginas En EspañOl]
PDF
Curso html
PDF
Wikilibro. Fundamentos.
Enseñanza mesclada
Informática y tics
CUANTO SABES DE HTML
Mini Manual De Visual Basic Para Excel
Manual guadalinex edu
Curso Completo De Html [447 Paginas En EspañOl]
Curso html
Wikilibro. Fundamentos.

Similar a Software libre. (20)

PDF
Conceptos informáticos generales
PDF
softwareLibrevsPropietario.pdf
PDF
PDF
001 introduccion al software libre
PDF
Informática 2015
PDF
Software libre vs sw propietario
PDF
Tarea 2 2 edgar ruiz software libre-propietario
PDF
Libertades del software
PDF
Software libre para una sociedad libre
PDF
Stallman Software Libre Para Una Sociedad Libre
PDF
Software libre para una sociedad libre - Richard Stallman
PDF
Software libre
PDF
Softlibre para una sociedad libre
PDF
Softlibre enriquecido
PDF
1-Introducción al software libre
PDF
Licencias floss
PDF
32693
 
PDF
Software libre vs_propietario
PDF
Software libre vs_propietario
PDF
SOFTWARE LIBRE VS PRIVADO
Conceptos informáticos generales
softwareLibrevsPropietario.pdf
001 introduccion al software libre
Informática 2015
Software libre vs sw propietario
Tarea 2 2 edgar ruiz software libre-propietario
Libertades del software
Software libre para una sociedad libre
Stallman Software Libre Para Una Sociedad Libre
Software libre para una sociedad libre - Richard Stallman
Software libre
Softlibre para una sociedad libre
Softlibre enriquecido
1-Introducción al software libre
Licencias floss
32693
 
Software libre vs_propietario
Software libre vs_propietario
SOFTWARE LIBRE VS PRIVADO
Publicidad

Último (6)

PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
sistemas de informacion.................
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Conceptos basicos de Base de Datos y sus propiedades
Su punto de partida en la IA: Microsoft 365 Copilot Chat
sistemas de informacion.................
Publicidad

Software libre.

  • 1. Software Libre Para una sociedad libre
  • 2. Índice general 1 Software 1 1.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Definición de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Clasificación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Proceso de creación del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4.1 Modelos de proceso o ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4.2 Etapas en el desarrollo del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Carácter evolutivo del software[17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.1 Modelos de ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8.1 Libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8.2 Artículos y revistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.9 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2 Software libre 17 2.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Las cuatro libertades del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 Formatos abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 Tipos de licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1 Licencias GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.2 Licencias AGPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.3 Licencias estilo BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.4 Licencias estilo MPL y derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.5 Copyleft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 Comparación con el software de código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.5 Implicaciones económico-políticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5.1 Modelo de negocio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Seguridad relativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7 Software libre en la Administración Pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.8 Ventajas del Software libre en la educación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.9 Motivaciones del software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 i
  • 3. ii ÍNDICE GENERAL 2.10 Regulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.1 Argentina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.2 Bolivia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.3 Ecuador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.4 España . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.5 Uruguay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.10.6 Venezuela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.11 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.12 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.13 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 Código abierto 26 3.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Cronología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 Movimiento del “código abierto” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Programas en código abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 Extensiones del concepto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 Proyecto GNU 29 4.1 Etimología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.3 Programas desarrollados por GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.4 Distribuciones de GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.7 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Software propietario 32 5.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.1.1 Software propietario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.4 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.5 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6 Código cerrado 35 6.1 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 7 Freeware 36 7.1 Confusiones entre licencias y versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
  • 4. ÍNDICE GENERAL iii 7.2 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.3 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.4 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8 Núcleo Linux 37 8.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8.2 Aspectos técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.2.1 Arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.2.2 Jerarquía de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.2.3 Kernel panic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.2.4 Lenguajes de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.2.5 Portabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.2.6 Arquitectura de máquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.2.7 Formatos binarios soportados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.3 Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.3.1 Numeración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.3.2 Fechas de publicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 8.3.3 Top 10 desarrolladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 8.3.4 Línea de tiempo del Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 8.4 Distribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 8.5 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.6 Marca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.7 Críticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.7.1 Soporte de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.7.2 Arquitectura monolítica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.8 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 8.9 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 8.10 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 9 Microsoft Windows 45 9.1 Versiones más utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.2.1 Versiones BETA de Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 9.2.2 Historial de lanzamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 9.3 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 9.3.1 Windows Defender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 9.3.2 Permisos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 9.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 9.5 Críticas y polémicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 9.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 9.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 9.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
  • 5. iv ÍNDICE GENERAL 9.9 Texto e imágenes de origen, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . . . 51 9.9.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 9.9.2 Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 9.9.3 Licencia de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  • 6. Capítulo 1 Software Software Dentro de la categoría de software de aplicación están incluidos los procesadores de texto como LibreOffice Writer (arriba) y los editores gráficos rasterizados como Krita (abajo). Se conoce como software[1] al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en con- traposición a los componentes físicos que son llamados hardware. Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales como el procesador de texto, que permite al usuario realizar todas las tareas con- cernientes a la edición de textos; el llamado software de sistema, tal como el sistema operativo, que básicamente permite 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 jerga té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 abreviatura es Sw. 1.1 Etimología Software (pronunciación AFI:[ˈsɒftwɛəʳ]) es una palabra proveniente del inglés (literalmente: partes blandas o sua- ves), que en español no posee una traducción adecuada al 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 de Software.[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ón y datos asociados, que forman parte de las operaciones de un sistema de computación. Extraído del estándar 729 del IEEE[5] 1
  • 7. 2 CAPÍTULO 1. SOFTWARE Considerando esta definición, el concepto de software va más allá de los programas de computación en sus distin- tos estados: código fuente, binario o ejecutable; también su 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 este sentido por John W. Tukey en 1957. En la ingeniería de software y las ciencias de la computación, el software es toda 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 Babbage como parte de su máquina diferencial. La teoría que for- ma la base de la mayor parte del software moderno fue propuesta por Alan Turing en su ensayo de 1936, «Los números computables», con una aplicación al problema de decisión. 1.3 Clasificación del software Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos: • Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se 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 programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: • 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 desarrollar programas informáticos, usando diferentes alterna- tivas y lenguajes de programación, de una manera prá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 el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI). • Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros: • Aplicaciones para Control de sistemas y automatización industrial • Aplicaciones ofimáticas • Software educativo • Software empresarial • Bases de datos • Telecomunicaciones (por ejemplo Internet y toda 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 a seguir para llegar a la solución de un problema u obten- ción de un producto, en este caso particular, para lograr un producto software que resuelva un problema específi- co. El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y cri- ticidad del mismo. Por ejemplo la creación de un sistema operativo 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 segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) o costo: de «pequeño», «mediano» y «gran porte». Existen varias metodologías para estimarlo, una de las más populares es el sistema COCOMO que provee mé- todos y un software (programa) que calcula y provee una aproximación de todos los costos de producción en un
  • 8. 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 lenguaje usado, etc.). Considerando los de gran porte, es necesario realizar complejas tareas, tanto técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras cosas), la complejidad de ello ha llevado a que desarrolle una in- geniería específica para tratar su estudio y realización: es conocida como Ingeniería de Software. En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista-programador soli- tario) pueden realizar la tarea. Aunque, siempre en casos de mediano y gran porte (y a veces también en algunos de pequeño porte, según su complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso). Los «procesos de desarrollo de software» poseen re- glas preestablecidas, y deben ser aplicados en la creación del software de mediano y gran porte, ya que en caso con- trario lo más seguro es que el proyecto no logre concluir o 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 (ejemplo XP), 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 son Programación Extrema (en inglés eXtreme Programming o XP), Proceso Unificado de Rational (en inglés Rational Unified 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 «modelo de ciclo de vida».[6] Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. [7] Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos y fracasos es la fal- ta de aplicación de una buena metodología o proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o procesos de desarrollo, 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 ingenieros en 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 y variadas tareas,[6] desde lo administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero, casi rigurosamente, siempre se cumplen ciertas etapas mínimas; las que se pueden resumir como sigue: • Captura, elicitación[8] , especificación y análisis de requisitos (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 sus nombres, o ser más globales, o contrariamente, ser más refinadas; por ejemplo indicar como una única fase (a los fines documentales e interpretativos) de «análisis y dise- ño»; o indicar como «implementación» lo que está dicho como «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 mayores detalles 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 proceso o 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 y realimentació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 su vez 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 como modelo en 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 de los requisitos, la no volatilidad de los mismos (o rigidez)
  • 9. 4 CAPÍTULO 1. SOFTWARE y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a escasos y pequeños sistemas a desarrollar. En estas circunstancias, el paso de una etapa a otra de las mencionadas sería sin retorno, por ejemplo pasar del di- seño a la codificación implicaría un diseño exacto y sin errores ni probable modificación o evolución: «codifique lo diseñado sin errores, no habrá en absoluto variantes futuras». Esto es utópico; ya que intrínsecamente el soft- ware es de carácter evolutivo,[9] cambiante y difícilmente libre de errores, tanto durante su desarrollo como durante su vida operativa.[6] Fig. 2 - Modelo cascada puro o secuencial para el ciclo de vida del software. Algún cambio durante la ejecución de una cualquiera de las etapas en este modelo secuencial implicaría reiniciar desde el principio todo el ciclo completo, lo cual redun- daría en altos costos de tiempo y desarrollo. La Figura 2 muestra 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] por su eficacia y simplicidad, más que nada en software de pequeño y algunos de mediano porte; pero nunca (o muy rara 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 completamente predecible ni rígida; esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas, cambios o evoluciones durante el ciclo de vida. Así por ejemplo, una vez capturados y especificados los requisitos (primera etapa) se puede pasar al diseño del sistema, pero durante esta última fase lo más probable es que se deban realizar ajustes en los requisitos (aunque sean mínimos), ya sea por fallas detectadas, ambigüedades o bien por que los propios requisitos han cambiado o evolucionado; con lo cual se debe retornar a la primera o previa etapa, hacer los reajuste pertinentes y luego continuar nuevamente con el diseño; esto último se conoce como realimentación. Lo normal en el modelo cascada será entonces la aplicación del 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 la Figura 3. Fig. 3 - Modelo cascada realimentado para el ciclo de vida. Lo dicho es, a grandes rasgos, la forma y utilización de este modelo, uno de los más usados y populares.[6] El mo- delo cascada realimentado resulta muy atractivo, hasta ideal, 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 la faltante 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. Pese a todo, tiene un lugar muy importante en la Ingeniería de software y continúa siendo el más utilizado; y siempre es mejor 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 etapas tempranas del proyecto. Si los cambios se producen en etapa madura (codificación o prueba) pueden ser catastróficos para un proyecto grande. • No es frecuente que el cliente o usuario final expli- cite clara y completamente los requisitos (etapa de inicio); y el modelo lineal lo requiere. La incerti- dumbre natural en los comienzos es luego difícil de acomodar.[10] • El cliente debe tener paciencia ya que el software no estará disponible hasta muy avanzado el proyecto. Un error detectado por el cliente (en fase de opera- ción) puede ser desastroso, implicando reinicio del proyecto, con altos costos. Modelos evolutivos El software evoluciona con el tiempo.[11][9] Los requisi- tos del usuario y del producto suelen cambiar conforme
  • 10. 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 el mercado un producto absolutamente completo, por lo que se aconsejable introducir una versión funcional limitada de alguna forma para aliviar las presiones competitivas. En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que estén diseñados para acomodarse 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 se tiene demasiado en cuenta la naturaleza evolutiva del software,[11] se plantea como estático, con requisitos bien conocidos y definidos desde el inicio.[6] Los evolutivos son modelos iterativos, permiten desarro- llar versiones cada vez más completas y complejas, hasta llegar al objetivo final deseado; incluso evolucionar más allá, durante la fase de operación. Los modelos «iterativo incremental» y «espiral» (entre otros) son dos de los más conocidos y utilizados del tipo evolutivo.[10] Modelo iterativo incremental En términos generales, se puede distinguir, en la Figura 4, los pasos generales que sigue 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 sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al producto global y final. Las actividades 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 etapa de operación y mantenimiento. Cada versión emitida in- corpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios. El incremental es un modelo de tipo evolutivo que está ba- sado en varios ciclos Cascada Realimentados 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 del modelo 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 de un incremento; estos últimos se van integrando para ob- tener el producto final completo. Cada incremento es un ciclo Cascada Realimentado, aunque, por simplicidad, en la Figura 5 se muestra como secuencial puro. Fig. 5 - Modelo iterativo incremental para el ciclo de vida del software,. 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 se realiza 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» en la 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 (dos de ellos totalmente independientes pueden ser fácilmen- te iniciados al mismo tiempo si se dispone de personal suficiente); 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 sobre aquel que ya fue entregado.[6] Como se muestra en la Figura 5, se aplican secuencias Cascada en forma escalonada, mientras progresa el tiem- po calendario. Cada secuencia lineal o Cascada produ- ce un incremento y a menudo el primer incremento es un 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 aportar al plan para el desarrollo del/los siguientes incrementos (o versiones). Además también aportan a ese plan otros factores, como lo es la priorización (mayor o menor ur- gencia en la necesidad de cada incremento en particular)
  • 11. 6 CAPÍTULO 1. SOFTWARE y la dependencia entre incrementos (o independencia). Luego de cada integración se entrega un producto con mayor funcionalidad que el previo. El proceso se repite hasta alcanzar el software final completo. Siendo iterativo, con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento, y no una parte que sea usada para reajustar los requisitos (como si ocurre en el modelo de construcción de 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 lo que 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 versiones de evaluación. Nota: Puede ser considerado y útil, en cualquier momen- to o incremento incorporar temporalmente el paradigma MCP como complemento, teniendo así una mixtura de modelos que mejoran el esquema y desarrollo general. Ejemplo: Un procesador de texto que sea desarrollado bajo el paradigma Incremental podría aportar, en principio, funciones básicas de edición de archivos 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 el agregado de funciones de corrección ortográfi- ca, esquemas de paginado y plantillas; en un cuarto capacidades de dibujo propias y ecua- ciones matemáticas. Así sucesivamente hasta llegar 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 cual observa una respuesta rápida en cuanto a en- trega temprana; sin notar que la fecha límite del proyecto puede no estar acotada ni tan de- finida, lo que da margen de operación y alivia presiones al equipo de desarrollo. Como se dijo, el Iterativo Incremental es un modelo del tipo 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 pueda evolucionar.[9] Aplicable cuando los requisitos son me- dianamente bien conocidos pero no son completamente estáticos y definidos, cuestión esa que si es indispensable para poder utilizar un modelo Cascada. El modelo es aconsejable para el desarrollo de software en el cual se observe, en su etapa inicial de análisis, que posee á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 priorizar en 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 parte del cliente, pero el desarrollador debe fijarlas de todos modos y con algún criterio, ya que basándose en ellas se desarrollarán y entregarán los distintos incrementos. El hecho de que existan incrementos funcionales del soft- ware lleva inmediatamente a pensar en un esquema de desarrollo modular, por tanto este modelo facilita tal pa- radigma de diseño. En resumen, un modelo incremental lleva a pensar en un 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 con refinamientos sucesivos (ampliación o mejora). Con ca- da incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versión previamente implementada del producto software. Este modelo brinda cierta flexibilidad para que duran- te el desarrollo se incluyan cambios en los requisitos por parte del usuario, un cambio de requisitos propues- to y aprobado puede analizarse e implementarse como un nuevo incremento o, eventualmente, podrá constituir una mejora/adecuación de uno ya planeado. Aunque si se 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 factibilidad y realizar un acuerdo con el cliente, ya que puede impactar fuertemente en los costos. La selección de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para él como para el grupo de desarrollo). Se prio- rizan las entregas de aquellos módulos o incrementos en que surja la necesidad operativa de hacerlo, por ejemplo para cargas previas de información, indispensable para los incrementos siguientes.[10] El modelo iterativo incremental no obliga a especificar con precisión y detalle absolutamente todo lo que el siste- ma debe hacer, (y cómo), antes de ser construido (como el caso del cascada, con requisitos congelados). Sólo se hace en el incremento en desarrollo. Esto torna más ma- nejable el proceso y reduce el impacto en los costos. Esto es 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 durante el desarrollo. Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa funcionalidad parcial. También provee un impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas
  • 12. 1.4. PROCESO DE CREACIÓN DEL SOFTWARE 7 del software. El modelo proporciona todas las ventajas del modelo en cascada realimentado, reduciendo sus desventajas sólo al ámbito de cada incremento. El modelo incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, o de alto índice de riesgos. Modelo espiral El modelo espiral fue propuesto ini- cialmente por Barry Boehm. Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemáticos del Modelo Cascada. Proporciona potencial para desarrollo rápido de versio- nes incrementales. En el modelo Espiral el software se construye en una serie de versiones incrementales. En las primeras iteraciones la versión incremental podría ser un modelo en papel o bien un prototipo. En las últimas ite- raciones se producen versiones cada vez más completas del 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 general existen entre tres y seis regiones de tareas (hay variantes del modelo). En la Figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones. En este caso se explica una variante del modelo original de Boehm, expuesto en su 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 los recursos, tiempo y otra información relacionada con el proyecto. • Región 3 - Tareas necesarias para evaluar los riesgos té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 o cliente (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 en los ciclos anteriores. Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto, grande, me- diano o pequeño, complejo o no. Las regiones que definen esas actividades comprenden un «conjunto de tareas» del trabajo: ese conjunto sí se debe adaptar a las caracterís- ticas del proyecto en particular a emprender. Nótese que lo listado en los ítems de 1 a 6 son conjuntos de tareas, algunas de las ellas normalmente dependen del proyecto o desarrollo en si. Proyectos pequeños requieren baja cantidad de tareas y también de formalidad. En proyectos mayores o críticos cada región de tareas contiene labores de más alto nivel de formalidad. En cualquier caso se aplican actividades de protección (por ejemplo, gestión de configuración del software, 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 la Figura 6) y en el sentido indicado; el primer circuito de la espiral puede producir el desarrollo de una especificación del producto; los pasos siguientes podrían generar un prototipo y progresivamente versiones más sofisticadas del software. Cada paso por la región de planificación provoca ajustes en el plan del proyecto; el coste y planificación se reali- mentan en función de la evaluación del cliente. El gestor de proyectos debe ajustar el número de iteraciones reque- ridas para completar el desarrollo. El modelo espiral puede ir adaptándose y aplicarse a lo largo de todo el Ciclo de vida del software (en el mode- lo clásico, o cascada, el proceso termina a la entrega del software). Una visión alternativa del modelo puede observarse exa- minando el «eje de punto de entrada de proyectos». Cada uno 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 iteraciones hasta que se completa, es la zona marcada con verde. • Si lo anterior se va a desarrollar como producto real, se inicia otro proyecto: «Desarrollo de nuevo Pro-
  • 13. 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 de productos», 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, eventualmente puede estar inactiva (el proceso), pero cuando se produ- ce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo, en «mejora del pro- ducto»). El modelo espiral da un enfoque realista, que evoluciona igual 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. Mantiene el enfoque clásico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad. Este modelo requiere considerar riesgos técnicos en todas las 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 del proyecto 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 su eficacia, es un paradigma relativamente nuevo y difícil de implementar 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 con el cliente para fijar los requisitos, en que simplemente se pregunta al cliente qué necesita y él proporciona la infor- mación para continuar; pero esto es en un contexto ideal que rara vez ocurre. Normalmente cliente y desarrolla- dor entran en una negociación, se negocia coste frente a funcionalidad, 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 cliente gane obteniendo el producto que lo satisfaga, y el desa- rrollador también gane consiguiendo presupuesto y fecha de entrega realista. Evidentemente, este modelo requiere fuertes habilidades de negociación. El modelo Win-Win define un conjunto de actividades de negociación al principio de cada paso alrededor de la espiral; se definen las siguientes actividades: 1. Identificación del sistema o subsistemas clave de los directivos(*) (saber qué quieren). 2. Determinación de «condiciones de victoria» de los directivos (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 el producto, que puede ser premiado por la organización si tiene éxito o criticado si no. El modelo Win & Win hace énfasis en la negociación inicial, 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 de decisión antes de continuar el proyecto de desarrollo del software. 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 la primera fase que se realiza, y, según el modelo de proceso adoptado, puede casi terminar para pasar a la próxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de carácter evolutivo). En simple palabras y básicamente, durante esta fase, se adquieren, reúnen y especifican las características fun- cionales y no funcionales que deberá cumplir el futuro programa o sistema a desarrollar. Las bondades de las características, tanto del sistema o programa a desarrollar, como de su entorno, parámetros no funcionales y arquitectura dependen enormemente de lo 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, no es muy técnica y depende en gran medida de la habilidad y experiencia del analista que la realice. Involucra fuertemente al usuario o cliente del sistema, por tanto tiene matices muy subjetivos y es difícil de modelar con certeza o aplicar una técnica que sea «la más cerca- na a la adecuada» (de hecho no existe «la estrictamente
  • 14. 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 conjuntamente buenos criterios y mucho sentido común por parte del o los 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ón de esta etapa es lo que se conoce como especificación de requisitos software o simplemente documento ERS. Como se dijo, la habilidad del analista para interactuar con el cliente es fundamental; lo común es que el clien- te tenga un objetivo general o problema que resolver, no conoce en absoluto el área (informática), ni su jerga, ni siquiera 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, el cliente «piensa» que sabe precisamente lo que el software tiene 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 con este tipo de problemas, que incluyen relaciones humanas; tiene que saber ponerse al nivel del usuario para permitir una 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 futuro sistema, 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 acertadamente y llevar bastante tiempo relativo al proceso total del desa- rrollo; al proceso y metodologías para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingeniería de Software, pero dada la antedi- cha complejidad, actualmente se habla de una Ingeniería de 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 los que normalmente hablan de la Ingeniería de requisitos; es decir se plantea ésta como un área o disciplina pero no como 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 (tanto en requisitos funcionales como no funcionales). Por citar ejemplos probables: Algunos requisitos sobre la arquitec- tura del sistema, requisitos no funcionales tales como los relativos al rendimiento, nivel de soporte a errores ope- rativos, plataformas de desarrollo, relaciones internas o ligas 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 (u otros actores intervinientes) es un proceso humano muy interactivo 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 analista siempre debe llegar a conocer la temática y el problema que resolver, dominarlo, hasta cierto punto, hasta el ám- bito que el futuro sistema a desarrollar lo abarque. Por ello 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ón de una aseguradora y sus sucursales remotas, el analista se debe compenetrar en cómo ella trabaja y maneja su información, desde niveles muy bajos e incluso llegando hasta los gerenciales. Dada a gran diversidad de campos a cubrir, los analistas suelen ser asistidos por especialistas, es decir gente que conoce profundamente el área para la cual se desarrollará el software; evidentemente una única persona (el analista) no puede abarcar tan vasta cantidad de á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 él no tiene por qué saber nada de software, ni de diseños, ni otras cosas relacionadas; sólo se debe limitar a aportar objetivos, datos e información (de mano propia o de sus registros, equipos, empleados, etc) al analista, y guiado por él, para que, en primera instancia, defina el «Universo de Discurso», y con posterior trabajo logre confeccionar el adecuado documento ERS. Es bien conocida la presión que sufren los desarrolladores de sistemas informáticos para comprender y rescatar las necesidades de los clientes/usuarios. Cuanto más comple- jo es el contexto del problema más difícil es lograrlo, a veces 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 un conjunto de requisitos[13] erróneos o incompletos y por lo 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 etapa inicial provocará un fuerte impacto negativo en los requi- sitos, propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjui- cio cuanto más tardía sea su detección (Bell y Thayer 1976)(Davis 1993). Procesos, modelado y formas de elicitación de requi- sitos Siendo que la captura, elicitación y especificación de requisitos, es una parte crucial en el proceso de desa- rrollo de software, ya que de esta etapa depende el logro
  • 15. 10 CAPÍTULO 1. SOFTWARE de los objetivos finales previstos, se han ideado modelos y diversas metodologías de trabajo para estos fines. Tam- bién existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos. El estándar IEEE 830-1998 brinda una normalización de las «Prácticas Recomendadas para la Especificación de Requisitos Software».[14] A medida que se obtienen los requisitos, normalmente se los va analizando, el resultado de este análisis, con o sin el cliente, se plasma en un documento, conocido como ERS o Especificación de Requisitos Software, cuya es- tructura puede venir definida por varios estándares, tales como CMMI. Un primer paso para realizar el relevamiento de informa- ción es el conocimiento y definición acertada lo que se conoce como «Universo de Discurso» del problema, que se define y entiende por: Universo de Discurso (UdeD): es el contexto general en el cual el software deberá ser desarrollado y deberá ope- rar. El UdeD incluye todas las fuentes de información y todas 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 conjunto de 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 necesarias y 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 un compromiso entre los ingenieros de requisitos y los clien- tes/usuarios, ya que ambos participan en la generación y definición de los requisitos del sistema. La IR aporta un conjunto de métodos, técnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener re- quisitos lo más seguros, veraces, completos y oportunos posibles, 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ías para 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 el mismo objetivo. Sin embargo, lo que si se puede decir sin dudas es que es indispensable utilizar alguna de ellas para documentar las especificaciones del futuro producto software. 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) y Escenarios como metodología, aquí[15] se presenta una de las tantas referencias y bibliografía sobre ello. Otra for- ma, más ortodoxa, de capturar y documentar requisitos se puede obtener en detalle, por ejemplo, en el trabajo de la Universidad de Sevilla sobre «Metodología para el Aná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 seguir para realizar la captura, análisis y especificación de re- quisitos software. También allí se observa qué artefacto o documento se obtiene en cada etapa del proceso. En el diagrama 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 de Especificación de Requisitos Software es: 1. Obtener información sobre el dominio del problema y 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 la información del problema. • Definir correctamente las funciones que debe reali- zar el Software.
  • 16. 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 la informació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 son frases en lenguaje natural junto a diagramas con los servicios 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 las restricciones en detalle. Sirven como contrato. Es decir, ambos son lo mismo, pero con distinto nivel de detalle. Ejemplo de requisito de usuario: El sistema debe hacer pré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 Central debe ser capaz de atender simultá- neamente a todas las bibliotecas de la Universidad Ejemplo 2. El tiempo de respuesta a una consulta remota no debe ser superior 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íticas y 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 externos al sistema y al proceso de desarrollo (Ej. requisitos legislativos, éticos, etc.) • Requisitos del dominio. Los requisitos del dominio se derivan del dominio de la aplicación y reflejan características de dicho dominio. Pueden ser funcionales o no funcionales. Ej. El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Inter- comunicación de Bibliotecas de España (LIBE). Ej. El sistema de biblioteca no podrá acceder a bibliotecas con material censurado. Diseño del sistema En ingeniería de software, el diseño es una fase de ciclo de vida del software. Se basa en la especificación de re- quisitos producido por el análisis de los requisitos (fase de análisis), el diseño define cómo estos requisitos se cum- plirán, la estructura que debe darse al sistema de software para 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 las premisas adoptadas en el diseño. Las distinciones entre las actividades mencionadas has- ta ahora no siempre son claras cómo se quisiera en las teorías clásicas de ingeniería de software. El diseño, en particular, puede describir el funcionamiento interno de un sistema en diferentes niveles de detalle, cada una de ellos se coloca en una posición intermedia entre el análisis y codificación. Normalmente se entiende por “diseño de la arquitectura” al diseño de “muy alto nivel”, que sólo define la estructura del sistema en términos de la módulos de software de que se compone y las relaciones macroscópicas entre ellos. A este 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 especial que se utilice, el sistema operativo, DBMS, Protocolos de red, etc.
  • 17. 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 una referencia más o menos explícita al modo de descompo- sición que ofrece el particular lenguaje de programación con el que el desarrollo se va a implementar, por ejem- plo, en un diseño realizado con la tecnología de objetos, el proyecto podría describir al sistema en términos de clases y sus interrelaciones. El diseño detallado, por último, es una descripción del sistema muy cercana a la codificación (por ejemplo, des- cribir no sólo las clases en abstracto, sino también sus atributos 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. Esta tarea la realiza el programador, siguiendo por completo los 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 bastante más tiempo. Se suele hacer estimaciones de un 30% del tiempo total insumido en la programación, pero esta ci- fra no es consistente ya que depende en gran medida de las características del sistema, su criticidad y el lenguaje de programación elegido.[7] En tanto menor es el nivel del lenguaje mayor será el tiempo de programación requeri- do, así por ejemplo se tardaría más tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo pro- gramado en lenguaje C. Mientras se programa la aplicación, sistema, o software en general, se realizan también tareas de depuración, esto es la labor de ir liberando al código de los errores facti- bles de ser hallados en esta fase (de semántica, sintáctica y 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ón de algún error funcional (mala respuesta a los requisitos) eventualmente puede llevar a retornar a la fase de diseño antes de continuar la codificación. Durante la fase de programación, el código puede adoptar varios estados, dependiendo de la forma de trabajo y del lenguaje elegido, a saber: • Código fuente: es el escrito directamente por los programadores en editores de texto, lo cual genera el programa. Contiene el conjunto de instrucciones co- dificadas en algún lenguaje de alto nivel. Puede estar distribuido en paquetes, procedimientos, bibliotecas fuente, etc. • Código objeto: es el código binario o intermedio re- sultante de procesar con un compilador el código fuente. Consiste en una traducción completa y de una sola vez de éste último. El código objeto no es inteligible 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 las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequeño intérprete intermedio [a modo 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 programador trabaja con un lenguaje a modo de intérpre- te puro, en este caso el mismo intérprete se encarga de traducir y ejecutar línea por línea el 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ódigo ejecutable. Una desventaja de esta modalidad es que la ejecución del programa o sistema es un poco más lenta que si se hiciera con un in- térprete intermedio, y bastante más lenta que si 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 la modalidad intérprete puro, es que el esta for- ma de trabajo facilita enormemente la tarea de depuración del código fuente (frente a la al- ternativa de hacerlo con un compilador puro). Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programación ele- gido lo permite), es decir inicialmente trabajar a modo de intérprete puro, y una vez depurado el código fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obte- ner el código ejecutable completo, con lo cual se agiliza la depuración y la velocidad de eje- cución se optimiza.
  • 18. 1.4. PROCESO DE CREACIÓN DEL SOFTWARE 13 • Código ejecutable: Es el código binario resultado de enlazar uno o más fragmentos de código objeto con las rutinas y bibliotecas necesarias. Constituye uno o más archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la me- moria RAM (eventualmente también parte en una memoria virtual), y proceder a su ejecución directa. Por lo anterior se dice que el código ejecutable es directamente «inteligible por la computadora». El código ejecutable, también conocido como código máquina, no existe si se programa con modalidad de «intérprete puro». Pruebas (unitarias y de integración) Entre las diversas pruebas que se le efectúan al software se 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 se utilizan para asegurar el correcto funcionamiento de secciones de código, mucho más reducidas que el conjunto, y que tienen funciones concretas con cier- to grado de independencia. • Pruebas de integración: Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente; con éstas se intenta asegurar que el sistema comple- to, incluso los subsistemas que componen las piezas individuales grandes del software funcionen correc- tamente al operar e inteoperar en conjunto. Las pruebas normalmente se efectúan con los llamados datos de prueba, que es un conjunto seleccionado de da- tos típicos a los que puede verse sometido el sistema, los módulos o los bloques de código. También se escogen: Datos que llevan a condiciones límites al software a fin de 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 que el software normalmente no estará sometido pero pueden ocurrir; etc. Los «datos de prueba» no necesariamente son ficticios o «creados», pero normalmente sí lo son los de poca probabilidad de ocurrencia. Generalmente, existe un fase probatoria final y completa del software, llamada Beta Test, durante la cual el sis- tema instalado en condiciones normales de operación y trabajo es probado exhaustivamente a fin de encontrar errores, inestabilidades, respuestas erróneas, etc. que ha- yan pasado los previos controles. Estas son normalmente realizadas por personal idóneo contratado o afectado es- pecíficamente a ello. Los posibles errores encontrados se transmiten a los desarrolladores para su depuración. En el caso de software de desarrollo «a pedido», el usuario final (cliente) es el que realiza el Beta Test, teniendo para ello 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 los programas 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 el desarrollo propiamente dicho del software. Luego de ésta el 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 y copiados a lugares específicos preestablecidos del disco; incluso se crean vínculos con otros productos, además del propio sistema operativo. Este último caso, comúnmente es un proceso bastante automático que es creado y guia- do con heramientas software específicas (empaquetado y distribució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 varios y distintos computadores (instalación distribuida). También, en software de mediana y alta complejidad nor- malmente es requerido un proceso de configuración y chequeo, por el cual se asignan adecuados parámetros de funcionamiento y se testea la operatividad funcional del producto. En productos de venta masiva las instalaciones comple- tas, si son relativamente simples, suelen ser realizadas por los propios usuarios finales (tales como sistemas operati- vos, paquetes de oficina, utilitarios, etc.) con herramien- tas propias de instalación guiada; incluso la configuración suele 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 desarrollo del 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 pruebas de control y beta test. Esta fase es la última (antes de ite- rar, según el modelo empleado) que se aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento
  • 19. 14 CAPÍTULO 1. SOFTWARE es la que viene después de que el software está operativo y en producción. De un buen diseño y documentación del desarrollo de- penderá cómo será la fase de mantenimiento, tanto en costo 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 ser tanto o más costosa que desarrollar el software desde el inicio. Por ello, es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa la documentación. El período de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida.[7] Esta fase involucra también actualizaciones y evoluciones del software; no necesariamente implica que el sistema tuvo errores. Uno o más cambios en el software, por ejemplo de adaptación o evolutivos, puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial, alterando todas las demás; dependiendo de cuán profundos sean los cambios. El modelo cascada común es particularmente costoso en mantenimiento, ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones 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 de la 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 del rendimiento y eficiencia. • Evolutivos: Agregados, modificaciones, incluso eli- minaciones, necesarias en el software para cubrir su expansió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: Cambios de configuración del hardware (por actualización o mejora de componentes electrónicos), cambios en el software de base, en gestores de base de datos, en comunicaciones, etc. • Correctivos: Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado. 1.5 Carácter evolutivo del software[17] El software es el producto derivado del proceso de desa- rrollo, según la ingeniería de software. Este producto es intrínsecamente evolutivo durante su ciclo de vida. El software 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, eventualmente cumplirá con su ciclo de vida, entrará en obsolescencia e inevitablemente, tarde o temprano, será reemplazado por un producto nuevo. El software evoluciona sencillamente por que se debe adaptar 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 de los 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 la década de 1990, con Lehman y otros investigadores[18] de relevancia 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 ampliamente aplicables. Lehman y Belady analizaron el crecimiento y la evolu- ción de varios sistemas software de gran porte; derivando finalmente, 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 programa en evolución cambia, su estructura tiende a ser cada vez más compleja. Se deben dedicar recursos extras para preservar y simplificar la estrucutura. 3. Evolución prolongada del programa: La evolución de los programas es un proceso autorregulativo. Los atributos de los sistemas, tales como tamaño, tiempo entre 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 es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema. 5. Conservación de la familiaridad: Durante el tiempo de vida de un sistema, el cambio incremental en cada entrega es aproximadamente constante.
  • 20. 1.8. BIBLIOGRAFÍA 15 6. Crecimiento continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios. 7. Decremento de la calidad: La calidad de los sistemas software comenzará a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento. 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 como sistemas de realimentación para lograr una mejora significativa del producto. 1.6 Véase también • Portal:Software. Contenido relacionado con Software. • 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 (octubre 2005). Consultado el 8 de febrero de 2009. [4] Pressman, Roger S. (2003). «El producto». Ingeniería del Software, un enfoque Práctico, Quinta edición edición. Mé- xico: Mc Graw Hill. [5] IEEE Std, IEEE Software Engineering Standard: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993 [6] «Ciclo de Vida del Software». Grupo Alarcos - Escuela Superior de Informática de Ciudad Real. [7] Pressman, Roger S. (2003). «El proceso». Ingeniería del Software, 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 y Modelos 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, IEEE Computer Society. Los Alamitos, CA, 1997 (Compendio de papers y artículos en ingeniería de requisitos) [13] «III Workshop de Engenharia de Requisitos». WER 2000, Rio de Janeiro, 2000. [14] «Recommended Practice for Software Requirements Specification». IEEE-SA Standards Board. [15] «LEL y Escenarios como metodología en Ingeniería de Requisitos». Univ. de Morón, Buenos Aires. [16] «Metodología para el análisis de Requisitos de Sistemas Software». 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 de Desarrollo de Software. Pearson Addisson-Wesley. • Pressman, Roger S. (2003). Ingeniería del Software, un enfoque Práctico (Quinta edición edición). Mc Graw Hill. ISBN 84-481-3214-9.
  • 21. 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. ISBN 84-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). UML Gota a Gota. 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). Requirements Engineering: 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 Defining Needs (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 and Management». 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, LNCS 1149, 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
  • 22. 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 que también se usa libre software) es la denominación del software que respeta la libertad de todos los usuarios que adquirieron el producto y, por tanto, una vez obtenido el 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 Software Foundation, el software libre se refiere a la seguridad de los usuarios para ejecutar, copiar, distribuir y estudiar el software, e incluso modificarlo y distribuirlo modificado. Un programa informático es software libre si otorga a los usuarios todas estas libertades de manera adecuada. De lo contrario no es libre. Existen diversos esquemas de distri- bución que no son libres, y si bien podemos distinguirlos en base a cuánto les falta para llegar a ser libres, su uso bien puede ser considerado contrario a la ética en todos los casos por igual.[2] El software libre suele estar disponible gratuitamente, o al precio de coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar «software libre» a «softwa- re gratuito» (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente. 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 sentido que el software libre, a menos que se garanticen los dere- chos de modificación y redistribución de dichas versiones modificadas del programa. Tampoco debe confundirse software libre con «software de dominio público». Éste último es aquel que no requie- re de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado. Si un autor condiciona su uso bajo una licencia, por muy débil que 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 de las 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 y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era par- ticularmente habitual en algunos de los mayores grupos de usuarios de la época, como DECUS (grupo de usuarios de 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
  • 23. 18 CAPÍTULO 2. SOFTWARE LIBRE En 1971, cuando la informática todavía no había sufrido su gran auge, las personas que hacían uso de ella, en ámbi- tos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones. Con la llegada de los años 1980 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software. En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que ésta lo solucionara. Aunque el programador estuviese capaci- tado para solucionar el problema y lo desease hacer sin pedir 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 los años 1980, la cultura hacker que constituía la vida de Stallman empezó a disolverse bajo la presión de la co- mercialización en la industria del software. Los demás compañ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 por software no libre de su propiedad. Stallman contó, años después, que por aquellos años, en el laboratorio donde trabajaba, habían recibido una impresora donada por una empresa externa. El dispositivo, que era utilizado en red por 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 imprimir y al ir a buscarlos se encontraban la impresora atascada y 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 los controladores de la impresora. Pidió a la empresa propie- taria de la impresora lo que necesitaba, comentando, sin pedir nada a cambio, qué era lo que pretendía realizar. La empresa se negó a entregarle el código fuente. En ese pre- ciso instante, Stallman se vio en una encrucijada: debía elegir entre aceptar el nuevo software propietario firman- do acuerdos de no revelación y acabar desarrollando más software propietario con licencias restrictivas, que a su vez deberían ser más adelante aceptadas por sus propios colegas. Stallman renunció a su empleo, viviendo de rea- lizar programas libres y vender las copias en cintas y el día 27 de septiembre de 1983, anunció en varios grupos de noticias 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 de software libre y el concepto de "copyleft", que desarrolló para otorgar libertad a los usuarios y para restringir las posibilidades de apropiación del software.[4] 2.2 Las cuatro libertades del soft- ware libre De acuerdo con la definición establecida por Richard Stallman, un software es “libre” cuando garantiza las si- guientes libertades:[5][6][7] Ciertos teóricos usan este cuarto punto (libertad 3) para justificar parcialmente las limitaciones impuestas por la licencia GNU GPL frente a otras licencias de software libre (ver Licencias GPL). Sin embargo el sentido origi- nal es más libre, abierto y menos restrictivo que el que le otorga la propia situación de incompatibilidad, que ha si- do resuelta a cierto grado en versión 3 de la licencia GNU GPL. Tanto la Open Source Initiative[8] como la Free Software Foundation,[9] mantienen en sus webs oficiales, listados de las licencias de software libre que aprueban. El término software no libre se emplea para referirse al software distribuido bajo una licencia de software más restrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad intelectual reservan la mayoría de los derechos de modificación, duplicación, y redistribu- ción, para el dueño del copyright; el software dispuesto bajo 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ón del 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 la ambigüedad del término inglés "free"), y es habitual ver a la venta CD de software libre como distribuciones Li- nux. Sin embargo, en esta situación, el comprador del CD tiene el derecho de copiarlo y redistribuirlo. El software gratis puede incluir restricciones que no se adaptan a la definición de software libre —por ejemplo, puede no in- cluir el código fuente, puede prohibir explícitamente a los distribuidores recibir una compensación a cambio, etc—. Para evitar la confusión, algunas personas utilizan los tér- minos “libre” (software libre) y “gratis” (software gratis) para evitar la ambigüedad de la palabra inglesa “free”. Sin embargo, estos términos alternativos son usados única- mente dentro del movimiento del software libre, aunque están extendiéndose lentamente hacia el resto del mundo. Otros defienden el uso del término open source software (software de código abierto). 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.
  • 24. 2.3. TIPOS DE LICENCIAS 19 En un intento por unir los mencionados términos que se refieren a conceptos semejantes, se está extendiendo el uso de la palabra "FLOSS" con el significado de free/libre and open source software e, indirectamente, también a la comunidad 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, debido a esto, los creadores de software libre desarrollan a la vez de programas libres, formatos libres para estos programas o utilizan formatos libres ya creados anteriormente. Los formatos libres permiten a los usuarios poder traba- jar con programas libres aunque al ser libres pueden ser implementados y utilizados en cualquier programa sea cerrado o no. Algunas compañías, como Microsoft, no suelen utilizar formatos libres en sus programas, no por impedimento si no por falta de voluntad de implementar formatos abiertos en sus programas, aún así los usuarios pueden 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ácter contractual que un autor de un software da a un intere- sado para ejercer “actos de explotación legales”. Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias:[2] 2.3.1 Licencias GPL Una de las más utilizadas es la Licencia Pública General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribución y modifi- cación bajo términos diseñados para asegurarse de que todas las versiones modificadas del software permane- cen bajo los términos más restrictivos de la propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL. Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esa misma licencia. Y añade que si se reutiliza en un mismo programa código “A” licenciado bajo licencia GNU GPL y código “B” licenciado bajo otro tipo de licencia libre, el código final “C”, independientemente de la cantidad y calidad de cada uno de los códigos “A” y “B”, debe estar bajo la licencia GNU GPL. En la práctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con código licenciado bajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al ser el código resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con código gobernado por la licencia GNU GPL. En el sitio web oficial de GNU hay una lista de licencias que cumplen las condiciones impuestas por la GNU GPL y otras que no.[10] Aproximadamente el 60% del software licenciado como software 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 o AGPL) es una licencia copyleft derivada de la Licencia Pública General de GNU diseñada específicamente para asegurar la cooperación con la comunidad en el caso de software que corra en servidores de red. La Affero GPL es íntegramente una GNU GPL con una cláusula nueva que añade la obligación de distribuir el software si éste se ejecuta para ofrecer servicios a través de una red de ordenadores. La Free Software Foundation recomienda que el uso de la GNU AGPLv3 sea considerado para cualquier software que 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 de copyright ú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 absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura “verdadero” software libre, en el sentido que el usuario 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 tipo de licencia no contribuye al desarrollo de más software libre (normalmente utilizando la siguiente analogía: “una licencia 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ás libre que otro que no la permite”).
  • 25. 20 CAPÍTULO 2. SOFTWARE LIBRE 2.3.4 Licencias estilo MPL y derivadas Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que empleó Netscape Commu- nications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboración evitando el efec- to “viral” de la GPL (si usas código licenciado GPL, tu desarrollo final tiene que estar licenciado GPL). Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho código. No obstante la MPL no es tan excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft débil. La NPL (luego la MPL) fue la primera licencia nueva después de muchos años, que se encargaba de algunos puntos que no fueron tomados en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada. 2.3.5 Copyleft Símbolo del copyleft Hay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puede también realizar una versión modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, además de distribuir la versión original como soft- ware libre. Esta técnica ha sido usada como un modelo de 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 usuarios de la versión copyleft. En España, toda obra derivada está tan protegida como una original, siempre que la obra derivada parta de una autorización contractual con el autor. En el caso genérico de que el autor retire las licencias “copyleft”, no afectaría de ningún modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En términos legales, el autor no tiene derecho a retirar el permiso de una licencia en vigencia. Si así sucediera, el conflicto entre las partes se resolvería en un pleito convencional. 2.4 Comparación con el software de 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 el software libre comparten muchas de sus licencias, la Free Software Foundation opina que el movimiento del soft- ware de código abierto es filosóficamente diferente del movimiento del software libre.[12] Apareció en 1998 con un grupo de personas, entre los que cabe destacar a Eric S. Raymond y Bruce Perens, que formaron la Open Sour- ce Initiative (OSI). Ellos buscaban darle mayor relevancia a 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 Richard Stallman prefieren plantear el asunto en términos éticos empleando 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 que es free en free software. El término “código abierto” fue acuñado por Christine Peterson del instituto de investi- gación Foresight Institute, y se registró para actuar como marca registrada el término en inglés, para los productos de software libre. Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de software cuando los desarrolladores pue- den usar, modificar y redistribuir el código fuente de un
  • 26. 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 de su estándar ético. El movimiento de código abierto ve la excelencia técnica como el objetivo prioritario, siendo la compartició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 del término “Código Abierto”. Puesto que la OSI sólo aprueba las licencias que se ajustan a 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 existen importantes diferencias filosóficas entre ambos términos, especialmente en términos de las motivaciones para el desarrollo y el uso de tal software, raramente suelen tener impacto 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 a la definición de código abierto, que dan a los usuarios la libertad de mejorarlos, y los programas que simplemente tiene 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ódigo fuente disponible es de código abierto, puesto que lo pue- den manipular (un ejemplo de este tipo de software sería el popular paquete de software gratuito Graphviz, inicial- mente no libre pero que incluía el código fuente, aunque luego AT&T le cambió la licencia). Sin embargo, mucho de este software no da a sus usuarios la libertad de distri- buir sus modificaciones, restringe el uso comercial, o en general restringe los derechos de los usuarios. 2.5 Implicaciones económico- políticas Una vez que un producto de software libre ha empezado a circular, rápidamente está disponible a un costo muy bajo. Al mismo tiempo, su utilidad no decrece. El software, en general, podría ser considerado un bien de uso inagotable, tomando en cuenta que su costo marginal es pequeñísimo y que no es un bien sujeto a rivalidad (la posesión del bien por 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 libre es 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 acerca de la relación entre el software libre y el actual sistema polí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 de anarquismo 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ía del regalo, donde el valor de una persona está basado en lo que ésta da a los demás, sin que incurra valor monetario formal de por medio. • Grupos como Oekonux e Hipatia consideran que todo 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 como escribir 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, para otros 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 por la oferta de servicios adicionales al software como: la personalización y/o instalación del mismo, soporte téc- nico, donaciones, patrocinios o como un elemento de responsabilidad social corporativa;[14] en contraposición al modelo de negocio basado en licencias predominante en 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 los mayores asuntos la seguridad por oscuridad). Un método
  • 27. 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 productos involucrados. Por lo general, los usuarios de este método recomiendan 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, sea migrando total o parcialmente sus servidores y sis- temas de escritorio, sea subvencionándolo. Este es el 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 tiene cierta función de guía de la industria que la hace tener un gran impacto, que se considera que debe dirigirse a la creación de un ámbito tecnológico generador de riqueza nacional. Ésta puede crearse fomentando empresas, cuyo negocio sea en parte el desarrollo de nuevo software libre para la Administración, el mantenimiento y la adaptación del software existente.[29] En Españ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 Universidad Rey Juan Carlos (Grupo GsyC/LibreSoft) y Telefónica I+D, con el fin de analizar el estado en que se encuentra el 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 profesores usan software libre para fines didácticos y de investiga- ción. Ejemplo de ello es la Delta Metropolitana, red de supercomputadoras que están en varios puntos de la Ciu- dad de México, en el CINESTAV, el IPN, la UAM, y la UNAM la cual utiliza software libre para consolidar sus recursos, hacer investigación, y generar conocimiento. 2.8 Ventajas del Software libre en la educación Según sus impulsores, el software libre ayuda a conocer y participar de forma equitativa el proceso educativo, por lo cual parece tener beneficios en el campo educativo como los siguientes: 1. Libertad para elegir el programa que cubra de mejor manera 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 puede ser eliminado el pago en licencia de programas no libres 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: El software libre permite que los estudiantes conozcan cómo trabajan los programas y fomenta el interés, la investigación y el aprendizaje de nuevos conceptos en 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 Software Foundation ente que argumenta que el software es conocimiento y debe poderse difundir sin trabas. Su ocultación es una actitud antisocial y la posibilidad de modificar programas es una forma de libertad de expresión, aunque sin olvidar una estructura jerar- quizada por la meritocracia[31] • La motivación pragmática, defendida por la Open Source Initiative, que argumenta ventajas técnicas y económicas, con respecto a evitar una tragedia de los 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 negocio sustentables.[32]
  • 28. 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, el 08/03/2012 el Parlamento aprobó la Ley Ley 4747/12 que 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 agosto del 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 de abril 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 basado en estándares abiertos.[36][37] 2.10.4 España La Orden EDU/2341/2009, de 27 de agosto, por la que se crea el Centro Nacional de Desarrollo Curricular en Sis- temas no Propietarios, tiene como finalidad el diseño, el desarrollo y la promoción de contenidos educativos digi- tales para colectivos educativos específicos, en el ámbito de 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 en software libre. 2.10.5 Uruguay En Uruguay, a partir de 2003 (Comisión de Constitución, Códigos, Legislación General y Administración Carpeta Nº 3565 de 2003 Repartido Nº 1510 de noviembre de 2003) se estudió una “Ley de Software Libre y Forma- tos Abiertos en el Estado”. La primera versión planteaba el uso de formatos abiertos en todo el Estado y Software Libre en la educación, con una segunda versión presen- tada en el 2006, que ya planteaba dar preferencia al uso de 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 de diciembre de 2012,[39][40] la cual fue apoyada por la co- munidad de software libre uruguaya.[41] Finalmente, la ley fue aprobada en diciembre de 2013 estableciéndose en ella que:[42] 1. El Estado deberá preferir la inversión y desarrollo en 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 y argumentar 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 Internet deberá ser posible en al menos un programa con li- cencia libre. 2.10.6 Venezuela El Decreto presidencial 3390 de fecha 23 de diciembre de 2004 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án prioritariamente 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 relacionado con Software libre. • Anexo:Comparación de licencias de software libre • Arquitectura de fuente abierta • Asociación de Publicaciones Académicas de Acceso Abierto • 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
  • 29. 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). «La Definició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 for any software which will commonly be run over a network”. [12] «Open Source» (código fuente abierto) en el libreo Software libre para una sociedad libre de Stallman [13] Eben Moglen. «Anarchism Triumphant: Free Software and the Death of Copyright (Anarquismo triunfante: el software libre y la muerte de los derechos de autor)» (en inglés). [14] Modelos open source y responsabilidad social Jesús Gar- cía García & Mª Isabel Alonso de MagdalenoUniversidad de 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 desktop maintenance 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 Latest Chinese 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 Organismos Pú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 adopting Ubuntu - Ars Technica». [26] «Michoacán ahorra muchos millones con software libre - El Universal - Finanzas». [27] «El Estado Dominicano se evitaría invertir los US$600 millones en el Gobierno Electrónico :: CLAVE digital mó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). «Software Libre y Acceso Abierto: dos formas de transferencia de tecnología». Revista CTS, vol. 9, N. 26. [30] Da Rosa, Fernando; Heinz, Federico. Guía práctica sobre software libre: su selección y aplicación local en América Latina 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
  • 30. 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 de diciembre de 2013. [36] Alan Lorenzo (11 de abril de 2008). «Ecuador migra a software 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 de 2013. [38] Parlamento Uruguayo”, setiembre de 2006. [39] Proyecto de ley “Software libre y formatos abiertos en el Estado”, fuente: CESOL, Centro de Estudios de Software Libre. [40] Proyecto de ley “Software libre y formatos abiertos en el Estado”, fuente: Poder Legislativo - Cámara de Represen- tantes - Uruguay. [41] Comunicado de la comunidad sobre “Ley de Software Libre y Formatos Abiertos en el Estado”, marzo 13 de 2013. [42] Uruguay pone el ejemplo con la ley de software libre y formatos 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 con Software libre.Wikinoticias • Wikiversidad alberga proyectos de aprendizaje sobre 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 la sociedad • Guía Práctica sobre Software Libre, su selección y aplicación local en América Latina y el Caribe, una publicación de UNESCO • Centro Nacional de Referencia de Aplicación de las TIC basadas en Fuentes Abiertas • Plataforma de Comunidades Virtuales de Software Libre de Venezuela
  • 31. Capítulo 3 Código abierto open source initiative R Logotipo del código abierto. Código abierto es la expresión con la que se conoce al software 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 de software libre, tratando de usarlo como reemplazo al am- biguo nombre original en inglés del software libre (free software). 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 la acepción española de libertad. La expresión, para algunos, no resultó apropiada como reemplazo 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, puesto que se usa en la actualidad por parte de programadores que no ofrecen software libre pero, en cambio, sí ofrecen el código fuente de los programas para su revisión o mo- dificación previamente autorizada por parte de sus pares académicos. Dada la ausencia de tal ambigüedad en la lengua espa- ñola, el término software libre es adecuado para referirse a programas que se ofrecen con total libertad de modi- ficación, uso y distribución bajo la regla implícita de no modificar dichas libertades hacia el futuro. De hecho en inglé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 estrictamente literal”, el significado textual de “código abierto” es que “se puede examinar el código fuente", por lo que puede ser interpretado como un término más débil y flexible que el del software libre. Sin embargo, ambos movimientos reconocen el mismo conjunto de licencias y mantienen principios equivalentes. Sin embargo, hay que diferenciar los programas de código abierto, que dan a los usuarios la libertad de mejorarlos, de los programas que simplemente tienen el código fuente disponible, previa restricciones sobre su uso o modifica- ción. En la actualidad el código abierto se utiliza para definir un movimiento 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, y completamente equivalente desde el punto de vista prác- tico, de hecho, ambos movimientos trabajan juntos en el desarrollo 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, éste evoluciona, se desarrolla y mejora. Los usuarios lo adap- tan a sus necesidades, corrigen sus errores con un tiempo de espera menor a la aplicada en el desarrollo de software convencional o cerrado, dando como resultado la produc- ción de un mejor software. 26
  • 32. 3.3. MOVIMIENTO DEL “CÓDIGO ABIERTO” 27 3.2 Cronología • 27 de septiembre de 1983: Richard Stallman inicia el proyecto GNU. • 25 de agosto de 1991: Linus Torvalds publica un mensaje en el grupo de noticias USENET comp.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 se acuña el término “open source” y durante la semana siguiente Bruce Perens y Eric S. Raymond lanzan opensource.org. • 31 de marzo de 1998: el código de Navigator ya es- tá disponible: en unas horas, mejoras del programa invaden la red. • 7 de mayo de 1998: Corel Corporation anuncia Net- winder, un ordenador económico que corre bajo GNU/Linux. • 11 de mayo de 1998: Corel anuncia sus planes de adaptar WordPerfect y el resto de sus programas de ofimática a GNU/Linux. • 28 de mayo de 1998: Sun Microsystems y Adaptec se unen a Linux International, las primeras grandes empresas vendedoras de equipos y sistemas opera- tivos en hacerlo. • 13-17 de julio de 1998: Oracle e Informix anuncian que conectarán sus bases de datos a GNU/Linux. • 10 de agosto de 1998: Sun Microsystems ofrece Solaris a usuarios individuales e instituciones edu- cativas o sin ánimo de lucro. • 1 de noviembre de 1998: se publican los Halloween Documents: planes de Microsoft contra GNU/Linux y otros proyectos código abierto. • 16 de diciembre de 1998: IDG anuncia que la cuota de mercado del GNU/Linux se incrementó un 212% en 1998. • 1-5 de marzo de 1999: LinuxWorld Conference and Expo: 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 grandes superficies.[1] Entre 1998 y 2000 se observó un gran crecimiento en la popularidad de GNU/Linux y de la formación de muchas empresas “pro software de código abierto”. El movimien- to también capturó la atención de la principal industria del software, llevando al software de código abierto las ofertas de compañías de software consolidadas como Sun Microsystems 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 que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario, es una visión técnica. Por otro lado, el software libre tiene tendencias filosóficas e incluso morales: el software propietario, al no poder compartirse, es “antiético” dado que prohibir compartir entre seres humanos va en contra del sentido común. Al igual que el software libre, el código abierto tiene una serie de requisitos[2] necesarios para que un programa pueda 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 incluido u obtenerse libremente. • Trabajos derivados: la redistribución de modifica- ciones debe estar permitida. • Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redis- tribuidas sólo como parches. • Sin discriminación de personas o grupos: nadie pue- de dejarse fuera.
  • 33. 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: el programa no puede licenciarse solo como parte de una distribución mayor. • La licencia no debe restringir otro software: la licen- cia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto. • La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por me- dio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. Este decálogo es compatible con las cuatro libertades del software libre. 3.4 Programas en código abierto • Sistemas Operativos: los más conocidos, Ubuntu y Debian, basados en Linux. Android, de Google, para teléfonos inteligentes y tabletas. • Programas: las suites ofimáticas Open Office y Libre Office, el navegador Firefox, el cliente de correo electrónico Thunderbird, el reproductor multimedia VLC o el editor de imágenes GIMP • Antivirus: ClamWin • Los programas de Apache Software Foundation y Github. 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 se habla popularmente de cine “Open source” para referir- se a cine bajo distintos tipos de licencias libres.[3] Otro ejemplo es el proyecto de una economía de código abierto de la plataforma Open Source Ecology, comenzado con el desarrollo 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 Source Initiative » ignorado (ayuda) [3] Articulo “Open-source film” de la wiki inglesa [4] The mission of Open Source Ecology (OSE) is to create the 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 (open source) • Observatorio Nacional del Software de Fuentes Abiertas • Comunidad para la difusión del Open Source y de Gnu Linux • Varios, “Producir Software de Código Abierto: Co- mo Llevar a Buen Puerto un Proyecto de Código Libre”. O'Reilly, 2007. PDF | OpenLibra Libro gra- tuito (español).
  • 34. Capítulo 4 Proyecto GNU El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre: el sistema GNU.[1] El 27 de septiembre de 1983 se anunció públicamente el proyecto 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 de cooperación que prevaleció en los tiempos iniciales de la comunidad de usuarios de computadoras”. 4.1 Etimología GNU es un acrónimo recursivo que significa GNU No 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 el antílope africano o fonéticamente;[2] por ello, el término mayoritariamente se deletrea (G-N-U) para su mejor comprensión[cita requerida] . En sus charlas Richard Stallman finalmente 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 demostrado ser técnicamente estable. El sistema GNU fue diseñado para ser totalmente compatible con UNIX. El hecho de ser compatible con la arquitectura de UNIX implica que GNU esté compuesto de pequeñas piezas individuales de software, muchas de las cuales ya estaban disponibles, co- mo el sistema de edición de textos TeX y el sistema gráfi- co X Window, que pudieron ser adaptados y reutilizados; otros en cambio tuvieron que ser reescritos. Para asegurar que el software GNU permaneciera libre para 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 de los mismos. La idea se conoce en Inglés como copyleft (lo cual significa que el autor permite la distribución libre del mismo, en clara oposición a copyright o “derecho de autor”), y está contenida en la Licencia General Pública de 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 proyecto GNU. 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. A medida que GNU ganaba renombre, negocios interesados comenzaron a contribuir al desarrollo o comercialización de 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 mayor parte de las bibliotecas y utilidades que componen un sis- tema operativo UNIX típico. Pero faltaba un componente clave 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 un núcleo de llamadas remotas a procedimientos, desarrolla- 29
  • 35. 30 CAPÍTULO 4. PROYECTO GNU do por el MIT y cuyos autores decidieron que fuera libre- mente distribuido; TRIX era totalmente compatible con UNIX 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 equipos sumamente 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 como base el núcleo Mach desarrollado en la CMU. Inicialmen- te, el núcleo recibió el nombre de Alix (así se llamaba una novia de Stallman), pero por decisión del programador Michael Bushnell fue renombrado a Hurd. Desafortuna- damente, debido a razones técnicas y conflictos persona- les entre los programadores originales, el desarrollo de Hurd acabó estancándose. Símbolo del Copyleft En 1991, Linus Torvalds empezó a escribir el núcleo Linux 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 y consiguiendo paulatinamente que Linux llegase a ser un núcleo compatible con UNIX. En 1992, el núcleo Li- nux fue combinado con el sistema GNU, resultando en un sistema operativo libre y completamente funcional. El Sistema Operativo formado por esta combinación es usualmente conocido como "GNU/Linux" o como una "distribución Linux" y existen diversas variantes. (Véase también: Controversia por la denominación GNU/Linux) También es frecuente hallar componentes de GNU insta- lados en un sistema UNIX no libre, en lugar de los progra- mas originales para UNIX. Esto se debe a que muchos de los programas escritos por el proyecto GNU han demos- trado ser de mayor calidad que sus versiones equivalentes de UNIX. A menudo, estos componentes se conocen co- lectivamente como “herramientas GNU”. Muchos de los programas GNU han sido también transportados a otros sistemas operativos como Microsoft Windows y Mac OS X. 4.3 Programas desarrollados por GNU 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 varios lenguajes, particularmente C • GDB - depurador de aplicaciones • GNU Ghostscript - aplicaciones para PostScript y PDF[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
  • 36. 4.5. VÉASE TAMBIÉN 31 • Sistema de construcción para GNU • GNUnet - red descentralizada de comunicaciones personales, diseñada para resistir interferencias no autorizadas • 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 de datos • Hurd - un micronúcleo y un conjunto de servidores que 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 la programación en MIX • Texinfo - sistema de documentación • LilyPond - editor de partituras musicales. El proyecto GNU también ayuda con el desarrollo de otros paquetes, como: • CVS - sistema de control de versiones para código fuente • DDD - herramientas gráficas para detección y depuración de errores 4.4 Distribuciones de GNU La única variante completamente GNU es el núcleo Hurd, 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 Linux en sí no es parte de él. GNU también es utilizado con otros núcleos, como Debian GNU/kFreeBSD, Debian GNU/NetBSD, Nexenta OS o GNU-Darwin. Actualmente la versiones que la FSF recomienda, son aquellas distribuciones que traen el kernel linux-libre, las cuales son Trisquel GNU/Linux, Parabola GNU/Linux, Ututo GNU/Linux entre otras. (Para ver estas listas Visita la web GNU) 4.5 Véase también • Portal:Software libre. Contenido relacionado con 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 sobre Proyecto 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)
  • 37. Capítulo 5 Software propietario El término ha sido creado para designar al antónimo del concepto 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 un software, tiene la posibilidad de controlar y restringir los derechos del usuario sobre su programa, lo que en el soft- ware no libre implica por lo general que el usuario sólo tendrá 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 tiempo después comenzó a existir lo que se conoce como soft- ware de código cerrado. Sin embargo hay que destacar que, al inicio de la era de la informática, era común que agrupaciones científicas estuvieran dispuestas a ceder su có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 un beneficio común conocer los desarrollos ajenos en busca de la estandarización.[2] Pasado el tiempo es en 1979 cuando el gobierno de los Estados Unidos obliga a IBM a distinguir entre software y hardware que hasta entonces no se distinguían clara- mente, dando lugar a los primeros intentos de cerrar el código de los programas. Aún en esa época, se encontra- ba en revistas como Creative Computing y Byte hojas y hojas 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 "proprietary software”. En la lengua anglosajona, "proprietary" signi- fica «poseído o controlado privadamente» («privately ow- ned and controlled»), que destaca la manutención de la reserva de derechos sobre el uso, modificación o redis- tribución del software. Inicialmente utilizado, pero con el inconveniente que la acepción proviene de una traduc- ción literal del inglés, no correspondiendo su uso como adjetivo 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 sobre una cosa»,[4] por lo que no podría calificarse de “propie- tario” al software, porque éste no tiene propiedad sobre nada (es decir, no es dueño de nada) y, además, no podría serlo (porque es una cosa y no una persona). Asimismo, la expresión “software propietario” podría ser interpretada como “software sujeto a propiedad” (derechos o titulari- dad) y su opuesto, el software libre, también está sujeto al derecho de autor. Otra interpretación es que contraria- mente al uso popular del término, se puede afirmar de que “todo software es propietario”, por lo que la forma correcta de referirse al software con restricciones de uso, estudio, copia o mejora es la de software privativo, según esta 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ño del software privativo lo licencia como propiedad priva- da y el de software libre como propiedad social.[5] Con la intención de corregir el defecto de la expresión “software propietario” aparece el llamado “software con propieta- rio”, sin embargo se argumenta contra del término “con propietario” justamente su similitud con proprietary en inglés, que sólo haría referencia a un aspecto del softwa- re que no es libre, manteniendo una de las principales críticas a éste (de “software sujeto a derechos” o “propie- dad”). Adicionalmente, si “propietario” refiere al titular de 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 tiene también titulares de derechos de autor. Según la opinión de algunos activistas del Movimiento de Software Libre, el término “software propietario” fue in- troducido por empresas desarrolladoras de software pri- 32
  • 38. 5.3. VÉASE TAMBIÉN 33 vativo como campaña publicitaria para desacreditar al software libre en cuanto a la propiedad del mismo ha- ciéndola parecer como difusa y sin ninguna garantía de soporte 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 “que causa 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 que apoyan 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 "propietary software".[7] Asimismo, es frecuentemente utilizado pa- ra referirse al software que no cumple con las Directrices de software libre de Debian, las cuales siguen la misma idea básica de libertad en el software, propugnada por la FSF, y sobre las cuales está basada la definición de código abierto de la Open Source Initiative. Adicionalmente el software de código cerrado nace como antónimo de software de código abierto y por lo tanto se centra más en el aspecto de ausencia de acceso al código que en los derechos sobre el mismo. Éste se refiere sólo a la ausencia de una sola libertad por lo que su uso debe enfocarse sólo a este tipo de software y aunque siempre signifique que es un software que no es libre, no tiene que ser software de código cerrado. La expresión software privado es usada por la relación entre los conceptos de tener y ser privado. Este término serí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 que el software privativo al ser adquirido por un particular genera inmediatamente en él el siguiente dilema ético: si el poseedor del programa lo muestra a un amigo y este se lo pide prestado para copiarlo, o soy un buen cliente y entonces mal amigo -por no compartirlo con él- o soy un buen 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 del mismo 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 ser perseguido por la ley por el hecho de intentar conocer si existe tal amenaza en dicho software. Por otra parte, en una sociedad de la información,[11] el software se ha convertido en una herramienta importan- te de productividad, y una licencia de software privativo constituye un acuerdo o contrato entre dos sujetos jurídi- cos que voluntariamente acuerdan las condiciones de uso de 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 segunda edició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 segunda edició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 Richard S. Otros autores con la misma opinón sobre la moral del software [11] Ruíz de Quirol, Ricard (2007). La Sociedad de la In- formación (primera edición). UOC. ISBN 978-84-9788- 607-9.
  • 39. 34 CAPÍTULO 5. SOFTWARE PROPIETARIO 5.5 Enlaces externos • Software libre y no de acuerdo con la FSF
  • 40. 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ón podría ser constituyente de delito en algunos países. 6.1 Véase también • Software privativo 35
  • 41. 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 free software, aunque esta denominación también se confunde a veces con “libre” por la ambigüedad del término en el idioma inglés) define un tipo de software que se distribuye sin coste, disponible para su uso y por tiempo ilimitado,[1] y se trata de una variante gratuita del shareware, en la que la 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 se incluye el código fuente, pero no es lo usual. El freeware suele incluir una licencia de uso, que permite su redistribución pero con algunas restricciones, como no modificar la aplicación en sí ni venderla, y dar cuenta de su 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 concreto a la que se acoge el software. 7.1 Confusiones entre licencias y versiones Es también habitual confundir la licencia 'freeware' co- mo una licencia sin ningún tipo de restricciones. Pueden tener restricciones el uso de los mismos. Es decir, la licen- cia freeware puede permitir sólo el uso no comercial del producto (muy habitual), uso académico, uso comercial o combinación de ellos. Hay confusión entre versiones Lite (Crippleware) y free- ware, ya que ambas son gratuitas: las versiones Lite son versiones básicas de un producto más completo (de pa- go), y se ofrecen gratuitamente a modo de prueba para conocer las funcionalidades del software. La diferencia con freeware es que esta última licencia ofrece la funcio- nalidad completa del programa. La calidad del software es un factor a tener en cuenta al escoger un programa. Habitualmente y por cuestiones de disponibilidad de recursos los programas de pago son me- jores y más completos que los programas freeware. Aun así, existen muchos casos donde los productos freeware son 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
  • 42. Capítulo 8 Núcleo Linux Para el sistema operativo libre compuesto prin- cipalmente por el núcleo Linux y GNU, véase GNU/Linux. Linux es un sistema operativo libre, basado en Unix.[4] Es uno de los principales ejemplos de software libre y de código abierto.[5] Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List Archive El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computación finlandés Linus Torvalds en 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 sistema operativo.[7] El núcleo Linux ha recibido contribuciones de 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 a pesar de que ambos conceptos son distintos, en un sistema operativo monolítico ambos se componen del mismo pro- grama: se denomina núcleo a la parte que se ejecuta en modo privilegiado, y no debe tomarse en el sentido habi- tual de la palabra. Its important to realize that these programs are not part of the operating system (...). The operating system is the portion of the software that runs in kernel mode (...). A trend in modern operating systems is to take this idea of moving code up into higher layers even further and remove as much as possible from the operating system, leaving a minimal kernel (Refiriéndose a un sistema micronú- cleo basado en el modelo cliente-servidor. El autor indica repetidamente que es razonable argumentar que las funciones que pasan a ejecutarse en espacio de usuario siguen siendo parte 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 de Darwin, sistema operativo de OS X, cuyo núcleo es XNU. Por contra, no hay que confundir distribución con sistema operativo, aunque es muy habitual que se llame “sistema operativo” a lo que realmente es una distribución. De es- ta manera, Linux nunca es igual que GNU/Linux, siendo este último una distribución que contiene a Linux como sistema, junto con una serie de programas y herramientas del 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 un núcleo de sistema operativo gratuito similar a Unix que funcionara con microprocesadores Intel 80386. Luego, el 26 de agosto de 1991, Torvalds escribió en el grupo de noticias comp.os.minix:[9] “Estoy haciendo un sistema operativo (gra- tuito, sólo un hobby, no será nada grande ni profesional como GNU) para clones AT 386(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 disgustan en minix, ya que mi SO tiene algún parecido con é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 de unos meses...” Después de esto, muchas personas ayudaron con el có- digo. En septiembre de 1991 se lanzó la versión 0.01 de Linux. Tenía 10.239 líneas de código. En octubre de ese año(1991), se lanzó la versión 0.02 de Linux; luego, en diciembre se lanzó la versión 0.11(1991). Esta versión fue 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
  • 43. 38 CAPÍTULO 8. NÚCLEO LINUX anteriores de Linux se compilaban usando otros sistemas operativos. Cuando lanzó la siguiente versión, Torvalds adoptó la GPL como su propio boceto de licencia, la cual no permitía su redistribución con otra licencia que no sea GPL. Hardware Desktop Computer Workstation Home Computer Desktop replacement laptop Thin client Mobile computer Note-/ Net-/ Smartbook Tablet Smartphone PDA / Handheld game console Wearable Computer Wristwatch Virtual Retina Display Head-mounted display Embedded Computer Customer-premises equipment Measurement Equipment Laboratory Equipment Layer3-Switches other embedded systems Supercomputer Computer Cluster Mainframe computer Linux Network scheduler Network stack Netfilter Linux device drivers Linux file system drivers Linux Process Scheduler Linux Security Modules Linux kernel Human-Machine- Interface Speech recognition Attitude sensor Motion sensor Display, Sound Vibration Keyboard & Mouse also Braille, Touch-Display, Speech recognition, Graphics tablet, 3D-Mouse, Wii nunchak, etc. Touch-Display Attitude sensor, Motion sensor, Speech recognition remote (SSH, HTTP, ...) remote (SSH, HTTP, Serial, I2C, ...) Pooloffreeandopen-sourceand proprietarysoftware High-performance computing (HPC) Real-time computing (RTC) GraphicalUserInterfaces (Shells) Distributed computing Wearable UI Touch UI Desktop UI Office Image Processing Desktop Publishing (DTP) Digital Audio Workstation DJ Mixing Software Software Development Package management systems Web server solution stacks (LAMP) Routing daemons Home cinema solutions Distributed Computing CAD, CAM & CAE Software WindowingSystems Video processing software 3D computer graphics Computer animation Motion graphics Debian software archives: 37,000 software packages Video games La ubicuidad del núcleo Linux Se inició un grupo de noticias llamado alt.os.linux y el 19 de enero de 1992 se publicó en ese grupo el primer post. El 31 de marzo, 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 una versión 1.0 acabada no parecía estar lejos. Sin embargo, estas previsiones resultaron ser un poco optimistas: desde 1993 a principios de 1994, se desarrollaron 15 versiones diferentes 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 se lanzó Linux 1.2.0, que ya estaba compuesto de 310.950 líneas de código. • Mayo de 1996: Torvalds decidió adoptar al pingüino Tux 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 con 1.800.847 líneas de código. • 18 de diciembre de 1999: se publicaron parches de IBM Mainframe para 2.2.13, permitiendo de esta forma que Linux fuera usado en ordenadores cor- porativos. • 4 de enero de 2001: se lanzó Linux 2.4.0 con 3.377.902 líneas de código. • 17 de diciembre de 2003: se lanzó Linux 2.6.0 con 5.929.913 líneas de código. • 24 de diciembre de 2008: se lanzó Linux 2.6.28 con 10.195.402 líneas de código.[10] • 20 de octubre de 2010: se lanzó Linux 2.6.36 con 13.499.457 líneas de código.[11] • 30 de mayo de 2011: Linus Torvalds anunció[12] que la 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 perfil en la red social Google+ que el núcleo versión 3.0 estaba listo con la frase “3.0 Pushed Out”.[13] • 22 de julio de 2011: Fue lanzada la versión 3.0 del nú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 en http://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 sitio web 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. Los controladores 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 espacio de 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ácilmente como 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
  • 44. 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 correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico. El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella épo- ca, era considerado el más apropiado para un núcleo por muchos teóricos informáticos) fue asunto de una famosa y 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 lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carácter (/); ese mismo carácter sirve tambié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 constituyen todo el sistema. A este directorio suele llamárselo direc- torio raíz. En Linux, a los discos no se les asigna una letra como en Windows (p.e. “C:"), sino que se les asigna un directorio de la jerarquía del directorio raíz (/), como por ejemplo: "/media/floppy". Es práctica común en el siste- ma de ficheros de Linux, utilizar varias sub-jerarquías de directorios, 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 la intervenció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 del sistema; de esta forma, puede repararse el sistema sin 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 pueden compartir, 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 del sistema detectado por el núcleo en oposición a los errores similares 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, la mayoría de las alertas son el resultado de excepciones en el 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 un bug en algún lugar de la cadena de alerta. También pueden indicar un fallo en el hardware como un fallo de la RAM o errores en las funciones aritméticas en el procesador, o por un error en el software. En muchas ocasiones es posi- ble reiniciar o apagar adecuadamente el núcleo mediante una 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 la variante 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 escritas con el lenguaje ensamblador. Por el uso de sus extensio- nes al lenguaje, GCC fue durante mucho tiempo el único compilador capaz de construir correctamente Linux. Sin embargo, Intel afirmó haber modificado su compilador C de 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). Estos incluyen 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 soporta GCC como núcleo y compilador de controlador.
  • 45. 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 esa dirección. Linux es ahora de hecho, uno de los núcleos más ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una handheld) hasta un zSeries (un mainframe masivo). Está planeado que Li- nux sea el sistema operativo principal de las nuevas supercomputadoras de IBM, Blue Gene cuando su desa- rrollo se complete. De todos modos, es importante notar que los esfuerzos de Torvalds también estaban dirigidos a un tipo diferente de portabilidad. Según su punto de vista, la portabilidad es la habilidad de compilar fácilmente en un sistema apli- caciones de los orígenes más diversos; así, la popularidad original de Linux se debió en parte al poco esfuerzo ne- cesario para tener funcionando las aplicaciones favoritas de todos, ya sean GPL o de Código abierto. Las arquitecturas principales soportadas por Linux son DEC 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 arquitecturas de máquina virtual, tanto como host del sistema operati- vo o como cliente. La máquina virtual usualmente emula la familia de procesadores Intel x86, aunque en algunos casos también son emulados procesadores de PowerPC o ARM. 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 del formato 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). ELF es el formato usado de forma predeterminada por el GCC desde alrededor de la versión 2.6.0. El formato a.out ac- tualmente no es usado, convirtiendo a ELF en el formato binario utilizado por Linux en la actualidad. Linux tiene la capacidad de permitir al usuario aña- dir el manejo de otros formatos binarios. También binfmt_misc permite correr el programa asociado a un archivo 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, Linus Torvalds continua lanzando nuevas versiones del núcleo Linux. 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 de la 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 que cambia con menor frecuencia y solo lo hace cuando se 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úmeros pares indicaban la versión “estable” lanzada.
  • 46. 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, en cambio, como la serie 2.5.x, son versiones de desarrollo, es decir que no son consideradas de producción. Comenzando con la serie Linux 2.6.x, no hay gran diferencia entre los números pares o im- pares con respecto a las nuevas herramientas desarrolladas en la misma serie del núcleo. Li- nus Torvalds dictaminó que este será el modelo en 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 implementaron en 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 reflejan en el número D. • El número D se produjo cuando un grave error, que requiere de un arreglo inmediato, se encontró en el có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 la nueva política de versiones. Bug-fixes y parches de seguridad son actualmente manejados por el cuarto nú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 cambio significativo 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 rama inestable (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 y casi libre de errores, aunque tuvieran que esperar por las características de la rama 2.5. La rama 2.5 fue eventual- mente declarada estable y renombrada como 2.6. Pero en vez de abrir una rama 2.7 inestable, los desarrolladores de núcleos eligieron continuar agregando los cambios en la rama “estable” 2.6. De esta forma no había que seguir manteniendo 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 aquellos que esperaban seguridad y bug fixes sin necesitar las últi- mas características. Los arreglos solo estaban en la última versión, así que si un usuario quería una versión con to- dos los bug fixed conocidos también tendría las últimas caracterí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). El equipo estable solo lanzaba actualizaciones para el núcleo más reciente, sin embargo esto no solucionó el problema del 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 una solución para algunas personas es seguir el núcleo de una distribución. Como respuesta a la falta de un núcleo estable y de gente que coordinara la colección de corrección de errores, en diciembre de 2005 Adrian Bunk anunció que continuaría lanzando núcleos 2.6.16 aun cuando el equipo estable lan- zara 2.6.17. Además pensó en incluir actualizaciones de controladores, haciendo que el mantenimiento de la serie 2.6.16 sea muy parecido a las viejas reglas de manteni- miento para las serie estables como 2.4. El núcleo 2.6.16 será 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 la subversión de 2.6, tras durante el Linux Kernel Summit de ese año, Linus Torvalds decidió modificar el sistema de numeración, sustituyendo los dos primeros números por una única cifra, de forma que Linux 2.6.39 fue seguida por 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 las necesidades de un grupo específico de usuarios. De este modo 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
  • 47. 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 de paquetes de software. Las herramientas que suelen incluirse en la distribución de 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 todas con licencia GPL o compatibles con ésta (LGPL, MPL). Usualmente se utiliza la plataforma X.Org Server, basada en 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 que todas las copias del trabajo original y trabajos de autoría derivados del original sean publicados bajo los mismos té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, “the best thing I ever did”).[24] Sin embargo, la versión oficial del núcleo Linux contiene firmware de código cerrado[cita requerida] , por ello, el Pro- yecto Linux-libre, auspiciado por la FSFLA, publica y mantiene versiones modificadas del núcleo Linux a las que se les ha quitado todo el software no libre. 8.6 Marca A día de hoy, Linux es una marca registrada de Linus Torvalds 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. Della Croce, Jr. registró la marca Linux, pidió el pago de re- galías a los distribuidores de Linux. En 1996, Torvalds y algunas organizaciones afectadas denunciaron a Della Croce y en 1997 el caso se cerró y la marca fue asignada a 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 por el uso comercial del nombre. Esto es así porque la legis- lación estadounidense exige que el dueño de una marca la defienda, por lo que se tuvo que pedir dinero por usar la marca Linux, algunas compañías de forma totalmente voluntaria han cumplido con dicha exigencia, a sabiendas de que dicho dinero se iba a usar para caridad o defender la 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 incremento en la adopción de Linux en el escritorio ha mejorado el soporte de hardware por parte de terceros o de los pro- pios fabricantes, provocando que, en los últimos años, los problemas 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 para el hardware que fabrican. Este grupo de programadores tambié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:
  • 48. 8.9. REFERENCIAS 43 ...Linux es un sistema monolítico. Esto es retroceder un paso gigante hacia la década de 1970. Es como tomar un programa existente escrito 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 con Linux. • Portal:Software Libre. Contenido relacionado con 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 de 2012. [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. Consultado el 11 de agosto de 2011. [5] Linus Torvalds (25 de septiembre de 2006). «Re: GPLv3 Position Statement» (en inglés). Consultado el 22 de mayo de 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 de 2010. [8] Greg Kroah-Hartman (abril de 2008). «Linux Kernel De- velopment: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It» (en inglés). «Since 2005, over 3700 individual developers from over 200 different companies have contributed to the kernel.» [9] Linus Torvalds (25-08-1991) Message from discussion What 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 Pushed Out - Linus Torvalds Google Plus Profile». Consultado el 27 de julio de 2011. [14] GNU/Linux Kernel Híbrido (en español) [15] Resumen de la afamada discusión entre Linus Torvalds y Andrew 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-report The 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 de Patentes 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 septiembre de 2005. Consultado el 30 de octubre de 2011. [28] «Who writes Linux». Agosto de 2009. [29] A. S. Tanenbaum (29 de enero de 1992), «LINUX is obsolete», http://groups.google.com/group/comp. os.minix/browse_thread/thread/c25870d7a41696d2/ f447530d082cd95d?tvc=2, consultado el 30 de octubre de 2011.
  • 49. 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
  • 50. Capítulo 9 Microsoft Windows Microsoft Windows (conocido generalmente como Windows 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 con una 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 denominado Windows el 20 de noviembre de 1985 como un com- plemento para MS-DOS en respuesta al creciente interés en las interfaces gráficas de usuario (GUI).[1] Microsoft Windows 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 introducido en 1984. Las versiones más recientes de Windows son Windows 10, Windows 8.1 y Windows 8 para equipos de escritorio, Windows Server 2012 para servidores y Windows Phone 8 y 8.1 para dispositivos móviles. La primera versión en españ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 de usuario (GUI, Graphical User Interface) basada en ven- tanas. Hasta ese momento (y hasta mucho después como corazón de Windows), el sistema operativo más extendi- do era MS-DOS (Microsoft Disk Operating System), que por aquel entonces contaba con una interfaz basada en lí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 primera versió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 2011 2012 2013 2014 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 de funcionalidad y logró muy poca popularidad. Windows 1.0 no era un sistema operativo completo; más bien era una extensión gráfica de MS-DOS. Windows versión 2.0 fue lanzado en noviembre de 1987 y fue un poco más po- pular que su predecesor. Windows 2.03 (lanzado en enero de 1988) incluyó por primera vez ventanas que podían so- laparse unas a otras. El resultado de este cambio llevó a Apple a presentar una demanda contra Microsoft, debido a que infringían derechos de autor. Windows versión 3.0, lanzado en 1990, fue la primera versión de Microsoft Windows que consiguió un amplio éxito comercial, vendiendo 2 millones de copias en los primeros seis meses. Presentaba mejoras en la interfaz de usuario y en la multitarea. Recibió un lavado de cara en Windows 3.1, que se hizo disponible para el público en general el 1 de marzo de 1992. El soporte de Windows 3.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 de Windows en utilizar la Multitarea apropiativa. Windows NT más tarde sería reestructurado para funcionar tam- bién como un sistema operativo para el hogar, con Win- dows XP. 45
  • 51. 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ía grandes 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 a Windows para Workgroups y a MS-DOS. También fue el primer sistema operativo Windows que utilizó las capaci- dades Plug and Play. Los cambios que trajo Windows 95 eran revolucionarios, a diferencia de las siguientes versio- nes, como Windows 98 y Windows Me. El soporte están- dar para Windows 95 finalizó el 31 de diciembre de 2000 y el soporte ampliado para Windows 95 finalizó el 31 de diciembre de 2001. El siguiente para la línea del usuario fue lanzado el 25 de junio de 1998, Microsoft Windows 98. Sustancialmente fue criticado por su lentitud y por su falta de fiabilidad en comparación con Windows 95, pero muchos de sus problemas básicos fueron posteriormente rectificados con el lanzamiento de Windows 98 Second Edition en 1999. El soporte estándar para Windows 98 terminó el 30 de junio de 2002, y el soporte ampliado para Windows 98 terminó 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 (Windows Millennium Edition). Lanzado en septiembre de 2000, Windows Me implementaba una serie de nuevas tecnolo- gías para Microsoft: en particular fue el «Universal Plug and Play». Durante el 2004 parte del código fuente de Windows 2000 se filtró en internet, esto era malo para Microsoft porque el mismo núcleo utilizado en Windows 2000 se utilizó en Windows XP. En octubre de 2001, Microsoft lanzó Windows XP, una versión que se construyó en el kernel de Windows NT que también conserva la usabilidad orientada al consumidor de 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ón Professional. 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 y un control remoto. El soporte estándar para Windows XP terminó 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 un fuerte 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 un shell rediseñado y la interfaz de usuario da importantes cambios 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 debido a su patente inestabilidad, sobredemanda de recursos de hardware, alto costo, y muy alta incompatibilidad con sus predecesores, hecho que no ocurría con éstos. El 22 de octubre de 2009, Microsoft lanzó Windows 7. A diferencia de su predecesor, Windows Vista, que introdu- jo a un gran número de nuevas características, Windows 7 pretendía ser una actualización incremental, enfocada a la línea de Windows, con el objetivo de ser compati- ble con aplicaciones y hardware que Windows Vista no era compatible. Windows 7 tiene soporte multi-touch, un Windows 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 no está disponible en la barra de tareas, aunque la pantalla de inicio está aún activa haciendo clic en la esquina inferior izquierda de la pantalla y presionando la tecla Inicio en el teclado. Presenta un Explorador de Windows rediseñado, con la famosa interfaz ribbon de Microsoft Office. Según Microsoft han vendido 60 millones de licencias, aunque ha recibido muchas críticas por parte de los usuarios. Se conservan la gran mayoría de las características de su pre- decesor, Windows 7, con excepción de la nueva interfaz gráfica y algunos cambios menores. 9.2.1 Versiones BETA de Windows Las versiones Beta, Alpha o de pruebas, son versiones gratuitas que se crean como base para el próximo sistema operativo de Windows a lanzar. En ellas se colocan algu- nas funciones que Microsoft ha puesto por defecto y que las lanza al público para demostrarles a los usuarios de cómo podría ser la futura versión de Windows. Mientras estas versiones estén activas, los usuarios pueden reportar errores que se encuentren en el sistema operativo, (ya que no tienen soporte para actualizaciones) y si el reporte es solucionado, Microsoft le dará una cantidad de dinero al usuario que ha reportado dicho error.
  • 52. 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ó para crear Windows 94, fue nominada “Chicago”. Estos nom- bres también se suelen llamar “Codenames”. En algunas versiones de prueba (como Windows 8.1 BETA), no lle- van un respectivo codename, y por este motivo llevan el nombre 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 reciben los sistemas operativos Windows es la debilidad del sis- tema en lo que a seguridad se refiere y el alto índice de vulnerabilidades críticas. El propio Bill Gates, fundador de Microsoft, ha asegurado en repetidas ocasiones que la seguridad 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 la lentitud 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 de la vulnerabilidad hasta que se publica un parche. En algunos casos la falta de respuesta por parte de Microsoft[51][52] ha provocado que se desarrollen par- ches que arreglan problemas de seguridad hechos por terceros.[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 propietario que sin embargo parece ser uno de los responsables de la debilidad de este sistema operativo ya que, la propia seguridad por ocultación, constituye una infracción del principio de Kerckhoff, el cual afirma que la seguridad de un sistema reside en su diseño y no en una supuesta ignorancia del diseño por parte del atacante.[54] 9.3.1 Windows Defender El 6 de enero de 2005, Microsoft lanzó una versión Beta de 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 Defender era un programa diseñado para proteger contra spyware y otro software no deseado. Los usuarios de Windows XP y Windows Server 2003 que tienen copias origina- les de Microsoft Windows pueden descargar libremente el programa desde el sitio web de Microsoft y Windows Defender se suministra como parte de Windows Vista y 7. En Windows 8, Windows Defender y Microsoft Secu- rity Essentials se han combinado en un solo programa, denominado Windows Defender. Sus características y la interfaz de usuario se basan en Microsoft Security Essen- tials. Asímismo, Windows Defender se transformó en un programa antivirus y Spyware. A pesar de que está acti- vada de forma predeterminada, se puede desactivar para utilizar 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 archivos denominado AGDLP (cuentas, Global, Local, permisos) AGLP que en esencia donde se aplican los permisos de archivo a la carpeta en forma de un grupo local que luego tiene otros 'grupos globales’ como miembros. Estos gru- pos globales mantienen otros grupos o a usuarios según las diferentes versiones de Windows que utiliza. Este sis- tema varía de otros productos de proveedores tales como Linux y NetWare debido a la 'estática' asignación de per- miso se aplica directorio para el archivo o carpeta. Sin embargo con este proceso de AGLP/AGDLP/AGUDLP permite a un pequeño número de permisos estáticos para aplicarse 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 de Internet producido por Microsoft para su platafor- ma Windows. Fue creado en 1995 tras la adquisición por 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 dominante Netscape Navigator, ya que eran bastante simples y no eran compatibles con algunas de las extensiones más populares de Netscape que dominaban la web
  • 53. 48 CAPÍTULO 9. MICROSOFT WINDOWS de la época (como los marcos o JavaScript). Es el na- vegador de Internet con mayor cuota de mercado, ya que se incluye integrado por defecto con Windows, hecho que le ha costado a Microsoft demandas por monopolio 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 usuario introduce un código en la aplicación el cual en 10 minutos actualizara a una versión más avanzada de Windows, 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 con una interfaz de usuario, diseñado para servir como equipo personal de cine en casa. Está incluido en Windows XP Media Center Edition como parte de dicha versión especial del sistema operativo, ya que la aplicación no puede ser añadida a una instalación existente de windows XP. También se incluye en las ediciones superiores de Windows Vista (Vista Ho- me Premium y Vista Ultimate), Windows 7 (todas las ediciones exceptuando Starter y Home Basic) y en Windows 8 Pro. • WordPad es un procesador de textos básico que se incluye con casi todas las versiones de Microsoft Windows desde Windows 95 hacia arriba. Es más avanzado que el Bloc de notas pero más sencillo que el 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úsica y vídeo de formatos compatibles (.mp3,.mp4,.waw, wmv, etc...). La última versión de este reproductor ha sido la versión 12. Windows Media Player está incluido en todas las versiones de Windows, inclu- yendo Windows XP, Windows Vista, Windows 7 y Windows 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 Windows 3.1. Desde entonces, Paint ha acompañado al siste- ma operativo Microsoft Windows desde Windows 95. 9.5 Críticas y polémicas Microsoft fue demandado por el gobierno de Estados Unidos durante el año 1998 por competencia desleal, y especialmente por la inclusión del navegador Internet Ex- plorer en su versión Windows 95.[56] Tras esta denuncia, la pena le conllevó a Microsoft lanzar una versión de Win- dows 95 sin su navegador de Internet. En 2004 Microsoft lanzó una campaña, llamada «Get the facts», en la que mostraba cientos de empresas conocidas que migraron de GNU/Linux a Windows Server y aumentaron su productividad y otro tipo de comparativas,[57] aunque la cerró poco después, en 2007.[58] Los defensores de GNU/Linux desarrollaron su propio estudio argumentando que, en contra de uno de los reclamos de Microsoft, GNU/Linux tiene menores costos administrativos que servidores basados en Windows.[59] Otro estudio realizado por el Yankee Group afirma que la actualización desde una versión de Windows Server a otra plataforma tiene un coste inferior al de cambiar de GNU/Linux a Windows Server.[60] En 2007 Windows Vista tuvo que enfrentarse a pruebas de que su sistema ofertado funcional a partir de 512 MiB requería más de 4 GiB para serlo, ello avalado por un consultor de IBM experto en el sistema.[61] estando «so- brecargado» de objetos, los cuales hacen que los compu- tadores que actualmente están funcionando con Windows XP no soporten adecuadamente el sistema y no ofrez- can al usuario una experiencia fluida de uso, aunque «si bien 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 XP en computadores potentes».[62] Debido al fracaso de Windows Vista, en 2007 Microsoft autorizó a hacer downgrade hacia Windows XP en las versiones 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
  • 54. 9.7. REFERENCIAS 49 9.7 Referencias [1] «The Unusual History of Microsoft Windows». Consulta- do el 22 de abril de 2007. [2] «Operating System Market Share». Net Market Share. Net Applications. 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 Help Businesses Thrive in Today’s Economy». Microsoft. 11 de mayo 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- [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- [43] http://support.microsoft.com/lifecycle/?p1=16718 [44] «Bill Gates dice que la seguridad es el gran objetivo de Microsoft». 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 ordenadores del Departamento de Estado». Texto « Kriptópolis » ig- norado (ayuda) [46] «Microsoft tarda 18 meses en parchear una vulnerabilidad de 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 en Windows». 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). The Register. Consultado el 10 de enero de 2010. [50] «El agujero de seguridad que Microsoft tardó siete años en 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 en Europa». Gigle.net. 20 de febrero de 2010. Consultado el 13 de febrero de 2011. [56] «El Gobierno de EEUU y 20 estados demandan a Micro- soft por competencia desleal». El Mundo. 19 de mayo de 1998. Consultado el 13 de febrero de 2011. [57] «Get The Facts on Windows and Linux: TSTT». Microsoft (en inglés). 2005. Consultado el 2 de febrero de 2012.
  • 55. 50 CAPÍTULO 9. MICROSOFT WINDOWS [58] Foley , Mary Jo (23 de agosto de 2007). «Microsoft kills its '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 hit back at Microsoft TCO claims (en inglés). Consultado el 25 de mayo de 2008. [60] «Yankee Independently Pits Windows TCO vs. Linux TCO» (en inglés). eWeek.com. 24 de mayo de 2004. Con- sultado el 25 de mayo de 2008. [61] Thibodeau, Patrick (20 de febrero de 2007). «Buying a new PC? “Windows Vista Capable” a barely hits the mark». 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 cuales no». 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 sobre Microsoft Windows. Wikiquote • Wikimedia Commons alberga contenido multi- media sobre Microsoft Windows. Commons
  • 56. 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é nick poner, 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, Homo logos, 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. Memo Cham, 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, Kaka poop, 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,
  • 57. 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, Betoberto caballin, Jostag, Jrsheik, Misterborracho, Diostar y Anónimos: 753 • Código abierto Fuente: http://es.wikipedia.org/wiki/C%C3%B3digo_abierto?oldid=82664473 Colaboradores: 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ía H., 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, Alph Bot, 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, Mariano mario06, 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,
  • 58. 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, Sergio Andres 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, Claudio Alfredo 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, Death Master, 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, Salvador Baltazar, Jarisleif, Javierito92, Lprd2007, HUB, Rexrodo, Kikobot, Edsoncll, DragonBot, Pumk, Alberto Maria, 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 crazy 4.00, Chichan111, Santavera, Shinobilanterncorps, Patrias, GM83, PedR, Nash0h, Reglaje, Abián, MerlIwBot, Cruzacalles, Satanás va de 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 pon pon 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.png 1.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'><img alt='Question book.svg' src='//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/25px-Question_book.svg.png'
  • 59. 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 domain Colaboradores: This version created by Pumbaa, using a proper partial circle and SVG geometry features. (Former versions used to be slightly warped.) Artista original: SVG version was created by User:Grunt and cleaned up by 3247, based on the earlier PNG version, created by Reidab. • 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 States Federal “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 <aurium@gmail.com> • 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 del artí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: GPL Colaboradores: Trabajo propio Artista original: Attys • Archivo:Linux_kernel_ubiquity.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/3/3a/Linux_kernel_ubiquity.svg Licencia: CC BY-SA 3.0 Colaboradores: Esta imagen incluye elementos que han sido tomados o adaptados de esta: <a href='//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 and wordmark (Pre-XP).svg Artista 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)
  • 60. 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: Richard Stallman’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.0 Colaboradores: • 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] Artista original: Larry Ewing, Simon Budig, Anja Gerwinski • Archivo:Wikinews-logo.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/2/24/Wikinews-logo.svg Licencia: CC BY-SA 3.0 Colaboradores: 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 official Wikinews colours and appear correctly on dark backgrounds. Originally uploaded by 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: CC BY-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.svg Licencia: 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 Artista original: 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