Category Archives: March 2011

Caso de éxito de GNOME: Andalucía

El gobierno regional de Andalucía usa el software libre para avanzar la sociedad.

Caso de éxito de GNOME: Andalucía (PDF).

GNOME and Andalusia: A Success Story

The regional government of Andalusia uses free software to advance society.

 

The regional government of Andalusia uses free software to advance society. This case study is available as a PDF.

Detrás de cámaras con Federico Mena Quintero

Paul Cutler y Federico Mena Quintero. “Además, ahora que hemos superado la etapa de «construcción de un escritorio libre», me encuentro muy excitado ya que empezamos a preguntarnos cuestiones importantes acerca de la usabilidad: ¿cómo se podría ayudar a la gente cotidiana con sus flujos de trabajo?”

Edad:
33, probablemente 34 cuando publiquen este artículo.

Dirección:
Xalapa, Veracruz, México. Una región dedicada al cultivo de café.

Profesión:
Hacker de GNOME en Novell.
Nick en IRC:
federico

Página personal y blog:
Página personal – http://www.gnome.org/~federico
Blog – http://www.gnome.org/~federico/news.html

¿En qué formas colaboras con GNOME?
He hecho muchas cosas. En orden cronológico inverso, algunas de las que recuerdo son:

  • Evolution para MeeGo.
  • Nuestras herramientas RANDR para soporte de varios monitores.
  • Mantenimiento de Sabayon; asistencia en el proyecto de las Herramientas de administración.
  • Mucho trabajo en GTK+ y GtkFileChooser.
  • Mucho trabajo en Nautilus, principalmente para Suse Linux Enterprise.
  • Algún trabajo en Mozilla para reducir el consumo de memoria.
  • Un trabajo sobre el rendimiento y perfilado en GNOME, en general.
  • Un montón de trabajo sobre el escritorio, en los primeros días.
  • He sido miembro de la junta de la Fundación unas pocas veces.
  • He sido mentor en el Google Summer of Code, unas cuantas veces.
  • He mantenido el calendario de Evolution, junto con otros colaboradores más.
  • Un montón del código al principio de GNOME, el panel y otros bits roñosos. 

¿Cómo y cuándo te involucraste en GNOME?
Miguel, Elliot y yo empezamos GNOME en 1997. Es “una historia bien conocida”http://primates.ximian.com/~miguel/gnome-history.html: 

Por aquel entonces estaba manteniendo GIMP. En un momento dado saqué GTK+ como una biblioteca independiente, ya que originalmente se incluía dentro de GIMP. Eso permitió que otras personas pudiesen escribir aplicaciones con GTK+ fácilmente, incluyendo el código original para GNOME.

¿Qué te motiva o te mantiene motivado para trabajar en GNOME?
GNOME tiene una buena infraestructura y necesita mantenerse y mejorarse.

Además, ahora que hemos superado la etapa de «construcción de un escritorio libre», me encuentro muy excitado ya que empezamos a preguntarnos cuestiones importantes acerca de la usabilidad: ¿cómo se podría ayudar a la gente cotidiana con sus flujos de trabajo? Ver que proyectos como Zeitgeist y GNOME-shell salen a la luz, me alegra mucho.

Me complace saber que GNOME continua su apuesta por trabajar en una infraestructura confiable, que necesitas y que sabes que «está ahí», al igual que postfix, o bash, para que la puedas usar.

¿Qué crees que todavía hace mucha falta en GNOME?
Gente que pueda encontrar la perspectiva a problemas horizontales, tanto en la plataforma como en el escritorio, y que cuente con el tiempo suficiente para solucionar dichos problemas. Nosotros tenemos esa gente, pero la mayoría ya está contratada por otras empresas que, lamentablemente, absorben todo su tiempo en cosas más inmediatas.

Gente que tenga suficiente energía y perseverancia para crear una aplicación grande/compleja y que lo haga bien. Hemos estado esperando por 15 años un editor de vídeo. Estoy seguro de que alguien aparecerá, pero aún no está allí; al menos no de la manera en que GIMP e Inkscape se encuentran en el imaginario de las personas cuando piensan en fotos e ilustraciones.

¿Cuánto tiempo dedicas, generalmente, a GNOME?
Imagino que existe una distinción entre «GNOME puramente» y «cosas para GNOME en Novell». Me gustaría decir que dedico unas buenas 40 horas semanales entre ambas, pero en realidad es mucho menos. Soy un mono que se distrae con facilidad.

¿Quiénes son tus hackers favoritos en GNOME y por qué?
¡Uh! demasiados que nombrar porque hay gente alucinante colaborando con GNOME.
Déjame que recuerde algunos…

 

  • Owen Taylor – en él coinciden al 100% las definiciones de “ser inteligente” y “hacer las cosas bien”
  • Vincent Untz – lo hace todo, lo hace bien, silenciosamente, sin mucho aspaviento.
  • Alex Graveley – hacker emérito de GNOME por ser tan genialmente creativo. Realmente me gustaría que se quede durante más tiempo en sus proyectos.
  • Behdad Esfahbod – ¿acaso tiene algo que no te guste?
  • Aaron Bockover – él verdaderamente sabe lo que se necesita para escribir una buena aplicación, la comienza a trabajar y finalmente la termina. 

¿Qué libro tienes en tu mesita de noche?
¿En la mesita de noche del mono que se distrae con facilidad? Los libros no están un sólo lugar, más bien están desperdigados por toda la casa en varios estados indefinidos.
 

  • «Una visión del mundo en el que vivimos: La naturaleza del orden. Volumen 3» de Christopher Alexander. Es acerca de diseñar barrios, edificios y jardines usando el método de Alexander.
  • «Hijos de la medianoche» de Salman Rushdie. Cuenta la historia de la India desde su independencia , en una novela familiar muy divertida.
  • «Manual de diseñadores de Permacultural» de Bill Mollison. Cómo crear hábitats sostenibles de humanos+animales+plantas.
  • «Más allá de los libros: la economía subrepticia de los pobres de las ciudades» de Sudhir Venkatesh. Relata todas las interesantes posibilidades que permitirían a los pobres salir adelante.
  • «Diario de Virginia Woolf». Espero llegar al volumen 6 en algún momento…

¿Quién o qué dirías que es lo que más ha influido en tu vida?
Probablemente mi primo Ricardo. Él me encaminó sutilmente en la dirección de las matemáticas y las computadoras. Es la figura zen en mi vida. Me dio su vieja TRS-80, me dejó un montón de libros de matemáticas y programación; y siempre ha sido una fuente inagotable de sabiduría.¿Cómo te describirías?
Guapo, inteligente, divertido y modesto.

¿Qué te apasiona? ¿Qué otras aficiones tienes además de GNOME?

 

  • Trabajar la madera de forma tradicional con herramientas manuales. Existían trabajos increíbles realizados en el siglo XVIII y hemos olvidado muchas técnicas y herramientas.
  • La arquitectura que realmente funciona.
  • La fotografía, cocinar, ser un marido cariñoso y un padre orgulloso.
  • La jardinería, especialmente la de vegetales. La permacultura, construir una casa lo más autosuficiente como sea posible.

