Power manager specification... (request for comments).

Mike C. Fletcher mcfletch at vrplumber.com
Fri Aug 17 09:57:17 EDT 2007

Walter Bender wrote:
> Lets please be careful not to over-engineer. While Mike makes good
> points, we have this wonderful human social network we can depend upon
> as well. E.g., If I am downloading something from your machine, I can
> ask you to hold on a second until I finish. Let's take advantage of
> the fact that the kids are in the same community/school most of the
> time and not worry so much about corner cases until we have some more
> breathing room.
Perhaps I was unclear, I was referring to another program *on the same 
machine* needing the machine to remain active in order to complete a 
task.  That is, things such as:

    * playing music in the background while you read
    * downloading a file from the school server which you need for
      homework while you are reading the assignment/textbook
    * recording an audio stream while you are taking notes in write
      (i.e. interviewing someone)
    * upgrading the OS/downloading updates while you are working in class

that is, all single-user on a single-machine use cases.  No social 
networks involved.  These are all fairly common use cases.  We see the 
same basic "inhibit_suspend" operation in media-players on Linux or 
Windows wrt screen savers.  You don't want your machine going to sleep 
in the middle of recording your interview, so the recording activity 
needs a way to say "hey, I'm working, don't go to sleep right now" 
(assume we've got a signed activity that can do background record for a 

I'm not saying that the implementation needs to be there today, I'm just 
saying that we likely need to eventually move toward an implementation 
that uses need-based signaling rather than direct manipulation of the 
whole computer state by any activity.  Something as simple as a 
decorator icon on the home view, (e.g. a bed with a circle-plus-slash 
over it for western audiences) should be sufficient to let the user know 
which activity is inhibiting suspension.

Hope that's clearer,
>> On the original topic of the thread (what the power manager should do):
>>    I'm guessing eventually we'll want some of the logic currently in
>>    the read activity to migrate into HardwareManager.  That is, allow
>>    for signaling "inhibit_suspend( )" and "allow_suspend()"[3], rather
>>    than directly setting suspend, such that a given activity can
>>    declare that it must be allowed to continue processing in the
>>    back-end.  Then you'd want something like "suggest_suspend()" so
>>    that a foreground activity can tell the system "hey, I don't expect
>>    to do anything for a second or two, if no-one objects, feel free to
>>    suspend".
>>     From there, a second level does a suggest-suspend from Sugar (or
>>    whoever) on no-cpu, no-network (other than the autonomous routing),
>>    no-input, for a given period.  No opinion on where/how to put that.
>>    HardwareManager should likely send dbus events so that activities
>>    can watch for resume, suggested-suspend, or what have you and adjust
>>    behaviour accordingly.  Example usage scenario: switch a per-second
>>    clock-updating timer to a per-minute timer.
>> Hope this helps,
>> Mike
>> [1]
>> http://dev.laptop.org/git.do?p=projects/read-activity;a=blob;f=readactivity.py;h=3eeb858cc5ea1dc67a60faee90628100479509be;hb=HEAD
>> [2]
>> http://dev.laptop.org/git.do?p=hardware-manager;a=blob;f=hardwaremanager.py;h=3154b17553621cc41fa947cbff2756372e6e37ec;hb=HEAD
>> [3] with allow-suspend happening automatically after a short-ish timeout
>> if the activity doesn't re-assert the inhibition
  Mike C. Fletcher
  Designer, VR Plumber, Coder

More information about the Devel mailing list