Manifiesto del Software Libre |
|
Grupo de Usuarios de Linux de México | |
4.- Evaluación comparativa |
El sistema operativo es el componente de software que, en un sistema electrónico, administra la utilización de los recursos disponibles y provee la base sobre la cual operan los diversos servicios al usuario, desde utilerías para la administración del sistema hasta las aplicaciones más complejas.
En el ambiente operativo de una oficina, hoy en día, la realidad es la operación simultánea de diversos sistemas electrónicos en los cuales, cada uno de ellos cuenta con un sistema operativo. Es un hecho que la mezcla más importante de sistemas operativos es aquella de las computadoras personales, la mayoría de arquitectura Intel o compatibles, que operan, en términos generales, bajo sistema operativo Windows en sus distintas versiones y, en los sistemas centrales de una empresa en los cuales existe una variedad de alternativas siendo la mayor parte UNIX.
No se puede negar la existencia para ciertas aplicaciones la presencia de otros sistemas operativos como puede ser el del arquitectura Apple Macintosh el cual es muy usado en aplicaciones de diseño gráfico.
En el ámbito de negocio es importante el crear estándares para el uso interno de sistemas operativos para determinadas aplicaciones. Así mismo, es importante mantener un control de versiones de las mismas, con el objeto de incrementar la facilidad de mantenimiento de las instalaciones y garantizar un adecuado grado de compatibilidad entre sistemas internos en la empresa.
Dentro de las opciones de sistemas operativos a usar dentro del negocio contamos con las siguientes:
4.0.3.1 Sistemas Operativos Microsoft
Los sistemas operativos Microsoft desde MS-DOS hasta las diversas versiones de Windows (3.x, 95, 98, NT, ME, 2000, XP) se han convertido en un estándar de facto en los sistemas de oficina. Una gran ventaja de los sistemas operativos de Microsoft es que, gracias a la excelente mercadotecnia existente detrás de éstos productos, su base instalada es enorme y cuentan con una gran variedad de aplicaciones de todo tipo.
Los sistemas operativos de clase Windows, tienen limitaciones en cuanto a conectividad y a la adhesión a estándares se refiere. En otras palabras, son sistemas propietarios y cerrados. Si bien hay mejoras de versión a versión , el costo de propiedad y de actualización de dichas versiones es sumamente alto.
En relación a seguridad, los sistemas operativos de Microsoft se destacan por ser ineficaces, al ser sujetos a daños por muy diversas razones (virus, correos electrónicos destructivos -gusanos, troyanos, etc.-, puertas abiertas para acceso de intrusos al sistema, etc.).
El tiempo de respuesta del fabricante para corregir problemas de seguridad es históricamente malo e inclusive no se considera, en muchos de los casos, que hay una reacción adecuada y a la altura de las circunstancias cuando llega a haber respuesta, dejando a los usuarios de Windows en situaciones de alto riesgo.
Otro punto relevante en relación a los sistemas operativos Windows (especialmente en versiones para servidores) es el costo de licenciamiento por usuario cayendo así en un esquema de incremento de costos cada vez que crece la planta de trabajadores que requieren utilizar los sistemas de cómputo.
Las estaciones de trabajo o microcomputadoras personales que
serán instaladas en el contexto del presente proyecto, muchas
veces incluirán desde la fábrica alguna versión
de MS Windows con lo que, al invertir en el equipo, también se
están pagando los costos de licencias de Windows.
UNIX inició como un producto de AT&T quien a su vez, licenció la tecnología y la marca a proveedores diversos. Hoy día, la marca UNIX pertenece a una institución denominada "X/Open" y el código fuente original de UNIX es propiedad de "The Santa Cruz Operation", quien a su vez, fue recientemente adquirida por Caldera Inc., empresa integradora de una distribución de Linux, convirtiéndose, a la fecha, en efectivamente el propietario del código de UNIX.
Cualquier proveedor o fabricante de sistemas que en base a ciertas pruebas exhaustivas y pagando las licencias correspondientes, califique, puede hacer uso del nombre "UNIX".
Cada proveedor ha creado su propia versión comercial de UNIX, a saber, algunas de las mas importantes son:
Proveedor - Fabricante | Sistema Operativo | Plataforma | Procesadores |
---|---|---|---|
Hewlett-Packard | HP-UX | HP-PA | |
IBM | AIX | RS-6000 | Power PC |
Sun Microsystems | Solaris | SPARC, Intel | |
Santa Cruz Operation | SCO UNIX / Open Server | PC | Intel |
Silicon Graphics | IRIX | SGI / MIPS | |
Compaq Corporation | True64 | Alpha | |
QNX Software Systems | QNX RTOS | PC y embebidos | Intel |
Paralelamente al esfuerzo comercial de UNIX, se desarrolló un estándar universal denominado POSIX que define cómo debe ser un sistema operativo de "tipo UNIX" y que especifica una serie de normas para operación de las aplicaciones que se ejecutan en éste sistema operativo.
Cuando los sistemas operativos son "apegados a POSIX", el acto de pasar las aplicaciones entre uno y otro, se convierte en una tarea relativamente fácil lo que garantiza la escalabilidad de la aplicación a múltiples plataformas y arquitecturas.
Cabe destacar, sin embargo, que para lograr dicha portabilidad es imprescindible contar con el código fuente de las aplicaciones.
Un lado negativo de las versiones propietarias UNIX de cada proveedor señaladas en la tabla anterior, es que por lo general contienen extensiones que sólo operan en su plataforma de hardware correspondiente, dificultando así la portabilidad. Esto se dá únicamente en el caso cuando las aplicaciones hacen uso de dichas extensiones.
A su vez, muchas y cada vez mas de las extensiones de proveedores se han ido incorporando al estándar POSIX.
Dentro de las ventajas de los sistemas UNIX podemos mencionar:
Como desventaja:
El principal elemento en contra de los sistemas operativos UNIX es el costo de propiedad que puede variar según el proveedor y según la plataforma de equipo a instalar. Así mismo, el licenciamiento es generalmente por usuario cayendo así en un esquema de incrementos de costos cada vez que la empresa crece en personal y en los requerimientos de sistemas para el mismo.
Existen alternativas desarrolladas por la comunidad global de Internet de sistemas operativos tipo UNIX las cuales no están sujetos a costos de adquisición en base a plataformas o por número de usuarios mas sin embargo, contando con empresas, de escala global inclusive, que proporcionan soporte en todos aspectos a dichos sistemas.
Dentro de ésta categoría podemos mencionar a la familia *BSD (NetBSD, FreeBSD, OpenBSD) y a Linux.
La rama de *BSD se originó cuando AT&T licenció el código original de UNIX a la Universidad de Berkeley en California, EE.UU. Ingenieros de Berkeley hicieron mejoras significativas a UNIX generando su propia versión la cual fue llamada BSD (Berkeley Systems Distribution). Se creó entonces una condición divergente entre la versión original de AT&T (denominada ya en ese momento "UNIX System V") y la versión de Berkeley: BSD.
La versión comercial mas exitosa de BSD fue SunOS creada por SUN Microsystems, lo cual no es de sorprender, ya que los fundadores de esta empresa fueron partícipes del desarrollo de BSD en Berkeley. En los 1980's, AT&T, Sun Microsystems y otras empresas forjaron una alianza para tomar los mejores elementos de System V y de BSD para producir una versión nueva y mejorada de UNIX. El resultado de dicha alianza fue el producto Solaris, el actual sistema operativo de Sun Microsystems.
Actualmente, sin embargo, la rama *BSD incluyendo a Solaris tienen una gran desventaja a pesar del esfuerzo llevado a cabo: no son totalmente "POSIX compliant" lo que los hace una solución de negocios propietaria. NetBSD, FreeBSD y OpenBSD son versiones de código abierto disponibles en Internet.
Por otro lado Linux inició como el esfuerzo de un solo individuo, Linus Torvalds, quien abrió el desarrollo del sistema operativo a la comunidad internacional de individuos, empresas y científicos interesados en contribuir al proyecto.
Linux nació y creció siendo totalmente "POSIX compliant" lo que garantiza el ejecutar en una infinidad de plataformas de hardware y el operar con múltiples aplicaciones que cubran las normas POSIX.
El punto de escalabilidad y portabilidad es y ha sido de extrema importancia ya que permite que una implementación específica crezca a medida que las necesidades de la empresa se incrementan llegando al grado inclusive de cambiar de proveedores de equipo pero sin cambiar la plataforma de software.
Linux permite proveer, ademas de la conectividad POSIX y la propia de UNIX, servicios adicionales tales como:
Es un sistema de código abierto lo que permite lograr un soporte técnico inmediato vía Internet además de ser posible la total adecuación a los requerimientos específicos del proyecto.
El costo de adquisición de Linux es mínimo al ser un sistema operativo libre de restricciones de copyrights y propiedad de código. No hay licenciamientos por usuario y el nivel de soporte es muy variable siempre siendo factible el encontrar en el mercado soporte de muy alto nivel a costos muy razonables, comparativamente hablando con las soluciones propietarias.
Tabla comparativa de Sistemas Operativos:
Sistema Operativo | Conectividad | Estabilidad | Escalabilidad | Multi-usuario | Multi-plataforma | POSIX | Propietario |
---|---|---|---|---|---|---|---|
MS-DOS | No | Mala | Baja | No | No | No | Si |
Windows 95/98/ME | SMB | Regular | Baja | Inseguro | No | No | Si |
Windows NT/2000 | SMB+ | Regular | Media | Inseguro | Parcial | limitada | Si |
UNIX | Excelente | Excelente | Muy Alta | Si | Si múltiple | Si | Si |
*BSD | Buena | Excelente | Alta | Si | Si | Si | No |
Linux | Excelente | Excelente | Muy Alta | Si | Si Múltiple | Si | No |
/* NOTA DE GUNNAR WOLF: Lo siento, he estado muy ocupado a últimas fechas, y apenas ahora comento... Me da gusto que mi trabajo parezca útil, y me da más gusto que sea utilizado - ¡Me llevará a la fama y a ojos de don Chente! ;-) Sin embargo, este documento yo no lo usaría hoy como base para nada. Está ya muy desactualizado - Lo comenté ya con Sandino en un correo que traspapelé. Es un trabajo hecho hace dos años (comparando Linux 2.0.36 y NT4 hasta el Service Pack 3, si no me equivoco), y el panorama ha cambiado tremendamente. Sí, me comenta Sandino que NT sigue siendo bastante similar... Pero NT ya no se vende, hoy en día el producto equivalente es Win2000... Y *sí* hay fuertes diferencias con NT. Y claro, Linux tampoco está en los niveles de hace dos años y pico. En fin, sólo insistiendo... Si usan este documento, hay que reescribir buena parte. */
Cada archivo tiene definida la seguridad para Dueño, Grupo y Otros. Cada uno de ellos tiene permisos de lectura, escritura y ejecución (rwxrwxrwx). Sabiendo manejar este sistema, presenta una gran flexibilidad. Además de esto, tiene la característica del SUID bit, que permite que un archivo se ejecute con la identidad de un usuario determinado diferente del usuario que lo ejecuta.
A cada archivo se puede asignar varios grupos de atributos basados en usuarios o grupos, con permisos de creación, lectura, escritura, remoción, y ejecución, creando fácilmente listas de control de acceso (ACLs)
Maneja a todos los niveles del sistema un sistema verdadero de multiusuario, permitiendo nativamente que se puedan conectar simultáneamente diferentes usuarios, y manteniendo los recursos que ocupan cada uno de ellos perfectamente aislados de los procesos de otros usuarios.
No existe realmente el concepto de multiusuario, aunque han habido intentos de lograrlo, nunca han sido exitosos. Esto es, en buena parte, por una deficiente proteccion de memoria y recursos, y por utilizar un diseño de sistema operativo como servidor de archivos únicamente, no como servidor de aplicaciones.
TCP/IP fue desarrollado sobre UNIX, por tanto su implementación es la más segura y ampliamente probada. Si una operación ilegal llega a bloquear el subsistema de TCP, este típicamente se reestablece tan pronto esta operación termina.
El subsistema de TCP/IP para Windows fue creado para seguir, en la medida de lo posible, los estándares; sin embargo, en caso de haber operaciones ilegales, es muy raro que el sistema pueda continuar operando, pues casi siempre el resultado es que Windows cae en la "pantalla azul de la muerte", situación tras la cual hay que reiniciar forzosamente el sistema a mano.
Al ser Linux software libre, no pasan normalmente más de un par de horas entre que es encontrado un error y que este es corregido y la corrección publicada. Esto hace que el impacto de cualquier problema de seguridad sea mínimo. Desde 1996, cuando fue liberado el Kernel (núcleo) 2.0.0, se han liberado 39 revisiones a este. El Kernel 2.2.0 fue liberado a principios de marzo de 1999, y ya va en su decimonovena revisión. El kernel 2.4 liberado a principios del año 2001 lleva hasta la fecha (Julio del 2001) seis revisiones.
Windows está basado en el esquema de "seguridad a traves de la obscuridad": El usuario no tiene acceso al código, por tanto no le es tan fácil encontrar errores. Sin embargo, cuando estos llegan a ser encontrados no aparece un parche sino hasta meses despues, con el "service pack" correspondiente. Desde 1996, fecha en que apareció Windows NT 4.0, sólo han sido publicados 5 service packs - el último de ellos midiendo mas de 30MB. Un caso muy notorio de los problemas que puede causar la seguridad a través de la obscuridad es el que se dió a conocer el 14 de abril del 2000, tras más de dos años de existencia - En todos los servidores Windows NT con extensiones de Frontpage 98 viene una puerta trasera secreta, con la contraseña Netscape enigeers are weenies, afectando a millones de servidores en todo el mundo.
Curva de aprendizaje un tanto mas pronunciada, aunque esta tiende a suavizarse gracias a proyectos como Linuxconf, GNOME, KDE o GNUstep.
Saber utilizar Windows 95 es todo lo necesario para utilizar como usuario a Windows NT; sin embargo, para saber administrar un sistema NT hace falta conocer mucho mas, ya que las herramientas no siempre estan donde esperamos, ni reaccionan como suponemos. Poniéndolo en otras palabras, es cierto lo que dice Microsoft: Windows NT es un sistema que cualquier niño puede utilizar. Ahora bien, ¿Quiero que cualquier niño administre mi sistema a su antojo?
Filosofía UNIX para las diversas partes del sistema: Una gran cantidad de pequeñas herramientas muy especializadas y fáciles de integrar en scripts, automatizando operaciones completas fácilmente.
Filosofía Windows para las diversas partes del sistema: Pocas herramientas grandes y poderosas, hechas para resolver situaciones definidas y completas, y muy difíciles de integrar para lograr soluciones a problemas específicos.
Muchas empresas no cuentan con únicamente un servidor. Muchas veces, los cuartos de servidores son lugares aislados del personal en general, llenos de costoso equipo. Otras veces, la compañía tiene servidores dedicados a diferentes sucursales. Por estas y otras muchas causas, es comúnmente muy deseable que el o los administradores puedan realizar sus labores remotamente.
En sistemas Linux/UNIX, este punto no tiene que planearse siquiera - Todos los programas del sistema correrán sin ninguna diferencia de manera local o remota, gracias al modelo del sistema, a través de su capa de abstracción de hardware (http://www.gwolf.cx/soft/linux-nt/hardwareabstractionlayer.html).
Esto incluye tanto a programas que son ejecutados desde la línea de comandos hasta los más sofisticados programas con interfaces gráficas.
No hay mucho que decir en este aspecto tocante a Windows NT. Este sistema ha evolucionado basado en el diseño básico de la PC, en que cada computadora tiene una pantalla, un teclado y un mouse. No existe en este aspecto opción alguna más que utilizar programas cliente-servidor para la administración remota. Y si bien esto ha sido llevado a cabo para varios de los programas del sistema (por ejemplo, el Administrador de usuarios para dominios), tiene que ser implementado individualmente a cada uno de estos, proceso tedioso, ineficiente y rara vez llevado a cabo. Aunque en el último año han aparecido varios programas que permiten utilizar remotamente una computadora con Windows, como el VNC (Virtual Network Computing, software libre desarrollado por AT&T) (http://www.uk.research.att.com/vnc/), el PCAnywhere (http://www.symantec.com/pcanywhere/) o el Citrix Winframe (http://www.citrix.com/products/winframe.asp), estos dan un desempeño demasiado bajo o requieren demasiados recursos del servidor como para ser considerados prácticos.
Linux es, desde todo punto de vista posible, un sistema operativo mucho más completo que Windows NT. La comparación que se presenta a continuación lo demostrará con amplio márgen.
Se mencionan en esta los servicios más comunes, requeridos por casi cualquier empresa hoy en día, indicando únicamente los productos que son más populares para cada sistema operativo
Apache, iPlanet Web Server (software propietario), KHTTPD, micro_httpd (150 líneas de código, ideal para sistemas embebidos), tux httpd server, phhttpd (alto desempeño), Roxen WebServer, sh-httpd (escrito en sh, ideal para automatización basada en scripts), Xitami (propietario), Zeus Web Server.
Nota: KHTTPD y tux httpd server, son servidores de extremadamente alto desempeño que trabajan dentro del kernel.
IIS, Apache (software libre), iPlanet Web Server
anonftpd (sólo de lectura), ftpd-BSD (muy seguro), NcFTPd (propietario), Net::FTPServer (utilizable desde Perl), ProFTPD (extremadamente configurable), Pure FTP Server, wu-ftpd.
IIS
Bind, djbdns, pdnsd (Caché persistente respaldado en el disco duro).
DNS Manager, Bind 4 (software libre, versión muy vieja con muchos agujeros de seguridad).
Awk, C, C++, Java, Lisp, Perl, PHP, Python, Scheme, Sh, Objective C, Tcl/Tk, Basic, Pascal, Prolog, etc.
C, C++, Delphi, Perl (software libre), PHP (software libre), Java, Visual Basic.
Squid, Oops, módulo NAT del kernel.
Wingate, Microsoft proxy Server.
IBM DB2 (software propietario), Informix (software propietario), InterBase (software propietario), Lotus Domino (software propietario), mSQL, MySQL, PostgreSQL, Oracle (software propietario), Sybase (software propietario).
IBM DB2, Informix, InterBase, Lotus Domino, MySQL (software libre), MS SQL Server, PostgreSQL (software libre), Oracle, Sybase.
SMTP: Postfix, qmail, Sendmail. 37 proyectos.
IMAP: Cyrus IMAP server, UW IMAP Server. 11 proyectos.
POP: cucipop (software propietario), GNU-Pop3d, Qpopper, teapop. 22 proyectos.
Exchange Server, Imail.
Linuxconf, rshd, telnetd, sshd, VNC, X11.
VNC (software libre), PCAnywhere, Citrix Winframe.
AfterStep, fvwm, fvwm2, GNOME, KDE, Window Maker, XFce.
Windows/Explorer.
Los servidores NT tienden a caerse, ya sea por ataques externos, por errores de programa, o por causas desconocidas con una muy alta frecuencia. No es poco común encontrar, sin embargo, servidores Unix o Linux con tiempos mayores a un año sin haber sido reiniciados.
La configuración completa de un sistema Windows está normalmente localizada en un sólo archivo, conocido como Registry. Todos los programas tienen que leer y escribir en este archivo constantemente, por lo cual llega a corromperse cada cierto tiempo. Este archivo, además de esto, viene codificado de tal manera que el usuario no pueda editarlo manualmente. Por el contrario, en un sistema Linux toda la información está guardada en varios archivos de texto plano que pueden ser editados por el administrador en caso de necesitarlo. Estos archivos están siempre en un lugar específico, por lo que no es necesario buscarlos por todo el disco duro hasta dar con ellos.
En Windows y otros sistemas operativos comerciales, como ya lo hemos mencionado, la estabilidad del sistema depende de que los programadores contratados por la compañía desarrolladora encuentren los defectos y los corrijan. En la práctica, es imposible pensar que una compañía, sea cual fuere, contrate tantos programadores como los que hay involucrados en proyectos de software libre. Surge de nuevo aquí una de las máximas del movimiento de software libre: Con suficientes ojos, todos los defectos se vuelven obvios.
Consta de muchos componentes pequeños que interoperan entre si y que tienen como objetivo realizar una sola funcion bien hecha, por tanto dichos componentes son remplazables y afectan muy poco a la estabilidad y consistencia general del sistema.
Consta de pocos programas grandes y complejos que realizan muchas tareas, cuando estos programas llegan a fallar, la estabilidad y consistencia general del sistema se ve muy afectada.