Si alguien visita tu país ¿qué sitio debe ver?
Hay demasiados en lista. México es un país muy interesante y diverso. La página wikitravel es muy buena, así que adelante… y vuélvete loco.¿Cuál es tu personalidad favorita?
Obsesivo-compulsivo, en el límite de la neurosis.
Espera, ¿te referías a una personalidad real de carne y hueso?
¿Cuál es tu cita favorita?
«No dejes que las ardillas vistan a las vacas como champiñones» Mi mujer.
¿Película?
De nuevo, son demasiadas en la lista.
¿Comida?
¡Cualquier cosa hecha en nuestra casa!
¿Lugar?
El sitio donde juega nuestra hija en su habitación.
¿Editor de textos?
Emacs
¿Grupo musical?
Hesperion XXI o Rush
¿Canción?
Probablemente «Dreamline» de Rush.

Discuss this story with other readers on the GNOME forums.

Behind The Scenes With Federico Mena Quintero

Paul Cutler asks Federico Mena Quintero about his extensive work, how he got into GNOME, and what GNOME is missing.

Age:
33, probably 34 by the time you publish this.

Located in:
Xalapa, Veracruz, Mexico. A coffee-growing region.

Profession:
GNOME Hacker at Novell.

Nickname on IRC:
federico

Homepage and blog:
Home page – http://www.gnome.org/~federico
Blog – http://www.gnome.org/~federico/news.html

In what ways do you contribute to GNOME?
I’ve done many things. In reverse chronological order, some things I remember:

  • Evolution for MeeGo.
  • Our RANDR tools for multi-monitor support.
  • Sabayon maintainership; stewarding of the Admin Tools project.
  • Lots of GTK+ work, and GtkFileChooser.
  • Lots of Nautilus work, mainly for SuSe Linux Enterprise.
  • Some Mozilla work to reduce memory consumption.
  • Performance/profiling work in GNOME in general.
  • Lots of around-the-desktop work in the earlier days.
  • Have been a Foundation Board member a few times.
  • Mentored in the Summer of Code a few times.
  • Co-maintained the Evolution Calendar.
  • Lots of early code in GNOME, the panel, and other grungy bits.

How and when did you get involved in GNOME?
Miguel, Elliot and I started GNOME way back in 1997. It’s a well-known story:

I was maintaining the GIMP back then. At some point I pulled out GTK+ as a stand-alone library, as it was shipped inside the GIMP originally. That let people write apps with GTK+ easily, including the original code for GNOME.
What motivates/keeps you motivated to work on GNOME?
GNOME is good infrastructure, and it needs to be maintained and improved.

Also, now that we are past the “build a free desktop” stage, I am very excited that people are actually researching the deep usability questions: how do you help everyday people with their workflow? Seeing things like Zeitgeist and Gnome-shell just happen makes me double-plus happy.

I am happy that GNOME continues to maintain a reliable piece of infrastructure that you need and that is just “out there”, like postfix or bash, for anyone to use.

What do you think is still badly missing in GNOME?
People who can discern horizontal problems, in the whole platform and desktop, and who can also get enough time to solve them. We do have such people, but most of them are already hired by companies which, sadly, eat all their time to work on more immediate things.

People who have enough energy and persistence to do a big/complex app and do it really well. We’ve been waiting like 15 years for a video editor. I am sure that it will happen, but it’s just not there yet, at least not like the GIMP and Inkscape are out there in people’s minds, by default, when thinking about photos and illustration.

How much time do you usually spend on GNOME?
I guess there is a distinction between “pure GNOME” and “GNOME-ish stuff for Novell”. I’d like to be able to say that I spend a good 40 hours a week among both of those, but in reality it is much less. I am an easily-distracted monkey.

Who are your favorite GNOME hackers? Why?
Oh, man, too many to list because there are people who are awesome all over GNOME.
Let me recall a few.

 

      • Owen Taylor – for matching 100% the definition of Being Smart and Getting Things Done.
      • Vincent Untz – he does everything, does it well, quietly, and peacefully.
      • Alex Graveley – GNOME hacker emeritus – for being so goddamn creative. I wish he’d stick around longer with his projects.
      • Behdad Esfahbod – what’s not to like about him?
      • Aaron Bockover – he really knows what it takes to write a good app, goes ahead and does it.

Which book is on your bedside table?

      On the easily-distracted monkey’s table? And they are not together; more like lying around the house in various states of unfinishedness.

 

 

      • “A vision of a living world”, by Christopher Alexander. Volume 3 of “The Nature of Order”. It’s about designing neighborhoods, buildings, and gardens using Alexander’s method.
      • “Midnight’s Children”, by Salman Rushdie. India’s history since in its independence in a very funny family novel.
      • “Permaculture designer’s manual”, by Bill Mollison. How to create sustainable human+animal+plant habitats.
      • “Off the books: the underground economy of the urban poor”, by Sudhir Venkatesh. All the interesting interactions that let poor people get by.
      • “Diary of Virginia Woolf”. Hope to reach volume 6 at some point…

Who or what in your life would you say influenced you most?

      Probably my uncle Ricardo. He subtly nudged me in the direction of mathematics and computers. He is the Zen figure in my life. He gave me his old TRS-80, lent me tons of math and programming books, and has always been an inexhaustible source of wisdom.

How would you describe yourself?

      Handsome, intelligent, funny, and modest.

What do you get passionate about? Any hobbies outside of GNOME?

      • Traditional woodworking with hand tools. There was amazing stuff being done in the 18th century, and we have forgotten many techniques and tools.
      • Architecture that really works.
      • Photography, cooking, being an uxorious husband and proud father.
      • Gardening, especially vegetable gardening. Homesteading – building a self-sufficient house as far as possible.

If someone visits your country, which spot is a must-see?

      Too many to list. Mexico is a very interesting and varied country. The wikitravel page is very good, though, so go ahead and go crazy!

What’s your favorite:
Personality?
Obsessive-compulsive, borderline neurotic.
Or did you mean an actual person with a name and ears?
Phrase?
“Don’t let the squirrels dress the cows as champignons” – my wife.
Movie?
Again, too many to list.
Food?
Anything cooked at our home!
Place?
Our daughter’s bedroom’s play alcove.
Text editor?
Emacs.
Band?
Hesperion XXI or Rush.
Song?
Rush’s “Dreamline”, probably.

Discuss this story with other readers on the GNOME forums.

Cambiando la apariencia de GTK+ con CSS

Carlos Garnacho: “A partir de GTK+ 3.0, la vieja capa de theming va a ser reemplazada por una más moderna, potente e inmediata para el diseñador, y también más intuitiva para las masas.”

 

¿Qué hay de nuevo?

A partir de GTK+ 3.0, la vieja capa de theming va a ser reemplazada por una más moderna, potente e inmediata para el diseñador, y también más intuitiva para las masas.

Esta nueva infraestructura ha sido desarrollada en los últimos meses en una rama independiente de GTK+, aunque ya esta totalmente integrada en la rama master, introduciendo características que empiezan a ser habituales en los toolkit gráficos más modernos:

  • Mayor expresividad en un lenguaje que los diseñadores entienden. Si bien, no todo es modificable a través de CSS, la mayor parte de la información de estilo se puede expresar en este lenguaje, y posterga a los theming engines (y por tanto al trabajo de desarrolladores) a un rol secundario.
  • Mayor facilidad a los desarrolladores para replicar completamente el look de un elemento del interfaz de usuario. A la hora del renderizado, los widgets de GTK+ que usen el mismo conjunto de de clases de CSS tendrán la misma apariencia.
  • Es más, esta infraestructura puede ser usada fuera de GTK+, debido a que la búsqueda de estilo sucede sobre representaciones de un widget, que puede ser imitado sin siquiera tener una instancia de un GtkWidget.
  • Facilita incrustar un estilo propio. Ya sea una applicacion con una apariencia personalizada, o una librería de widgets ofreciendo un estilo por defecto para sus widgets, ahora es posible enganchar tu hoja de estilo en cualquier punto en la cascada.
  • Permite a los “theme engines” implementar animaciones implícitas. Los cambios de estado pueden ser completamente animados, por lo que el theme engine sólo necesita obtener el progreso para un estado determinado con el fin de modificar el resultado. Los widgets complejos también pueden animar diferentes regiones de forma independiente.

Selectores CSS en GTK+

Asumiendo que sabes ya algo de CSS, será rapido comprender los detalles. Asi es el selector universal en CSS:

    * {
    }

Este selector coincidiría con cualquier GtkWidget. Si quieres un selector que coincida con un tipo de widget determinado, necesitar especificar el nombre de su tipo:

    GtkButton {
    }

Este selector coincidiría con cualqiuer GtkButton, o cualquier widget derivado de el. Por supuesto también puedes poner un nombre al widget para que pueda aplicársele otro estilo:

    #some-widget-name,
    GtkLabel#title-label {
    }

Como ya se mencionó antes, los widgets tambien pueden usar determinadas clases de CSS para dar pistas acerca del estilo necesitado para un elemento que se pinta en pantalla. Los siguientes selectores coincidirían respectivamente con entradas de texto, botones, y los botones de un GtkSpinButton:

    .entry {
    }

    .button {
    }

    GtkSpinButton.button {
    }

Los widgets complejos pueden también asignar regiones a los elementos que se pintan, que se verían en el selector como identificadores en minusculas:

    GtkTreeView row {
    }

    GtkNotebook tab {
    }

Pero el widget puede también aportar información adicional a esas regiones, que pueden resolverse en CSS a través de la pseudo-clase :nth-child. De esta manera, el coloreado de filas pares/impares de un treeview podría hacerse con:

    GtkTreeView row:nth-child(even) {
    }

    GtkTreeView row:nth-child(odd) {
    }

Estas clases/regiones que un widget añade pueden ser completamente
arbitrarias, pero GTK+ provee de un conjunto de estas para que
puedan reutilizarse en diferentes widgets:
http://library.gnome.org/devel/gtk/2.91/GtkStyleContext.html#gtkstylecontext-classesEl estado de un widget puede también definirse como una pseudo-clase en CSS:

    /* Estos son equivalentes */
    .button:prelight,
    .button:hover {
    }

    .entry:focused {
    }

Y por supuesto, todo esto puede combinarse para formar selectores más complejos y específicos:

    GtkWindow > .entry:selected {
    }

    GtkTreeview column-header .button {
    }

    GtkWindow#my-window GtkCheckButton.check:prelight {
    }

Propiedades soportadas

GTK+ soporta actualmente un subconjunto de propiedades CSS:

  • background-color
  • background-image
  • color
  • border-color
  • border-image
  • border-radius
  • border-width
  • border-style
  • padding
  • margin
  • transition

Las propiedades “background-color”, “color” y “border-color” toman un color (ya sea simbólico, un nombre, cadenas hexadecimales o cadenas del tipo rgb()/rbga(), y cualquier combinación de estos mediante las funciones soportadas:

    * {
      background-color: red;
      border-color: shade (mix (rgb (34, 255, 120), #fff, 0.5), 0.9);
    }

    .entry:selected {
      color: darker (@selected_fg_color);
      background-color: lighter (rgba (50%, 32%, 35%, 0.9));
    }

De forma parecida a CSS3, la propiedad “background-image” puede usarse para especificar gradientes lineales o radiales como el fondo de un elemento:

    .button {
      background-image: -gtk-gradient (linear,
                                       left top,
       left bottom,
       from (@bg_color),
       color-stop (0.5, darker (@bg_color)),
       to (@bg_color));
    }

    .entry {
      background-image: -gtk-gradient (radial,
                                       0.5 0.5 0.2,
       0.6 0.6 1,
       from (@bg_color),
       to (shade (@bg_color, 0.9)));
    }

En estos gradientes, cualquier número de color-stop()s puede definirse, y cualquier definición de color puede usarse, como en las propiedades mencionadas anteriormente.Los bordes pueden modificarse a través de varias propiedades, el ancho del borde en sí esta definido por la propiedad “border-width”.

La propiedad “border-radius” especifica el radio en pixels para las esquinas de un marco que esté siendo pintado en pantalla. Normalmente, los GtkWidgets proveerán información acerca de cómo un marco conecta visualmente con otros elementos en la interfaz de usuario, de forma que las esquinas redondeadas sólo se aplican a las esquinas que no conectan con ningún elemento.

La propiedad “border-style” accepta los valores “none”, “solid”, “inset” y “outset”. “inset” y “outset” podrían típicamente usarse para hacer sencillas simulaciones pseudo-3D cuando un botón es pulsado:

    .button {
      border-style: outset;
    }

    .button:active {
      border-style: inset;
    }

También se ofrece soporte para animaciones implícitas, aunque de una forma distinta al CSS standard. En el CSS de GTK+, sólo la duración de la animación y la función de progreso pueden especificarse. Por ejemplo, de esta forma se puede decir a un botón que cambie de blanco a amarillo cuando el ratón pasa por encima:

    GtkButton {
      background-color: white;
    }

    GtkButton:hover {
      transition: 300ms ease-in-out;
      background-color: yellow;
    }

Poniendo esto en práctica

El GTK+ que puedes obtener por defecto tiene un aspecto conservativo, aburrido si quieres, tomemos una aplicación bien conocida de GNOME, gedit:

gedit styled with default GTK

Muy bien, ¿muy cuadrado para tu gusto? Intentemos arreglar eso, creamos un archivo ~/.config/gtk-3.0/gtk.css y escribimos:

  /* Hacer algunas cosas redondeadas */
  .notebook,
  .button,
  .entry {
    border-radius: 3;
    border-style: solid;
    border-width: 1;
  }

Ya empieza a tener mejor aspecto:used CSS to round some things

Ahora usemos algunos gradientes para dar un aspecto más suave:

  .menubar,
  .toolbar {
    border-width: 0;
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (@bg_color),
                                     to (shade (@bg_color, 0.95)));
  }

  .button:hover,
  .menu:hover,
  .menubar:hover {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@selected_bg_color, 1.1)),
                                     color-stop (0.55, shade (@selected_bg_color, 1.0)),
                                     color-stop (0.55, shade (@selected_bg_color, 0.8)),
                                     to (shade (@selected_bg_color, 0.9)));
  }

