Re: Online Accounts panel for 3.2


On Wed, Apr 27, 2011 at 1:16 PM, Alberto Mardegan
<mardy users sourceforge net> wrote:
> Hi David,
> On 04/27/2011 07:10 PM, David Zeuthen wrote:
>> On Wed, Apr 27, 2011 at 10:52 AM, Alberto Mardegan
>> <mardy users sourceforge net> wrote:
>>>> On dependencies: we are trying hard to move away from libdbus-1 and
>>>> libdbus-glib-1 towards GDBus.
>>> As far as libaccounts is concerned, this can be changed easily -- although I
>>> don't see a real benefit in moving to a slower implementation...
>> What do you mean by "slower implementation"?
> Well, you should know I guess. :-)
> Whether we trust the test is another issue (I didn't try it myself), but
> anyway I don't see strong reasons for changing an existing piece of code
> to GDBus (of course, if we were talking about newly written code, things
> would be different).

Oh, that old thread. Well, I'll just repeat what I've always been
saying: if a factor of 4 going to kill you, then you are already using
D-Bus incorrectly. Either way, as I said in bug 634471 (which is where
discussion of GDBus performance should take place), I'm not opposed to
optimizing GDBus - I just want someone to actually benchmark things
sensible instead of this completely baseless "GDBus is slow"
non-sense, sorry. And, btw, if you are already using libdbus-1 and/or
libdbus-glib-1 you should worry about threading instead of

>>>> Configuration: I don't think SQLite is at all what we want.
>>> Why not? Is it an unwanted dependency, or do you think that using it is
>>> overengineering?
>> I just don't think it's good for storing user configuration.
>> Especially not on multi-user or managed- systems where it's useful
>> being able to configure 1000 users by dropping a simple file in /etc.
> I'm not sure I'm following you... If by "1000 users" you mean "1000
> accounts for one user", then even in libaccounts-glib case that's just
> one file.
> If you are talking about real 1000 users, each one having some accounts,
> libaccounts would indeed require you to have 1000 different files -- but
> I don't see how this could be different for GOA: would you store the
> accounts of 1000 users in a single file? In any case, I fail to see the
> use case for it.

I'm talking about having 1000 Unix users on a big box (or each on
separate boxes). For example, if I'm a sysadmin for the City of Largo,
then it would be nice if I could just drop a file so that the "City
Events" calendar account is included for each account. This is nothing
new - it's what we've been doing with GConf defaults etc. forever.

>> Not necessarily. My implementation is using the upcoming
>> org.freedesktop.DBus.ObjectManager so all the async issues basically
>> go away. See
>> for the API. OK, so getting the initial GoaClient object is an async
>> op (you can do it sync which is fine - it's a local RPC call that is
>> guaranteed to return very quickly), but from there it's smooth sailing
>> - you get property changes and so forth for free.
> Neat. I would also suggest you to do the same thing when changing the
> accounts: that is, instead of having an async/sync version of every _set
> method, just have a synchronous one which sets the value locally, and a
> per-account sync method (or even on the GoaClient).

I don't think any client except the configuration UI is supposed to do
any set calls. And, btw, setting a D-Bus property from a client app
has no error checking (same way g_object_set() has no error checking)
because the daemon-side is designed to not have writable properties.
So the programmer does not have to worry about the async aspect.

> Sure. But it beats me that we are making a D-Bus call for something that
> could just be obtained directly. Since this information is static, why
> not just read it directly from somewhere in the file system?

I don't think you understand how it works - the _only_ D-Bus call that
is made is the initial GetManagedObjects() D-Bus call. Everything else
is cached in each client and updated in response to PropertiesChanged
signals. That's just how org.freedesktop.DBus.ObjectManager works...

>>>> So as mentioned last week, I was already hacking on something along
>>>> these lines that works this way. I'll try to get it into a shape where
>>>> it can be shared Real Soon Now(tm).
>> See -
>> there's also a video of how the panel.
> Functionality wise -- cool! :-)
> Security wise not so much,

Excuse me? Why exactly is this not secure?

> even though I understand that security is not
> the focus of the GNOME desktop.

That's non-sense. Security is just as important in GNOME as in any
other sensibly designed environment.

> I see a few issues with your implementation, which IMHO largely surpass
> the flaws you noticed in libaccounts-glib dependencies:
> - it's not yet ready :-)

It's fine, we're doing time-based releases. We also specifically don't
want to commit to any stable API for a few releases. So that's why
it's so much better to use something we write in GNOME itself.

> - it doesn't have the concept of different services on the same account
> (in this respect, I think that your initial proposal was more complete,
> because it was mentioning them)

It does. See

I'm probably going to rename it "Scope" though, since it's more in line

> - every client needs to load all accounts data in memory, even though it
> might use just one account

How many accounts do you think people have? Complaining about memory
use is completely missing the point. Seriously.

> - excessive use of D-Bus, for no good reason (static information should
> be directly accessible)

No, it's fine. You just don't seem to understand how ObjectManager works.

> - monolithic approach to providers and services

It's not monolithic, no. I don't know why you think it is.

> - API doesn't cover some basic use cases (for instance, enumerating all
> account which supports the e-mail service type)

Easily added.

> I understand that most (if not all) of these points can be addressed and
> fixed, or that some of them might not be a concern for the desktop
> computers, but it still strikes me why you want to implement a new thing
> when there's an alternative which also works on embedded devices.
> I totally understand your concerns about using the MeeGo SSO parts
> (though I think that even if one decides to re-implement it in plain
> Glib, most of the concepts are good and the client API could be quite
> similar to that of libsignon-glib -- though admittedly it can be done
> better); but for the accounts side, writing a new implementation goes
> beyond all logic. Well, my logic at least. :-)

Plain GLib? Excuse me. Please realize that all the code is currently
just under 7000 lines of C. Including comments and header files. That
includes a gnome-control-center panel, the daemon, the client library,
the OAuth2 impl using webkit and Google and Facebook implementations.
It's all in one place and we are free to change a lot of things at our
own pace.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]