Re: online desktop APIs

2007-04-13 Thread Owen Taylor
On Tue, 2007-04-10 at 19:49 -0400, Havoc Pennington wrote:
 Hi,
 
 I blogged a few days ago about the idea of an online desktop. For our 
 initial prototypes, we've taken a pretty ad hoc approach that tends to 
 leak Mugshot specifics in a messy and undocumented way.
 
 I brought up the idea of lots of different apps on the desktop taking 
 advantage of online services and web sites, and we'd need clean APIs for 
 that.
 
 I don't want to write a bunch of hypothetical APIs in a vacuum but I 
 picked two that we are already using and cleaned them up / genericized 
 them to illustrate the idea:
http://developer.mugshot.org/wiki/Online_Desktop_API
 
 As background, the reason there are dbus APIs is that the Mugshot 
 process is establishing a connection to mugshot.org via XMPP and sucking 
 down a lot of information; this would be too expensive to do in every 
 application. So the architecture is to have one or a few dedicated 
 process(es) that go out to the Internet, and then other apps can get the 
 info from these services. This also simplifies matters as we address 
 offline operation and local caching, since the services can deal with it 
 and not the individual apps.

A few general concerns... (I brought these up with Havoc, but wanted to
write them down here for the broader audience.)

 - We need to be careful to design D-BUS API's that will
   naturally result in efficient applications. If the D-BUS API looks
   like user.getProperty(name); user.getProperty(homeUrl); ...
   then normal displays might involve hundreds or thousands
   of roundtrips over D-BUS.
  
   The fact that you *could* use the asynchronous facilities of D-BUS
   to reduce round-trips isn't sufficient; if this is significant new
   way of writing applications, then the natural and convenient way
   of writing code has to be the recommended way as well.

   Does that mean that a client library is necessary?

 - Extending the communicated information should not require
   code changes at all levels, but only at the source and the
   destination. For example, it should be possible to extend the
   set of information provided by the Mugshot server to include
   the user's GPS coordinates, then *immediately* write a gadget
   for the desktop that uses those GPS coordinates to show the
   current weather for the user.

   To me, this means that a setup where we have a central desktop
   daemon that parses and *understands* all the information that
   the network server provides, and converts it into D-BUS
   is wrong, because it means that to add extra information, the
   central desktop daemon needs to be upgraded, and the D-BUS 
   schema needs to be extended to include the new information.

   We should instead be looking to make the central desktop daemon
   transparent. It manages the connection to the server, and can
   add things like caching and change notification, but it doesn't
   actually need to understand the information that it is passing 
   around.

 - When dealing with network protocols (or even D-BUS interfaces),
   it's far too easy to get sloppy and skip documentation or let
   the documentation get out of sync with the code. Documenting
   things in text form on a Wiki doesn't work, because it's simply
   far too easy to skip the step and not update the wiki. We need
   to have the same level of integration that we have with gtk-doc
   for C code, where updating the documentation is an integral
   part of updating the interface.

- Owen


___
desktop-devel-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: online desktop APIs

2007-04-13 Thread Rob Taylor
Owen Taylor wrote:
 On Tue, 2007-04-10 at 19:49 -0400, Havoc Pennington wrote:
 Hi,

 I blogged a few days ago about the idea of an online desktop. For our 
 initial prototypes, we've taken a pretty ad hoc approach that tends to 
 leak Mugshot specifics in a messy and undocumented way.

 I brought up the idea of lots of different apps on the desktop taking 
 advantage of online services and web sites, and we'd need clean APIs for 
 that.

 I don't want to write a bunch of hypothetical APIs in a vacuum but I 
 picked two that we are already using and cleaned them up / genericized 
 them to illustrate the idea:
http://developer.mugshot.org/wiki/Online_Desktop_API

 As background, the reason there are dbus APIs is that the Mugshot 
 process is establishing a connection to mugshot.org via XMPP and sucking 
 down a lot of information; this would be too expensive to do in every 
 application. So the architecture is to have one or a few dedicated 
 process(es) that go out to the Internet, and then other apps can get the 
 info from these services. This also simplifies matters as we address 
 offline operation and local caching, since the services can deal with it 
 and not the individual apps.
 
 A few general concerns... (I brought these up with Havoc, but wanted to
 write them down here for the broader audience.)
snip


  - When dealing with network protocols (or even D-BUS interfaces),
it's far too easy to get sloppy and skip documentation or let
the documentation get out of sync with the code. Documenting
things in text form on a Wiki doesn't work, because it's simply
far too easy to skip the step and not update the wiki. We need
to have the same level of integration that we have with gtk-doc
for C code, where updating the documentation is an integral
part of updating the interface.


Agreed, to this end, I've got a dbus-doc project going on fd.o[1], based
off Jon McCann's stuff for ConsoleKit. Its still very very young, so
comments and input much appreciated.

I also have concerns that this seems very mudflap-oriented. It'd be nice
to see some synergy going with eds-dbus. Personally I'd like to see an
fd.o standard for accessing contact information. Also presence-wise we
already have Galago and Telepathy, it'd be good to get a discussion
going how all this fits together.


Thanks,
Rob Taylor

[1] http://gitweb.freedesktop.org/?p=dbus/dbus-doc.git;a=summary
___
desktop-devel-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: online desktop APIs

2007-04-13 Thread Havoc Pennington
Rob Taylor wrote:
 Agreed, to this end, I've got a dbus-doc project going on fd.o[1], based
 off Jon McCann's stuff for ConsoleKit. Its still very very young, so
 comments and input much appreciated.

Cool!

 I also have concerns that this seems very mudflap-oriented. 

http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging ?

Assuming you mean Mugshot? The point of the new API I posted is to 
de-mugshot things a bit so in principle another server could be 
substituted. (Though after talking to Owen we're already considering 
changing this API a lot, so the API will be more generic - essentially 
the Mugshot client would become more of a pass-through proxy and cache 
for APIs the server provides, instead of a provider of custom-written 
dbus APIs; the idea is that you could patch the server and patch an app, 
without requiring a patch to the intermediate Mugshot client thingy)

Though we want to keep things cleanly engineered so someone could 
replace Mugshot, at the same time using Mugshot is the only practical 
way to get things going IMO, for a variety of reasons. Some of the major 
ones:
  - we need an open source server under the control of the development
community, because web services provided by existing sites and
companies aren't sufficient. We want to use what exists - say
Flickr for photos - but then be able to fill in gaps. So for example,
we had to write our own browser for open source apps at
http://mugshot.org/applications
  - it's an admin'd, hosted, clustered application server instance that
has both jsp and xmpp channels, and any server-side function can
be rapidly added to it; doing a new server-side function from scratch
has *a lot* of overhead vs. adding to Mugshot (and also has end user
overhead, e.g. signing up for the new server)
  - because it has web-only and Windows versions, social features need
not assume that all my friends use Linux
  - the data model of the Mugshot meta social network or whatever you
want to call it is what we think we want user experience wise, vs.
say a my contact database data model. For example, people choose
their own photo and nick, and maintain their own addresses, you don't
have to import or edit these things.
  - we already have major functionality slices such as tracking your
friends' photos and feeds, tracking who's listening to what,
partially-complete file sharing, and social application
browsing/installing/launching

Theoretically, a federated or peer-to-peer architecture would be better 
than relying on a server; but IMHO for a lot of things federation/P2P 
are technologically intractable or at least hard research problems. So 
my assumption is that we can only use P2P opportunistically when it is 
workable, but need a central server otherwise.

It is just 1000% simpler if we start by saying here is the server the 
project is based on. We'll assume it exists and rely on it.

It's been a huge handicap for the last several years that when coding an 
open source feature, there was no way to deploy and rely on server-side 
infrastructure, so we want to fix that.

It'd be nice
 to see some synergy going with eds-dbus. Personally I'd like to see an
 fd.o standard for accessing contact information. Also presence-wise we
 already have Galago and Telepathy, it'd be good to get a discussion
 going how all this fits together.

We exchanged some initial private mail with Robert McQueen on this. It 
is not clear to me what the answer is, it does seem to relate somehow, 
but I'm not really sure yet.

The social network model of contacts is not quite the same as e-d-s, 
since people edit their own entries, rather than everyone editing their 
own copy of everyone else's. The Mugshot database schema does allow an 
overlay of per-person contacts that aren't in the social network (that 
don't have an account) but it does not trivially map to the way e-d-s 
works, though it may be mappable.

Another element of the social network is groups of course. The Mugshot 
social network has entities in it that are people, groups, bare 
IM/email addresses, and RSS feeds

Also involved here is that I'd like to merge buddy lists and also 
people on the local LAN, but not as a one-time import, rather I'm 
thinking these would dynamically merge when you are signed on to the IM 
service. When signed on we'd also want to get presence information.

Telepathy can provide this, but only if people are using a Telepathy 
client. Right now people are using mostly Pidgin/Gaim and X-Chat 
instead, I would guess. So using Telepathy doesn't really get us 
anywhere in the short term on that front. In other words there is a 
chicken-and-egg problem.

I'm sure this will work itself out more as we go, I think the right 
starting point is more top-down and starting with the essentials. I 
don't really expect that we can build the right ultimate API on the 
first try.

