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! 🙂
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.
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.
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