CVS es el Sistema de Versión Concurrente, y es una manera muy popular para controlar las versiones de proyectos de software. Está diseñado para permitir que autores múltiples operen simultáneamente en el mismo árbol fuente. Este árbol fuente se mantiene de manera central, pero cada desarrollador tiene un espejo local de este repositorio en donde hacen los cambios.
Los desarrolladores de GTK+ utilizan un repositorio CVS para guardar la copia maestra de la versión actual en desarrollo de GTK+. Como tal, quien quiera contribuir parches a GTK+, los deben generar contra la versión CVS. La gente normal debe utilizar los lanzamientos en paquete.
El conjunto de herramientas de CVS está disponible como paquetes RPM, en los lugares usuales de RedHat. La última versión está disponible en http://download.cyclic.com/pub/
Cualquiera puede bajar la última versión CVS de GTK+, utilizando el acceso anónimo siguiendo estos pasos:
En una línea de comandos descendiente de bourne (como bash) teclea:
CVSROOT=':pserver:anonymous@anoncvs.gnome.org:/cvs/gnome'
export CVSROOT
A continuación, la primera vez que se saca el árbol de desarrollo, se necesita un login cvs.
cvs login
Te preguntará por un clave. No hay clave para cvs.gimp.org, así que solo presiona retorno de carro.
Para conseguir el árbol y colocarlo en un subdirectorio de tu directorio de trabajo actual, teclea el comando:
cvs -z3 get gtk+
Ten en cuenta que con el árbol GTK+ 1.1, glib se ha movido a un módulo CVS separado, de manera que si no tienes glib instalado, también deberás obtenerlo:
cvs -z3 get glib
Es simple. Si algo no trabajo como crees que debería en un programa, revisa la documentación para asegurarte que no te hace falta algo. Si es un verdadero bug o funcionalidad perdida, rastrealo en el fuente de GTK+, cámbialo, y entonces genera un parche en la forma de un 'context diff'. Esto se puede hacer utilizando un comando como diff -ru <oldfile> <newfile>. Entonces sube el parche a:
ftp://ftp.gtk.org/incoming
junto con un archivo README. ¡Asegúrate que sigues las convenciones de nombramiento o tu parche simplemente será borrado! Los nombres de archivo deben ser de esta forma:
gtk<nombreusuario>-<date yymmdd-n>.patch.gz
gtk-<nombreusuario>-<date yymmdd-n>.patch.README
La "n" en la fecha indica un número único (empezando de 0) de parches que has subido ese día. Debe ser 0, a menos que subas más de un parche en el mismo día.
Ejemplo:
gtk-gale-982701-0.patch.gz
gtk-gale-982701-0.patch.README
Una vez que subas lo que sea, envía el README a ftp-admin@gtk.org
Los parches subidos serán movidos a ftp://ftp.gtk.org/pub/gtk/patches, en donde alguien del equipo de desarrollo de GTK+ los recogerá. Si se aplican, se moverán a /pub/gtk/patches/old.
Los parches que no se aplican, por cualquier razón, son movidos a /pub/gtk/patches/unapplied o /pub/gtk/patches/outdated. En este punto puedes preguntar en la lista de correo gtk-list el por qué tu parche no fue aplicado. Hay muchas razones posibles por las cuales un parche puede no ser aplicado, desde que no se aplica limpiamente, a no ser correcto. No te sientas mal si tu parche no lo logró la primera vez.
Esto le compete a los autores, así que deberás preguntarles una vez que hayas terminado con tu widget. Como guía general, los widgets que son generalmente útiles, trabajan, y no son una desgracia al conjunto de widget, serán incluidos agradecidamente.
La página hogar de GTK+ (http://www.gtk.org/) presenta una lista de bindings para GTK+.
Hay varios envoltorios de C++ para GTK+.
el paquete gtk--, el cual es un envoltorio bastante pequeño para GTK+. Puedes encontrar su página hogar en http://www.cs.tut.fi/~p150650/gtk/gtk--.html. El sitio FTP es ftp://ftp.gtk.org/pub/gtk/gtk--.
el paquete VDK, el cual fue construido como el paquete base de un constructor de aplicaciones GTK+ parecido a Borland. La página hogar se encuentra en http://www.guest.net/homepages/mmotta/VDKHome.
El paquete wxWindows/Gtk, que es una librería C++ para desarrollo de interfaces gráficas de usuario en plataformas cruzadas. La página hogar de este paquete se encuentra en http://www.freiburg.linux.de/~wxxt/.
Hay tres bindings conocidos para Objective-c actualmente en desarrollo:
El paquete seleccionado http://www.gnome.org/ es objgtk. Objgtk está basado en la clase Object y es mantenido por Elliot Lee. Aparentemente, objgtk está siendo aceptado como el binding Objective-c `estándar' para GTK+.
Si te inclinas más al proyecto GNUstep, puede que quieras revisar GTKKit por Helge Heß. La intención es crear un binding GTK+ utilizando el FoundationKit. GTKKit incluye cosas agradables como escribir un archivo plantilla tipo XML para construir una interface GTK+.
El paquete GToolKit, que puede encontrarse en ftp://ftp.gtk.org/pub/gtk/objc-gtoolkit/.
Bindings para Perl ftp://ftp.gtk.org/pub/gtk/perl
Bindings para Guile. La página hogar se encuentra en http://www.ping.de/sites/zagadka/guile-gtk. Es importante mencionar que Guile es la implementación de Scheme R4RS del Proyecto GNU (el estándar). Si te gusta Scheme, querrás darle un vistazo a esto.
David Monniaux reporta: "Inicié un sistema de binding gtk-O'Caml. Lo básico del sistema, incluyendo callbacks, trabaja bien. El desarrollo actual se encuentra en http://www.ens-lyon.fr/~dmonniau/arcs"
Se han hecho varios bindings de Python:
pygtk está en http://www.daa.com.au/~james/pygtk y ftp://ftp.gtk.org/pub/gtk/python
python-gtk está en http://www.ucalgary.ca/~nascheme/python-gtk
Hay un par de widgets OpenGL/Mesa disponibles para GTK+. Sugiero que empieces en http://www.student.oulu.fi/~jlof/gtkglarea/index.html
Por último, hay varios bindings para otros lenguajes más como Eiffel, TOM, Pascal, Pike, etc.