[GSoC] Abilitity to publish and/or share applets and/or activities.

Rob Scheepmaker r.scheepmaker at student.utwente.nl
Fri Mar 13 18:35:21 CET 2009


This is an idea for a summer of code project I'd like to propose. I've written 
a couple of use cases, and a list of things that'll need to be implemented for 
this to work. This is just a very first draft and I'm looking forward to 
feedback on this idea.

Alice is a teacher on a school where they use computers as a learning aid. She 
has set up all computers in the classroom to display a single shared activity 
in plasma. Now Alice can modify this activity on her computer depending on 
what she teaches that day, and all the children immediately see changes she 
made on their desktop as well. Because this activity is shared, a lot of 
applets also sync smoothly: whenever she modifies the text in a certain note 
applet for example, all children will immediately see this change.

Bob's desktop pc is connected to his stereo, and he often uses that pc to put 
on some music. He doesn't want to have to walk to this pc whenever he wants 
to, for example, skip a song. He publishes the "now playing" applet that is 
already on the desktop of his main pc. He picks up his wifi enabled uber phone, 
and in the add widget dialog on his phone (which is of course running plasma) 
he selects this published applet from the list of  applets and containments 
that are published on the network. Now the exact same "now playing" applet 
appears on his phone. He can use this applet to skip songs on his main 
computer, or to see what song his main computer is playing.

Charlie just got a new notebook. He would like to have some of the same 
activities he has created on his other pc on his newly installed notebook. He 
publishes these activities to the network, and adds those activities on his 
notebook. Note the difference between this usecase and the previous one in that 
in this usecase, Charlie will want to his the local dataengines and services 
of his notebook, instead of being connected to the dataengine/services from 
his main computer. Somehow we'll have to come up with clear terminology to 
indicate this difference.


REQUIREMENTS:

being able to connect to non local dataengines and services ( with help of 
ervin's JOLIE integration library.... discuss further with ervin. )

being able to publish applets and containments:
* Through DNSSD (zeroconf)
* To GHNS
* Telepathy tubes?

being able to send an applet over the wire
* Send package in case of scripted applet.
* Send current state (current config)
* Depending on whether the applet is 'shared' or 'copied': make sure 
dataEngines and Serives refer to the computer the applet came from:
** Applet needs a property to specify where to look for 
dataengines/services.... default localhost
** Calls to dateEngine needs to return a special DataEngine to receives it's 
updates and sources list from a remote service, after requesting the specified 
dataengine from that service. (RemoteDataEngine)
** Calls to serviceForSource need to return a remote service. Details on this 
depend on ervin's library..
** A way to very conveniently synchronize changes between shared applet's. 1 
or 2 lines of code should be enough for accomplishing something like this 
right?

GUI options to publish applets/activities and add published 
applets/activities.



POSSIBLE DIFFICULTIES:

Security: always ask permission before someone accesses one of your published 
applets. It should be possible to bolt it down using kiosk. Probably more 
security issues to think about.

Different resolution screens should be handled gracefully.


Regards,
Rob



More information about the Plasma-devel mailing list