Greetings from the free side / T'as le bonjour du libre !

Aller au contenu | Aller au menu | Aller à la recherche

lundi 26 novembre 2007

Tacle en règle (?)

Si vous ne l'avez pas encore lu, lisez le dernier billet de Murray Cumming. J'attends. Bon, il semble qu'il y a réellement un problème entre ces deux là, et le fait que Jeff soit candidat au Foundation Board justifie un peu ce message, bien que la forme est assez "extrême". Ce qui est moins justifié c'est que Murray dit "des gens", sans qu'on sache combien ils sont à trouver que Jeff fait du mauvais boulot, et surtout, que les commentaires soient fermés (ce qui j'imagine va créer un droit de réponse par blog interposé).

Ma question : certains d'entre vous connaissent bien l'un ou l'autre (voire les deux) d'entre ces messieurs (Dodji, Vincent, les autres ?), avez vous un point de vue sur la question, un éclairage particulier ? N'étant pas membre, je n'ai pas le droit de vote à cette élection, donc sur ce plan là je suis neutre. Mais j'aimerais savoir comment l'abcès a pu grossir à ce point avant qu'il ne crève. Le logiciel libre ce n'est pas le monde des bisounours, certes, mais comment peut on en arriver là ? Que les propos de Murray soient justifiés ou pas, je suis choqué...

mercredi 30 mai 2007

Quoi de neuf docteur ?

Pfff...  Ça fait un moment que je n'ai pas des masses avancé sur GNOME...  J'ai bien essayé de relancer les GNOME Goals, mais c'est un peu dur de créer une synergie, et j'ai eu pas mal de pépins au moment où je l'ai fait. Par ailleurs, ce bug m'empêche d'ouvrir un nouveau GNOME Goal. Alors la situation est pour ainsi dire bloquée, et dans la liste des prétendants, il n'y en a pas vraiment qui soient aussi plaisant ni aboutis (ni simples, d'ailleurs).

Ensuite, toujours mes problèmes de redirection mail, dûs à ulimit.com, ce qui fait que je n'ai reçu aucune des réponses à mes questions... Je n'ai reçu aucun des mails envoyé sur cette adresse pendant 12 jours ! Bon, je suis allé voir les archives mail en ligne, mais c'est un peu lourd (impossible de répondre à un commentaire précis).

Ma copine s'est aussi installée à la maison, alors ça bouffe pas mal de temps (mais je ne m'en plains pas ;-) ).

Enfin, pas mal de boulot en ce moment. Mais comme c'est intéressant, je ne me plains pas. C'est d'ailleurs l'objet de mon prochain billet.

jeudi 24 mai 2007

Transmission, le client bittorrent pour GNOME

Le mois dernier, Adam avait brêvement parlé de Transmission, un client bittorrent basé sur GTK. Commençant à être passablement échauffé par les nombreuses imperfections de l'interface du client bittorrent officiel, je me suis laissé tenter. Grand bien m'en a pris ! J'en suis presque à me demander pourquoi il ne fait pas partie du bureau GNOME. D'ailleurs serait-ce possible, ou le spectre de l'illégalité dans certains pays poserait-t-il problèmes. Bref.

Si vous cherchez un client bittorrent sous GNOME, n'allez pas plus loin, Transmission est celui qu'il vous faut !

Je vous rappelle donc comme il l'a précédemment annoncé que Transmission pour Mandriva 2007.1 est disponible dans la source contrib/backports.

mardi 24 avril 2007

GNOME Goal: Install theme-friendly icons

The "Install theme-friendly icons" GNOME goal is currently going on. This one had previously been announced, and partially completed, but the guidelines were buggy. So if you are a brave hacker-wanabe, and you are interested in helping the GNOME Desktop to improve its consistency, then here's a task for you !

Spread the word about this goal !

Hopefully, Brian Pepple has started to squash these dirty bugs, but he definitely needs your help ! On the best case, a simple 3 lines patch will be enough, so you can learn how to submit your first patch. On the (other) best case, the whole task needs to be completed, and you can then learn how to make an application behave nice with icon themes, so that a theme can override the application's icon.

So thank you Brian, and if you, reader, have some spare time, help Brian to improve consistency in the GNOME Desktop !

