% Linux Installation and Getting Started    -*- TeX -*-
% design.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".

% Traduccion realizada por Juan Jose Amor. Envie sus comentarios a:
%            Juan Jose Amor, 2:341/12.19 (FidoNet)
%            jjamor@gedeon.ls.fi.upm.es (InterNet)
%
% $Log: design.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:10  rcamus
% Primera beta publica
%
%

\section{Dise\~no y filosof\'{\i}a de Linux}
\namedlabel{sec-intro-design}{Dise\~no y filosof\'{\i}a de Linux}

\index{Linux!filosof\'{\i}a|(}
En ocasiones, los nuevos usuarios de Linux se crean falsas
expectativas acerca de \'este. Linux es un sistema operativo \'unico, y es
importante entender su filosof\'{\i}a y dise\~no para usarlo
eficientemente. Aunque usted sea un experimentado ``gur\'u'' del UNIX,
lo que viene a continuaci\'on le interesar\'a con total seguridad.

\index{UNIX!commercial}
En versiones comerciales de UNIX, el sistema es desarrollado siguiendo
una rigurosa pol\'{\i}tica de mantenimiento de la calidad, con sistemas de
control de revisiones para las fuentes y documentaci\'on, etc. Los
desarrolladores no pueden a\~nadir cosas nuevas por su cuenta: cualquier
cambio ser\'a en respuesta a un informe de {\it bug} detectado, y ser\'a
cuidadosamente registrado en el sistema de control de versiones, de
manera que podr\'a volverse atr\'as sin problemas. Cada desarrollador
tiene asignada una o m\'as partes del c\'odigo, y solo ese desarrollador
puede alterar esas secciones del c\'odigo.

Internamente, el departamento de calidad realiza conjuntos de tests
para cada versi\'on del sistema operativo, e informa de los errores. Es
responsabilidad de los desarrolladores corregir esos errores. Se
utiliza un complicado sistema de an\'alisis estad\'{\i}stico para asegurarse
de que cierto porcentaje de los errores son corregidos antes de la
pr\'oxima versi\'on.

Como vemos, el proceso seguido por los desarrolladores de UNIX comercial
para mantenerlo y darle soporte es muy complicado, pero razonable. La
compa\~n\'{\i}a debe tener cierta seguridad de que la pr\'oxima revisi\'on del
sistema ya est\'a lista para ser comercializada, a trav\'es de las pruebas
que hemos comentado. Esto supone un gran trabajo que involucra a
cientos (si no miles) de programadores, {\it betatesters}, redactores
de documentaci\'on y personal administrativo. Por supuesto, no todos los
fabricantes de UNIX trabajan as\'{\i}, pero esto da una idea de la
panor\'amica habitual.

Con Linux, hay que olvidarse del concepto de desarrollo organizado,
sistemas de control de versiones, informaci\'on de errores estructurada
o an\'alisis estad\'{\i}sticos. Linux es un sistema operativo hecho por
``{\it hackers}''\footnote{Por ``hacker'' queremos referirnos a
programadores fervientemente dedicados, por {\it hobby}, a explotar
sus ordenadores al m\'aximo, con resultados \'utiles para otras
personas. Este concepto es contrario al habitualmente aceptado, que
dice que un ``hacker'' es un pirata inform\'atico.}

Linux ha sido desarrollado principalmente por un grupo de
programadores de todo el mundo unidos por Internet. A trav\'es de
Internet, cualquiera tiene la oportunidad de unirse al grupo y ayudar
al desarrollo y depuraci\'on del n\'ucleo, portar nuevo software, escribir
documentaci\'on o ayudar a los nuevos usuarios. La comunidad de Linux se
comunica principalmente mediante diversas listas de correo y grupos de
USENET. Existen algunos acuerdos en el desarrollo, como que cualquiera
que desee que su c\'odigo sea incluido en la versi\'on ``oficial'' del
n\'ucleo deber\'a ponerse en contacto con Linus Torvalds,
\index{Torvalds, Linus}
quien comprobar\'a el c\'odigo y lo incluir\'a en el n\'ucleo. Por lo general,
estar\'a encantado en hacerlo, siempre que no estropee otras cosas.

\index{Linux!desarrollo}

El sistema se ha dise\~nado siguiendo una filosof\'{\i}a abierta y de
crecimiento. Por regla general hay una nueva versi\'on del n\'ucleo cada dos
meses (a veces cada menos tiempo)\NT{Actualmente nos consta la aparici\'on
semanal de al menos una revisi\'on de las versiones {\it experimentales}.}
Esto depende del n\'umero de errores a corregir, la cantidad de
informaci\'on recibida de los usuarios, y lo que haya dormido Linus esta semana.

\index{bugs}
\index{Linux!bugs}
Por lo tanto, es dif\'{\i}cil decir que todos los errores hayan sido
corregidos en cierta fecha. Pero conforme el sistema va apareciendo
libre de errores cr\'{\i}ticos o manifiestos, se considera ``estable'' y se
lanzan nuevas revisiones. Hay que recordar que no se pretende realizar
un sistema perfecto, sin errores. Simplemente, se pretende desarrollar
una implementaci\'on gratuita de UNIX. Linux est\'a hecho {\em para\/}
desarrolladores, m\'as que para otro tipo de personas. 

Si alguien desarrolla una aplicaci\'on o nueva caracter\'{\i}stica para el
n\'ucleo, se a\~nade inicialmente en una etapa ``alfa'',
\index{alpha}
\index{desarrollo!alpha}
es decir, pensada ser probada por usuarios atrevidos que aceptan los
fallos que tenga. Dado que la comunidad de Linux se basa sobre todo en
Internet, el software ``alfa'' es enviado, normalmente, a servidores
FTP dedicados a Linux (vea el ap\'endice~\ref{app-ftplist-num}) y
anunciado mediante un mensaje puesto en un grupo USENET dedicado a
Linux. Los usuarios que se llevan el software lo prueban e informan
sobre errores o sugerencias al autor por correo electr\'onico.

Una vez que se corrigen los problemas iniciales, el c\'odigo pasa a una
etapa ``beta'',
\index{beta}
\index{desarrollo!beta}
en la que se considera estable pero incompleto (o sea, funciona, pero
no incluye todas las funcionalidades previstas). Tambi\'en se puede
pasar a una etapa ``final'' en la que el software se considera
terminado. Para el c\'odigo del n\'ucleo, una vez que se ha terminado, el
desarrollador puede pedir a Linus que lo incluya en el n\'ucleo
est\'andar, o bien que lo ponga como c\'odigo optativo.

Recordar que lo anterior son solo convenciones, y no leyes.
\index{desarrollo!convenciones}
Algunos programas pueden no necesitar fases ``alpha''. Es el
desarrollador quien tomar\'a las decisiones al respecto.

Estar\'a sorprendido de que un grupo de programadores y aficionados
voluntarios, relativamente desorganizados, hayan podido hacer
algo. Sin embargo, este grupo constituye uno de los m\'as eficientes y
motivados. Todo el n\'ucleo de Linux ha sido escrito {\em de la nada},
sin emplear ning\'un c\'odigo de fuentes propietarias. Todo el software,
librer\'{\i}as, sistemas de ficheros y drivers han sido desarrollados o
portados desde otros sistemas; y se han programado drivers para
los dispositivos m\'as populares.

Normalmente, Linux es distribuido junto con otro software en lo que se
conoce como {\em distribuci\'on},
\index{distribuciones}
\index{Linux!distribuciones}
que es un paquete de software que permite poner a punto un sistema
completo. Dado que es dif\'{\i}cil para los usuarios noveles el crear un
sistema UNIX partiendo del n\'ucleo y programas de diversas fuentes, se
crearon las distribuciones con el fin de facilitar esta tarea: con la
distribuci\'on, usted solo tiene que coger el CD-ROM o los disquetes e
instalar para tener un sistema completo con programas de aplicaci\'on
incluidos. Como es de esperar, no hay ninguna distribuci\'on
``est\'andar''. Hay muchas, cada una con sus ventajas y
desventajas. Hablaremos m\'as sobre distribuciones en la
secci\'on~\ref{sec-install-distributions}.

A pesar de lo anterior, necesitar\'a cierto conocimiento de UNIX para
poder instalar y usar un sistema completo. No hay distribuci\'on que no
tenga fallos, por lo que requerir\'a de su habilidad al teclado para
corregir los peque\~nos problemas que se presenten. Ejecutar un sistema
UNIX no es f\'acil, ni siquiera en las versiones comerciales. Hay que
andarse con cuidado en cualquier UNIX, y Linux no es una excepci\'on.

\subsection{Consejos para novatos en UNIX}

Instalar y utilizar su propio sistema Linux no requiere grandes
conocimientos de UNIX. De hecho, muchos novatos de UNIX instalan con
\'exito sus sistemas. Es una experiencia de la que se aprende, pero de
la que se pueden generar fustraciones. Si tiene suerte, podr\'a instalar
y usar Linux sin conocimiento alguno de UNIX. Sin embargo, cuando
quiera introducirse en tareas m\'as complejas (instalar nuevo software,
recompilar el n\'ucleo, etc.) el conocimiento de UNIX empieza a ser
necesario.

Por suerte, ejecutando su propio sistema Linux podr\'a aprender las cosas
esenciales de UNIX para llevar a cabo esas tareas. Este libro contiene
informaci\'on que intentar\'a ayudarle (vea el
cap\'{\i}tulo~\ref{chap-tutorial-num}, que es un tutorial sobre UNIX; y el
cap\'{\i}tulo~\ref{chap-sysadm-num}, que le ense\~nar\'a cosas sobre la
administraci\'on de Linux). Quiz\'as le parezca interesante leer esos
cap\'{\i}tulos antes de instalar Linux. En este caso, se ahorrar\'a algunos problemas.

Nadie puede esperar hacerse experto administrador de la noche a la ma\~nana.
No hay implementaci\'on alguna que est\'e libre de mantenimiento. Por lo
tanto, prep\'arese si es novato, pero no se desespere ante los problemas. El
que escribe esto\NT{al igual que el que lo traduce} tampoco ten\'{\i}a mucha
idea antes de empezar.

\subsection{Consejos para los {\it gur\'us}}

La gente con a\~nos de experiencia programando y administrando sistemas
UNIX tambi\'en puede necesitar ayuda al querer instalar Linux. Existen
aspectos con los que los magos del UNIX tendr\'an que familiarizarse
antes de entrar en materia. Por un lado, Linux no es un sistema UNIX
comercial. No intenta seguir exactamente el mismo est\'andar de otros
sistemas. En otras palabras, este factor no es el {\em \'unico} factor
que interesa en el desarrollo de Linux.

Es m\'as importante, sin embargo, su funcionalidad.
\index{functionalidad}
En muchos casos, el nuevo c\'odigo introducido en el n\'ucleo aun tendr\'a
errores o estar\'a incompleto. Se acepta que es m\'as importante lanzar el
c\'odigo cuanto antes para que los usuarios lo puedan probar. Por
ejemplo, el emulador WINE (emulador de Microsoft Windows para Linux)
tiene una versi\'on alfa ``oficial'' mientras la prueban los
usuarios. En este sentido, la comunidad de Linux tiene derecho a
trabajar con este c\'odigo, probarlo y ayudar a su desarrollo. Los UNIX
comerciales, raramente siguen esta pol\'{\i}tica.

\index{UNIX!comercial}
Si ha sido administrador de UNIX durante m\'as de diez a\~nos, y ha usado
diferentes sistemas comerciales, ver\'a que este sistema es muy moderno
y din\'amico. Se crea un nuevo n\'ucleo cada dos meses aproximadamente. Se
lanza nuevo software permanentemente. Un d\'{\i}a puede creer que su
sistema est\'a a la \'ultima, y al d\'{\i}a siguiente creer que est\'a en la Edad
de Piedra.

Con toda esta actividad din\'amica, ?`c\'omo puede mantenerse al d\'{\i}a?
\index{actualizaciones}
La mayor parte de las veces, es mejor actualizarse el software de
manera incremental; o sea, actualizar aquellas partes del sistema que
{\em necesita} actualizar. Por ejemplo, si nunca va a usar Emacs, no
hay motivo para que se actualice continuamente ese programa. Incluso
siendo usuario de Emacs, no hay necesidad de actualizarlo cada vez, a
menos que haya alguna caracter\'{\i}stica nueva que le interese. No hay
raz\'on para estar siempre cambi\'andose las versiones del software.

Esperamos que Linux satisfaga sus expectativas de un sistema UNIX. El
coraz\'on de Linux alberga el esp\'{\i}ritu del software gratuito y el
desarrollo constante. La comunidad de Linux favorece su expansi\'on, y
es dif\'{\i}cil creer en su fiabilidad, especialmente cuando se procede del
UNIX comercial. Tampoco puede esperarse que Linux sea perfecto, ya que
no lo es ning\'un otro software. Sin embargo, creemos que Linux es tan
\'util y completo como cualquier otra implementaci\'on de UNIX.

\index{Linux!filosof\'{\i}a|)}
