Tema I. Código Abierto.
1. Filosofía.
Qué hubiera pasado si Bach, Newton, Buda, Cristo, Guttenberg, Van Gogh, Cervantes hubieran
decidido dejar su obra para sólo cumplir con las necesidades de un circulo de personas y
no hubieran abierto sus ideas al mundo.
Pues tendríamos muy poco avance en muchos aspectos, dado que sus conceptos revolucionarios
no hubieran alcanzado a muchas personas que supieron adoptar a su vida y a otras cosas
relacionadas.
Bueno, pues hace tiempo, en el ambiente de cómputo, después de que Turing y Von Neumman
dejaron las ideas fundamentales de la cienca de la computación, se desarrollaron proyectos
de hardware y software que acababan por ser controlados por empresas que metían mucho dinero
y consideraban que sus ideas eran de su propiedad y solo ellos tenían beneficio por ellas.
Y el màximo representante de el software con licencia como cadena para su uso, fue Bill Gates,
alguien que a la vista de muchos ha transformado el cómputo; para bien o para mal ...
En 1984, Richard Stallaman, un investigador del MIT propuso una idea revolucionaria, el
proyecto GNU. Su objetivo es liberar el código para evitar que se creen poderes e intereses
que afecten el avance del conocimiento en el área de cómputo
La filosofía del GNU y Free Software Foundation, es que el código fuente es fundamental al
avance de la ciencia de cómputo y la disponibilidad libre es esencial para que la
innovación continue.
Y ante esta idea se unió mucha gente:
Ken Thompson y Dennis Ritchie fundamentaron la idea del modelo de desarrollo con
la creación de Unix y Lenguaje C
Bill Joy y su grupo, con la integración de TCP/IP al sistema operativo BSD Unix
Internet Engineering Task Force, que construyó un conjunto de estándares, documentos
y protocolos abiertos para el uso de Internet
Linus Torvald, creador del sistema operativo Linux, resultado de extender las ideas
de Tannenbaum con su sistema operativo Minix
Red Hat, con el esfuerzo de unir Linux con la infraestructura de código abierto y permitió
definir una manera de captar dinero bajo esta filosofía
Larry Wall con la creación de un lenguaje como Perl, el cual se ha convertido en
una comunidad en la cual la filosofía central es en proveer repositorios bien estructurados
de software
El consorcio de Apache para crear un servidor de WWW y todo lo que se pueda realizar
con este.
Marc Anderson con la creación del navegador del WWW y la utilización de hipertexto
Miguel de Icaza, con la creación de Gnome como una alternativa para uso de ambientes
de componentes, diferentes a Microsoft
Muchas son las personas influenciadas en esta perspectiva, pero el punto central es
que el requisito es ser un hacker.
2. Hackers y su ética
El concepto que tiene mucha gente sobre lo que es un hacker es erroneo.
Un hacker es una persona que programa de manera entusiasta y cree que el compartir la
información es un valor muy apreciado, y que es una obligación ética de los hackers es
compartir su experiencia con la escritura de código abierto y facilitar el acceso a dicha
información y recursos de cómputo donde sea posible.
Entonces, el ser hacker es más cuestión de ética, de cumplir con la necesidad de retornar
a la humanidad el conocimiento que se le ha dado.
La ética del hacker cubre los siguientes puntos:
+ Etica del trabajo. Los hackers no organizan su vida por el trabajo, sino extienden este
concepto en el cual la creatividad y la pasión por disfrutar la vida guian su ritmo de
trabajo. Libres de toda esclavitud, es decir sólo pasión y libertad
+ Etica del dinero. No desprecian el dinero, es necesario para poder obtener una manera
de alcanzar objetivos. El dinero permite que alcancen sus obras de bienestar social y
apertura. Es decir, teniendo una estabilidad económica, pueden dedicarse a compartir su
conocimiento sin tener que preocuparse por el factor monetario; este es llevado a segundo
plano. Y curiosamente, ante esta filosofía de no ambición monetaria, los hackers obtienen
dinero, dado que son reconocidos como alguien de valor, el cual vale la pena contratar ya
que revoluciona el proyecto en el que se incluya
+ Etica de la red (Nethic). La actitud que toma los hackers hacia las redes de comunicación
es parte de su filosofía. Busca una actividad continua para que las ideas se expresen sin
limitantes, cuidando de que la gente tenga derecho a la privacidad, a proteger su estilo de
vida y no quiere ser alguien pasivo. Trata de cuidar que se forme una mentalidad sobre la
importancia de la red como un elemento para unir a todos en una comunidad donde el
conocimiento se comparte, y la tecnología solo es una herramienta para lograr compartir y
enlazar, aun a gente que está en los margenes de la sociedad.
Quien se diga hacker tiene que vivir en estos niveles, trabajo, dinero y nética.
Un hacker debe renunciar a cualquier actitud egoista, tolerante y debe impulsar a otros
Asi, que si alguien que está leyendo este texto, quiere convertirse en hacker, debe:
+) Saber programar y escribir software abierto
+) Ayudar a probar y depurar software abierto
+) Publicar información
+) Ayudar a la infraestructura a que trabaje
+) Servir a la cultura del hacker
(checar http://www.tuxedo.org/~esr/faqs/hacker-howto.html)
3. El model de la catedral y el bazar
Este modelo impulsado por Eric Steven Raymond, un evangelista de la cultura de código abierto.
El considera que el desarrollo actual del software, hecho por empresas como Microsoft,
código cerrado, implica que se construya algo muy similar a las sociedades medievales
donde sólo unos cuantos aportaban ideas para construir una catedral, quedando plasmada
la ideología de los que eran permitidos participar en el proyecto, sin tomar en cuenta
a toda la comunidad, Las ideas son aisladas!!
En cambio el desarrollo orientado al modelo de un bazar, donde el farfullar de todos los
vendedores parece un caos total para al final encuentras lo que buscas y donde aparentemente
no existe ninguna coordinación, emerge un patrón. En lugar de adoptar una actitud
cerrada, se otorga libertad, se eliminan las reverencias. Asi funciona el software
de código abierto, alguien con una muy buena idea, la propone, "la grita" en el medio
y alguién escucha y dice, por fin encontre a alguien que quiere atacar el mismo problema
que yo y decide unirse a él.
El modelo del bazar se basa en principios muy simples:
1. Un buen desarrollo de software comienza con una necesidad (o molestia) personal
2. Los buenos programadores saben que escribir. Los grandes saben cómo rescribir y reusar
3. Planea desechar por lo menos una vez la solución, nadie es perfecto
4. Si tienes una actitud abierta , los problemas interesantes te encontraran
5. Cuando un programa te aburre, puedes buscar un sucesor
6. Integra a tus usuarios como co-desarrolladores para codificar rapidamente y depuración
efectiva
7. Libera temprano y continuamente. Y escucha a tus usuarios
8. Si tienes una gran cantidad de gente que pruebe y co-desarrolladores, casi todo problema
será atendido rápidamente y llegar un arreglo que es obvio para alguien
9. Estructuras de datos inteligentes y código simple funciona mejor que otras ideas
10. Trata a las personas que evaluan tu software como el recurso mas invaluable, y al final
lo serán
11. Lo más cercano a tener una buena idea es reconocer buenas ideas de los usuarios.
Algunas veces, lo segundo es lo mejor
12. A veces las soluciones mas desafiante e innovadoras es aceptando que el concepto que
tienes del problema estaba mal
13. Perfección en el diseño no es alcanzado cuando no se tenga más que agregar, sino
cuando ya no hay mas que eliminar
14. Una buena herramienta siempre ayudará como se espera, pero una verdaderamente grande
permitira que se use como nunca se había imaginado
15. La aplicación nunca debe cerrar o ignorar el flujo de información que recibe
16. Tu aplicación debe usar una manera de expresión cercana al modelo computacional
17. Evita dar falsos sentidos de seguridad en tu aplicación
18. Para resolver un problema interesante, empieza por encontar un problema que te es
interesante
19. Para realizar la coordinación del proyecto, busca un medio tan bueno como Internet y
aprende a guiar sin coerción, de hecho muchas cabezas son mejores que una
Alguien que quiera entrar al desarrollo de la comunidad abierta, y por ende empezar sus
primeros pasos como hacker, necesita adoptar estos principios como guias.
4. Licencia para el software abierto.
Oir la palabra licencia es algo que empieza a dar temor cuando se trata de software de
Microsoft, suena a que tenemos que lidar con abogados y documentos muy aburridos y difíciles
de leer y cuyo objetivo es limitarnos a desarrollar algo muy interesante con el software
Sin embargo, el código abierto tiene una licencia que permite el uso del código abierto
y su redistribución sin que se busque una compensación o crédito personal. Y no hay que
notificar al creador que se usa el código
Leer los términos de GNU General Public License (GNU GPL) en
http://www.gnu.org/licenses/gpl.txt
Solo compararla con la licencia de uso de software de Microsoft.
5. Hola mundo de código abierto ??
El lenguaje principal del código abierto es C. Pero tambien Perl y Python han encontrado
una buena posición en esta filosofía.
GNU creo un ejercicio, donde el programa "Hola Mundo", típico en C, se adopta para ser
usado bajo el esquema de código abierto
Código abierto no implica falta de calidad o cuidado en el desarrollo. Se han adoptado
técnicas de la ingeniería de software para tener un código legible, facil de cambiar y
configurable
El código de hola mundo se puede encontrar en:
http://ftp.dmz.algx.net/pub/gnu/hello/hello-2.1.0.tar.gz
Bajalo y envialo al sistema UNIX mas cercano (correra con Windows ??). Al desempacar
el software se encontrará lo siguiente:
ABOUT-NLS config.guess contrib intl mkinstalldirs THANKS
aclocal.m4 config.h.in COPYING m4 NEWS TODO
AUTHORS config.rpath depcomp Makefile.am po
BUGS config.sub doc Makefile.in README
ChangeLog configure INSTALL man src
ChangeLog.O configure.ac install-sh missing tests
Ahora es tiempo de configurar el software!!
Cualquier software que sigue los estándares establecidos por GNU, tiene un script
(tipicamente hecho en Bourne Shell)
./configure --prefix=ruta_instalacion
donde ruta instalacion es donde se piensa instalar el software de dominio
publico
Al ejecutarse el script, genera un archivo denominado Makefile.
Un archivo Makefile es un conjunto de instrucciones para compilar el programa y generar
librerias y programas ejecutables.
Para compilar, se debe teclear el comando
make
el cual, si no marca errores, genera la compilación
Para instalar el software, se debe dar:
make install
Tipicamente, GNU propone una estructura de directorios donde se instalan los programas,
librerias y archivos auxiliares:
bin info man share
El programa recien generado, quedo instalado en el directorio bin, es un programa
ejecutable que se denomina hello.
Unicamente imprime el mensaje tan conocido de "Hello, world!"
6. Lenguajes de programación para código abierto
Principalmente, el lenguaje ANSI C es la base para desarrollar aplicaciones de código abierto.
El compilador GNU, ofrece una implantación bastante buena del lenguaje.
GNU C proporciona la capacidad de compilar lenguaje C++
Otro lenguaje de programación es Perl, que es orientado a scripts, pero muy buena
opcion para construir sistemas. Existe una comunidad dedicada a proveer software
creado en Perl, se localiza en http://www.cpan.org, Comprehensive Perl Archive Network (CPAN)
Otro lenguaje es TCL/TK, que es un lenguaje orientado a scripts. Ver
http://www.tcl.tk/
Un ejemplo de TCL es el siguiente:
#!/usr/bin/env tcl
proc power {base p} {
set result 1
while {$p > 0} {
set result [expr $result * $base]
set p [expr $p - 1]
}
return $result
}
power 2 6
power 1.15 5
Python es otro lenguaje bastante utilizado para crear sistemas orientados a objetos.
De hecho es un lenguaje bastante dinámico, influenciado por la filosofía de Perl y
SmallTalk. El proyecto de Python es llevado por http://www.python.org/
(Python se distingue, al escribir un programa, que los caracteres tabuladores SI tienen
importancia)
Un ejemplo es el siguiente:
#!/usr/bin/env python
class MyClass:
"A simple example class"
i = 12345
def f(self):
return 'hello world'
x = MyClass()
print x.f()
Este programa simplemente, define una clase denominada MyClass; y luego con un
script se crea la clase y se invoca un metodo de la misma
Java es un lenguaje utilizado para crear software orientado a objetos. Aunque Java ha
quedado bajo la autoridad de Sun Microsystems, la comunidad de código abierto ha hecho
un esfuerzo grande en portarlo a plataformas como Linux y existe software abierto basado
en Java.
Otro lenguaje, que esta siendo utilizado se llama Ruby, es un lenguaje de scripts
orientado a objetos, checar en http://www.ruby-lang.org/en/index.html
7. Librerias de código abierto.
Con el fin de proporcionar soporte a otros programas, existen librerias que dan soporte
a varias funcionalidades.
Por ejemplo, para manipular XML, existe la libreria que se conoce com Expat.
http://www.libexpat.org/
Como se instala ?? Basta con bajar la distribucion de Expat y descomprimirla en
un sistema Linux.
De la misma manera que se configuro el programa HelloWorld, es posible instalar
este software. Simple!!
Un ejemplo de programas que utilizan esta libreria se localiza en el directorio examples
de donde se puede teclear el comando make. Probar los programas elemens u outlines que
se generan con el siguiente archivo xml
hola mundo XML
Para C++ tambien existen librerías que permiten reutilizar codigo. Un ejemplo esta
en http://www.gnu.org/directory/libs/cpp/commoncpp.html, que es una biblioteca que
permite implantar algunos objetos de C++ para manejo de depuracion, persistencia
Por ejemplo, al bajar la version 0.1 (la primera), se puede descomprimir. Esta no tiene
un archivo configure, pero si tienen un archivo Makefile. Tecleando make, debe generar
librerias en formato ar.
8. Utilerias para desarrollo.
Al desarrollar un sistema de software, se necesitan diversas herramientas.
Uno de ellos es GNU make, que es la implantación libre del programa make de UNIX, que sirve
para construir instrucciones de compilación.
Existen herramientas para crear compiladores. En UNIX se implantaron dos programas, lex
y yacc (ver el libro del dragón de Aho o el Entorno de programación UNIX de Kernighan).
La comunidad de desarrolladores creo dos programas similares, libres de licencias
Flex y Bison.
Flex es un generador de analizadores lexicos
Bison es un generador de parsers, que convierte una gramatica LALR(1) a lenguaje C.
http://www.gnu.org/manual/bison/index.html
Un ejemplo, es una calculadora de notacion polaca:
/* Reverse polish notation calculator. */
%{
#define YYSTYPE double
#include
%}
%token NUM
%% /* Grammar rules and actions follow */
input: /* empty */
| input line
;
line: '\n'
| exp '\n' { printf ("\t%.10g\n", $1); }
;
exp: NUM { $$ = $1; }
| exp exp '+' { $$ = $1 + $2; }
| exp exp '-' { $$ = $1 - $2; }
| exp exp '*' { $$ = $1 * $2; }
| exp exp '/' { $$ = $1 / $2; }
/* Exponentiation */
| exp exp '^' { $$ = pow ($1, $2); }
/* Unary minus */
| exp 'n' { $$ = -$1; }
;
%%
/* Lexical analyzer returns a double floating point
number on the stack and the token NUM, or the ASCII
character read if not a number. Skips all blanks
and tabs, returns 0 for EOF. */
#include
int
yylex (void)
{
int c;
/* skip white space */
while ((c = getchar ()) == ' ' || c == '\t')
;
/* process numbers */
if (c == '.' || isdigit (c))
{
ungetc (c, stdin);
scanf ("%lf", &yylval);
return NUM;
}
/* return end-of-file */
if (c == EOF)
return 0;
/* return single chars */
return c;
}
int
main (void)
{
return yyparse ();
}
void
yyerror (const char *s) /* Called by yyparse on error */
{
printf ("%s\n", s);
}
Guarda este archivo como rpcalc.y
Ejecuta el comando
bison rpcalc.y
y genera un programa denominado rpcalc.tab.c
para generar un ejecutable
gcc rpcalc.tab.c -lm -o rpcalc
y corre
rpcalc
3 7 +
^D
Quizas te estes preguntando por que no te dieron la materia de compiladores con
esta herramienta. Yo tambien me lo pregunto!!
9. Manipulación de imágenes
Muchas veces es necesario crear imagenes por medio de un programa, por ejemplo graficas
de barras.
Existen diversos formatos com GIF, JPEG, BitMaps
PNG (Portable Network Graphics) es un nuevo formato para construir gráficos. De hecho
se construyo en parte para sustituir el formato GIF. Existen razones muy tecnicas al
respecto y que no se expondran. (Checar http://www.libpng.org/pub/png/libpng.html)
Se construyó una libreria en lenguaje C que permite la manipulación de dichas imagenes
En este sitio existen ejemplos de una manera de manipular imagenes PNG
http://www.libpng.org/pub/png/book/sources.html
Puede correr en sistemas donde ya este instalada la libreria libpng.a y libz.a
En la industria existe un software creado por Acrobat, denominado PhotoShop.
La comunidad de codigo abierto, creo algo equivalente, GIMP, localizado en
http://www.gimp.org/
Existen librerias para manipular imagenes con la filosofia de GIMP
se basa en el ambiente grafico de GTK, disponible en http://www.gtk.org/
10. Ambientes graficos
GTK es un toolkit para crear ambientes graficos. Con este se han creado ambientes
como GNOME, Glade (herramienta para generar interfases graficas y genera
codigo en C) y GIMP
Permite abstraer la manera como se manipulan componentes graficos en ambientes como X
Windows o MS Windows
10. Manipulación de Texto
Existen multiples herramientas.
LaTeX es un ejemplo , sirve para crear textos de una calidad muy buena, por ejemplo,
textos cientificos.
http://www.latex-project.org/
Por ejemplo, copiar el siguiente texto:
\title{Mi Tesis}
\author{Gustavo De la Cruz Tovar}
\documentstyle[a4]{book}
\begin{document}
\maketitle
\tableofcontents
\chapter*{Introduccion}
Aqui va el texto de la introduccion
Quiero demostrar que TeX es mejor que Word
Solo vean las ecuaciones que puedo escribir, y eso que no
se nada de LaTex.
Arriba Knuth!!
Se va a dividir en
\begin{itemize}
\item Ecuaciones simples
\item Ecuaciones de las finanzas
\item inventario simple de simbolos LaTex
\end{itemize}
\chapter*{Capitulo I}
\section{Explicacion}
Algunas ecuaciones famosas escritas en Latex
Me gustaria poner codigo en Java tambien
\small
\begin{verbatim}
public class Ecuaciones {
...
}
\end{verbatim}
\normalsize
\section{Ecuaciones}
\subsection*{Simples}
Potencias
\begin{equation}
\pi^{2}
\end{equation}
Subindices
\begin{equation}
\zeta_{2}
\end{equation}
fracciones
\begin{equation}
\frac{2}{3}
\end{equation}
raiz
\begin{equation}
\sqrt[3]{x+y}
\end{equation}
La razon de oro
\begin{equation}
\frac{\sqrt{5} + 1}{2}
\end{equation}
\subsection*{Normales}
Tipico
\begin{equation}
E = mc^{2}
\end{equation}
La derivada
\begin{equation}
\frac{df(y)}{dx} = lim _{_{h->0}} \frac{f(x+h) - f(x)}{h}
\end{equation}
La mas estetica
\begin{equation}
e^{-2 \pi i} = -1
\end{equation}
Una serie
\begin{equation}
\sum^{\infty}_{i=0} x^{2}_{i} -> \frac{1}{2 \pi}
\end{equation}
Una dificil
\begin{equation}
f(\zeta) = \frac{1}{2 \pi i} \oint_{C}{ \frac{f(z)}{z - \zeta} dz }
f(\zeta) = \sum^{\infty}_{-\infty} \frac{1}{2 \pi i ^{2}}
\end{equation}
\subsection*{Financieras}
Proceso de Ito
\begin{equation}
dx = a(x,t) dt + b(x,t) dW_{t}
\end{equation}
Lema de Ito
Si F = G(x,t) entonces
\begin{equation}
dG = ( a(x,t) \frac{\partial F}{\partial x } + \frac{\partial F}{\partial t } + \frac{1}{2} b(x,t)_{2} \frac{{\partial}^{2} F}{\partial x^{2}} ) dt +b(x,t)\frac{\partial F}{\partial x } dW_{t}
\end{equation}
Black And Scholes
\begin{equation}
\frac{\partial f}{\partial t } + rS \frac{\partial f} {\partial S} + \frac{1}{2} \sigma^{2} S^{2} \frac{{\partial}^{2} f}{\partial S^{2}} = rf
\end{equation}
Martingala
\begin{equation}
E^{*}[ Z^{*}(T) | \Im (t) ] = Z^{*(}t)
\end{equation}
Valor de un bono
\begin{equation}
B(0,t) = e^{ [ \int^{t}_{0} r(s) ds ] }
\end{equation}
\subsection*{Varios}
\begin{equation}
\angle
\hbar
\ll
\sqsubset
\sqsupset
\mho
\nabla
\partial
\forall
\emptyset
\Im
\Re
\forall
\exists
\div
\sum
\prod
\otimes
\uplus
\cap
\cup
\intop
\wp
\jmath
\vee
\dagger
\bullet
\ointop
\ell
\succ
\prec
\approx
\leq
\Leftarrow
\Rightarrow
\Box
\end{equation}
\end{document}
guardarlo en un archivo y correr el comando
latex pinino.tex
este genera un archivo dvi, el cual es un formato grafico portable
Dicho formato se puede convertir a postscript
Tambien es posible convertir a PDF el texto en LaTeX con el comando
pdfelatex dummy.tex
Este genera el archivo dummy.pdf
Ve en tu computadora el archivo generado
11. Servidores de WWW.
Para proveer servicios de WWW, existen diversos programas que interactuan con el protocolo
HTTP y dan la gama de funcionalidades para ejecutar aplicaciones CGI
(Common Gateway Interface).
El servidor de Apache es uno de los mas utilizados por su flexibilidad, gran cantidad
de modulos para proveer funcionalidades y la capacidad de ser extendido. El proyecto
Apache es llevado por Apache Software Foundation (ver http://www.apache.org) y tiene
a su cargo:
+ Mantenimiento de Apache, que es el servidor de HTTP
+ Proyecto Jakarta, que es un conjunto de modulos Java, entre ellos para manejo de Servlets
y JSP (TomCat)
+ Integracion de Perl y Apache via el modulo mod_perl, que permite cargar scripts de Perl
para aplicar CGI, de una manera optimizada
+ PHP
+ Apache XML, que provee un conjunto de manejadores de XML y programas para manejo de
Web Services.
De hecho, el dominio publico tiene un esfuerzo bastante considerable para lograr que
librerias en distintos lenguajes se utilicen. Estan hechas en C++, Perl, Python.
(Ver http://www.gnu.org/directory/webauth/)
Algunos otros han construido frameworks (marcos de referencia) para construir aplicaciones
de WWW. Uno de ellos es Struts, basado completamente en Java. Otro, hecho en Python,
denominado Zope (ver http://www.zope.org)
Como ejemplo, veremos el crear una pagina sencilla de WWW en Apache y tambien algunos
scripts de PHP.
Pagina HTML:
Codigo PHP: (guradrlo como calculadora.php)
no!! ");
} else {
echo($operador1 / $operador2 );
}
}
?>
Y crear un carpeta en /var/www/html/cib9112002, con el nombre del
alumno.
Copiar estos archivos.
Existen sistemas de comercio electronico de código abierto, por ejemplo un sistema
que se llama Interchange (http://interchange.redhat.com)
Para una demostracion de una implantacion, checar http://demo.ic.redhat.com/
12. Bases de Datos.
Hoy en dia existen varias bases de datos de codigo abierto.
GNU SQL (http://www.ispras.ru/~kml/gss/index.html)
MySQL (http://www.mysql.com/)
PostgreSQL (http://www.postgresql.org)
todas ellas bases de datos relacionales.
Tambien existen bases de datos orientadas a objetos o de XML
(ver http://xml.apache.org/xindice)
Existen herramientas para generar reportes. Una de ellas se denomina GURGLE, para generar
reportes. (Ver http://www.dai.ed.ac.uk/homes/timc/gurgle/)
Un ejercicio con esta herramienta es el siguiente:
Se creo una tabla denominada alumno y amigo con el siguiente esquema
Table "alumno"
Attribute | Type | Modifier
-----------+-------------------+----------
cveulsa | character varying |
nombre | character varying |
Table "amigo"
Attribute | Type | Modifier
--------------+-------------------+----------
cveulsa | character varying |
cveulsaamigo | character varying |
Para generar un reporte de todas las personas que son amigos, introducir el
siguiente archivo:
%%define PHYSDB cib9112002
%%database "alumno.sql"
SELECT al1.nombre AS cuate1, al2.nombre AS cuate2
FROM alumno al1, alumno al2,amigo
WHERE al1.cveulsa=amigo.cveulsaamigo
AND al2.cveulsa=amigo.cveulsa
%%header
Los MUY CUATES
%%footer
Se citaran en el Leon de Oro el viernes 23 de agosto del 2002, para
afirmar su amistad
y guardarlo como amigo.grg
13. Ambientes distribuidos.
El software abierto tiene mucho que ofrecer para este tipo de aplicaciones.
Existen aplicaciones para construir clustes de computadoras, basadas en el sistema operativo
Linux. Uno de ellos es el sistema Beowful (http://www.beowful.org)
Otros para aplicaciones de alta disponibilidad (http://linux-ha.org/)
Para mayor detalle, checar en http://lcic.org/
Y software para aplicaciones paralelas como Parallel Virtual Machine (PVM), que es un API
para generar algoritmos de procesamiento paralelo distribuido
( http://www.epm.ornl.gov/pvm/)
O middleware como CORBA para comunicar aplicaciones en distintos lenguajes.
Existe una implantacion de Java 2 Enterprise Edition (J2EE), para manejo de Enterprise
Java Beans o Bases de datos, se denomina http://www.jboss.org
14. Otros
P2P, Aplicaciones cientificas, herramientas de administracion, manipulacion de graficos,
videojuegos, ...
15. Repositorios de codigo abierto
Hoy en dia existen muchos repositorios de codigo abierto
GNU http://www.gnu.org
y
SourceForge http://www.sourceforge.net
Este ultimo provee una serie de servicios para:
+ Crear proyectos de dominio publico y dar seguimiento con listas, documentacion
+ Almacenamiento de codigo fuente
+ Granjas de compilacion
+ Servicios de clasificacion
+ Control de versiones, usando CVS (Concurrent Version System http://www.cvs.org)
16. Temas de Investigacion.
Para un tema de investigacion o tesis, pueden surgir los sig. temas:
Filosofia y Etica de hackers.
Historia de los hackers y estudio de las principales personas que han influido
Descripcion del kernel de Linux
Implantaciones y extensiones a Linux
Experiencias en Escritura de codigo abierto
Comparaciones de lenguajes de programacion utilizados por el codigo abierto
Aplicacion del software abierto a la industria privada
Estudio del modelo de desarrollo del software abierto
Implantacion de un caso practico con software abierto
Planteamiento de un nuevo modelo para automatizar la distribucion y liberacion de software
abierto
....