lundi 16 avril 2007

Re: a way to get more GNOME hackers

Alberto, here are some hints if you want to improve this part of GNOME (ie, reduce the technical level needed by newcommers to just become jhbuild users).

- Create a standard .jhbuildrc for newbies.
Look at http://live.gnome.org/JhbuildDependencies
But a jhbuildrc is a bit distro dependant... For example, I maintain the Mandriva subsection:
http://live.gnome.org/JhbuildDependencies/MandrivaLinux

- Create a metapackage gnome-jhbuild-essentials:
This may not work, as dependencies vary from each GNOME version to build. You'll need a gnome-2.16-jhbuild-essentials and a gnome-2.18-jhbuild-essentials.

- Create a page on the wiki for newcomers, explaining howto setup the enviroment, play with module sets, and create a patch.
I was working on a new jhbuild guide this some time ago, but didn't finish it, so you can modify it if you want.
For patches, a patch submission guide exists, but needs some update for the cvs->svn migration:
Relevant content of Elijah's guidelines need also to be imported, as this kind of info should now be centralized in the wiki (Elijah was ok with this, I talked to him about that at last GUADEC).

Check also:
http://live.gnome.org/CategoryJhbuild
http://live.gnome.org/CategoryJhbuildIssues

Enjoy ;-)

samedi 7 avril 2007

Number of the day: 185 !

This is the number of lines in the code shipped with GNOME 2.18 that use a deprecated symbol in GLib. The winner, by far, is g_strcasecmp.