Tiene mejor aspecto? Hmm, pero esas scrollbars son un poco feas todavia, hagamos algo al respecto:

  /* Gradiente para scrollbars verticales,
   * de izquierda a derecha
   */
  .slider.vertical {
    background-image: -gtk-gradient (linear,
                                     left top, right top,
                                     from (mix (shade (@bg_color, 0.9), @selected_bg_color, 0.3)),
                                     to (mix (@bg_color, @selected_bg_color, 0.3)));
  }

  .slider.vertical:hover {
    background-image: -gtk-gradient (linear,
                                     left top, right top,
                                     from (shade (@selected_bg_color, 0.9)),
                                     to (@selected_bg_color));
  }

  /* Ahora los scrollbars horizontales,
   * de arriba a abajo
   */
  .slider.horizontal {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@bg_color, 0.9)),
                                     to (@bg_color));
  }

  .slider.horizontal:hover {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@selected_bg_color, 0.9)),
                                     to (@selected_bg_color));
  }

  /* Un gradiente radial para la parte hundida */
  .trough {
    background-image: -gtk-gradient (radial,
                                     center center, 0,
                                     center center, 1,
                                     from (@bg_color),
                                     to (shade (@bg_color, 0.8)));
  }

  GtkScrollbar.button {
    border-width: 0;

    /* Asegurar un fondo transparente
     */
    background-image: none;
    background-color: rgba (0, 0, 0, 0);
}

Si queremos que el tema sea un poco más vivo, también podemos hacer:

  GtkButton:hover {
    transition: 100ms linear;
  }

  GtkCheckButton:active {
    transition: 250ms ease-in-out;
  }

De forma que esos estados tengan una animación de transición. Tras otros cambios menores, tenemos algo como esto:improved look with gradients and other tweaks

Con un archivo CSS relativamente simple hemos conseguido mejorar la apariencia de las aplicaciones, pero esto da mucho más de sí.

Si has estado al tanto del desarrollo de gnome-shell, ya sea compilándolo o a través de los paquetes inestables de tu distro favorita, hay muchas posibilidades de que ya tengas GTK+ 2.99.x en tu sistema, asi que no dudes en bajarte el CSS resultado de este artículo y ¡empieza a experimentar ya!

Carlos Garnacho es un desarrollador de GTK.

Discuss this story with other readers on the GNOME forums.

Styling GTK+ with CSS

div>

Carlos Garnacho shows how you can use CSS to style GTK+ apps.

 

What’s going on here?

Starting with GTK+ 3.0, we’re replacing the old theming layer with a more modern one. Designers will find it more powerful and immediate, and it’s more intuitive for the masses.

This new theming layer has been developed in a GTK+ repository, but is available in master now, and brings in features that are starting to be a must in modern toolkits:

  • Puts more into a language designers understand. While not everything is themeable through CSS, most of the styling information will be expressible in that language, which puts theming engines (and hence coders’ work) in a supporting role.
  • Gives developers the ability to seamlessly replicate the look of an UI element. When rendering, GTK+ widgets can assign different CSS classes that will be used for style matching, so other widgets can reuse the same set of classes and they’ll be themed the same.
  • Furthermore, the theming layer can be used outside of GTK+, as the style matching happens on abstract representations of a widget, which can be mimicked without even having a GtkWidget instance.
  • Makes embedding styles easier. Be it either an application with custom looks or a widget library offering a default style for its widgets, it is now possible to attach your style anywhere in the cascade.
  • Enables engines to implement implicit animations. State changes can be fully animated, so the theming engine code only has to retrieve the progress for a given state in order to modify its rendering. Complex widgets will be able to independently animate different regions.

CSS Selectors in GTK+

We’ll get into the details quickly and assume you know a bit of CSS. This is how the universal selector would look:

    * {
    }

This selector matches any GtkWidget. If you want to match a certain widget type, you need to specify its type name:

    GtkButton {
    }

This rule applies to any GtkButton, or any other child type of it. You may want, of course, to set a name to a widget so it can be styled differently:

    #some-widget-name,
    GtkLabel#title-label {
    }

As mentioned earlier, widgets may also use certain CSS classes in order to provide hinting about the style needed for a rendered element, so the following rules would respectively theme entries, buttons, and buttons in a spinbutton:

    .entry {
    }

    .button {
    }

    GtkSpinButton.button {
    }

Complex widgets could also assign regions to rendered elements, which can be matched in the CSS file as lowercase identifiers:

    GtkTreeView row {
    }

    GtkNotebook tab {
    }

But the widget may also provide further information to these regions, which can be matched in CSS through the :nth-child pseudo-class, so we can handle the even/odd coloring in treeview rows as follows:

    GtkTreeView row:nth-child(even) {
    }

    GtkTreeView row:nth-child(odd) {
    }

Even if the classes/regions added to a widget are arbitrary, GTK+ provides a set of these so they can be reused across widgets.Widget states are also matched in CSS as pseudo-classes:

    /* These two are equivalent */
    .button:prelight,
    .button:hover {
    }

    .entry:focused {
    }

And of course, you can combine all of this for more complex styling:

    GtkWindow > .entry:selected {
    }

    GtkTreeview column-header .button {
    }

    GtkWindow#my-window GtkCheckButton.check:prelight {
    }

Supported properties

GTK+ currently supports a subset of CSS properties:

      • background-color
      • background-image
      • color
      • border-color
      • border-image
      • border-radius
      • border-width
      • border-style
      • padding
      • margin
      • transition

The “background-color” “color” and “border-color” properties take colors (either symbolic, names, hex strings or rgb()/rgba() strings), and any combination of them through the supported functions:

    * {
      background-color: red;
      border-color: shade (mix (rgb (34, 255, 120), #fff, 0.5), 0.9);
    }

    .entry:selected {
      color: darker (@selected_fg_color);
      background-color: lighter (rgba (50%, 32%, 35%, 0.9));
    }

As in CSS3, you can use the “background-image” property to specify radial or linear gradients as an element background:

    .button {
      background-image: -gtk-gradient (linear,
                                       left top,
       left bottom,
       from (@bg_color),
       color-stop (0.5, darker (@bg_color)),
       to (@bg_color));
    }

    .entry {
      background-image: -gtk-gradient (radial,
                                       0.5 0.5 0.2,
       0.6 0.6 1,
       from (@bg_color),
       to (shade (@bg_color, 0.9)));
    }

In these gradients,you can define any number of color stops, and use any color definition, as in the previously mentioned properties.You can modify borders through several properties. The width is defined by “border-width”, which will modify the rendered frame’s width in pixels.

The “border-radius” property specifies the radius in pixels for the corners of a rendered frame. Usually, GtkWidgets will provide information about how a frame that’s being rendered visually connects with other elements in the UI, so the rounded corners only apply to the disconnected corners.

The “border-style” property accepts the “none”, “solid”, “inset” and “outset” keywords. You’d typically use “inset” and “outset” to simulate 3D-like effects on a button when pressed:

    .button {
      border-style: outset;
    }

    .button:active {
      border-style: inset;
    }

Implicit animations are also handled, although in a way different from standard CSS. In GTK+ CSS, only the animation length and timing function are specified, so for example a button can be told to animate from white to yellow like this:

    .button {
      background-color: white;
    }

    .button:hover {
      transition: 300ms ease-in-out;
      background-color: yellow;
    }

Putting it all together

The GTK+ you get by default is conservative—boring, if you will. Let’s take a well known GNOME app as an example—gedit:

gedit styled with default GTK

Ok, this is too boxy for our taste? Let’s try to fix that. First we create a ~/.config/gtk-3.0/gtk.css file and write:

  /* Make some things rounded */
  .notebook,
  .button,
  .entry {
    border-radius: 3;
    border-style: solid;
    border-width: 1;
  }

Things start to look a bit better now:used CSS to round some things

Now let’s use some soft gradients to make things look smoother:

  .menubar,
  .toolbar {
    border-width: 0;
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (@bg_color),
                                     to (shade (@bg_color, 0.95)));
  }

  .button:hover,
  .menu:hover,
  .menubar:hover {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@selected_bg_color, 1.1)),
                                     color-stop (0.55, shade (@selected_bg_color, 1.0)),
                                     color-stop (0.55, shade (@selected_bg_color, 0.8)),
                                     to (shade (@selected_bg_color, 0.9)));
  }

