Yes, this is the now customary "we have students in GSoC for our project" posting for Plasma. First, though, some updates on the scripting session from yesterday: Jonathan Riddel has
posted logs of the meeting (thanks Jonathan! :); I've updated the
documentation on Techbase for the Plasma Shell Scripting and review is welcome as are fixes made directly to the page, it is a wiki after all!
Back to the topic at hand, however: GSoC and Plasma! It's a bit of a different kind of year for us with GSoC, to be honest. In past years we've had a number of "brand new ideas being implemented from scratch" type projects. This year there's a much strong focus on finishing out features.
We tend to design a little bit ahead of ourselves so that we know where we are trying to go and always know what there is to do next when we finish what we're currently busy with. While this can sometimes lead to a feeling like we're constantly "behind" where we want to be (a sort of mental "optical illusion" :), it's quite useful for times like GSoC where it gives students lots of material to aim for. For instance, Diego Casella will be working on implementing the
authentication framework for add-ons such as Plasmoids that are sent over the network. This will end up impacting, and improving, things like GHNS as well as remote widgets, and is something we did most of the design work for last year. I'm really excited to see this multi-level trust system go into play to help close that cycle for remote content in Plasma.
Brian Pritchett will be working on transparent
caching for DataEngines and Plasmoids, which means that when you first log in (or if you lose network or start where there is no network) you won't be faced with a bunch of dead Plasmoids that aren't showing anything. Instead you'll be able to see whatever the last information retrieved was. Once new data comes in, the cached information will get dropped and things will start updating live again. This will have a huge impact on the perceived performance as well as the basic usefulness of the increasingly connected set of Plasmoids such as weather, microblogging, knowledgebase, open desktop, etc, etc. Due to the DataEngine infrastructure, Brian should be able to add this feature with little to no changes being made in DataEngine plugins and probably zero changes to the Plasmoids themselves. Awesome.
Yuen Hoe Lim wil be working on the
mobile system tray, which aims to take our currently system tray widget and rework it for use in mobile situations. That means something that is finger friendly and works well on a screen with fewer pixels to spare. If that sounds like a contradiction in requirements, you've just understood why this will be such an interesting and challenging project.
Onur-Hayri Bakici will be working on
Plasma Media Center (PMC) which has recently been gaining more developer attention and going at a reasonable clip again. Onur will be focusing on the media backends and API for the media browser, which is a central piece of PMC. Current work on PMC has been focused on using Qt's state machine framework to drive the user interface transitions between different media center screens (home, browse different media types, play different media types) while keeping the control pieces that travel between all screens such "jump icons" to open media or play/pause of playing media while browsing. Onur-Hayri's work should compliment this nicely by providing much needed work on the central content area that the state machine driven components "dance around". What's really neat is that a past GSoC'er, Alessandro, will be his mentor. Full circle, baby!
So we have something mobile, something media and two core infrastructure projects. From there it gets really interesting for Plasma: the rest of the Plasma related projects aren't focused on the Plasma Workspace shells or Plasma core infrastructure. Instead, they are projects to integrate Plasma into other applications.
Ryan Rix and Siddharth Sharma are both working on "summary page" implementations using libplasma. Ryan is bringing a facelift to
Kontact's aging summary page while Siddharth is providing a
dashboard style overview for your finances in Skrooge. Both projects will be using libplasma through a KPart that combines the newspaper view we know from Plasma Netbook with a ready-set-go assembly that hosts it all. Ryan and Siddharth are working on the KPart together since they both need it, and this will likely end up in kdebase-runtime so any application can get to it easily. That means that a Plasma based dashboard which allows an app to use Plasmoids for summary screens, overviews, dashboards, etc. will just a few lines of code away. It means bringing together Plasma with one of KDE's great technologies that debuted back in KDE 2: KParts. It's an interesting thought: bringing together two strong component technologies like that. It may also end up using the Javascript scripting for control as Plasma Desktop and Netbook now do, and it will certainly open up writing plugins for apps in Javascript and C++ for free as well. Getting a good first set of such plugins will constitute the bulk of Ryan's and Siddharth's projects.
Shaun Reich is going to be working on bringing Plasma to the log-in process with a
Plasma based KDM frontend. The existing front-ends will remain, but with the Plasma presentation layer KDM will gain theming unity with the Plasma workspaces and access to much more modern visual capabilities but, much more importantly, it will gain support for things such as on-screen keyboards. By using Plasmoids for the KDM layout, not only can the log in portions look and work nicer, but KDM will instantly get access to all kinds of applicable plugins. Imagine being able to mute the music playing in the background from the log-in screen, leaving notes for others or being able to log in when there is no physical keyboard.
There is also a project, taken on by Shantanu Tushar Jha, to create a bridge between
Gluon and Plasma by making a Plasmoid that plays Gluon creations. I wonder if this could make Gluon our answer to game development with Plasma Mobile?
This outward integration of libplasma into applications where it makes sense is a beautiful next step in taking advantage of all the hard work we've done on the core infrastructure. Besides consistency, it's also going to bring increased productivity to our developers. For instance, with GSoC yet to officially start, Ryan and Siddharth already have the KPart nearly functional.
There are other KDE GSoC projects which will impact Plasma as well, such as Jure Repinc's project to
improve handling of multiple monitors in Kephal. Kephal is used by most of the components in kdebase-workspace for things related to screen management, so improving this will have a huge positive impact on users of KDE Plasma Workspaces who have multiple screens to work (or, as the case may be, contend) with. Another project with implications for Plasma is Paulo Romano's work on
UPnP support in Solid, and I'll be keeping an eye on the various Nepomuk related projects as we're starting to use Nepomuk more in Plasma as well. (More on that in a later blog though.) The work on KWin that is set to happen in this year's GSoC will also impact us positively as keeping the window manager moving has been a critical part of making Plasma Desktop better and better with each release.
So it's going to be an interesting summer with lots going on in Plasma, and even more in the general KDE landscape. Bring it on! :)