SavingTheWorld

Differences between revisions 22 and 23
Revision 22 as of 2008-12-20 05:54:32
Size: 6916
Editor: CPE001ee555970c-CM00195edcd15e
Comment:
Revision 23 as of 2008-12-20 18:10:42
Size: 6916
Editor: CPE001ee555970c-CM00195edcd15e
Comment:
Deletions are marked like this. Additions are marked like this.
Line 52: Line 52:
||<rowbgcolor="#ff9">gedit || [[https://launchpad.net/~khaeru|Paul Kishimoto]] || [[http://bugzilla.gnome.org/show_bug.cgi?id=565127|GNOME Bugzilla #565127]] || ||<rowbgcolor="#9f9">gedit || [[https://launchpad.net/~khaeru|Paul Kishimoto]] || [[http://bugzilla.gnome.org/show_bug.cgi?id=565127|GNOME Bugzilla #565127]] ||

From http://gould.cx/ted/blog/Saving_the_world_one__w_at_a_time

Saving the world one uW at a time

I'm here at UDS and joined a session between the kernel and desktop teams talking about power. Like all of such sessions the kernel team thinks that the desktop should fix all the problems and vice versa. At their suggestion, I took an action item.

One of the features of GTK+ is that it provides two timeout functions: gtk_timeout_add and gtk_timeout_add_seconds. The difference is much more important than not having to add a "* 1000" in one and not the other. The important thing that the second function does is that it tried to group wake-ups to ensure that the program wakes up as little as possible. This is never perfect, but it's a small thing that can help to save some power and reduce the number of wake-ups.

So I looked through the Ubuntu main archive to figure out how many applications use the more precise function, but just pass in several seconds as the parameter. I figured this would be a few apps, and I'd submit a couple patches, then I could go back to blaming the kernel team for all our problems. There are more than a couple packages. There are a lot of packages. The results of the grep and a cleaned up list of packages that are likely to have easy fixes.

I realize now that I can't do this by myself, the only hope is to document how to fix it.

So if you'd like to help save a little power on your machine, follow these instructions.

  1. Take one of the packages in the list above and find it in the package repository (instructions).

  2. Branch it:
    • $ bzr branch http://package-import.ubuntu.com/x/xproject/jaunty localfix

  3. Find the instances that might be causing the problem.
    • $ rgrep timeout_add *

  4. Commit and build a package:
    • $ bzr commit -m "Saving the world"
      $ dch -i
      # aptitude build-depends xproject
      $ debuild

  5. Test it on your system, make sure things still work reasonably.
  6. Generate a patch:
    • $ bzr diff -r ancestor:

  7. Submit it upstream!


Add your name to the Assignee column if you wish to tackle that package. After you have submitted the patch upstream, change row's background to yellow by adding <rowbgcolor="#ff9"> in the first cell of the column. After the patch has been commited upstream, change row's background to green by adding <rowbgcolor="#9f9"> in the first cell of the column. This will let people know that the package in that row has been hugged.

Package

Assignee

Upstream Bug

foo (example)

Andrewsomething

GNOME Bug XXXXXX

atomix

avahi

bacula

brasero

GNOME Bugzilla #564397

consolekit

dbus-python

Paul Kishimoto

All test/example code, also PyGObject has no timeout_add_seconds

deskbar-applet

dia

ekiga

evolution

evolution-exchange

gamin

gcompris

gconf

gdm

gedit

Paul Kishimoto

GNOME Bugzilla #565127

gegl

gftp

gimp

gksu

gnome-applets

gnome-games

GNOME Bugzilla #564202

gnome-mount

gnome-netstatus

gnome-pilot

gnome-power-manager

Paul Kishimoto

GNOME Bugzilla #565076

gnome-screensaver

gnome-system-monitor

gnome-system-tools

gnome-utils

gnumeric

gstreamer

gthumb

gtksourceview

gvfs

Awalton

GNOME Bugzilla #564052

hal

irssi

jockey

ldm

libbonoboui

libbtctl

libgnomecups

libgnomeprintui

libgnomeui

libgtkhtml

libhildonfm

lifera

metacity

midbrowser

nautilus

AWalton

should not be needed

nautilus-cd-burner

nautilus-sendto

network-manager

network-manager-applet

nvidia-setting

oem-config

openoffice.org-l10n

pan

pbbuttonsd

pidgin

pigment-python

policykit

policykit-gnome

sabayon

GNOME Bugzilla #564405

screem

screen-resolution-extra

seahorse

GNOME Bugzilla #564403

system-config-cluster

system-config-printer

thin-client-manager

totem

Philip Withnall

GNOME Bugzilla #564073

tracker

transmission

Andrewsomething

Ticket #1585

tsclient

twisted

ubiquity

update-notifier

usb-creator

vim

vinagre

Paul Kishimoto

all instances < 1000 ms

vino

webkit

xchat-gnome

xsane

xscreensaver

zenity

SavingTheWorld (last edited 2013-05-31 17:42:34 by brian-murray)