For me, the right top-down thinking is that our user model is 

Showstopper Review

2007-04-13 Thread Andre Klapper
another quick list of our worst current crashers. feel encouraged to
take a look and to help out with fresh ideas.


EVOLUTION  E-D-S

http://bugzilla.gnome.org/show_bug.cgi?id=334966
= Evolution crashes sometimes when closing main window

still: 217 dups total, several attempts to fix this already, and some
more information on the circumstances to trigger this, but no safe way
to reproduce.
again: if somebody can reproduce this reliably, please test the patch
attached to comment 109, and see harish's comments in comment 204!


http://bugzilla.gnome.org/show_bug.cgi?id=352284
= crash in camel_mime_part_construct_content_from_parser
157 dups total, 54 in the last 30 days.
useful trace available in comment 96, vvaradhan is looking into this
issue, but it would be great if anybody could provide an example email
for this crasher.
no clear way to reproduce this so far, according to 366403#c3 this crash
is accompanied by evolution using lots of virtual memory.


GNOME-TERMINAL

http://bugzilla.gnome.org/show_bug.cgi?id=348979
= crash in Terminal.

173 dups total, no progress at all here for the last weeks. this still
needs a better stacktrace. a few reporters state that this happened
while opening a new terminal window/tab or applying a new theme, but
there are also other descriptions around (i pasted something).
perhaps somebody can help here and try to reproduce this?


GTK+

http://bugzilla.gnome.org/show_bug.cgi?id=349697
= crash on Open Folder

now 807 dups total, plus 170 in the last 50 days.
comment 219 states that perhaps the fix for 396161 has also fixed this
issue. time (gtk+ = 2.10.8) will tell, and according to the decreasing
number of weekly reports for this issue, it could well be that this one
has been already fixed.


http://bugzilla.gnome.org/show_bug.cgi?id=363289
= gtk_icon_cache_add_icons: icon cache corruption
153 dups total, 31 in the last 30 days.
good trace and even test files available (see comment 103), now if a gtk
hacker (mclasen has commented on that report in the past) could pick
this one up...


GNOME-UTILS\logview

http://bugzilla.gnome.org/show_bug.cgi?id=364106
= crash in System Log: string_get_date_string() at logrtns.c:136
169 dups total, nice trace in comment 2.
looks like a trivial one (index out of bounds), and ebassi told me that
he will have a look within the next days (tia).



Changes/Fixes since the last review[1]:
  * EOG: 379919 is fixed in 2.19.x, which should also fix 320206
  * EPIPHANY: 353503 is notgnome but of course still exists, but the
fix for totem bug 415389 should avoid triggering this epiphany
issue.
  * GEDIT: 354046 is fixed in 2.18.0 - the workaround was committed.

thanks,
andre

[1] 
http://mail.gnome.org/archives/desktop-devel-list/2007-February/msg00301.html
-- 
 mailto:[EMAIL PROTECTED] | failed!
 http://www.iomc.de/  | http://blogs.gnome.org/portal/aklapper


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
desktop-devel-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: online desktop APIs

2007-04-13 Thread Andrew Sobala
Being able to replace Mugshot-as-desktop-server is neither here nor 
there. Sure, from the Freedom perspective we don't want to rely on a 
particular server [1], but that's not what's going to really affect the 
desktop experience.

What's important from the user experience is not having to rely on 
Mugshot-as-social-network. Virtually none of my friends use mugshot - 
they all use facebook.

So what would actually make this work is server-to-server features - the 
desktop may only need to talk to mugshot, but mugshot needs to tie 
[EMAIL PROTECTED]@mugshot.org to my facebook, msn, and jabber accounts. 
These social networks *also* have a variety of presence information, 
friends, social networks, photos, RSS feeds, statuses, and so on 
depending on the service.

I know that mugshot does more than, say, myspace. But if a user has to 
get all of his friends using mugshot instead of (eg) myspace, then the 
end result is that the user can't use mugshot. Or the online desktop.

Hope I managed to get a point across in that ramble :)

-- 
Andrew

