Gnome - un vistazo a su arquitectura

37
Mauro Parra-Miranda [email protected] GNOME - Un vistazo a su arquitectura

description

Plática que dí en Facultad de Ciencias, UNAM en 2009 acerca de Gnome.

Transcript of Gnome - un vistazo a su arquitectura

Page 1: Gnome - un vistazo a su arquitectura

Mauro [email protected]

GNOME - Un vistazo a su arquitectura

Page 2: Gnome - un vistazo a su arquitectura

Índice

• ¿Qué es GNOME?

• Componentes

• Aplicaciones

• Testing

• Futuro

• Links

Page 3: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?

¡NO es un habitante del bosque!

Page 4: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?• GNOME - GNU Network Object Model

Environments

• Comenzó en 1997. Miguel de Icaza y Federico Mena lo comenzaron (estudiantes de Fac. de Ciencias, UNAM)

Page 5: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?

• Proveé un escritorio completo libre y grátis que para GNU/Linux.

Page 6: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?

Page 7: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?

• ¿Por qué no usar KDE?KDE está basado en la biblioteca QT. Históricamente, la licencia de QT no era tan libre como se hubiera querido.

• Escrito en C++.

Page 8: Gnome - un vistazo a su arquitectura

¿Qué es GNOME?

• GNOME esta basado en GTK.

• GTK está escrito en C.

• Con licencia LGPL - más libre, aprobada por la GNU Software Foundation.

• GTK ya se usaba en GIMP, por lo que era una biblioteca probada y conocida.

Page 9: Gnome - un vistazo a su arquitectura

GNOME es...

• Para usuarios - un escritorio completo libre, grátis y fácil de usar.

• Para desarrolladores - un poderoso “framework” de desarrollo.

• Más información - http://www.gnome.org/about/why.html

Page 10: Gnome - un vistazo a su arquitectura

GNOME es...

Page 11: Gnome - un vistazo a su arquitectura

Componentes

• GTK+ (Gimp toolkit) - Un toolkit gráfico basado en C, utilizado para crear la parte visual de GNOME. http://www.gtk.org Soporta varios lenguajes: Ada95, C++, Dylan, Eiffel, Guile, Haskell, JavaScript, Objective C, Objective CAML, Objective Label, Pascal, Perl, Pike, Python y TOM. Tal vez más.

Page 12: Gnome - un vistazo a su arquitectura

Componentes

• Accessibility framework - herramientas para dotar de opciones de accesibilidad a tu aplicación - lupa, lector de pantalla, soporte para doble click lento.

• ORBit - implementación ligera de CORBA Object Request Broker (ORB).

• Bonobo - Biblioteca de soporte para la arquitectura de componentes de GNOME. Similar a la tecnología OLE de windows ;-)

Page 13: Gnome - un vistazo a su arquitectura

Componentes

• GConf - un sistema distribuido de configuración, lo hace especialmente fácil cuando los componentes pueden ser incrustrados, distribuidos o ambos ;-)

• glib - una biblioteca portatil escrita en C para crear y manipular estructuras de datos - como listas, arboles, hash.

• gdk-pixbuf - una biblioteca de manipulación de imagenes.

Page 14: Gnome - un vistazo a su arquitectura

Componentes

• libgnomeui - biblioteca con código relacionado con la UI (interfaz de usuario) de GNOME

• libgnome - biblioteca de todo lo que no es relacionado con la parte grafica de GNOME.

• gnome-print - biblioteca con las rutinas para imprimir.

• libxml - biblioteca para manipulación de XML.

Page 15: Gnome - un vistazo a su arquitectura

Componentes

• gnome-vfs - Sistema virtual para manipulación de sistemas de archivos y otros medios, como ftp, ssh, etc. De tal forma que desde Nautilus puedes conectarte a sistemas remotos por via de ftp, samba, ssh, etc y manipularlo como si fueran locales.

Page 16: Gnome - un vistazo a su arquitectura

+Detalles

• GLib

• Tipos basicos, macros.

• Soporte para loops

• Threading, cadenas, scanner, parser para xml, etc...

• Listas ligadas, tablas de hash, arboles, etc.

• Portable, conveniente, usable.

Page 17: Gnome - un vistazo a su arquitectura

+Detalles

• Gobject

• Sistema de tipos generico

• Implementaciones fundamentales del tipo.

• Sistema de signals y notificaciones

• Sistema de parametros/valor.

• Facil de mapear. Proporcionar orientación a objetos encima de C.

Page 18: Gnome - un vistazo a su arquitectura

+Detalles

• Pango

• Sistema para manejo y graficación de lenguajes internacionales

• ATK

• Interfaces para la accesibilidad

• GAIL es la implementación de ATK para GTK.

Page 19: Gnome - un vistazo a su arquitectura

+Detalles

• GDK - Gimp Drawing Kit

• Un envoltorio para las operaciones de bajo nivel de dibujo, como seria Xlib, en el caso de Xwindow

• Fácil de portar a otros sistemas de ventanas.

Page 20: Gnome - un vistazo a su arquitectura

+Detalles

• GDKPixBuf

• Cargar imagenes con su propio cargador.

• Manipulación de la imagen en el lado del cliente (en la memoria)

• Remplaza imlib.

Page 21: Gnome - un vistazo a su arquitectura

+Detalles• GTK+ - Gimp Tool Kit

• API orientada a objetos encima de C.

• Funciona en varios lugares - Sistemas tipo unix (X-Window), Windows, Mac, Consola, sistemas con framebuffer.

• Multitud de widgets: Basicos: GtkEntry, GtkButton...Layout: GtkBox, GtkTable, etc.Complejos: TreeView, TextView, etc.Dialogos comunes: File/Font/Color/InputMenu/Toolbar basado en acciones.

Page 22: Gnome - un vistazo a su arquitectura

+Detalles

• GTK+ tiene soporte para distintos “themes”.

• GTK+ es LGPL

• GTK+ corre en Win32, DirectFB, OSX, Consola.

Page 23: Gnome - un vistazo a su arquitectura

Modelo de componentes• Bonobo

• Interfase con IDL de CORBA

• Envoltorios para C.

• Implementación con cualquier lenguaje.

• Asiste en la implementación de...

• Componentes

• Controles

• Soporte para componentes en documentos.

Page 24: Gnome - un vistazo a su arquitectura

Modelo de componentes

• ORBit

• Implementación de CORBA con mapeo de C con la specificación 2.2 de CORBA.

Page 25: Gnome - un vistazo a su arquitectura

Bibliotecas de GNOME

• GNOME VFS

• Encapsula la funcionalidad de un sistema de archivos de tal forma que tienes una sola interface y varios drivers que conectan con otros sistemas de archivos; es decir, para ti da lo mismo si te conectas a archivos locales, HTTP, FTP, WebDAV, NNTP, etc.

Page 26: Gnome - un vistazo a su arquitectura

Bibliotecas de GNOME

• GNOME Canvas

• Widget para crear objetos personalizados, con tu propias graficas, texto, etc.

• Originado por el port de Tk Canvas.

Page 27: Gnome - un vistazo a su arquitectura

Bibliotecas de GNOME

• GNOME Print

• Extensión de GNOME canvas a la impresora.

• GConf

• Administra la configuración en una forma de árbol (Piense en el registro de windows)

Page 28: Gnome - un vistazo a su arquitectura

Bibliotecas de GNOME

• GNOME DB

• Una arquitectura libre para accesar datos ordenados.

• libgnomedb/libgda

• GStreamer

• Framework multimedia.

• Estructura grafica de pipelines multi-thread.

Page 29: Gnome - un vistazo a su arquitectura

Bibliotecas de GNOME

• libglade - crea la interface de usuario desde un archivo XML, en tiempo de ejecución (.glade)

• libxml2/libXSLT - GNOME-XML - parser de XML, toolkit. Todo escrito en C.

• gtkhtml - visualizador de html.

Page 30: Gnome - un vistazo a su arquitectura

Ejemplo

/* A sample GNOME program*/

#include <gnome.h>int main(int argc, char *argv[ ]){GtkWidget *ghosh;gnome_init("sample", "0.1", argc, argv);ghosh = gnome_app_new("sample", "My Window");gtk_widget_show(ghosh);gtk_main();return 0;}

$ gcc myapp.c -o myapp `gnome-config --cflags --libs gnomeui`

Page 31: Gnome - un vistazo a su arquitectura

Aplicaciones de GNOME

http://en.wikipedia.org/wiki/List_of_GNOME_applications

http://www.gnomefiles.org/

Page 32: Gnome - un vistazo a su arquitectura

Testing GNOME

Page 33: Gnome - un vistazo a su arquitectura

Testing GNOME

• http://live.gnome.org/Bugsquad

• No necesitas ser experto.

• Puedes simplemente quejarte - Y levantar un reporte de bug.

• Asistir a los dias de “caza de bugs”.

• Obtener builds calientitos -http://live.gnome.org/BuildBrigade

Page 34: Gnome - un vistazo a su arquitectura

Testing GNOME• Para el fácil testing:

• Baja Virtualbox - http://virtualbox.org

• Busca una máquina virtual (appliance) prehecho con la versión de GNOME que quieres probar (use the google, luke!)

• Prueba y envia bugs, sin afectar tu ambiente de producción.

• Usa Garnome: http://www.gnome.org/projects/garnome/

Page 35: Gnome - un vistazo a su arquitectura

Futuro de GNOME