martes, 1 de diciembre de 2009

Hardware

REPÙBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL P.P PAR A LA DEFENSA

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITECNICA DE LA FUERZA ARMADA NCIONAL BOLIVARIANA (UNEFA)

SAN FELIPE, EDO – YARACUY.

 

 

 

                                                                                    

                                                                                     

 

                                                                        EDUCACIÒN INTEGRAL

                                                                     SECCION#2 SEMESTRE#4

PROFESOR: TANINO FERRI.

HERRAMIENTAS TECNOLOGICAS.

 

 

 

 

 

          SAN FELIPE, DICIEMBRE DEL 2009.

Hardware.

Corresponde a todas las partes físicas y tangible de una computadora: sus componentes eléctricos, electrónicos, electromecánicos y mecánicos; sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente al soporte lógico e intangible que es llamado software. El término proviene del inglés[3] y es definido por la RAE como el "Conjunto de los componentes que integran la parte material de una computadora".[4] Sin embargo, el término, aunque es lo más común, no necesariamente se aplica a una computadora tal como se la conoce, así por ejemplo, un robot también posee hardware (y software).

La historia del hardware del computador se puede clasificar en tres generaciones, cada una caracterizada por un cambio tecnológico de importancia. Este hardware se puede clasificar en: básico, el estrictamente necesario para el funcionamiento normal del equipo, y el complementario, el que realiza funciones específicas.

Un sistema informático se compone de una CPU, encargada de procesar los datos, uno o varios periféricos de entrada, los que permiten el ingreso de la información y uno o varios periféricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a los datos.

Historia del hardware.

La clasificación evolutiva del hardware del computador electrónico, está dividida en generaciones, donde cada una supone un cambio tecnológico muy notable. El origen de las primeras es sencillo de establecer, ya que en ellas el hardware fue sufriendo cambios radicales. Los componentes esenciales que constituyen la electrónica del computador fueron totalmente reemplazados en las primeras tres generaciones, originando cambios que resultaron trascendentales. En las últimas décadas es más difícil establecer las nuevas generaciones, ya que los cambios han sido graduales y existe cierta continuidad en las tecnologías usadas. En principio, se pueden distinguir:

·        1ª Generación (1945-1956): Electrónica implementada con tubos de vacío. Fueron las primeras máquinas que desplazaron los componentes electromecánicos (relés).

·        2ª Generación (1957-1963): Electrónica desarrollada con transistores. La lógica discreta era muy parecida a la anterior, pero la implementación resultó mucho más pequeña, reduciendo, entre otros factores, el tamaño de un computador en notable escala.

·        3ª Generación (1964-hoy): Electrónica basada en circuitos Integrados . Esta tecnología permitió integrar cientos de transistores y otros componentes electrónicos en un único circuito integrado conformando una pastilla de silicio. Las computadoras redujeron así considerablemente su costo y tamaño, incrementándose su capacidad, velocidad y fiabilidad, hasta producir máquinas como las que existen en la actualidad.

·        4ª Generación (futuro): Probablemente se originará cuando los circuitos de silicio, integrados a alta escala, sean reemplazados por un nuevo tipo de tecnología. [8]

La aparición del microprocesador marca un hito de relevancia, y para muchos autores constituye el inicio de la cuarta generación.[9] A diferencia de los cambios tecnológicos anteriores, su invención no supuso la desaparición radical de los computadores que no lo utilizaban. Así, aunque el microprocesador 4004 fue lanzado al mercado en 1971, todavía a comienzo de los 80's había computadores, como el PDP-11/44,[10] con lógica carente de microprocesador que continuaban exitosamente en el mercado; es decir, en este caso el desplazamiento ha sido muy gradual.

Otro hito tecnológico usado con frecuencia para definir el inicio de la cuarta generación es la aparición de los circuitos integrados VLSI (Very Large Scale Integration), a principios de los ochenta. Al igual que el microprocesador no supuso el cambio inmediato y la rápida desaparición de los computadores basados en circuitos integrados en más bajas escalas de integración. Muchos equipos implementados con tecnologías VLSI y MSI (Medium Scale Integration) aun coexistían exitosamente hasta bien entrados los 90.

Tipos de hardware.

 

Microcontrolador Motorola 68HC11 y chips de soporte que podrían constituir el hardware de un equipo electrónico industrial.

Una de las formas de clasificar el Hardware es en dos categorías: por un lado, el "básico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mínima a una computadora, y por otro lado, el "Hardware complementario", que, como su nombre indica, es el utilizado para realizar funciones específicas (más allá de las básicas), no estrictamente necesarias para el funcionamiento de la computadora.

Así es que: Un medio de entrada de datos, la unidad de procesamiento y memoria y un medio de salida de datos constituye el "hardware básico".

Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicación: desde un punto de vista de un usuario común, se debería disponer, al menos, de un teclado y un monitor para entrada y salida de información, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor, bien puede ingresar información y sacar sus datos procesados, por ejemplo, a través de una placa de adquisición/salida de datos.