Havoc Pennington wrote:
 Though we want to keep things cleanly engineered so someone could 
 replace Mugshot, at the same time using Mugshot is the only practical 
 way to get things going IMO, for a variety of reasons. Some of the major 
 ones:
   - we need an open source server under the control of the development
 community, because web services provided by existing sites and
 companies aren't sufficient. We want to use what exists - say
 Flickr for photos - but then be able to fill in gaps. So for example,
 we had to write our own browser for open source apps at
 http://mugshot.org/applications
   - it's an admin'd, hosted, clustered application server instance that
 has both jsp and xmpp channels, and any server-side function can
 be rapidly added to it; doing a new server-side function from scratch
 has *a lot* of overhead vs. adding to Mugshot (and also has end user
 overhead, e.g. signing up for the new server)
   - because it has web-only and Windows versions, social features need
 not assume that all my friends use Linux
   - the data model of the Mugshot meta social network or whatever you
 want to call it is what we think we want user experience wise, vs.
 say a my contact database data model. For example, people choose
 their own photo and nick, and maintain their own addresses, you don't
 have to import or edit these things.
   - we already have major functionality slices such as tracking your
 friends' photos and feeds, tracking who's listening to what,
 partially-complete file sharing, and social application
 browsing/installing/launching
 

[1] especially since mugshot is under teh c0ntr0l of redhat, and redhat 
are evil and going to take over the world with killer rabbits, remember?
___
desktop-devel-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: online desktop APIs

2007-04-13 Thread Havoc Pennington
Hi,

Andrew Sobala wrote:
 What's important from the user experience is not having to rely on 
 Mugshot-as-social-network. Virtually none of my friends use mugshot - 
 they all use facebook.

Definitely - the idea of Mugshot is not to replace Facebook (or the 
other stuff people use). It doesn't have and isn't planned to have most 
of those features.

Mugshot is a couple different things that are relevant here:

  1) it's just a server. Several of the apps that comprise
  Mugshot really are pretty unrelated to one another to
  various degrees. We can run whatever code on this server we need.
  There are some services such as account creation, etc. that all
  code on it can use.

  2) it's a see everything your friends are doing online application
  in particular, that looks at music people are playing, blog posts,
  facebook activity, new photos, etc. and pulls that together into a
  timeline. It also has links from someone's Mugshot page to their other
  profiles. But it isn't intended to *replace* any of those things.

I agree that getting all your friends on Mugshot is an issue to address. 
They don't really have to *use* Mugshot by the way, just create an 
account and add their facebook account info. But there are perhaps 
solutions to this, we've discussed for example allowing you to add your 
friend's facebook account to the stuff you'd see, even if your friend 
has never used Mugshot. Or even better, we can perhaps use the Facebook 
API to get your list of friends and do this automatically (not sure they 
export the functionality).

So those would be great directions to improve things.

 So what would actually make this work is server-to-server features - the 
 desktop may only need to talk to mugshot, but mugshot needs to tie 
 [EMAIL PROTECTED]@mugshot.org to my facebook, msn, and jabber accounts. 

That's exactly what it is supposed to do, if I understand what you mean. 
There are lots of additional accounts it could tie to, and also more 
ways it could tie to the accounts it already ties to, but the basic idea 
of Mugshot is to tie to all your existing accounts.

See also:
http://developer.mugshot.org/wiki/Supporting_a_New_Service
http://developer.mugshot.org/wiki/Where_I%27m_At_Locations

The desktop should talk to stuff other than Mugshot directly also, I 
think; that will often be easiest. There's no reason everything has to 
go through Mugshot and in fact that will produce needless server load. 
We do as I said though need to fill certain gaps and have certain glue, 
which is where our own open source server is useful.

 These social networks *also* have a variety of presence information, 
 friends, social networks, photos, RSS feeds, statuses, and so on 
 depending on the service.

What we can ideally do is pull together the relevant bits. For example, 
if you're present on any of the things with presence, we can display 
that. That way whether my friends use AIM or Twitter or whatever for 
status messages, I can still see their status.

 I know that mugshot does more than, say, myspace. But if a user has to 
 get all of his friends using mugshot instead of (eg) myspace, 

Absolutely not the intention, we have never felt it was realistic to get 
people to switch social networks.

It's certainly a problem right now that friends have to create a Mugshot 
account before you can watch what they're doing online. We should be 
thinking of good solutions.

The no switching criteria is why we support Windows and even work with 
Internet Explorer, too. All your friends have to be able to use it.

And yeah, we really need a Mac port for the same reason.

 Hope I managed to get a point across in that ramble :)

For sure. I think it's a great point and the hope is that a combination 
of 1) supporting tracking more aspects of what people are doing on other 
sites and 2) supporting ways to keep up with online activity for 
non-account-holders and 3) other ideas people have ;-) will improve the 
situation.

We really need help on the huge list on 
http://developer.mugshot.org/wiki/Where_I%27m_At_Locations by the way 
;-) (including adding more to it, and adding more detail on what to 
watch on each service, but also of course on implementation!)

One of the guiding principles of Mugshot is totally open to work with 
any other site - this btw is one thing our open source site does that 
almost no proprietary site will do ;-) it is willing to work with 
anything and everything.

Havoc

___
desktop-devel-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/desktop-devel-list