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 _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel