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

plasmate_mainwindow

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 šŸ™‚

startpage

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

packagemanagerview_themepackagemanagerview_plasmoid

 

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