Category Archives: Programming

GObject design pattern: attached class extension

I wanted to share one recurrent API design that I’ve implemented several times and that I’ve found useful. I’ve coined it “attached class extension”. It is not a complete description like the design patterns documented in the Gang of Four … Continue reading

Posted in Amtk, gspell, GtkSourceView, Library development, Programming, Tepl | 3 Comments

Re: Consider the maintainer

I’ve read this LWN article: Consider the maintainer. It was a great read, and I want to share my thoughts, from my experience on being a maintainer (or helping the maintenance) of several GNOME modules. GNOME has a lot of … Continue reading

Posted in GNOME LaTeX, GtkSourceView, Library development, Me Myself and I, Programming, Thoughts | 5 Comments

Smooth transition to new major versions of a set of libraries

With GTK+ 4 in development, it is a good time to reflect about some best-practices to handle API breaks in a library, and providing a smooth transition for the developers who will want to port their code. But this is … Continue reading

Posted in GtkSourceView, Library development, Programming, Thoughts | 7 Comments

Thoughts on the Linux Mint X-Apps forks

You may be aware that Linux Mint has forked several GNOME applications, either directly from GNOME (Totem -> Xplayer, Evince -> Xreader, Eye of GNOME -> Xviewer), or indirectly via MATE (gedit -> pluma -> XEd). GNOME is like the … Continue reading

Posted in gedit, gspell, GtkSourceView, Library development, Programming, Thoughts | 12 Comments

Doing things that scale

In the software world, and with internet, we can do a lot of things that scale. Answering a user question on IRC doesn’t scale, only one person and a few lurkers will benefit from it. Answering a user question on … Continue reading

Posted in Library development, Programming, Thoughts | Comments Off on Doing things that scale


I repeatedly see other people doing the mistake, so a little reminder doesn’t hurt. API: Application Programming Interface ABI: Application Binary Interface The difference can be easily explained by knowing what to do for some code when the API or … Continue reading

Posted in Library development, Programming | 6 Comments

Libtool convenience library to unit test private functions

Only the public API of a library is exported, so when a program is dynamically linked to the DSO (Dynamic Shared Object), it can only use the public functions. So how do you unit test the private classes of your … Continue reading

Posted in gspell, GtkSourceView, Library development, Programming | Comments Off on Libtool convenience library to unit test private functions

Changing quickly between a final and derivable GObject class

When doing code refactorings, it is sometimes desirable to change between a final and derivable GObject class. So it is important that that operation can be done quickly, as every other small refactorings that you usually do in your code. … Continue reading

Posted in Programming | 6 Comments

Object-oriented design best practices

Here is another book review, this time about object-oriented design. Programming Best Practices We can learn by our own experience, we can use our common sense, we can learn by more experienced developers when contributing to an existing project. But … Continue reading

Posted in book reviews, Programming | 1 Comment

{specialized, general-purpose} × {text editors, IDEs}

Some thoughts about text editors, IDEs, specialized or general-purpose applications. Several languages Other tasks Plugins Specialized text editor No No ? General-purpose text editor Yes No Yes Specialized IDE No Yes ? General-purpose IDE Yes Yes Yes The above table … Continue reading

Posted in Programming, Thoughts | 14 Comments