Las computadoras son aparatos electrónicos capaces de interpretar y ejecutar instrucciones programadas y almacenadas en su memoria, ellas consisten básicamente en operaciones aritmético-lógicas y de entrada/salida.[11] Se reciben las entradas (datos), se las procesa y almacena (procesamiento), y finalmente se producen las salidas (resultados del procesamiento). Por ende todo sistema informático tiene, al menos, componentes y dispositivos hardware dedicados a alguna de las funciones antedichas;[12] a saber:

1.    Procesamiento: Unidad Central de Proceso o CPU

2.    Almacenamiento: Memorias

3.    Entrada: Periféricos de Entrada (E)

4.    Salida: Periféricos de salida (S)

5.    Entrada/Salida: Periféricos mixtos (E/S)

Desde un punto de vista básico y general, un dispositivo de entrada es el que provee el medio para permitir el ingreso de información, datos y programas (lectura); un dispositivo de salida brinda el medio para registrar la información y datos de salida (escritura); la memoria otorga la capacidad de almacenamiento, temporal o permanente (almacenamiento); y la CPU provee la capacidad de cálculo y procesamiento de la información ingresada (transformación).[13]

Un periférico mixto es aquél que puede cumplir funciones tanto de entrada como de salida, el ejemplo más típico es el disco rígido (ya que en él se lee y se graba información y datos). Definición y clasificación [editar]

 

Para la gran mayoría es extraño el termino del inglés "hardware", que no es más que un término general que se utiliza para describir los artefactos físicos de una tecnología. En este sentido, el hardware puede ser equipo militar importante, equipo electrónico, o equipo informático. En informática, se denomina hardware o soporte físico al conjunto de elementos materiales que componen un computador. Hardware también son los componentes físicos de una computadora tales como el disco duro, la unidad de disco óptico, la disquetera, etc. El hardware se refiere a lo que es tangible (que se puede tocar), es decir todos los componentes físicos de la computadora.

El software libre ofrece al usuario cuatro libertades: libertad de uso, de estudio y modificación, de distribución, y de redistribución de las versiones modificadas. Existen licencias que las garantizan y que dan una cobertura legal, como por ejemplo la licencia GNU GPL. El hardware libre toma estas mismas ideas del software libre para aplicarlas en su campo.

Es una propuesta casi tan antigua como la del software libre, sin embargo su empleo no es tan directo. Compartir diseños de hardware es más complicado. No hay una definición exacta (se pueden encontrar referencias a distintos artículos). Incluso el propio Richard Stallman afirma que las ideas del software libre se pueden aplicar a los ficheros necesarios para su diseño y especificación (esquemas, PCB, etc), pero no al circuito físico en sí. Al no existir una definición clara de hardware libre, cada autor lo interpreta a su manera. Se han creado licencias, algunas de las cuales están todavía en desarrollo. Dependiendo del enfoque, podemos establecer dos clasificaciones: la primera teniendo en cuenta cómo es su naturaleza (estático o reconfigurable) y la otra en función de su filosofía.

Según su naturaleza.

Dada su diferente naturaleza, al hablar de hardware abierto o libre hay que especificar de qué tipo de hardware se está hablando. A continuación se describen cada uno de los diferentes hardware según su naturaleza:

Hardware reconfigurable: Es aquél que viene descrito mediante un lenguaje de descripción de hardware. Su naturaleza es completamente diferente a la del hardware estático. Se desarrolla de una manera muy similar a como se hace con el software. Ahora nuestros diseños son ficheros de texto, que contienen el código fuente. Se les puede aplicar directamente una licencia libre, como la GPL. Los problemas no surgen por la definición de qué es libre o qué debe cumplir para serlo, sino que aparecen con las herramientas de desarrollo necesarias. Para hacer que el hardware reconfigurable sea libre, sólo hay que aplicar la licencia GPL a su código. Sin embargo, aún no está claro qué es lo que se entiende por hardware libre al referirse al hardware estático.

Hardware estático: Es el conjunto de elementos materiales de los sistemas electrónicos. Tiene una existencia física (se puede "tocar"). Esta propiedad no la tiene el software, por lo que surgen una serie de problemas que se describen en el apartado "Desventajas".

Según su filosofía.

Al no existir una definición clara de hardware libre, cada autor lo interpreta a su manera. Muchos de los argumentos acerca del free hardware design provienen de la gente que habla en las comunidades de software y hardware. Una causa de esto es el simple hecho de que la palabra "software" refiere tanto al código fuente como a los ejecutables, mientras que las palabras "hardware" y "diseño de hardware" se refieren claramente a dos cosas distintas. Usar la palabra "hardware" como taquigrafía para el diseño y el objeto físico es una receta para la confusión. Los términos siguientes se han utilizado en discusiones de este asunto.

Free hardware design: Se refiere a un diseño que pueda ser copiado, distribuido, modificado, y fabricado libremente. No implica que el diseño no puede también ser vendido, o que cualquier puesta en práctica de hardware del diseño estará libre de coste. Todas las mismas discusiones sobre el significado de la "libertad" entre los partidarios de la Free Software Foundation, y los partidarios del estilo BSD que licencian el software, desafortunadamente las trasladan a los diseños del hardware.