Looks a bit better now? Hmm, but these scrollbars are still a bit ugly, let’s do something about them:

  /* Gradient for vertical scrollbars'
   * sliders, from left to right
   */
  .slider.vertical {
    background-image: -gtk-gradient (linear,
                                     left top, right top,
                                     from (mix (shade (@bg_color, 0.9), @selected_bg_color, 0.3)),
                                     to (mix (@bg_color, @selected_bg_color, 0.3)));
  }

  .slider.vertical:hover {
    background-image: -gtk-gradient (linear,
                                     left top, right top,
                                     from (shade (@selected_bg_color, 0.9)),
                                     to (@selected_bg_color));
  }

  /* Now horizontal scrollbars',
   * from top to bottom
   */
  .slider.horizontal {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@bg_color, 0.9)),
                                     to (@bg_color));
  }

  .slider.horizontal:hover {
    background-image: -gtk-gradient (linear,
                                     left top, left bottom,
                                     from (shade (@selected_bg_color, 0.9)),
                                     to (@selected_bg_color));
  }

  /* A soft radial pattern in the trough */
  .trough {
    background-image: -gtk-gradient (radial,
                                     center center, 0,
                                     center center, 1,
                                     from (@bg_color),
                                     to (shade (@bg_color, 0.8)));
  }

  GtkScrollbar.button {
    border-width: 0;

    /* Override any background with
     * a full transparent color
     */
    background-image: none;
    background-color: rgba (0, 0, 0, 0);
}

If we want the theme to be a bit more lively, we can also do:

  GtkButton:hover {
    transition: 100ms linear;
  }

  GtkCheckButton:active {
    transition: 250ms ease-in-out;
  }

So these states have a transition animation. After some other minor tweaks, we have something like this:improved look with gradients and other tweaks

With a relatively simple CSS file we’ve managed to improve the appearance of applications, but a lot more can be done in this brave new land.

If you are keeping an eye on gnome-shell development, either via compiling or through your favorite distro’s unstable packages, chances are you already have GTK+ 2.99.x, so do not hesitate to grab the resulting CSS file and start experimenting right away with it!

Carlos Garnacho is a GTK+ developer.

Discuss this story with other readers on the GNOME forums.

Soporte SyncTeX en GNOME

José Aliste: “La idea de este artículo es mostrar cómo se puede lograr la integración de diferentes aplicaciones en el escritorio GNOME de una manera sencilla mediante el uso de D-Bus. Me concentraré en el soporte SyncTeX incluido en Evince desde GNOME 2.32.”

La idea de este artículo es mostrar cómo se puede lograr la integración de diferentes aplicaciones en el escritorio GNOME de una manera sencilla mediante el uso de D-Bus. Me concentraré en el soporte SyncTeX incluido en Evince desde GNOME 2.32.

En primer lugar, explicaremos brevemente qué es SyncTeX, ya que muchos de ustedes probablemente nunca han oído hablar de esta tecnología. En el mundo académico, existe una herramienta llamada LaTeX que nos permite diseñar documentos de calidad profesional. LaTeX destaca particularmente por su facilidad y potencia para agregar fórmulas matemáticas frente a otras aplicaciones similares. Por desgracia, trabajar con LaTeX es un poco tedioso ya que se necesita componer un archivo fuente mezclando texto y comandos (similar en espíritu a un archivo html) y luego se utiliza LaTeX para transformar este archivo fuente en un documento (por lo general un archivo pdf). Esto provoca que la detección y corrección de errores pueda ser muy engorrosa en el caso de documentos de gran tamaño. Ahí es donde entra en juego SyncTeX. Los motores modernos de TeX permiten generar, además del documento PDF, un archivo synctex, que contiene información que ayuda a la sincronización entre el archivo de origen y el documento de salida. Editores y visores de archivos synctex pueden utilizar esta información para llevar a cabo búsquedas “hacia adelante” y “hacia atrás”, respectivamente, entre el archivo fuente y el documento de salida.

La búsqueda “hacia adelante” se refiere a la sincronización Editor->Visor, en la cual uno se encuentra editando una linea particular del texto fuente en Gedit y desea visualizar la salida que corresponde a dicha línea de texto en el documento de salida. Para esto, basta hacer Ctrl-Click sobre la línea de texto en Gedit para realizar una búsqueda hacia adelante.

Alternativamente, Ctrl-Click en Evince permite realizar una búsqueda “hacia atrás’’ que le permitirá ubicar rapidamente en Gedit la línea del archivo fuente que genera la parte del documento que nos interesa.

Entonces, ¿cómo funciona esta integración?

El principio básico es el uso de D-Bus, una tecnología que permite la comunicación entre procesos (IPC). D-Bus es bastante utilizado en el escritorio GNOME. Por ejemplo, D-Bus es parte fundamental de Telepathy (el protocolo de mensajería usado en el escritorio GNOME). La idea básica es que hay un proceso ‘deamon’, el D-Bus-daemon, al cual cada aplicación le envía mensajes. El D-Bus-daemon es el responsable de reenviar los mensajes a las aplicaciones correspondientes. La buena noticia es que GLib tiene soporte nativo para D-Bus, llamado GD-Bus, por lo que su uso en aplicaciones en GNOME es bastante simple.

Veamos más en detalle la forma en que Evince utiliza D-Bus. En primer lugar, Evince lanza un proceso por cada Documento. La razón de esto es que en el caso de que se produzca un problema en uno de los documentos abiertos por Evince, todos los restantes documentos estarán a salvo. El responsable de esto es una pequeña aplicación, ev-daemon, que se registra en D-Bus con el nombre ‘org.gnome.evince.Daemon.

Así, podemos enviar mensajes al ev-daemon a través de D-Bus para saber si un determinado documento PDF está actualmente abierto por Evince, e incluso, se puede pedir a ev-daemon que abra un nuevo documento. Además, se puede controlar remotamente las ventanas de Evince mediante D-Bus, llamando a los métodos D-Bus exportados por Evince y se puede hacer que reaccione ante los eventos de una ventana Evince, escuchando a las señales exportadas también por Evince.

Esto es un resumen muy condensado de como funciona el soporte SyncTeX en GNOME. Cada ventana Evince exporta vía D-Bus un método “SyncView” y una señal “SyncSource”. Así, cuando un usuario Ctrl-Click en Gedit (con el complemento gedit-synctex activado), el complemento llamará al método SyncView través de D-Bus, y los resultados de la búsqueda hacia adelante serán resaltados en Evince. Alternativamente, Evince emite una señal SyncSource cada vez que se hace Ctrl-Click en un documento que ha sido compilado con Synctex. Si uno se encuentra editando el archivo fuente con Gedit, entonces el complemento gedit-synctex, recibe la señal y destaca el resultado de la búsqueda hacia atrás en el archivo fuente.

Por el momento, las capacidades de control remoto de Evince se reducen sólo al soporte Synctex. Sin embargo, existen planes para introducir nuevas formas de controlar Evince a través de D-Bus. El más importante consiste en integrar Evince con Telepathy para así transformar el escritorio de GNOME para una alternativa gratuita a muchos sistemas de seminarios.

José Aliste es un desarrollador de GNOME.

Discuss this story with other readers on the GNOME forums.

SyncTeX support in GNOME

José Aliste explains how GNOME now makes it easier to correct errors in TeX files. D-Bus is involved!

 

The idea of this article is to show how you can achieve cool integration between different applications in the GNOME Desktop in a simple way by using D-Bus. I will concentrate on the SyncTeX support included since GNOME 2.32.

First, I need to give some context about SyncTeX, since many of you have probably never heard of this technology before. In the academic world, there is a tool called LaTeXwhich allows us to beautifully typeset professional documents. It is particularly simpler to add mathematical formulas in LaTeX than in other apps. Unfortunately, LaTeX is a little tedious, because you need a source file full of commands (similar in spirit to a HTML file) and then you use LaTeX to transform this source file into a document (usually a PDF file). So you can imagine that, when processing large documents, detecting and correcting errors can be quite cumbersome.

That’s where SyncTeX enters into play. Modern TeX engines allow you to, in addition to the PDF file, produce a synctex file, which contains information that helps you synchronize between the source file and the output document. Viewers and editors can use this information to perform forward and backward searches between the source and the document.

“Forward” search means that you are editing one particular chunk of text in your editor and you want to look at how the output corresponding to this chunk will look in the document. To do this, you Ctrl-click over the line of text in Gedit to perform a “Forward” search.

Alternatively, if you are looking at the PDF document with Evince, you Ctrl-click to perform a “backward search” that will allow you to look in Gedit and see the line that generated the part of the document you are interested in.

So how does this integration work?

The basic principle is to use D-Bus, which is a technology which allows inter process communication (IPC). D-Bus is in heavy usage along the complete GNOME Desktop. For instance, DBUS is heavily used in Telepathy (the messaging framework of the GNOME Desktop). The basic idea behind it is that there is a daemon process, the dbus-daemon, and each application connects to the dbus-daemon and sends messages to it. The dbus-daemon is then responsible for forwarding messages to the corresponding applications. The good news is that GLib has now native support for DBus, called GDBus. so it is ready to use in GNOME apps.

Let us dig into how Evince uses D-Bus. First, Evince spawns one process for each Document. This is to ensure that, even if one Document makes Evince crash, all the other Documents are safe. This is because there is a small app called ev-daemon which registers itself in D-Bus with the easy-to-remember name ‘org.gnome.evince.Daemon’.

So you can send messages to the ev-daemon through D-Bus to know whether a given PDF document is currently opened by Evince, and you can even ask the ev-daemon to spawn an instance for you. Next, you can remote-control Evince windows by calling D-Bus methods on the D-Bus object of the given window, and you can react to events in the Window by listening to signals on the same object.

So this is basically how SyncTeX support in GNODME works. Each Evince window declares a D-Bus method “SyncView” and a D-Bus signal “SyncSource”. Thus, when you Ctrl+click in Gedit with the gedit-synctex plugin enabled, the plugin calls the SyncView method through D-Bus, and you get the results of the forward search highlighted in Evince. Conversely, Evince emits a SyncSource signal whenever you Ctrl+click in the document that support synctex. If you are editing the corresponding file in Gedit, then Gedit was already listening for the SyncSource signal, and so it reacts by highlighting the corresponding source chunk in the file.

At the moment, only SyncTeX D-Bus control is implemented in Evince. However, we plan to introduce new ways of controlling Evince via D-Bus, most notably to control an Evince window through Telepathy D-Bus tubes, which will basically transform the GNOME Desktop into a free alternative to many Web-based seminar systems out there.

José Aliste is a GNOME developer.

Discuss this story with other readers on the GNOME forums.

Pasado, Presente y Futuro de GNOME HISPANO

José María Casanova y Juanjo Marín: “Con el paso del tiempo esta iniciativa se ha ido consolidando hasta llegar a ser una asociación que se reune anualmente en GUADEC HISPANA para compartir en español sus experiencias, avances y proyectos en GNOME.”

Resumen

GNOME HISPANO surge en sus comienzos como un punto de encuentro de las personas de habla hispana con interés en el proyecto GNOME. Con el paso del tiempo esta iniciativa se ha ido consolidando hasta llegar a ser una asociación que se reune anualmente en GUADEC HISPANA para compartir en español sus experiencias, avances y proyectos en GNOME.

Los inicios

Desde sus inicios en 1997, el proyecto GNOME, liderado por Miguel de Icaza y Federico Mena Quintero, ha tenido como objetivo el desarrollo de un entorno de escritorio completamente Libre. A pesar de que el proyecto tiene una proyección internacional y la lengua natural de trabajo es el inglés, el hecho de que sus dos fundadores fueran hispanohablantes nativos ayudó, sin duda, a que en el 2000 surgiera el germen de GNOME HISPANO.

El origen de GNOME HISPANO data del 14 de diciembre del 2000, cuando Rodrigo Moya envió un mensaje a la lista de distribución gnome-desarrollo titulado “objetivos”, donde se planteaba, junto con otras personas más “promocionar el proyecto GNOME en España y Latino América” y para ello lo primero que pensaron “que se debería hacer es conseguir que haya un grupo de programadores GNOME formados y que conozcan la programación de este escritorio.”

En sus inicios, en la lista participaron Álvaro del Castillo, Carlos Perelló, Juan Tomas García, Ismael Olea, Álvaro López Ortega, Chema Celorio, Germán Poo, Roberto Majadas, entre otros muchos. La primera vez que aparece el término GNOME HISPANO para referirse al grupo se dio con Álvaro del Castillo el 6 de febrero del 2001. El nombre surge como propuesta en medio de una discusión que tenía como objetivo definir cual era el mejor nombre para el grupo. Finalmente el nombre de GNOME HISPANO es aceptado como denominación oficial, de tal forma que pueda abarcar a la gente de habla hispana de los dos lados del atlántico.

Desde el 2001, se empezó a presentar, a través de la web gnomehispano, información en español relacionada con GNOME con el objetivo de acercar el proyecto a los hispanohablantes. La comunidad fue creciendo indistintamente con gente de habla hispana de distintas nacionalidades. En este periodo se creó la sección GNOME en el weblog tecnológico Barrapunto, la versión hispana de dotslash.com.

El nexo de unión más importante desde los inicios siempre ha sido el canal #gnome-hispano en la red de IRC GimpNet, donde el idioma empleado es el español y donde, se puede encontrar a la mayor parte de los miembros de la comunidad. Este medio fue utilizado para impartir distintas charlas y tutoriales a lo largo del tiempo. Otro punto de encuentro es Planeta GNOME Hispano donde se pueden encontrar contenidos sindicados de los blogs de los gnomeros, a similitud de Planet GNOME.

Uno de los principales esfuerzos realizados a lo largo de todo este tiempo, ha sido hacer accesible GNOME a los usuarios hispanohablantes. La labor de los traductores, que han logrado que GNOME esté disponible en una única traducción al castellano para todos los hablantes de español, ha sido muy importante.

Durante este periodo se realizaron múltiples actividades para difundir GNOME y fomentar su desarrollo en las universidades. GNOME HISPANO ha participado activamente con la comunidad internacional de GNOME, y en el 2002 colaboró en la organización de la III GUADEC (GNOME Users and Developers European Conference) en Sevilla. Allí el grupo HISPANO organizó una sesión paralela de ponencias en español.

La Primera GUADEC Hispana y la Asociación

En mayo de 2004, bajo el auspicio de la Junta de Extremadura, se produjo un punto de inflexión con la primera GUADEC Hispana organizada en Almendralejo.

Aunque GNOME Hispano había participado como grupo en múltiples eventos y congresos relacionados con el Software Libre, es en esta primera GUADEC Hispana que se celebra el primer evento centrado exclusivamente en cubrir la temática de interés del grupo. Esta edición reunió por primera vez a los miembros de GNOME Hispano de España.

En esta reunión surgió la idea de formalizar la figura legal de GNOME HISPANO, y se planteó la posibilidad de crear una asociación sin ánimo de lucro a nivel del estado español, con el objetivo de apoyar el proyecto GNOME.

Se elaboraron los estatutos y se firmaron junto con el acta de constitución el 19 de Septiembre de 2004, con lo cual se creó la asociación GNOME Hispano. La firma tuvo lugar en Pamplona y la asociación tuvo como fundadores a Álvaro del Castillo (Madrid), José Ángel Díaz (Extremadura), Rodrigo Moya (Navarra), José María Casanova (Galicia), Alberto Ruíz (Canarias), Álvaro López (Madrid) y Juan Jesús Ojeda (Canarias).

El proceso de constitución de la asociación duró un largo tiempo debido a la complejidad intrínseca de gestionar a un gran grupo de personas a lo largo de toda la geografía española. Finalmente se realizó la inscripción y su sede social se definió en la Faculta de de Informática de la Universidade da Coruña. La inscripción en el registro estatal de asociaciones se realizó oficialmente el 11 de mayo de 2005, con lo cual, tras un año, GNOME HISPANO existía como asociación sin ánimo de lucro.

La actualidad

Desde su constitución como asociación, el evento principal de GNOME HISPANO ha sido siempre la colaboración en la organización de la GUADEC HISPANA, así como apoyar eventos relacionados con GNOME, en especial la celebración de hackfests tanto internacionales como locales. La asociación concibió desde sus inicios ser una suerte de facilitador para que sus socios puedan llevar a cabo sus proyectos, ayudando a mantener GNOME HISPANO como grupo con carácter internacional e integrador entre España y Latinoamérica.

En la organización de la II GUADEC HISPANA, que tuvo lugar en la Universidade da Coruña en mayo de 2005, se hizo un importante esfuerzo para contar con la participación de la comunidad Hispanoamericana como Germán Poo (Chile), Fernando San Martín (Chile), Ariel Ríos (México), Diego Torres (Argentina) y Marcos Mazoni (Brasil). En esta edición, se buscó acercar las fechas de GUADEC-ES a las de GUADEC para facilitar las posibilidades de viajar a los ponentes y participantes de América. Se recuerda además el trabajo de grupos muy activos como GNOME CHILE.

En este periodo se realizó el primer encuentro de traductores en Mérida, al que asistieron Javier Serrador, Jorge González, Juan Rafael García, Lucas Vieites, Darío Rapisard y José Ángel Díaz. Y se tomó la determinación de estandarizar el sistema de traducción de GNOME y proponer la creación de una herramienta/editor de apoyo a la traducción.

El siguiente gran evento en el que participó activamente GNOME HISPANO fue en la VII GUADEC, que se organizó en Vilanova i la Geltrú, Cataluña, y que supuso la “coincidencia planificada”, en el mismo espacio y tiempo, de la GUADEC y GUADEC-ES. De esta forma los asistentes pudieron disfrutar de un gran evento con la gran participación de referentes del mundo hispano. En esta ocasión la asociación se responsabilizó de toda a gestión financiera así como la relación con los patrocinadores y participantes para el evento.

Posteriormente, con la colaboración de GPUL, se organizó la primera edición de GUADEMY en A Coruña. La GUADEMY representó una experiencia muy positiva al reunir a los desarrolladores de GNOME y KDE, quienes compartieron experiencias e intercambiaron opiniones sobre el estado de los proyectos de escritorio libres más importantes hoy en día. El evento fue referenciado a nivel mundial y se organizó nuevamente otro, con la colaboración de PoLinux en Universidad Politécnica de Valencia, en el 2008.

Las siguientes ediciones de la GUADEC-ES se celebraron en Granada (Andalucía) con la colaboración de GCUBO, en las instalaciones de la Universidad de Granada, y en Fuenlabrada (Madrid) con la colaboración de GSyC/LibreSoft en la Universidad Rey Juan Carlos (URJC).

En el 2009 coincidieron la GUADEC-ES y otro evento de carácter internacional, el Desktop Summit de Gran Canaria. Este evento fue la primera ocasión en el que los congresos de los mayores proyectos de escritorio libre, KDE y GNOME, se unificaron en un solo evento para favorecer la colaboración entre ambos. Creemos que el éxito de la GUADEMY favoreció la celebración del Desktop Summit.

La última edición de la GUADEC HISPANA (GUADEC-ES) se celebró en A Coruña, organizada por GPUL en colaboración con GNOME HISPANO. Es pertinente mencionar que el tiempo de organización de todo el evento se realizó en sólo dos meses dado que inicialmente se pensó realizarlo en Chile, pero por los daños causados por el terremoto en ese lugar, se decidió cambiar el evento A Coruña.

La celebración consecutiva de GUADEC-ES desde el 2004 representa un éxito para nuestra comunidad y nos sirve para comprobar la buena salud del proyecto GNOME a lo largo de los años. También estamos orgullosos haber apoyado hackfests y otros eventos relacionados con GNOME todos estos años.

Podemos constatar como grupo, que con la colaboración de distintas asociaciones e instituciones, hemos logrado consolidar esta reunión de amigos de GNOME que tienen en común el español como lengua.

Futuro

Los objetivos que nos planteamos como asociación dentro de un mundo globalizado, pasan por acercar a nuestro entorno a futuros desarrolladores mostrándoles las posibilidades que ofrece la comunidad de GNOME para crear software libre de calidad y útil para todos los usuarios.

Algunos de los retos que debemos afrontar son los siguientes:

  • ¿Qué debemos/podemos aportar a la sociedad como asociación?
  • ¿Cómo podemos atraer a nuevas generaciones al proyecto GNOME?
  • ¿Qué respuesta podemos dar a la administración pública y a la empresa privada?

José María Casanova, Igalia: jmcasanova@igalia.comJuanjo Marínjuanj.marin@andaluciajunta.es.

Discuss this story with other readers on the GNOME forums.

The Past, Present, and Future of GNOME HISPANO

José María Casanova and Juanjo Marín discuss the Spanish-language GNOME community.

GNOME HISPANO started as a meeting point for Spanish-speaking people with a common interest in the GNOME project. Over time, we’ve been consolidating under this name into a group that meets annually at the HISPANIC GUADEC (GUADEC-ES) to share our experiences, developments and projects about GNOME.

The beginnings

Since its inception in 1997, the GNOME project, led by Miguel de Icaza and Federico Mena Quintero, focused on developing a completely free desktop environment. Although the GNOME project has an international scope and the natural language for project work is English, the fact that its two founders were native Spanish speakers no doubt helped plant, in 2000, the seed of GNOME HISPANO.

GNOME HISPANO’s origin can be dated to 14th December 2000, in a Rodrigo Moya’s message to the gnome-desarrollo (development) mailing list entitled “Objectives”. He asked for a group of people for “promoting the GNOME project in Spain and Latin America” and for that, “the first thing we think we should do is to prepare skilled programmers who know how to program this desktop environment.”

In the beginning, the people were Álvaro del Castillo, Carlos Perelló, Juan Tomas García, Ismael Olea, Alvaro Lopez Ortega, Chema Celorio, Germain Poo, Roberto Majadas, among many others. The first appearance of the GNOME HISPANO term to refer to the group is in the hands of Alvaro del Castillo on February 6, 2001. This comes as a proposal in the midst of a discussion aimed at defining what was the best name for the group. Finally “GNOME HISPANO” was accepted as the official name, in order to cover the Spanish-speaking people from both sides of the Atlantic.

In 2001, we began collecting information related to GNOME in Spanish and bringing it to the Spanish community through our web site. The first community members were Spanish-speaking people with different nationalities. During this period, the GNOME section in the technology weblog Barrapunto, the Spanish-speaking version of Slashdot, was created.

The most important meeting point, since its inception, has always been the #gnome-hispano channel on the GIMPNet IRC network, where the language is actually Spanish. Today you can usually find most of the members of the community there. We’ve used this medium to deliver various lectures and tutorials over time. Another meeting place is the planet GNOME Hispano, where we syndicate content from the blogs of the gnomeros, similar to Planet GNOME.

We’ve put a lot of effort into making GNOME accessible to Spanish-speaking users. To accomplish this goal, the work of translators has been very important. They’ve managed to translate GNOME into Spanish, with only one neutral GNOME translation for all Spanish speakers.

During all this period we have made numerous efforts to disseminate and promote the development of GNOME in universities.

GNOME Hispano has been actively involved with the GNOME community, and already in 2002 helped organize the III GUADEC (GNOME Users and Developers European Conference) in Seville. There, the Hispanic group organized a parallel session with presentations in Spanish.

First GUADEC Hispana and the Association

In May 2004, under the auspices of the Junta de Extremadura, came a turning point with the first HISPANIC GUADEC organized in Almendralejo.

Although GNOME HISPANO as group had participated in multiple events and conferences related to Free Software, this GUADEC HISPANA was the first event focused exclusively on covering our main topic of interest. This was the first meeting of the GNOME Hispano members from Spain.

At this meeting, an idea came up: formalizing the legal definition of GNOME HISPANO and the possibility of creating a Spanish nonprofit organization, with the aim of supporting the GNOME project.

Its statutes were drawn up and the certificate of incorporation was signed on September 19, 2004, and we created the GNOME HISPANO.

The signing took place in Pamplona and the association had as founders Alvaro del Castillo (Madrid), José Ángel Díaz (Extremadura), Rodrigo Moya (Navarra), Jose Maria Casanova (Galicia), Alberto Ruiz (Canary Islands), Alvaro Lopez (Madrid) and Juan Jesus Ojeda (Canary Islands). The constitution of the association lasted a long time, due to the complexity for managing a large group of people along the Spanish geography. The legal address: the Faculty of Informatics, Universidade da Coruña. The registration of the the association was officially made May 11, 2005, so after a year, GNOME HISPANO had the legal status of a national nonprofit association.

Recently

Since its incorporation as an association, the main event of GNOME HISPANO has always been organizing the HISPANIC GUADEC (GUADEC-ES) and supporting other events related to GNOME, especially international and local hackfests. From the start, we started the association as a way to make it easier for their members to carry out projects and maintaining GNOME HISPANO as a consistent group with international and integrative values between Spain and Latin America.

For the organization of the 2nd HISPANIC GUADEC, which took place in Universidade da Coruña in May 2005, there was a major effort to involve the Hispanic community as Poo Germain (Chile), Fernando San Martín (Chile), Ariel Rios (Mexico), Diego Torres (Argentina) and Marcos Mazoni (Brazil). For this year’s conference, we tried to bring the dates of GUADEC-ES close to GUADEC to facilitate travel opportunities for American presenters and participants. We can’t forget to mention the work of very active groups such as GNOME CHILE.

At this point, translators met for the first time. Javier Serrador, Jorge González, Juan Rafael García, Lucas Vieira, Dario Rapisarda and Jose Angel Diaz met in Mérida. And they decided to standardize the GNOME translation system and propose the creation of a tool/editor for translation support.

The next big event where GNOME HISPANO was actively involved was the organization of the 7th GUADEC, which was held in Vilanova i la Geltrú, Catalonia. This time, GUADEC and GUADEC-ES co-occurred in the same space and time. This allowed us to enjoy a great event, with strong participation from the leaders of the Hispanic world. On this occasion, the association managed all the financial management of the event, and the relationship with sponsors and participants.

Later, with the collaboration of GPUL, the first edition of GUADEMY was organized in A Coruña. The GUADEMY represented a very positive experience to bring the KDE and GNOME developers to share experiences and exchange views on the status of critical free desktop projects. People referred to this event all over the world, and another edition was organized again with the collaboration of PoLinuX in the Universidad Politécnica de Valencia in 2008.

The following editions of the GUADEC-ES were held in Granada (Andalucía) in collaboration with GCubo, in the University of Granada. The next one was in Fuenlabrada (Madrid) in collaboration with GSyC/LibreSoft at the Universidad Rey Juan Carlos (URJC).

It was not until 2009 that GUADEC and GUADEC-ES coincided again at another international event: the Gran Canaria Desktop Summit. This event was the first occasion in which the main congresses of the largest free desktop, KDE and GNOME, were unified in a single act to encourage collaboration. We believe that the success of the GUADEMY contributed to make the Desktop Summit a reality.

The latest edition of the HISPANIC GUADEC (GUADEC-ES) was held in A Coruña, organized with collaboration of GPUL. It is noteworthy organizers only had two months to plan the event, since they’d planned to hold it in Chile and then had to move it due to earthquake damage.

Holding all these consecutive GUADEC-ES conferences since 2004 represents a success for our community, and helps us to check the health of the GNOME project over the years. We also are proud of supporting hackfests and other GNOME-related events all these years.

We can see that, as a group, with collaboration of various associations and institutions, we could consolidate this meeting of GNOME friends who share the Spanish language.

Future

The objective we have as a group, within a globalized world, is bringing our desktop platform to future developers, by showing them the possibilities the GNOME community offers them: to create high-quality free software useful to all users.

Some challenges we face are:

  • How can we contribute to the society as a collective?
  • How can we attract new generations to the GNOME project?
  • How can we respond to government and business needs?

José María Casanova of Igalia is at jmcasanova@igalia.comJuanjo Marín is at juanj.marin@andaluciajunta.es.

Discuss this story with other readers on the GNOME forums.