GNOME Goal: Remove deprecated GLib symbols

Summary

The goal is to remove the deprecated GLib symbols (functions, structs, macros, etc.) and replace them with something that fits better (usually a newer symbol). This has to be done for each GNOME module (application or library).

Guidelines for modules written in C/C++

For help on these symbols, just give a look at the list of the deprecated GLib symbols. This list is always up-to-date, as it's generated for each version of GLib.

Step 1: Detect if the module uses deprecated symbols

You don't need to compile the module for that. Just get its source code, a file that contains the deprecated symbols to look for, and use the egrep command to look for deprecated symbols in the module source code. For example, the following command uses a file that contains the name of the deprecated symbols, and looks for them in each source file:

egrep -n -R -f ~/glib-deprecated-symbols.txt path/to/the/module

Step 2: Compile the module

Compile the module without doing any modifications, just to make sure you're able to compile it without errors. You should be able to compile it alone.

Step 3: Compile the module with the deprecated symbols disabled

Compile the module again, but this time, define the G_DISABLE_DEPRECATED symbol, which will disable deprecated GLib symbols. There's more than one way to do it. You can for example use :

make CFLAGS+="-DG_DISABLE_DEPRECATED"

If you're using Jhbuild, you can make him use this setting by adding the following line to your .jhbuildrc (and putting the right module name)

module_makeargs['name-of-the-module'] = makeargs + 'CFLAGS+="-DG_DISABLE_DEPRECATED"'

Step 4: Replace the obsolete symbols by something that works and that is not deprecated

This is where most of the work takes place. There are several different deprecated symbols, so there's no single answer on how to do it. Sometimes the GLib documentation will give you the answer, sometimes you'll have to think by yourself.

Most of the work will consist in replacing g_strncasecmp and g_strcasecmp with the right string comparison function.

Comments before approval

{i} Add your comments to this goal proposal here

Status of this goal

/!\ Note: Updated automatical stats can be found at http://people.gnome.org/~fpeters/299.html

{i} Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla. This way people will know someone already works on it, and won't duplicate the work you're doing. Please make the bug report depend on the tracker bug for this goal.

State

Markup

todo

<: #ff8080> todo

patch

<: #ffc849> [[GnomeBug:xxxxx|patch]]

done

<: #80ff80> [[GnomeBug:xxxxx|done]]

not needed

<: #80ff80> not needed

Above are the states and corresponding markup to update the modules state table below.

Tarball

Status

Desktop

alacarte

not needed

bug-buddy

not needed

cheese

not needed

gnome-control-center

done

dasher

not needed

deskbar-applet

not needed

eel

not needed

ekiga

done

empathy

not needed

eog

not needed

epiphany

not needed

evince

not needed

evolution-data-server

done

Some deprecated symbols still used in dead code and comments

evolution

not needed

evolution-exchange

not needed

evolution-webcal

not needed

file-roller

done

gcalctool

not needed

gconf-editor

not needed

gdm

done

gedit

not needed

gnome-applets

done

gnome-backgrounds

not needed

gnome-desktop

not needed

gnome-disk-utility

done

gnome-doc-utils

not needed

gnome-games

not needed

gnome-icon-theme

not needed

gnome-keyring

done

gnome-netstatus

done

gnome-nettool

done

gnome-mag

not needed

gnome-media

done

NB: Deprecated symbols still exist in unmaintained gnome-cd and cddb-slave2 that are not built by default

gnome-menus

not needed

gnome-panel

not needed

gnome-power-manager

not needed

gnome-python-desktop

not needed

gnome-screensaver

not needed

gnome-session

not needed

gnome-settings-daemon

not needed

gnome-speech

done

gnome-system-monitor

not needed

gnome-system-tools

not needed

gnome-terminal

not needed

gnome-themes

not needed

gnome-user-docs

not needed

gnome-utils

done

gnome-volume-manager

not needed

gok

done

gstreamer

done

gst-plugins

done

gtk-engines

done

gtkhtml

not needed

gtksourceview

done

gucharmap

not needed

gvfs

not needed

hamster

not needed

libgail-gnome

not needed

libgnomekbd

not needed

libgtop

not needed

libgweather

not needed

liboobs

not needed

librsvg

done

libsoup

done

libwnck

not needed

metacity

done

mousetweaks

not needed

nautilus

not needed

nautilus-cd-burner

not needed

orca

not needed

pygtksourceview

not needed

seahorse

done

sound-juicer

not needed

swfdec-gnome

not needed

tomboy

not needed

totem-pl-parser

done

totem

done

vinagre

not needed

vino

done

vte

done

yelp

done

deprecated symbol used in dead files that have been deleted

zenity

done

Desktop (to be deprecated)

libgnomeprint

not needed

Will be deprecated, so it isn't worth the trouble

libgnomeprintui

not needed

Will be deprecated, so it isn't worth the trouble

Platform

GConf

done

at-spi

done

atk

not needed

glib

not needed

gnome-mime-data

not needed

gnome-vfs

not needed

gtk+

done

gtk-doc

not needed

intltool

not needed

libglade

done

libxml2

not needed

libxslt

not needed

pango

done

pkgconfig

not needed

Platform (to be deprecated)

ORBit2

not needed

audiofile

not needed

esound

not needed

libIDL

not needed

libart_lgpl

not needed

libbonobo

not needed

libbonoboui

not needed

libgnome

not needed

libgnomecanvas

done

libgnomeui

not needed

Admin

pessulus

not needed

sabayon

not needed

Development Tools

accerciser

not needed

anjuta

done

devhelp

not needed

gdl

not needed

glade3

done

gnome-build

not needed

gnome-devel-docs

not needed

Mobile

gconf-dbus

done

Bindings (C++)

glibmm

not needed

gtkmm

not needed

libglademm

not needed

gconfmm

not needed

libgnomecanvasmm

not needed

libgnome-vfsmm

to do

libgnomemm

not needed

libgnomeuimm

not needed

libxml++

not needed

Bindings (java)

glib-java (jg-common)

not needed

libgtk-java

not needed

libgnome-java

not needed

libgconf-java

not needed

libglade-java

not needed

Bindings (perl)

Glib

to do

Gtk2

to do

Gtk2-GladeXML

to do

Gnome2-GConf

to do

Gnome2-Canvas

to do

Gnome2-VFS

to do

Gnome2

to do

Bindings (python)

pygobject

not needed

pygtk

not needed

GnomePython

not needed

External dependencies

dbus-glib

done

farsight2

done

hal

done

libnice

done

libnotify

done

mono

done

poppler

done

Other

abiword

done

atomix

not needed

balsa

done

banshee

not needed

banter

not needed

beagle

not needed

brasero

not needed

contact-lookup-applet

not needed

dia

done

eggcups

not needed

f-spot

not needed

gegl

done

gimp

todo

gnome-blog

not needed

gnome-bluetooth

not needed

gnome-cups-manager

not needed

gnome-main-menu

not needed

gnome-mud

not needed

GParted

not needed

GNOME Phone Manager

not needed

gnome-pilot

done

gossip

done

gnumeric

not needed

gtetrinet

not needed

gthumb

done

gtranslator

not needed

inkscape

done

libbtctl

not needed

libgda

not needed

libgnomekbd

not needed

modest

done

nautilus-sendto

not needed

nautilus-vcs

to do

nemiver

not needed

NetworkManager

not needed

ontv

not needed

planner

done

rhythmbox

done

swfdec

done

tinymail

done

tracker

done

vala

done

fixed in 0.7.10

xchat-gnome

done

Initiatives/GnomeGoals/RemoveDeprecatedSymbols/Glib (last edited 2013-12-18 13:44:49 by LuisMenina)