Libre hardware design: Se refiere a la misma clase del diseño free hardware design, pero intenta hacer la aclaratoria que la palabra libre, se refiere a la libertad, no al precio. El término suena fuera de contexto a muchos oídos ingleses, pero resulta natural para los franceses. Sus traducciones son naturales para hablantes de otros idiomas, quienes no utilizan una palabra para dar diferentes significados; como por ejemplo: en inglés "free beer" cerveza libre y "free speech" libertad de expresión.

Open source hardware: Se refiere al hardware para el cual toda la información del diseño se pone a disposición del público en general. Open source hardware se puede basar en un free hardware design, o el diseño en el cual se basa puede ser restringido de alguna manera.

Open Hardware: Es una marca registrada del Open Hardware Specification Program. Es una forma limitada de open source hardware, para la cual el requisito es que:

"La suficiente documentación del dispositivo debe estar disponible para que un programador competente pueda escribir un controlador del dispositivo. La documentación debe cubrir todas las características de la interfaz del dispositivo - controlador que se espera que cualquier usuario emplee. Esto incluye funciones de entrada-salida, de control y funciones auxiliares como medidas de funcionamiento o diagnósticos de autoprueba. Los detalles de soporte de firmware on-board y de la puesta en práctica de hardware no necesitan ser divulgados excepto cuando son necesarios para permitir programar un controlador para el dispositivo". Es decir, solamente una cantidad de información limitada sobre el diseño necesita estar disponible; posiblemente no mucha, por ejemplo, para hacer una reparación.

Free hardware: Es un término usado de vez en cuando como sinónimo para el open source hardware. Es un término que busca ser directamente paralelo entre el "hardware" y el "software", pero vela la distinción entre el diseño y la puesta en práctica. El término de free hardware es particularmente confuso puesto que implica el estado físico del hardware, mas que su diseño, el cual de alguna manera es libre. Esto no es del todo cierto en el sentido del costo, y tiene poca importancia (excepto metafóricamente) en el sentido social. Lo más simple es evitar este término totalmente, exceptuando su significado de costo, como por ejemplo: las computadoras libres "free computers" dadas por varias organizaciones sociales.

Software.

Se refiere al equipamiento lógico o soporte lógico de una computadora digital, y comprende el conjunto de los componentes lógicos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema hardware

Tales componentes lógicos incluyen, entre otros, aplicaciones informáticas tales como procesador de textos, que permite al usuario realizar todas las tareas concernientes a edición de textos; software de sistema, tal como un sistema operativo, el que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de las aplicaciones, también provee una interfaz para el usuario. Software es lo que se denomina producto en Ingeniería de Software.

Etapas del proceso:

La ingeniería de software requiere llevar a cabo numerosas tareas, dentro de etapas como las siguientes:

Análisis de requisitos:

Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en el documento ERS, Especificación de Requerimientos del Sistema, cuya estructura puede venir definida por varios estándares, tales como CMM-I. Asimismo, se define un diagrama de Entidad/Relación, en el que se plasman las principales entidades que participarán en el desarrollo del software.

La captura, análisis y especificación de requisitos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. Se han ideado modelos y diversos procesos de trabajo para estos fines. Aunque aún no está formalizada, ya se habla de la Ingeniería de Requisitos.

La IEEE Std. 830-1998 normaliza la creación de las Especificaciones de Requisitos Software (Software Requirements Specification).

Especificación:

La Especificación de Requerimientos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requerimientos del software.

Entre las técnicas utilizadas para la especificación de requerimientos se encuentran:

·        Casos de Uso

·        Historias de usuario

Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales.

Arquitectura:

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto.
El Arquitecto de Software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.
La Arquitectura de Sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de Software.
    La Arquitectura de Software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia.

Un diseño arquitectónico describe en generar el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:

·        Diagramas de clases

·        Diagramas de base de datos

·        Diagramas de despliegue

·        Diagramas de secuencia

·        Diagramas de infraestructura física

Siendo los dos primeros los mínimos necesarios para describir la arquitectura de un proyecto que iniciará a ser codificado. Depende del alcance del proyecto, complejidad y necesidades, el arquitecto elige qué diagramas elaborar.

Entre las herramientas para diseñar arquitecturas de software se encuentran:

·        Enterprise Archit

·        Microsoft Visio for Enterprise Architects

Programación:

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Prueba:

Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un área de pruebas, la primera es que esté compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como están descritas. El segundo enfoque es tener un área de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.

Documentación:

T              odo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

Mantenimiento:

Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniería civil, arquitectura y trabajo de construcción es dar mantenimiento.

Clasificación de software.

Además de estas categorías basadas en tareas, varios tipos de software se describen basándose en su método de distribución. Entre estos se encuentran los así llamados programas enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele conllevar una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por último, el infame vapourware, que es software que no llega a presentarse o que aparece mucho después de lo prometido.

Lenguaje de programación del software.