at-spi/test/test-simple.c:766:        if (!g_strcasecmp (argv [i], "--poke"))
evolution-data-server/calendar/libecal/e-cal-time-util.c:425: * This is analogous to g_date_set_time() but takes the timezone into account.
evolution-data-server/libedataserver/e-memory.c:1219:    GMemChunk *gmc;
evolution-data-server/libedataserver/e-memory.c:1273:    gmc = g_mem_chunk_new("memchunk", CHUNK_SIZE, CHUNK_SIZE*CHUNK_COUNT, G_ALLOC_AND_FREE);
evolution-data-server/libedataserver/e-memory.c:1275:        mem = g_mem_chunk_alloc(gmc);
evolution-data-server/libedataserver/e-memory.c:1277:            g_mem_chunk_free(gmc, mem);
evolution-data-server/libedataserver/e-memory.c:1280:    g_mem_chunk_destroy(gmc);
evolution-data-server/libedataserver/e-memory.c:1293:    gmc = g_mem_chunk_new("memchunk", CHUNK_SIZE, CHUNK_COUNT*CHUNK_SIZE, G_ALLOC_ONLY);
evolution-data-server/libedataserver/e-memory.c:1295:        mem = g_mem_chunk_alloc(gmc);
evolution-data-server/libedataserver/e-memory.c:1298:    g_mem_chunk_destroy(gmc);
gail/tests/testlib.c:116:      if (g_strcasecmp(name, gtk_widget_get_name(GTK_WIDGET (widget))) == 0)
gail/tests/testlib.c:139:          if (g_strcasecmp(name, gtk_widget_get_name(GTK_WIDGET (widget))) == 0)
gail/tests/testlib.c:185:  if (accessible_name && (g_strcasecmp(name, accessible_name) == 0))
gail/tests/testlib.c:205:      if (accessible_name && (g_strcasecmp(name, accessible_name) == 0))
gail/tests/testtable.c:264:    g_string_sprintf(out_desc, "new column description %d", i);
gail/tests/testtable.c:295:    g_string_sprintf(out_desc, "new row description %d", i);
gail/tests/testtextlib.c:543:      if (g_strcasecmp(param_string2, "ATK_XY_SCREEN") == 0)
gail/tests/testtextlib.c:551:      else if (g_strcasecmp(param_string2, "ATK_XY_WINDOW") == 0)
gail/tests/testtextlib.c:573:      if (g_strcasecmp(param_string3, "ATK_XY_SCREEN") == 0)
gail/tests/testtextlib.c:582:      else if (g_strcasecmp(param_string3, "ATK_XY_WINDOW") == 0)
gail/gail/gailtextview.c:1075:      if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_LEFT_MARGIN)))
gail/gail/gailtextview.c:1078:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_RIGHT_MARGIN)))
gail/gail/gailtextview.c:1081:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_INDENT)))
gail/gail/gailtextview.c:1084:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_PIXELS_ABOVE_LINES)))
gail/gail/gailtextview.c:1087:      else if (!g_strcasecmp(name, atk_text_attribute_get_name (ATK_TEXT_ATTR_PIXELS_BELOW_LINES)))
gail/gail/gailtextview.c:1090:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP)))
gail/gail/gailtextview.c:1093:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_SIZE)))
gail/gail/gailtextview.c:1096:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_RISE)))
gail/gail/gailtextview.c:1099:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_WEIGHT)))
gail/gail/gailtextview.c:1102:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_BG_FULL_HEIGHT)))
gail/gail/gailtextview.c:1105:                   (g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_BG_FULL_HEIGHT, 0))),
gail/gail/gailtextview.c:1109:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_LANGUAGE)))
gail/gail/gailtextview.c:1112:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_FAMILY_NAME)))
gail/gail/gailtextview.c:1115:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_EDITABLE)))
gail/gail/gailtextview.c:1118:                   (g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_EDITABLE, 0))),
gail/gail/gailtextview.c:1122:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_INVISIBLE)))
gail/gail/gailtextview.c:1125:                   (g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_EDITABLE, 0))),
gail/gail/gailtextview.c:1129:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_UNDERLINE)))
gail/gail/gailtextview.c:1133:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_UNDERLINE, j)))
gail/gail/gailtextview.c:1141:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_STRIKETHROUGH)))
gail/gail/gailtextview.c:1144:                   (g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_STRIKETHROUGH, 0))),
gail/gail/gailtextview.c:1148:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_BG_COLOR)))
gail/gail/gailtextview.c:1158:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_FG_COLOR)))
gail/gail/gailtextview.c:1168:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_STRETCH)))
gail/gail/gailtextview.c:1172:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_STRETCH, j)))
gail/gail/gailtextview.c:1180:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_JUSTIFICATION)))
gail/gail/gailtextview.c:1184:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, j)))
gail/gail/gailtextview.c:1192:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_DIRECTION)))
gail/gail/gailtextview.c:1196:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, j)))
gail/gail/gailtextview.c:1204:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_VARIANT)))
gail/gail/gailtextview.c:1208:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_VARIANT, j)))
gail/gail/gailtextview.c:1216:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_WRAP_MODE)))
gail/gail/gailtextview.c:1220:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_WRAP_MODE, j)))
gail/gail/gailtextview.c:1228:      else if (!g_strcasecmp (name, atk_text_attribute_get_name (ATK_TEXT_ATTR_STYLE)))
gail/gail/gailtextview.c:1232:              if (!g_strcasecmp (value, atk_text_attribute_get_value (ATK_TEXT_ATTR_STYLE, j)))
gail/gail/gailtextcell.c:261:          g_strcasecmp (text_cell->cell_text, new_cache))
gail/gail/gailcell.c:400:      if (!g_strcasecmp (((ActionInfo *)(list_node->data))->name, action_name))
gconf/gconf/testclient.c:93:  loop = g_main_new(TRUE);
gconf/gconf/testclient.c:97:  g_main_run(loop);
gconf/gconf/testclient.c:101:  g_main_destroy(loop);
gnome-applets/gswitchit/gswitchit-applet.c:530:                      g_strcasecmp ("XKB",
gnome-control-center/archiver/archive.c:380:    g_tree_traverse (archive->locations,
gnome-control-center/archiver/archive.c:720:    g_tree_traverse (archive->locations,
gnome-control-center/capplets/url-properties/url-properties.c:192:      if (!g_strcasecmp(key, "default"))
gnome-control-center/capplets/url-properties/url-properties.c:244:    if (!g_strcasecmp(prot, col1)) {
gnome-control-center/capplets/url-properties/url-properties.c:265:    if (!g_strcasecmp(prot, col1)) {
gnome-control-center/capplets/background/gnome-wp-xml.c:33:    if (!g_strcasecmp ((gchar *)prop, "true") || !g_strcasecmp ((gchar *)prop, "1")) {
gnome-control-center/libslab/document-tile.c:149:    g_date_set_time (time_stamp, modified);
gnome-media/cddb-slave2/iochannel.c:62:      if ((error = g_io_channel_write(channel, ptr, nleft, &nwritten))
gnome-media/cddb-slave2/iochannel.c:119:      if ((error = g_io_channel_read(channel, ptr, nleft, &nread))
gnome-menus/libmenu/canonicalize.c:238:  if (allow_missing_basename && retval == NULL)
gnome-netstatus/src/netstatus-sysdeps.c:547:  if (g_strncasecmp (iface, "an",   2) &&
gnome-netstatus/src/netstatus-sysdeps.c:548:      g_strncasecmp (iface, "wi",   2) &&
gnome-netstatus/src/netstatus-sysdeps.c:549:      g_strncasecmp (iface, "ath",  3) &&
gnome-netstatus/src/netstatus-sysdeps.c:550:      g_strncasecmp (iface, "ndis", 4) &&
gnome-netstatus/src/netstatus-sysdeps.c:551:      g_strncasecmp (iface, "ipw",  3) &&
gnome-netstatus/src/netstatus-sysdeps.c:552:      g_strncasecmp (iface, "iwi",  3) &&
gnome-netstatus/src/netstatus-sysdeps.c:553:      g_strncasecmp (iface, "acx",  3))
gnome-netstatus/src/netstatus-sysdeps.c:556:  if (g_strncasecmp (iface, "an", 2) == 0)
gnome-nettool/src/callbacks.c:236:        if (g_strcasecmp (text, "") != 0)
gnome-nettool/src/callbacks.c:246:        if (g_strcasecmp (text, "") != 0)
gnome-session/gnome-session/startup-programs.c:137:            if (g_strcasecmp (only_show_in_list[i], "GNOME") == 0)
gnome-session/gnome-session/startup-programs.c:160:            if (g_strcasecmp (not_show_in_list[i], "GNOME") == 0)
gnome-session/gnome-session/save.c:427:                    if (g_strcasecmp (only_show_in_list[i], "GNOME") == 0)
gnome-session/gnome-session/save.c:451:                    if (g_strcasecmp (not_show_in_list[i], "GNOME") == 0)
gnome-session/gnome-session/gsm-gsd.c:88:  if (!g_strcasecmp (name, "org.gnome.SettingsDaemon"))
gnome-session/gnome-session/gsm-gsd.c:91:      if (!g_strcasecmp ("", new_owner))
gnome-speech/gnome-speech/speaker.c:107:        if (!g_strcasecmp (name, p->name))
gnome-speech/drivers/eloquence/eloquencespeaker.c:387:        if (!g_strcasecmp (voice_spec->name, name))
gnome-utils/logview/logview.c:250:    if (selected!=NULL && g_strncasecmp (log->name, selected, -1)==0)
gok/gok/create-branching-keyboard.c:96:    g_io_channel_close (kbd->io);
gok/gok/main.c:527:    returncode = g_strcasecmp(a_file, b_file);
gok/gok/main.c:1662:            if (g_strcasecmp (pKB->Name, NameKeyboard) == 0)
gok/gok/gok-scanner.c:1769:        if (g_strcasecmp (pAccessMethod->Name, NameAccessMethod) == 0)
gst-plugins-good/gst/rtp/gstrtpvorbisdepay.c:302:  if (g_strcasecmp (delivery_method, "inline")) {
gst-plugins-good/gst/rtp/gstrtpvorbisdepay.c:304:  } else if (g_strcasecmp (delivery_method, "in_band")) {
gst-plugins-good/gst/rtp/gstrtpilbcpay.c:133:  if (g_strcasecmp ("audio/x-iLBC", payload_name) == 0) {
gst-plugins-good/gst/rtp/gstrtptheoradepay.c:302:  if (g_strcasecmp (delivery_method, "inline")) {
gst-plugins-good/gst/rtp/gstrtptheoradepay.c:304:  } else if (g_strcasecmp (delivery_method, "in_band")) {
gstreamer/tests/old/testsuite/caps/intersection.c:60:     g_mem_chunk_info ();
gstreamer/tests/old/testsuite/caps/intersection.c:65:     g_mem_chunk_info ();
gstreamer/tests/old/testsuite/plugin/loading.c:15:  g_mem_chunk_info ();
gstreamer/tests/old/testsuite/plugin/loading.c:33:  g_mem_chunk_info ();
gstreamer/tests/old/testsuite/plugin/loading.c:52:  g_mem_chunk_info ();
gtk+/gtk/gtkfilechoosersettings.c:57:get_config_dirname (void)
gtk+/gtk/gtkfilechoosersettings.c:566:      dirname = get_config_dirname ();
libbonoboui/tools/browser/oaf-helper.c:41:                if (!g_strcasecmp (property_name, property->property_name) &&
libbonoboui/tools/browser/oaf-helper.c:346:        if (g_strcasecmp (prop->property_name, "repo_ids") == 0) {
libglade/test/domp.c:50:    g_hash_table_freeze(tree->hash);
libglade/test/domp.c:55:    g_hash_table_thaw(tree->hash);
libglade/test/saxp.c:398:        g_string_sprintfa(state->style_data, "  font = "%s"n",
libglade/test/saxp.c:403:        g_string_sprintfa(state->style_data,
libglade/test/saxp.c:412:        g_string_sprintfa(state->style_data,
libglade/test/saxp.c:421:        g_string_sprintfa(state->style_data,
libglade/test/saxp.c:430:        g_string_sprintfa(state->style_data,
libglade/test/saxp.c:437:        g_string_sprintfa(state->style_data, "  bg_pixmap[%s] = "%s"n",
libgnomeprint/libgnomeprint/gnome-font-face.c:611:        if (!g_strcasecmp (family, entry->familyname)) {
libgnomeprint/libgnomeprint/gnome-fontmap.c:576:    return g_strcasecmp (((GPFontEntry *) a)->name, ((GPFontEntry *) b)->name);
libgnomeprint/libgnomeprint/gnome-fontmap.c:587:    return g_strcasecmp (((GPFontEntry *) a)->speciesname, ((GPFontEntry *) b)->speciesname);
libgnomeprint/libgnomeprint/gnome-fontmap.c:593:    return g_strcasecmp (((GPFamilyEntry *) a)->name, ((GPFamilyEntry *) b)->name);
librsvg/rsvg-styles.c:1371:    data = g_chunk_new (RsvgState, ctx->state_allocator);
librsvg/rsvg-styles.c:1393:    g_mem_chunk_free (ctx->state_allocator, dead_state);
librsvg/rsvg-base.c:1033:    g_mem_chunk_free (ctx->state_allocator, data);
librsvg/rsvg-base.c:1047:    g_mem_chunk_destroy (handle->state_allocator);
librsvg/rsvg-base.c:1227:    ctx->state_allocator = g_mem_chunk_create (RsvgState, 256, G_ALLOC_AND_FREE);
librsvg/test-display.c:42:_rsvg_basename (const char *file)
librsvg/test-display.c:300:    base_name = _rsvg_basename (info->base_uri);
librsvg/test-display.c:351:    base_name = _rsvg_basename (info->base_uri);
librsvg/gtk-engine/svg-rc-style.c:727:      g_scanner_freeze_symbol_table(scanner);
librsvg/gtk-engine/svg-rc-style.c:732:      g_scanner_thaw_symbol_table(scanner);
librsvg/rsvg-cairo-render.c:96:    draw->state_allocator = g_mem_chunk_create (RsvgState, 256, G_ALLOC_AND_FREE);
libsoup/tests/dict.c:84:    g_main_quit (loop);
libsoup/tests/dict.c:160:    g_main_run (loop);
libsoup/tests/dns.c:59:    g_main_run (loop);
libsoup/tests/get.c:175:        g_main_quit (loop);
libsoup/tests/get.c:303:    g_main_run (loop);
libsoup/tests/getbug.c:63:    g_main_quit (loop);
libsoup/tests/getbug.c:133:    g_main_run (loop);
libsoup/libsoup/soup-session-async.c:218:        g_main_iteration (TRUE);
libsoup/libsoup/soup-server-auth.c:434:            g_string_sprintfa (str,
libsoup/libsoup/soup-server-auth.c:438:        g_string_sprintfa (str,
libsoup/libsoup/soup-server-auth.c:444:            g_string_sprintfa (str, "qop="auth-int", ");
libsoup/libsoup/soup-server-auth.c:446:            g_string_sprintfa (str, "qop="auth,auth-int", ");
libsoup/libsoup/soup-server-auth.c:449:            g_string_sprintfa (str, "algorithm="MD5-sess"");
libsoup/libsoup/soup-server-auth.c:451:            g_string_sprintfa (str, "algorithm="MD5"");
libsoup/libsoup/soup-uri.c:292:        g_string_sprintfa (str, "%s:", soup_protocol_name (uri->protocol));
metacity/src/delete.c:505:              g_strcasecmp (w->res_class, "metacity-dialog") == 0)
nautilus/libnautilus-private/nautilus-file.c:3045:    g_date_set_time (today, time (NULL));
ORBit2/test/echo-local.c:129:    g_blow_chunks();
ORBit2/test/everything/client.c:1960:        g_main_iteration (TRUE);
pango/pango-view/viewer-win32.c:499:      if (0 == g_strcasecmp(pango_font_family_get_name(families[i]), family_name))
pkg-config-0.20/parse.c:1082:      pkg->pcfiledir = g_dirname (path);
seahorse/agent/seahorse-agent-cache.c:85:static GMemChunk *g_memory = NULL;      /* Memory for sa_cache_t's */
seahorse/agent/seahorse-agent-cache.c:217:        g_chunk_free (it, g_memory);
seahorse/agent/seahorse-agent-cache.c:247:    g_memory = g_mem_chunk_create (SeahorseAgentPassReq, 128, G_ALLOC_AND_FREE);
seahorse/agent/seahorse-agent-cache.c:268:        g_mem_chunk_destroy (g_memory);
seahorse/agent/seahorse-agent-cache.c:405:        it = g_chunk_new (sa_cache_t, g_memory);
seahorse/agent/seahorse-agent-actions.c:39:static GMemChunk *g_memory = NULL;      /* Allocator for SeahorseAgentPassReq items */
seahorse/agent/seahorse-agent-actions.c:79:    g_memory = g_mem_chunk_create (SeahorseAgentPassReq, 128, G_ALLOC_AND_FREE);
seahorse/agent/seahorse-agent-actions.c:94:        g_mem_chunk_destroy (g_memory);
seahorse/agent/seahorse-agent-actions.c:129:    pr = g_chunk_new (SeahorseAgentPassReq, g_memory);
seahorse/agent/seahorse-agent-actions.c:158:    g_chunk_free (pr, g_memory);
seahorse/agent/seahorse-agent-io.c:70:static GMemChunk *g_memory = NULL;      /* Memory for connections */
seahorse/agent/seahorse-agent-io.c:204:    g_chunk_free (cn, g_memory);
seahorse/agent/seahorse-agent-io.c:643:    cn = g_chunk_new0 (SeahorseAgentConn, g_memory);
seahorse/agent/seahorse-agent-io.c:683:    g_memory = g_mem_chunk_create (SeahorseAgentConn, 8, G_ALLOC_AND_FREE);
seahorse/agent/seahorse-agent-io.c:706:        g_mem_chunk_destroy (g_memory);
seahorse/daemon/seahorse-hkp-server.c:322:    if (t && g_strcasecmp(t, "on") == 0)
seahorse/daemon/seahorse-hkp-server.c:443:    else if(g_strcasecmp(t, "index") == 0)
seahorse/daemon/seahorse-hkp-server.c:446:    else if(g_strcasecmp(t, "vindex") == 0)
seahorse/daemon/seahorse-hkp-server.c:449:    else if(g_strcasecmp(t, "get") == 0)
seahorse/src/seahorse-gkeyring-item.c:70:        if (g_strcasecmp (name, attr->name) == 0 &&
seahorse/src/seahorse-gkeyring-item.c:90:    return protocol && g_strncasecmp (protocol, match, strlen (match)) == 0;
seahorse/src/seahorse-gkeyring-item.c:534:        if (g_strcasecmp (name, attr->name) == 0 &&
seahorse/plugins/nautilus/seahorse-tool-progress.c:81:    else if (g_strcasecmp (args[0], CMD_BLOCK) == 0)
seahorse/plugins/nautilus/seahorse-tool-progress.c:84:    else if (g_strcasecmp (args[0], CMD_UNBLOCK) == 0) {
seahorse/plugins/nautilus/seahorse-tool-progress.c:89:    else if (g_strcasecmp (args[0], CMD_PROGRESS) == 0) {
seahorse/libseahorse/seahorse-util.c:187:    g_date_set_time (created_date, time);
seahorse/libseahorse/seahorse-dns-sd.c:121:        if (g_strcasecmp (HKP_SERVICE_TYPE, type) != 0)
seahorse/libseahorse/seahorse-dns-sd.c:168:    if (g_strcasecmp (HKP_SERVICE_TYPE, type) != 0)
totem/src/backend/bacon-video-widget-gst-0.10.c:4864:      g_date_set_time (&d, time (NULL));
yelp/src/info2html/html.c:149:      if (g_strcasecmp(ref, "(dir)")) {
zenity/src/tree.c:153:        if (strcmp (g_strdown (zenity_util_strip_newline (string->str)), "true") == 0)
zenity/src/tree.c:231:        if (strcmp (g_strdown ((gchar *) args[i+j]), "true") == 0)
zenity/src/tree.c:305:    if (strcmp (g_strdown (tree_data->print_column), "all") == 0)

mercredi 28 mars 2007

Sysprof sous Mandriva 2007.0

Sysprof est un logiciel de profiling: il permet de voir les fonctions qui utilisent le plus de temps CPU dans un programme. C'est le logiciel recommandé par GNOME pour vérifier les performances d'une application. Malheureusement, il semble que le logiciel ne peut être installé sous Mandriva 2007.0, à causes de problèmes de dépendances.

Pour ceux que cela intéresse, j'ai recompilé sysprof 1.0.8 à partir du RPM source de la Mandriva 2007.1, pour qu'il soit utilisable sous Mandriva 2007.0. N'oubliez pas aussi d'installer dkms, et les sources de votre version du kernel (kernel-source ou kernel-source-stripped). Un petit modprobe sysprof-module en root sera sans doute aussi nécessaire...

Vous trouverez là sysprof 1.0.8 (i586) pour Mandriva 2007.0.

mardi 27 mars 2007

Oisiweb: Comment afficher une chaine de caractères avec des accents ?

Cher oisiweb (oisif+web, traduction libre de lazyweb),
je me sens actuellement désoeuvré devant ce problème qui semble pourtant simple: afficher des caractères accentués dans mon programme en mode texte.

C'est un programme d'une extrême complexité, je te laisse juger:

#include <glib.h>
int main (void)
{
g_print("éèân");
return 0;
}
Pourtant, que le fichier soit enregistré en iso-8859-1 ou en utf8, pas d'accents. J'ai essayé aussi les entêtes spéciaux (coding cookie):
/* -*-coding: utf-8; -*- */
J'ai aussi essayé l'option -finput-charset de gcc, mais non, je n'obtiens aucun résultat concluant. Alors cher oisiweb, aurais tu la solution à ce problème ?

Update 1:
D'après les exemples du guide officiel du développeur GNOME, j'ai vu un cas qui fonctionnait.
Fichier en UTF8, coding cookie en entête, et c'est magique, ça marche. Quelle est la différence entre mon exemple et les siens ? Le coding cookie ? Non, en l'enlevant, on obtient le même résultat, c'était sans doute nécessaire en 2003-2004 pour aider gcc à trouver l'encodage du fichier, mais apparemment plus maintenant.

Non en fait, la différence c'est qu'il appelle gtk_init dans son exemple. Mais pourquoi diable doit-on se lier à GTK pour une appli non graphique, juste pour avoir des traces en français (besoin de mon employeur) ? Si quelqu'un a une réponse, ou un autre moyen, je suis preneur...

Update 2:

Effectivement, comme l'indique Pascal dans les commentaires, il semble que ce soit un appel à setlocale qui soit a cause de mes soucis. Comme l'indique la documentation de gtk_set_locale, gtk_init appelle gtk_set_locale qui appelle setlocale(LC_ALL, "").
C'est cette dernière fonction qui va vérifier la locale utilisée, et ainsi affecter toutes les fonctions d'affichage.

La version corrigée de mon programme de test est donc:
#include <glib.h>
#include <locale.h>
int main (void)
{
setlocale(LC_ALL, "");
g_print("éèân");
return 0;
}

GNOME lack of documentation

GNOME lacks documentation. Everyone knows it. Sure. But we are in 2007 and there are still people starting to learn GNOME by starting with CORBA.

Moreover, the book about GNOME the most pointed out to learn GNOME is "The Official GNOME 2 Developer's guide". I've just learned today that this book uses a (mostly) free licence: it uses the Creative Commons NonCommercial-ShareAlike 1.0 licence. However, it seems there is no online version of this book (p2p excepted, I heard). This means no one can correct the book that is beginning to become a bit outdated, thanks to project Ridley and other things. Also, I've bought this book, but I don't have any electronic version to search information in it, which is also quite a bit annoying.

I just hope that the upcoming library.gnome.org project, and that the www.gnome.org revamp that Quim Gil is leading will help newbies with that, so that they can easily know where to start, what is up to date, and what is updated....

mardi 20 mars 2007

GNOME 2.18 on Mandriva 2007.0 with jhbuild

GNOME 2.18 has been released a few days ago. However, I still haven't seen it running.... I'm too lazy to download Foresight Linux, and it seems that the Mandriva One with GNOME 2.18 is only available for x86_64 users... Too bad for my Athlon XP 3000+.

Anyway, I just achieved to compile almost the whole GNOME desktop from jhbuild tonight. Only a few modules are missing, some because they are hard to compile with 2007.0 (NetworkManager, network-manager-applet), others just because I just don't care about them (mozilla, evolution-exchange, libexchange). Mozilla in particular is so huge that I just always skip it.

For the braves that will dare to compile the GNOME desktop on their Mandriva 2007.0, I have just updated my guidelines about the jhbuild dependencies for GNOME on Mandriva Linux.

Enjoy.

vendredi 2 mars 2007

Un nouveau spammeur sur planète GNOME-FR !

Bonjour à tous les lecteurs de planète GNOME-FR !

Vincent m'a permis de vous rejoindre pour votre plus grand bonheur, ce qui a provoqué une quantité non négligeable de spam sur la planète... Je m'en excuse, n'ayant pas trop de contrôle sur ce point. J'en ai même profité pour introduire par la même occasion mon premier troll politique, bien involontairement également (ce post là n'était pas censé se retrouver ici !).

Pour ce qui ne me connaissent pas (et il doit y en avoir un paquet), je vous renvois à mon billet d'introduction. Autrement, je traine en ce moment mes guêtres du côté d'Ekiga, au niveau de la migration à GTK+ 2.10. Et puis j'ai un petit projet qui arrivera peut être après ça, si j'ai un peu plus avancé côté professionnel (c'est à dire si je suis moins à la bourre sur mon projet). Mais chut, ne le dites à personne.

jeudi 15 février 2007

Plein de choses à dire...

Et pas assez de temps... Du sommeil en retard... Du boulot... et puis un (petit) patch pour GNOME. Il m'aura quand même fallu 3 mois pour me décider à me replonger dedans. Oui je sais. Mais bon, comme le FOSDEM approche, j'avais peur d'avoir mauvaise conscience :-) en voyant Damien.

mercredi 24 janvier 2007

GNOME tip of the day

Avoiding turning your screen on to raise/lower sound on your computer.

I have a CRT screen at home. When I listen to some music without being in front of the computer, I turn the screen off, to avoid useless power consumption. However, I don't like using my speakers' buttons to regulate the sound level. I prefer to do it by software, but i'd need to turn the screen on again to do that.

So here is my GNOME tip of the day:

Step 1: move your mixer applet to one corner
So I moved the mixer applet at the top right corner of my desktop (works for every corner). For that, you need to unlock the mixer applet and every applet that would prevent it from going on the destop corner. To move the applet, use the traditionnal middle mouse drag-and-drop.

Step 2: turn your screen off

Step 3: move you mouse trying to go to the corner were you put the mixer applet

Step 4: roll your mouse wheel up or down to raise/lower the sound.

page 2 de 2 -