[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: RFC: On-demand package installation API in kdelibs
From: Dario Freddi <drf54321 () gmail ! com>
Date: 2010-08-01 12:03:39
Message-ID: 201008011403.45295.drf54321 () gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
On Wednesday 28 July 2010 21:27:14 Ivan Čukić wrote:
> >> I don't think anyone was intending to expose this API to html
> >> renderers (or anything similar for that matter).
> >
> > they can be faked.
>
> Oh, I didn't understand you at first - you meant they'll make a window
> inside the webpage that looks like it is coming from KDE.
>
> I agree, if not thought through very thoroughly, this could be an issue.
>
> ----
>
> I've added Dario to the discussion. (I guess he's already on the list
> but hasn't seen the thread)
>
> He was talking about something similar before.
Whoops, I've actually been without internet for long, so I can jump in just
now.
So, I was actually already after such a thing and I've talked about it with
Lubos already back in the Tokamak days. I didn't really have time to look at
the implementation throughly, however what I was doing (
http://websvn.kde.org/trunk/playground/sysadmin/shaman/ ) was a slightly more
complex and powerful thing. In the usual KDE fashion, that was a wrapper for
various package management interfaces (packagekit, apt, $whatever) providing a
high level interface to application to interact with package management.
This indeed was meant to be integrated straight into the workspace: the whole
API allows creating transactions, monitoring transaction and whatever, and is
also able to perform some custom operations. A lower level API is also
provided for creating package management GUIs. The final aim of all of this
was to allow applications to ask the user to install stuff, and if the user
agrees and authenticates (the whole deal obviously does not run as root),
provide the progress straight into the system tray and make the whole
experience less painful and more integrated.
Shaman's system is way more complex, although it could be a winner in a long
term, and I plan to work on it more next year (there is also a SoK going on
for it). Although, I see this feature is extremely controversial (I didn't
read the whole discussion though, sorry), and something like shaman gives
indeed a lot of power to applications - despite everything needs to be
authorized by the user.
My final point would be actually having an API for applications, but letting
the workspace do the final interaction. So the application says "you need to
install codecs", and you actually says yes. Plasma is notified and a trusted
mechanism is started which tells the user "hey, application X is trying to do
Y, do you want to do that?" (maybe KWin might help here with some tricks) and
then you either confirm or discard.
So a good compromise might be:
- A very basic API, similar to the one Lubos proposed, in KDELibs.
- Something like shaman in kdebase-workspace, which is meant to be used by
plasma only and which would be doing all the "dangerous" stuff.
I think this would grant the best of both worlds and actually would make some
concerns about security disappear.
Opinions?
--
-------------------
Dario Freddi
KDE Developer
GPG Key Signature: 511A9A3B
[Attachment #5 (text/html)]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Liberation Sans'; font-size:8pt; \
font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">On Wednesday 28 July 2010 21:27:14 Ivan Čukić wrote:</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> >> I don't think \
anyone was intending to expose this API to html</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> >> renderers (or anything similar for \
that matter).</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > \
</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > they can be \
faked.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Oh, I didn't understand \
you at first - you meant they'll make a window</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> inside the webpage that looks like it is \
coming from KDE.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> I agree, if not thought \
through very thoroughly, this could be an issue.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> ----</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> I've added Dario to the discussion. (I guess \
he's already on the list</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">> but hasn't seen the thread)</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> </p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> He was talking about something similar \
before.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">Whoops, I've actually been without internet for long, so I can \
jump in just now.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">So, I was actually already after such a thing and \
I've talked about it with Lubos already back in the Tokamak days. I didn't really \
have time to look at the implementation throughly, however what I was doing ( <a \
href="http://websvn.kde.org/trunk/playground/sysadmin/shaman/"><span style=" \
text-decoration: underline; \
color:#0057ae;">http://websvn.kde.org/trunk/playground/sysadmin/shaman/</span></a> ) \
was a slightly more complex and powerful thing. In the usual KDE fashion, that was a \
wrapper for various package management interfaces (packagekit, apt, $whatever) \
providing a high level interface to application to interact with package \
management.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">This indeed was meant to be integrated straight \
into the workspace: the whole API allows creating transactions, monitoring \
transaction and whatever, and is also able to perform some custom operations. A lower \
level API is also provided for creating package management GUIs. The final aim of all \
of this was to allow applications to ask the user to install stuff, and if the user \
agrees and authenticates (the whole deal obviously does not run as root), provide the \
progress straight into the system tray and make the whole experience less painful and \
more integrated.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Shaman's system is way more complex, although it \
could be a winner in a long term, and I plan to work on it more next year (there is \
also a SoK going on for it). Although, I see this feature is extremely controversial \
(I didn't read the whole discussion though, sorry), and something like shaman gives \
indeed a lot of power to applications - despite everything needs to be authorized by \
the user.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">My final point would be actually having an API for applications, \
but letting the workspace do the final interaction. So the application says "you \
need to install codecs", and you actually says yes. Plasma is notified and a \
trusted mechanism is started which tells the user "hey, application X is trying \
to do Y, do you want to do that?" (maybe KWin might help here with some tricks) \
and then you either confirm or discard.</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">So a good compromise might \
be:</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"> - A very basic API, similar to the one Lubos proposed, in \
KDELibs.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"> - \
Something like shaman in kdebase-workspace, which is meant to be used by plasma only \
and which would be doing all the "dangerous" stuff.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">I think this would grant the \
best of both worlds and actually would make some concerns about security \
disappear.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">Opinions?</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-------------------</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Dario Freddi</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">KDE Developer</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">GPG Key Signature: \
511A9A3B</p></body></html>
["signature.asc" (application/pgp-signature)]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic