[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;">&gt; &gt;&gt; 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;">&gt; &gt;&gt; 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;">&gt; &gt; \
</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;">&gt; &gt; 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;">&gt; </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;">&gt; 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;">&gt; 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;">&gt; </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;">&gt; 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;">&gt; </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;">&gt; ----</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;">&gt; </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;">&gt; 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;">&gt; 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;">&gt; </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;">&gt; 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 &quot;you \
need to install codecs&quot;, and you actually says yes. Plasma is notified and a \
trusted mechanism is started which tells the user &quot;hey, application X is trying \
to do Y, do you want to do that?&quot; (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 &quot;dangerous&quot; 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