Lenguaje de programación, en informática, cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un ordenador o computadora. Es complicado definir qué es y qué no es un lenguaje de programación. Se asume generalmente que la traducción de las instrucciones a un código que comprende la computadora debe ser completamente sistemática. Normalmente es la computadora la que realiza la traducción. Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar una instrucción a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada. Esta secuencia de señales se denomina código máquina. El código representa normalmente datos y números e instrucciones para manipularlos. Un modo más fácil de comprender el código máquina es dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador.

Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de aprender. Más importante es el hecho de que los programas escritos en un bajo nivel son prácticamente específicos para cada procesador. Si se quiere ejecutar el programa en otra máquina con otra tecnología, será necesario reescribir el programa desde el principio.

 

 

 

 

 


Software Libre.

Software Libre.

Aunque el software libre con cualquier otro nombre le daría la misma libertad, el nombre que usemos hace una gran diferencia: palabras diferentes transmiten ideas diferentes.

En 1998, algunas de las personas de la comunidad de software libre empezaron a usar el término «software de código abierto» (del inglés «open source software») en vez de «software libre» para describir lo que hacen. El término «código abierto» se asoció rápidamente con una aproximación diferente, una filosofía diferente, valores diferentes, e incluso un criterio diferente por el cual las licencias son aceptables. El movimiento por el software libre y el movimiento por el código abierto hoy son movimientos separados con visiones y metas diferentes, aunque podamos y trabajemos juntos en algunos proyectos prácticos.

El ``Software Libre´´ es un asunto de libertad, no de precio. Para entender el concepto, debemos pensar en ``libre´´ como en ``libertad de expresión´´, no como en ``regalo gratis´´, en inglés una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a cierta confusión. ``Software Libre´´ se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software:

· La libertad de usar el programa, con cualquier propósito (libertad 0).

· La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.

· La libertad de distribuir copias, con lo que puedes ayudar a tu vecino (libertad 2).

· La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto.

Un programa es software libre si los usuarios tienen todas estas libertades. Así pues, deberías tener la libertad de distribuir copias, sea con o sin modificaciones, sea gratis o cobrando una cantidad por la distribución, a cualquiera y a cualquier lugar. El ser libre de hacer esto significa (entre otras cosas) que no tienes que pedir o pagar permisos.

También deberías tener la libertad de hacer modificaciones y utilizarlas de manera privada en tu trabajo u ocio, sin ni siquiera tener que anunciar que dichas modificaciones existen. Si publicas tus cambios, no tienes por qué avisar a nadie en particular, ni de ninguna manera en particular. La libertad para usar un programa significa la libertad para cualquier persona u organización de usarlo en cualquier tipo de sistema informático, para cualquier clase de trabajo, y sin tener obligación de comunicárselo al desarrollador o a alguna otra entidad específica.

La libertad de distribuir copias debe incluir tanto las formas binarias o ejecutables del programa como su código fuente, sean versiones modificadas o sin modificar (distribuir programas de modo ejecutable es necesario para que los sistemas operativos libres sean fáciles de instalar). Está bien si no hay manera de producir un binario o ejecutable de un programa concreto (ya que algunos lenguajes no tienen esta capacidad), pero debes tener la libertad de distribuir estos formatos si encontraras o desarrollaras la manera de crearlos.

Para que las libertades de hacer modificaciones y de publicar versiones mejoradas tengan sentido, debes tener acceso al código fuente del programa. Por lo tanto, la posibilidad de acceder al código fuente es una condición necesaria para el software libre. Para que estas libertades sean reales, deben ser irrevocables mientras no hagas nada incorrecto; si el desarrollador del software tiene el poder de revocar la licencia aunque no le hayas dado motivos, el software no es libre.

Son aceptables, sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre, mientras no entren en conflicto con las libertades centrales. Por ejemplo, copyleft [``izquierdo de copia´´] (expresado muy simplemente) es la regla que implica que, cuando se redistribuya el programa, no se pueden agregar restricciones para denegar a otras personas las libertades centrales. Esta regla no entra en conflicto con las libertades centrales, sino que más bien las protege.

Así pues, quizás hayas pagado para obtener copias de software GNU, o tal vez las hayas obtenido sin ningún coste. Pero independientemente de cómo hayas conseguido tus copias, siempre tienes la libertad de copiar y modificar el software, e incluso de vender copias.

``Software libre´´ no significa ``no comercial´´. Un programa libre debe estar disponible para uso comercial, desarrollo comercial y distribución comercial. El desarrollo comercial del software libre ha dejado de ser inusual; el software comercial libre es muy importante.

Es aceptable que haya reglas acerca de cómo empaquetar una versión modificada, siempre que no bloqueen a consecuencia de ello tu libertad de publicar versiones modificadas. Reglas como ``Si haces disponible el programa de esta manera, debes hacerlo disponible también de esta otra´´ pueden ser igualmente aceptables, bajo la misma condición. (Observa que una regla así todavía te deja decidir si publicar o no el programa). También es aceptable que la licencia requiera que, si has distribuido una version modificada y el desarrollador anterior te pide una copia de ella, debas enviársela.

Cuando se habla de software libre, es mejor evitar términos como: ``regalar´´ o ``gratis´´, porque esos términos implican que lo importante es el precio, y no la libertad. Algunos términos comunes tales como ``piratería´´ conllevan opiniones que esperamos no apoyes. Visita la página Palabras y frases confusas que vale la pena evitar, donde encontrarás una discusión acerca de estos términos. También tenemos una lista de traducciones de ``software libre´´ a varios idiomas.

Ubicación del Software Libre en las distintas clasificaciones.

· De acuerdo al costo de adquisición: el Software Libre puede ser de las dos clases, es decir, de costo cero o de costo mayor que cero. Lo que lo diferencia del Software Propietario es que su costo es independiente del numero de computadoras que se poseen. Por ejemplo, en el caso del Sistema Operativo Microsoft Windows 3.1/95/98/Me/NT/2000/XP por cada computadora en que lo instale debo pagar una licencia. En cambio, si utilizo en Sistema Operativo GNU/Linux (en cualquiera de sus distribuciones, como Red Hat, Mandrake, Debian, Ubuntu.) debo pagar una sola licencia (no obstante, algunas licencias no tienes costo)

· De acuerdo a la apertura del código fuente: el Software Libre siempre es "open source", es decir, de código fuente abierto, ya que dijimos que el acceso al código fuente es necesario para el ejercicio de las libertades 1 y 3 arriba descriptas. El ser "open source" implica una serie de ventajas que serán descriptas en la sección "Ventajas del Software Libre".

· De acuerdo a su protección: el Software Libre siempre esta protegido con licencias, y mas específicamente, con licencias de copyleft. ¿Por que no de dominio publico? Porque de ese modo cualquiera puede adueñarse de el, por ejemplo, adquiere un Software Libre, lo modifica, lo compila y lo distribuye con código cerrado. ¿Por que no con Copyright? Porque de esa manera alguien le puede agregar alguna restricción, por lo tanto no va a seguir siendo Software Libre

· De acuerdo a su legalidad: el Software Libre siempre es legal, porque al usarlo, estudiarlo, modificarlo, adaptarlo y/o mejorarlo no estoy violando ninguna norma, ya que de por si este tipo de software me permite hacerlo, con la única salvedad de no poder agregarle ninguna restricción adicional cuando lo transfiera a otra persona.

Explicación de las libertades básicas del Software Libre.

· Libertad Cero: "usar el programa con cualquier propósito". Es decir, el ejercicio de esta libertad implica que lo podemos utilizar con cualquier fin, ya sea educativo, cultural, comercial, político, social, etc. Esta libertad deriva de que hay ciertas licencias que restringen el uso del software a un determinado propósito, o que prohíben su uso para determinadas actividades.

· Libertad Uno: "Estudiar como funciona el programa, y adaptarlo a sus necesidades". Significa que podemos estudiar su funcionamiento (al tener acceso al código fuente) lo que nos va a permitir, entre otras cosas: descubrir funciones ocultas, averiguar como realiza determinada tarea, descubrir que otras posibilidades tiene, que es lo que le falta para hacer algo, etc. El adaptar el programa a mis necesidades implica que puedo suprimirle partes que no me interesan, agregarle partes que considero importantes, copiarle una parte que realiza una tarea y adicionarla a otro programa, etc.

· Libertad Dos: "Distribuir copias". Quiere decir que soy libre de redistribuir el programa, ya sea gratis o con algún costo, ya sea por email, FTP o en CD, ya sea a una persona o a varias, ya sea a un vecino o a una persona que vive en otro país, etc.

· Libertad Tres: "Mejorar el programa, y liberar las mejoras al publico". Tengo la libertad de hacer mejor el programa, o sea que puedo: hacer menores los requerimientos de hardware para funcionar, que tenga mayores prestaciones, que ocupe menos espacio, que tenga menos errores, etc. El poder liberar las mejoras al publico quiere decir que si yo le realizo una mejora que permita un requerimiento menor de hardware, o que haga que ocupe menos espacio, soy libre de poder redistribuir ese programa mejorado, o simplemente proponer la mejora en un lugar publico (un foro de noticias, una lista de correo, un sitio Web, un FTP, un canal de Chat).

Ventajas del Software Libre.

· Escrutinio Publico: Al ser muchos las personas que tienen acceso al código fuente, eso lleva a un proceso de corrección de errores muy dinámico, no hace falta esperar que el proveedor del software saque una nueva versión.

· Independencia del proveedor:

Al disponer del código fuente, cualquier persona puede continuar ofreciendo soporte, desarrollo u otro tipo de servicios para el software.

No estamos supeditados a las condiciones del mercado de nuestro proveedor, es decir que si este se va del mercado porque no le conviene y discontinua el soporte, nosotros podemos contratar a otra persona.

· Manejo de la Lengua:

Traducción: cualquier persona capacitada puede traducir y adaptar un software libre a cualquier lengua.

Corrección ortográfica y gramatical: una vez traducido el software libre puede presentar errores de este tipo, los cuales pueden ser subsanados con mayor rapidez por una persona capacitada.

· Mayor seguridad y privacidad: Los sistemas de almacenamiento y recuperación de la información son públicos. Cualquier persona puede ver y entender como se almacenan los datos en un determinado formato o sistema.

Existe una mayor dificultad para introducir código malicioso como ser: espía (p/ej. capturador de teclas), de control remoto (p/ej. Troyano), de entrada al sistema (p/ej. puerta trasera), etc.

