[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