The first results of porting Plasmate to KDevPlatform

In my previous blog post I explained the reasoning behind the port of Plasmate to KDevPlatform but I didn’t mention anything about the progress so far, so here we are šŸ™‚

Plasmate’s UI consists of two different views. The first one is the startpage which serves the purpose of creating new packages and loading existing ones and the second one is the main window with the appropriate editor and the various dockwidgets that can be used for theĀ specific package.

KDevPlatform offers an empty main window which gets populated with plugins. Which offers all the features that plasmate needs, so the decision was to reuse the main window from KDevPlatform and to drop the plasmate one. Which is great because we don’t have to maintain our own and of course we could improve the KDevPlatform’s one if we need to.
Also when the port gets finished we won’t offer all the plugins that are available we will only offer the ones that can be used for the development of plasma packages.Ā  So here we have the plasmate’s main window


Reusing KDevPlatform’s main window means that some changes were required in the startpage in order to integrate it with the main window but the UI hasn’t changed as you can see šŸ™‚


Also as I mentioned before, the main window gets populated with plugins. So the first plugin that I had to implement was the replacement of the plasmate’s file manager. This new plugin is called “Package” in the UI. The main characteristic of the “Package” plugin is that it presents the files of the package with their semantic names. Here we have a plasmoid package and a theme package



From a technical point of view, the plugin is using the KDevelop::ProjectModel which is a QAbstractItemModel and I have just used the QIdentityProxyModel in order to change the names of the files.

Note that the port is in progress so by the end a lot of things will be polished.

Stay tuned! šŸ™‚

Porting plasmate to kdevplatform

The original Plan

Plasmate’s goal is to help people create/test and deploy plasma packages. Originally in KDE4 we offered a clear way on how to use the plasma tools like the embedded plasmoidviewer. Ā But we were aware that people might not want to use plasmate and instead Ā use the plasma tools as standalone applications like they used to before the release of plasmate so we were still offering the option of using another IDE and the plasma tools. Ā Also for every single new feature that we added to plasmate(like the kconfigxteditor) we also provided a standalone application because we wanted to give people the option to continue use their favorite IDE and the new plasma tools. In my opinion the purposeĀ of a software application is to make the life of its users(people) easier. For the ones who don’t use plasmate if we didn’t offer those tools as standalone applications we wouldn’t fulfill our purpose. But it can also get better šŸ™‚

The plan in practice

Personally while I like the original plan I am not happy with the results because Ā of the maintenance burden and theĀ lack of collaboration, plasmate isn’t alone in the universe. What I didn’t have realized back then was that it takes so much time to maintain a plasmate and also to develop/improve the tools that it offers. Ā The struggle was real in KDE4 and while we were porting plasmate to KF5.
Plasmate isn’t alone in the universe, its not like people used to code using plasmateĀ in the pastĀ years. But there is one IDE which fulfilled that for years, KDevelop šŸ™‚ Until now people were able to use KDevelop and also to switch to the standalone application like plasmoidviewer, but this isn’t the best that plasmate can provide to KDevelop.

Ā Collaboration

KDevelop isn’t a monolithic IDE. KDevelop is an IDE with a lot of plugins which are based on KDevPlatform. Even KDevPlatform isn’t a library, it’s a set of libraries. So extending KDevelop is possible. So this year I was accepted at Google Summer of Code with the project of porting plasmate to kdevplatform.

The benefit

Here we have a win-win situation. All the tools/features of plasmate will be also given as KDevPlatform plugins so KDevelop will be able to use them. In addition to that plasmate will reuse from KDevPlatform everything that it needs which means that I was already able to remove from the plasmate repository more or less 5k LOCĀ (and I haven’t finished yet :))

My next blog post will cover the progress that I made so far with my Google Summer of Code project

Bodega Collections

One of the basic features of the bodega ecosystem are the Collections.
The collections are a set of assets with a common characteristic.
A collection can be something like the “Most Viewed Assets” or “Most Downloaded Assets”.
The bodega-server used to have the collections feature for quite some time now but our
clients didn’t. So during my Google Summer of Code 2013 project I added support for the Collections
in our clients. Below you can see some screenshots from our clients.

Our clients are theĀ bodega-clientĀ andĀ bodega-webapp-clientbodega-collections
The bodega-webapp-client is still in the alpha phase, since we focus
more on the native one. We prefer to have a complete client rather than
two incomplete ones :).

Bodega Asset Ratings

One crucial feature for a content store are the ratings of an asset,
every content store needs some ratings in its assets. So we had to figure
out how to handle the ratings in in bodega, my idea was to
use the 5-star rating system. I was thinking “What could go wrong? Its the system that most of
the content systems are using.” well here is what it could go wrong šŸ™‚
The image from the xkcb explains how meaningless is the 5-star rating system. Then Aaron proposedĀ an alternative solution and is the one which we use. Every category of assets would have a few rating attributes
which would have a description and a value. So, here is an example, all the assets of the category gamesĀ would have rating attributes such as:
  • performance
  • stability
  • playability
those attributes can have values from 1-5 which willĀ have guiding text to help the userĀ decide how to rate the item. for instance, stability might have as 1 star theĀ value ā€œcrashes oftenā€ and 5 star ā€œrock solid”
During my Google Summer of Code 2013 project I had to implement the ratings feature.
I had to implement the ratings functionality in the bodega-server and to our client.Ā That’s why I was silent about the ratings, I guess making a blog post with some raw jsonĀ isn’t exciting šŸ™‚ So here is how the ratings look like in the bodega-client
Also all the bodega API is documented at
Contact Info
If you are interesting about bodega you can
contact us at or in #active at freenode

Bodega’s Comment System

Every content system needs a comment system, so does bodega šŸ™‚
For bodega we decided to use discourse.
Of course setting up an instance of discourse wasn’t enough. The
users should be able to log in with their bodega credentials and
they should have a place to discuss about the assets. So the users
are able to log in with their bodega credentials (ok nothing fancy here šŸ™‚ )
and for each asset there is a category in discourse which contains posts and topics.
Here is how a discourse instance for the bodega looks like


Contact Info
If you are interesting about bodega you can
contact us at or in #active at freenode

Bodega Content System Web Application Client

We are happy to announce the move of the Bodega Content System Web Application(bodega web-app) Ā Client in KDE’s playground. The bodega web-app client is a frontend for the bodega-serverĀ like the Addons Store is. We have made a video which presents some of the basic features of the bodega web-app client.

The bodega web-app client is a playground project so its not ready yet, this is just what we have done until now. We have setup the bodega web-app client hereĀ in order to make it easier for people to test it and keep an eye on the development of it.Ā 

How To Install It
The Bodega web-app client is completely client-side, in order to install it and test it in your machine you must do

> cd bodega-webapp-client
> npm install (only the first time in order to install the dependencies)
> node app.js

irc channel:
#active @freenode
Mailing List:

Plasmate 1.0-beta1 is out!!

We are very happy to announce the 1.0-beta1 of plasmate.Ā Plasmate is part of the Plasma SDK. The Plasma SDK is consisted of the old kde-workspace tools and plasmate, which is the plasma’s IDE.

Plasmate makes the developement/testing/deployment of your application very easy and fast. Your application can be a plasmoid, dataengine, runner, theme, a Kwin effect, a kwin script and a kwin windows switcher.


Plasmate doesn’t restrict you into a specific language, each package supports aĀ variety of languages which you can use.


The 6 most powerful(at least for me:) features in plasmate are

  • the semantic file browser
  • the embedded plasmoid previewer
  • the konsole previewer
  • the metadata editor
  • the project manager
  • and the kconfigxteditor

The semantic file browser

In order to create a package, this has to follow a certain directory structure, of course plasmate is able to create a package with the correct directory structure but if you don’t know the directory structure in how will you add more files into the package? Plasmate offers a semantic file browser which makes it easier.


The embedded plasmoid previewer


As you can see you don’t need to open and close your plasmoid previewer every time that you change something in your plasmoid(no more switching between your terminals šŸ™‚

of course a nice embedded previewer without some output is useless so..

The konsolepreviewer


The metadata editor


You don’t need to know any entry in the metadata.desktop file, the metadata editor does the job for you!

The project manager

Do you want to install or to publish your plasmoid but you don’t know how?
Well, you do now šŸ™‚



This year in my GSoC project among other stuff I also implemented the KConfigXtEditor. With the KConfigXtEditor you modify/create your xml files which are being used from the KConfigXt framework.


Any feedbackĀ is really appreciated in this phase since we are approaching the 1.0 release.
You can find moreĀ informationĀ about plasmate in our community wiki page.

You can download the complete Plasma SDK from here.

Update: fix the tarball link

Contributing Experiences