· Garantía de continuidad: el software libre puede seguir siendo usado aun después de que haya desaparecido la persona que lo elaboro, dado que cualquier técnico informático puede continuar desarrollándolo, mejorándolo o adaptándolo.

· Ahorro en costos: en cuanto a este tópico debemos distinguir cuatro grandes costos: de adquisición, de implantación (este a su vez se compone de costos de migración y de instalación), de soporte o mantenimiento, y de interoperabilidad. El software libre principalmente disminuye el costo de adquisición ya que al otorgar la libertad de distribuir copias la puedo ejercer con la compra de una sola licencia y no con tantas como computadoras posea (como sucede en la mayoría de los casos de software propietario). Cabe aclarar que también hay una disminución significativa en el costo de soporte, no ocurriendo lo mismo con los costos de implantación y de interoperabilidad.

Maneras de obtener software libre.

· A través de copias en CD: los que a su vez se pueden conseguir en revistas especializadas, o comprándolos en una casa de computación, o pidiéndoselos a un amigo, pariente, etc.

· A través de Internet: a su vez, por medio de FTP, sitios Web, canales de chat, foros de noticias, programas de intercambio de archivos, etc.

· A través de una computadora: en este caso, comprando una que venga con Software Libre preinstalado, ya sea de fabrica o por su vendedor.

Importancia de afrontar el estudio del Software Libre.

· Económica: el costo de las licencias de Software Propietario es bastante importante, y por la situación económica actual, imposible de afrontar de la manera que los fabricantes de Software lo piden.

· Legal: el Software Libre es siempre legal, salvo contadas excepciones (p/ej., que compilemos el código fuente y lo vendamos como propietario). Por lo tanto, al utilizar este tipo de software estaremos siempre "por derecha", por lo que no seremos pasibles de multas y/o prisión.

· Técnica: es sabido que Microsoft ha dejado de ofrecer soporte de desarrollo para Windows 95 y Windows 98, por lo que si hoy o mañana se descubre un error en ellos, Microsoft no esta obligado a repararlo. Para solucionar esto, tendríamos dos caminos: a) Migrar a otras versiones de Sistema Operativos de Microsoft: esto lleva aparejado una serie de costos, principalmente en licencias, luego costos de implantación, soporte e interoperabilidad, y además implica volver a hacer lo mismo dentro de dos o tres años. b) Utilizar Software Libre

· Laboral: la implementación de Software Libre plantea un futuro muy prometedor para aquellas personas que sepan programar, traducir, utilizar un programa, enseñar, etc. Si tenemos que elegir entre pagar una licencia de software a un coloso informático o darle trabajo directamente a una persona, es de esperar que nos volquemos a la segunda alternativa.

Proyecto de ley sobre Software Libre:

Es un proyecto presentado en Marzo de 2001 por Marcelo Luis Dragan, Diputado Nacional por la provincia de Tierra del Fuego, del Partido Acción por la República. Originalmente lleva el nombre de de Utilización de Software Libre por el Estado Nacional", y establece la obligación de usar prioritariamente Software Libre en todas las dependencias de la Administración Publica Nacional, salvo excepciones. Entre los aspectos que motivaron el proyecto, se destacan el económico (por el costo de las licencias y por la libertad de copiar que otorga el Software Libre), el moral (es conocido que en todos los ámbitos de la Administración Publica se utiliza Software Ilegal, ya sea por cuestiones de costos, negligencia, etc., lo cual coloca al Estado como uno de los principales infractores a la Ley 11723), el cultural, el educativo, el de seguridad nacional, etc. Actualmente este proyecto se encuentra en estudio en la comisión de Legislación General y Comunicación.

Software Libre en Venezuela: Independencia o Soberanía Tecnológica.

El Gobierno Electrónico tiene como premisa fundamental la democratización del acceso a Internet y al Conocimiento en el marco del Plan Nacional de Tecnologías de Información y Comunicación, a través del cual se emprende el camino hacia el proceso de modernización del Estado, con la finalidad de proporcionar mayores y mejores servicios a la ciudadanía. Este Plan, es un instrumento que orienta la acción del Ejecutivo Nacional, con el propósito de establecer los lineamientos y políticas nacionales en materia de ciencia, tecnología e innovación.

El artículo 110 de la Constitución de la República Bolivariana de Venezuela, reconoce como de interés público la ciencia, la tecnología, el conocimiento, la innovación y los servicios de información, con el objeto de lograr el desarrollo económico, social y político del país. Esta disposición constitucional se expresa con fuerza en los artículos 1° de la Ley de Telecomunicaciones y 12° de la Ley Orgánica de la Administración Pública. Con el Decreto N° 825, emitido el 10 de mayo de 2000, se establece el acceso y el uso de Internet como política prioritaria para el desarrollo cultural, económico, social y político del Estado.

