GNOME Architecture

Dongsu Jang <jdongsu@pyunji.net>

Contents

Prologue

- About GNOME

Libraries & Tools

- Developer's Perspective

Applications

- User's Perpective

Epilogue

- Past, Present and Future

Prologue

About GNOME

GNOME is...

GNU Network Object Model Environments

Yahoo! says:

gnome [nóum] n. 신령, 꼬마 도깨비, 난쟁이(dwarf)

Why GNOME?

Started in Aug 1997

by Miguel de Icaza

to provide a Free desktop for the GNU/Linux operating system.

Why not KDE?

based on Trolltech's QT (license issues)

written in C++

Why GTK+?

written in C

LGPL

already used by The GIMP, a popular Free software project.

GNOME provides...

for Users:

a complete, free and easy-to-use "Desktop Environment"

for Developers:

a powerful application "Development Framework"

http://www.gnome.org/about/

Applications

GNOME

Applications

GNOME

Libraries

GNOME at a glance...

XLib

GTK+

GDK

GLib

CORBA

Bonobo

Libraries & Tools

Developer's Perspective

GLib & GObject

GLib

fundamentals: basic types and macros

core application support: event loop

utilities: thread, string, scanner, xml parser...

data types: linked list, hash table, tree ...

Pleasant, Convenient and Portable

GObject

generic type system

fundamental type implementations

signal system & notification mechanism

parameter/value system

Easy to Map (into Other Languages) Object Oriented Framework for C

Pango

Pango (Παν語)

Greek "Pan"(All) + Japanese "Go"(Language)

the layout and rendering framework of internationalized text

ATK

ATK : Accessability ToolKit

a Set of interfaces for accessibility

GAIL is an implementation of ATK for GTK+

Links to Library

RPC/IPC

GTK+/GNOME

Application

GTK+

with GAIL

ATK <-> AT-SPI

Bridge

Mozilla

Accessibility

Broker

AT Client

Java Accessibility

Framework

Java

Application

ATK

AT-SPI

AT-SPI

AT-SPI

GDK & GdkPixbuf

GDK : GIMP Drawing Kit

a wrapper around the low-level functions for accessing the underlying windowing functions(Xlib in the case of the X-Window)

easy to port into other windowing systems

GdkPixbuf

image loading with custom loader

client-side(in memory) image manipulation

replaces imlib

GTK+

GTK+ : GIMP ToolKit

C-based Object Oriented API

works on many Unix-like platforms(X-Window), Windows, Framebuffer devices, and Console ...

Rich Widget Set

basic widgets: GtkEntry, GtkButton, ...

layout managers: GtkBox, GtkTable

complex widgets: TreeView, TextView

common dialogs: File/Font/Color/Input

action-based Menu/Toolbar

Themeable Look & Feel

Supports XIM and Cutom Input Method

we have “nabi” & “imhangul” ;D

LGPL

GTK+ on Win32

GTK+ on DirectFB

GTK+ on OSX

GTK+ on Console

Component Model

Bonobo

the Component Model of the GNOME

provides:

interfaces with CORBA IDL

wrappers with C

implementation with any language

assists in the Implementation of:

Components

Controls

Compound Document Support

ORBit

a CORBA implementation with a C mapping of the CORBA 2.2 specification

GNOME Libraries [1]

GNOME VFS

makes accessing various kinds of file systems transparent to the user and developer

local files, HTTP, FTP, WebDAV, NNTP ...

GNOME Canvas

widget to create custom displays using stock items such as circles, lines, text, ...

originated from a port of the Tk canvas

GNOME Print

extends GNOME Canvas widget to printing devices

GNOME Libraries [2]

GConf

manages application configuration data in a tree structure

replaces gnome-config

GNOME DB

a free unified data access architecture

libgnomedb / libgda

GStreamer

multimedia framework

graph structure of multi-threaded pipelines

intelligent plugin architecture

GNOME Libraries [3]

libglade

builds the interface from an XML file (.glade) at runtime

libXml2 / libXSLT

aka GNOME-XML

full featured XML C parser and toolkit

gtkhtml3

simple HTML view/edit widget

libcroco, librsvg, and so on...

Language Bindings

Developer Tools

GNU Build Tools

autoconf, automake, libtool ...

Glade GUI Builder

WYSIWYG GUI Designer & Code Generator

DevHelp

MSDN style API document browser

http://lidn.sf.net/

Developer Tools

Anjuta

Full Featured IDE for GNOME/GTK+ Application Development

Developer Tools [3]

Scafold

aka Anjuta2

Light-weight and (more) GNOME-compliant fork of Anjuta

GOB: GObject Builder

generates GObject-based .c/.h files from Java-like .gob source file

everybody loves screenshot ;)

Applications

User's Perspective

GNOME Desktop
Core Applications [1]

gnome-panel – launcher & applet dock

control-center – user preferences

nautilus - desktop & file manager

gnome-session – session manager

gdm – display manager

metacity – window manager

bug-buddy - bug reporting tool

eog – image & image collection viewer

epiphany – web browser

file-roller - archive manager

gcalctool - desktop calculator

GNOME Desktop
Core Applications [2]

gedit - syntax highlight text editor

gnome-terminal - muti-tabbed terminal

ggv - postscript viewer

gnome-meeting - H.323 teleconferencing

gnome-network

gnome-system-monitor

gnome system tools

gpdf - PDF viewer

gucharmap - unicode character map

rhythmbox – iTunes-style music manager

yelp - help(info, man) browser

GNOME Desktop
Core Applications [3]

zenity - display dialogs from scripts

gnome-applets

gnome-games

Nautilus Viewer Components:

nautilus-media

nautilus-cd-burner

gtksourceview

fontilus

Accessibility Tools

gnopernicus - screen reader

gok - dynamic on-screen keyboard

GNOME Fifth Toe [1]

Stable, Maintained, and Conform to GNOME HIG

Development

ghex - binary editor

gob - GObject builder

meld - visual diff & merge tool

memprof - memory profiling and leak detection

regexxer - multi-file search & replace tool

Entertainment

gcompris - education game suite

gtetrinet - tetrinet client

GNOME Fifth Toe [2]

Internet

gnomeicu - ICQ client

balsa - email client

drivel - LiveJournal Client

gaim - multi-protocol IM client

galeon - web browser

gURLChecker - web links checker

heartbeat - server & service monitor

pan - usenet news reader

ticker - stock ticker

tsclient - rdesktop/vnc frontend

xchat - IRC client

GNOME Fifth Toe [3]

Video/Sound

camorama - webcam application

gnomeradio - FM-radio tuner

gthumb - an image viewer and browser ut

streamtuner - a stream directory browser

totem - movie player

Misc.

gdeskcal - skinnable desktop calendar

gchord - guitar chord & scale database

gswitchit - xkb toolkit

seahorse - gnupg frontend

seti-applet - panel applet for seti@home

GNOME Fifth Toe [4]

Productivity

dia - Visio-style diagram drawing

gnotime - time tracker/billing

abiword - word processor

gpaint - small easy-to-use painting

mergeant - visual database management

planner - project management

workrave - RSI prevention

GNOME Office

abiword - word processor

conglomerate - xml editor

dia - Visio-style diagram drawing

evolution - mail client with PIMS

gfax - free frontend to the various facsimile programs

gimp - bitmap image manipulation

gnucash - personal finance manageer

gnumeric - spread sheet

mergeant - visual database management

planner - project management

sodipodi - SVG-based illustration

and so on...

Epilogue

Past, Present and Future

Overall Architecture

GTK+

Pango

ATK

CORBA

ORBit2

libIDL

Gnome

VFS

GConf

GStreamer

Desktop/File

Manager

(Nautilus)

XLib

libc

GLib

GDK

Gdk

Pixbuf

libxml2

libxslt

Window

Manager

(Metacity)

Gnome

Session

Manager

Gnome

Panel

Gnome

Control

Center

Gnome Desktop

Core Applications

Gnome

Print

Gnome

Canvas

Fifth

Toe

Gnome

Office

Other/Legacy

Applications

Gnome

Display

Manager

libglade

Developer

Tools

AT-SPI

libxft2

FreeType

Language Bindings

GObject

Bonobo

bonoboui

libgnome

libgnomeui

Gnome

DB

Past

GNOME project announced - Aug 1997

GNOME 1.0 - Mar 1999

“October” GNOME 1.0.55 - Oct 1999

Gnome Bug Tracking System Introduced

“Bongo” GNOME 1.2 - May 2000

Helix GNOME 1.2

My First GNOME Desktop ;)

GNOME Foundation announced
– Aug 2000

GNOME 1.4 - Sep 2000

Eazel Nautilus & Helix Evolution

Present and Future

GNOME 2.0 - Jun 2002

The first major upgrade with GTK+ 2.0

GNOME 2.2 - Feb 2003

Ximian Desktop 2, Sun Java Desktop System

GNOME 2.4 - Sep 2003

GNOME 2.4.1 - Nov 2003

Lastest stable release

GNOME 2.5.0 – Nov 2003

Latest unstable release

GNOME 2.6 - Mar 2004 ?

with GTK+ 2.4

Ximian's Ximian Desktop 2

Sun's Java Desktop System

CyGnome 2.2.1

freedesktop.org

freedesktop.org

interoperability and shared technology for desktop environments for the X Window System

GPE

GPE: The GPE Palmtop Environment

a Free software GUI environment for palmtop/handheld computers running the GNU/Linux operating system using X-Window system and GTK+

References

GNOME Official Homepage - http://gnome.org

GTK+ Official Homepage - http://gtk.org

GIMP Official Homepage - http://gimp.org

GNOME Korea Official Homepage - http://gnome.or.kr

http://primates.ximian.com/~miguel/gnome-history.html

Pango Official Homepage - http://pango.org/

GNOME Accessability Project - http://developer.gnome.org/projects/gap/

GTK+ for Win32 - http://www.gimp.org/win32/

GTK-Wimp - http://gtk-wimp.sourceforge.net/

GTK+ for DirectFB - http://www.directfb.org/gtk.xml

GTK+ for OSX - http://gtk-osx.sourceforge.net/

Cursed GTK - http://zemljanka.sourceforge.net/cursed/

ORBit2 - http://www.gnome.org/projects/ORBit2/

GNOME DB - http://www.gnome-db.org/

GNOME print - http://www.gnome.org/projects/gnome-print/

GStreamer - http://gstreamer.net/

libXml2/libXSLT- http://www.xmlsoft.org/

GNOME Fifth Toe - http://5toe.lyrical.net/

GNOME Office - http://www.gnome.org/gnome-office/

http://freedesktop.org

IBM developerWorks - http://www.ibm.com/developerworks/

Miguel de Icaza Hompage - http://primates.ximian.com/~miguel/

Special Thanks to http://google.com ;)

2003-12-03T21:38:59