Rules based policy engine
Russell Sears
sears at cs.berkeley.edu
Fri Jul 18 02:46:16 CEST 2008
I agree with most of what Alexey said, but I would love to see some sort
of easy to use scripting / gui environment. I think the FSO stuff is
working on some sort of d-bus event notification system. Presumably
there's a set of python / c libraries that know how to talk to dbus, and
provide a simple wrapper on top of everything. (I haven't looked at FSO
or DBUS yet... ;)
I wonder if this is a job for some simple query language like a subset
of xpath or xquery. It could re-evaluate an expression each time a dbus
event could change the expression's results. It would also simplify
writing things like "pause my music when the phone rings", alarm clocks,
etc:
register_event_handler("/phone/incoming_call = true",
mute_music_callback)
register_event_handler("/clock/time = 600",
play_alarm_callback,
"loud_buzzer.ogg")
and so on...
These event handlers could live in a python script (or, better) inside a
simple GUI app.
I think most people that own one of these things knows how to program.
Improving their productivity a bit should be a big win when the consumer
version of the phone ships...
-Rusty
Alexey Feldgendler wrote:
> On Fri, 18 Jul 2008 01:01:08 +0200, matt joyce <matt.joyce at gmail.com>
> wrote:
>
>> If it can be reliably established that my physical location is one of
>> my favourite restaurants please switch my phone to vibrate, unless my
>> babysitter calls.
>> If I miss a call or I receive an SMS from from any of my work
>> contacts during work hours, and I don't respond, please remind me.
>> If it's not during work hours, do not take any calls from contacts
>> exclusively in my work contacts.
>> If my home wifi is available and my battery is not too low, don't use
>> GPRS for data.
>> If it a WEEKDAY and 06:00, turn on, play alarm, connect to WIFI and
>> start getting email and rss.
>> At 21:00 on weekdays, switch to standby.
>> If my battery is low and I'm at home, remind me to charge.
>> If I'm at home disable my auto-lock.
>
> The problem with this is that one needs to think like a programmer to
> describe your “ideal phone” as a set of rules like these. Not only does
> one have to think analytically and dissect their concept into orthogonal,
> machine-checkable rules, but from your examples it's also clear that for
> such a wide range of possibilities a whole *language* with *expressions*
> (at least boolean) is necessary.
>
> Moreover, if one *is* a programmer, and has learned the rule expression
> language, there will be bugs in the rulesets, like overlooked priorities
> or excessively permissive conditions, and you'll spend some time debugging
> it, probably missing a few important calls and alarms now and then in the
> process. Next step would be debugging tools for rulesets, allowing to
> simulate times of day, different conditions and incoming events to test
> the rules. Next, backup and revision control for rulesets. This is where
> madness lies: you have to modify and debug a program in a declarative
> logic language when you start dating someone because it breaks all your
> carefully polished ruleset. Sounds like a topic for XKCD. Randall, are you
> by any chance reading this?
>
> I understand that you must be thinking, “This phone is fully programmable,
> so I can make it do whatever I want”. True. Now, by defining sets of
> possible conditions and actions and letting the user make rules out of
> these, you're basically saying: “Here is a computer. You can program it to
> do whatever you want”. While this might be usable for someone who is a
> programmer (and who's willing to be a programmer when they deal with their
> cell phone), it's not a killer application. It's an absence of
> application; it's rather an interpreter for a programming language in
> which a user can write themself a killer application.
>
> The key to making a phone do what you, I or someone else wants is rather
> in analyzing our requirements and figuring out what parts are constant and
> what are changing. Of course, all people want different things, and the
> same person wants different things at different times. But the number of
> dimensions in the space of all reasonable people's demands is still much
> less than that of the space of all possible rulesets. Only a small subset
> of all possible rules, let alone rulesets, makes any sense at all, while
> the vast majority is nonsensical, such as “When WiFi is available and
> John's phone is nearby, mute all calls”, or “If I have unread SMS on
> Thursday, prefer GPRS”. Analyzing and isolating the axes of user demands
> is much harder than developing a ruleset-driven engine, but at least it
> has a chance of becoming usable.
>
>
More information about the community
mailing list