En la lucha por lograr la independencia, soberanía y nuestra autonomía tecnológica, el presidente de la República Bolivariana de Venezuela, Hugo Chávez Frías, emitió el Decreto N° 3.390, publicado en la Gaceta Oficial Nº 38.095 de fecha 28/ 12/ 2004 sobre el uso obligatorio del software libre en el país para todas las dependencias públicas de carácter oficial. De esta forma, el Ejecutivo nacional establece que es prioridad del Estado incentivar y fomentar la producción de bienes y servicios para satisfacer las necesidades de la población, mediante el uso de estas herramientas desarrolladas con estándares abiertos para robustecer la industria nacional, aumentando y aprovechando sus capacidades y fortaleciendo nuestra soberanía.

Canaima es un proyecto socio-tecnológico abierto, construido de forma colaborativa, centrado en el desarrollo de herramientas y modelos productivos centrados en las Tecnologías de Información Libres (TIL) de software y sistemas operativos cuyo objetivo es generar capacidades nacionales, desarrollo endógeno, apropiación y promoción del libre conocimiento, sin perder su motivo original: la construcción de una Nación venezolana tecnológicamente preparada. Surge inicialmente como respuesta a las necesidades ofimáticas y de otros procesos productivos de los usuarios finales de la Administración Pública Nacional (APN), y para dar cumplimiento al decreto presidencial Nro. 3.390 sobre el uso de TIL en la APN.

Características Principales.

  • Totalmente desarrollada en Software Libre.
  • No está limitada al uso en la APN, sino que puede ser usado por cualquier persona.
  • Se encuentra equipado con herramientas ofimáticas como OpenOffice.org, (procesador de palabras, hojas de cálculo, presentaciones), diseño gráfico, planificación de proyectos y bases de datos.
  • Permite la interacción con Internet, a través de su navegador web, gestor de correo electrónico y aplicaciones para realizar llamadas telefónicas por la red.
  • Es estable y segura, basada en la versión estable de GNU/Linux Debian, la cual pasa por una serie de procesos y pruebas rigurosas de calidad.
  • Realizada en Venezuela por talento nacional.

Linux hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds empezó, -como una afición y sin poder imaginar a lo que llegaria este proyecto, a programar las primeras lineas de código de este sistema operativo al que llamaria más tarde Linux.

Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querian más.

Despues de la versión 0.03, Linus salto en la numeración hasta la 0.10, más y más programadores a lo largo y ancho de internet empezaron a trabajar en el proyecto y despues de sucesivas revisiones, Linus incremento el número de versión hasta la 0.95 (Marzo 1992), la primera capaz de ejecutar el sistema X-windows. Más de un año despues (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y la versión 1.0.0 no llego hasta el 14 de marzo de 1994.

El 9 de Mayo 1996, Tux fue propuesto como mascota oficial de Linux.

El 9 de junio de 1996 fue lanzada la serie 2.0.x, la 2.2.x no llegó hasta el 25 de enero de 1999 y la 2.4.x hasta el 4 de enero del 2001.

El 17 de diciembre del 2003 fue lanzada la serie actual del nucleo, la 2.6.x y el desarrollo de Linux sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.

Linux es un sistema operativo, compatible Unix. Dos características muy peculiares lo diferencian del resto de sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningun tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente.

El sistema lo forman el núcleo del sistema (kernel) más un gran número de programas / bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto GNU, por esto mismo, muchos llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto GNU.

Linux se distribuye bajo la GNU General Public License por lo tanto, el código fuente tiene que estar siempre accesible y cualquier modificación ó trabajo derivado tiene que tener esta licencia.

El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partió la idea de este proyecto, a principios de la década de los noventa. Hoy en día, grandes compañías, como IBM, SUN, HP, Novell y RedHat, entre otras muchas, aportan a Linux grandes ayudas tanto económicas como de código.

Día a día, más y más programas y aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen generalmente bajo los términos de licencia de la GNU General Public License.

Más y más casas de software comercial distribuyen sus productos para Linux y la presencia del mismo en empresas aumenta constantemente por la excelente relación calidad-precio que se consigue con Linux.

Las arquitecturas en las que en un principio se puede utilizar Linux son Intel 386-, 486-, Pentium, Pentium Pro, Pentium II/III/IV, IA-64, Amd 5x86, Amd64, Cyrix y Motorola 68020,IBM S/390, zSeries, DEC Alpha, ARM, MIPS, PowerPC, SPARC y UltraSPARC. Además no es difícil encontrar nuevos proyectos portando Linux a nuevas arquitecturas.

Características.

  • Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preeventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.
  • Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.
  • Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II,Amiga y Atari, también existen versiones para su utilización en otras plataformas, como amd64, Alpha, ARM, MIPS, PowerPC y SPARC.
  • Multiprocesador: Soporte para sistemas con mas de un procesador esta disponible para Intel, AMD y SPARC.
  • Funciona en modo protegido 386.
  • Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
  • Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.
  • Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
  • Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición en el sistema de archivos, con la posibilidad de añadir más áreas de intercambio sobre la marcha.
  • La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.
  • Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.
  • Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.
  • Compatible con POSIX, System V y BSD a nivel fuente.
  • Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.
  • Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
  • Control de tareas POSIX.
  • Pseudo-terminales (pty's).
  • Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.
  • Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.
  • Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64.
  • Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
  • Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. El soporte para VFAT, FAT32 (WNT, Windows 95/98) se encuentra soportado desde la versión 2.0 del núcleo y el NTFS de WNT desde la versión 2.2 (Este ultimo solo en modo lectura).
  • Soporte en sólo lectura de HPFS-2 del OS/2 2.1
  • Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.
  • TCP/IP, incluyendo ssh, ftp, telnet, NFS, etc.
  • Appletalk.
  • Software cliente y servidor Netware.

Distribuciones" de GNU/Linux.

Una distribución es un modo de facilitar la instalación, la configuración y el mantenimiento de un sistema GNU/Linux. Al principio, las distribuciones se limitaban a recopilar software libre, empaquetarlo en disquetes o CD-ROM y redistribuirlo o venderlo.

Ahora las grandes distribuciones -RedHat, SuSE, Caldera, Mandrake, Corel Linux, TurboLinux...- son potentes empresas que compiten entre sí por incluir el último software, a veces también software propietario, con instalaciones gráficas capaces de autodetectar el hardware y que instalan un sistema entero en unos cuantos minutos sin apenas preguntas.

Entre las distribuciones de GNU/Linux, destaca el proyecto Debian/GNU. Debian nace como una iniciativa no comercial de la FSF, aunque luego se independiza de ésta y va más allá del propio sistema GNU/Linux. Es la única de las grandes distribuciones que no tiene intereses comerciales ni empresariales. Son sus propios usuarios, muy activos, quienes mantienen la distribución de modo comunitario, incluidas todas sus estructuras de decisión y funcionamiento. Su objetivo es recopilar, difundir y promover el uso del software libre. Reúne el mayor catálogo de software libre, todos ellos probados, mantenidos y documentados por algún desarrollador voluntario. En una distribución hay todo el software necesario para instalar en un ordenador personal; servidor, correo, ofimática, fax, navegación de red, seguridad, etc.

Ventajas de Linux.

· Linux es básicamente un duplicado de UNIX, lo que significa que incorpora muchas de las ventajas de este importante sistema operativo.

· En Linux pueden correr varios procesos a la vez de forma ininterrumpida como un servidor de red al tiempo que un procesador de textos, una animación, copia de archivos o revisar el correo electrónico.

· Seguridad porque es un sistema operacional diseñado con la idea de Cliente - Servidor con permisos de acceso y ejecución a cada usuario. Esto quiere decir que varios usuarios pueden utilizar una misma maquina al tiempo sin interferir en cada proceso.

· Linux es software libre, casi gratuito. Linux es popular entre programadores y desarrolladores e implica un espíritu de colaboración.

· Linux integra una implementación completa de los diferentes protocolos y estándares de red, con los que se puede conectar fácilmente a Internet y acceder a todo tipo de información disponible.

· Su filosofía y sus programas están dictados por el movimiento ``Open Source'' que ha venido crecido en los últimos años y ha adquirido el suficiente fortaleza para hacer frente a los gigantes de la industria del software.

· Linux puede ser utilizado como una estación personal pero también como un potente servidor de red.

· Linux incorpora una gama de sistemas de interfaz gráfica (ventanas) de igual o mejor calidad que otras ofrecidas en muchos paquetes comerciales.

· Posee el apoyo de miles de programadores a nivel mundial.

· El paquete incluye el código fuente, lo que permite modificarlo de acuerdo a las necesidades del usuario.

· Utiliza varios formatos de archivo que son compatibles con casi todos los sistemas operacionales utilizados en la actualidad

Linux es una muy buena alternativa frente a los demás sistemas operativos. Más allá de las ventajas evidentes de costo, ofrece algunas características muy notables. En comparación con las otras versiones de Unix para PC, la velocidad y confiabilidad de Linux son muy superiores. También está en ventaja sobre la disponibilidad de aplicaciones, ya que no hay mucha difusión de estos otros Unixes (como Solaris, XENIX o SCO) entre los usuarios de PC por sus altos costos. Comparado con sistemas operativos como los diferentes Microsoft Windows, Linux también sale ganando. Los bajos requisitos de hardware permiten hacer un sistema potente y útil de aquel 486 que algunos guardan en un armario. Esta misma característica permite aprovechar al máximo las capacidades de las computadoras más modernas. Es poco práctico tener una PC con 16 Mb de RAM y ponerle un sistema operativo que ocupa 13 (que es lo que reporta sobre Windows 95 el System Information de Symantec). No solo es superior respecto a el sistema de multitarea y de administración de memoria, sino también en la capacidades de networking (conectividad a redes) y de multiusuario (aún comparando con sistemas multiusuario como NT). La única desventaja de Linux frente a estos sistemas, es la menor disponibilidad de software, pero este problema disminuye con cada nuevo programa que se escribe para el proyecto GNU, y con algunas empresas que están desarrollando software comercial para Linux

En Venezuela, el Plan de Migración de Software Libre, el cual dispone que la Administración Pública Nacional emplee prioritariamente Software Libre desarrollado con estándares abiertos en sus sistemas, proyectos y servicios informáticos. El Plan de Migración a Software Libre, fue elaborado con el consenso de casi la totalidad de los Órganos y Entes de la Administración Pública Nacional, a través del Comité Tecnológico, activado por la Oficina de Tecnologías de Información del Ministerio de Ciencia y Tecnología.