Merry Christmas, and a PlasMate surprise for you :) [screencast]

Hello planet,
It’s been a looong time since my last post here. As I wasn’t selected for attending the GSoC this year, I focused myself mostly on passing my last few exams, and finding a teacher for the thesis I’m currently doing.
But, as PlasMate mantainer (along with sebas), I always felt completely unstatisfied about the current codebase and I couldn’t stop thinking about the improvements I had to do1.

Thanks to Giorgios,  who took the responsibilty for keeping the bug count low and implemented a lot of cool features too, I was able to use my little spare time to think about how improve PlasMate codebase.

I started with implementing a small core library which basically:

  • loads a series of language definitions (no more hardcoded values for each language);
  • performs a scan of the plasmate projects dir;
  • loads the projects and reads their specific project settings.

Then, I started implementing a simple plugin structure to make PlasMate more flexible without the risk of  letting the code grow with no  control. The current supported plugins are:

  • DockWidget (surprise! 😛 ) – widgets that can be placed in a QDockWidget, but also in an overlay or in a special “pinnable widget” (yet to be implemented). The File Browser, TimeLine and Previewer in the video all belongs to this type (coming soon: a console to collect the applet output);
  • EditorCreator (blah, i have to rename it to EditorFactory): creates and Editor for the given file, based on its type; for now we have a kate editor and the metadata editor available (coming soon: QtDesigner editor);
  • WebServices – allows PlasMate to interact with online services such as OCS, OwnCloud and others (none done yet, I’m porting the OCS one however).

At this point I’ve also implemented a configuration manager to write plasmate-wide settings,project-specific settings and also plugin-specific settings, so there is just one centralized place which takes care of this kind of stuff 🙂

The library bits and the UI are working quite ok, I can load the old projects and save the project-specific settings, open the source files/edit/preview the changes, but there is still a lot of work to do. The code is hiiiiighly unstable and lives only on my hard drive for now: as soon as I get something more stable, I’ll publish it 🙂

In the meantime, enjoy this video teaser 😛


Or, you can download the video in HQ and watch it later.

And Merry Christmas to all of you!


1: To Igor and the other people I told I was busy with a secret project.. yeah, it’s this one 🙂 When I started developing the kmix applet replacement, I started having the concrete feeling that PlasMate was too much difficult to adapt to my workflow (i.e. no tabs to switch from a source to an other, the problems with the previewer size..) so I finally decided to start its modularization immediately 🙂


7 responses to “Merry Christmas, and a PlasMate surprise for you :) [screencast]

  1. Don’t get me wrong, you’re doing a great job, but those movable horizontal lists with kinetic scrolling are no good, they look nice and work ok on a touchscreen, but they are unusable with a mouse. I think a vertical list with a scroll-bar would be better.
    Also, there’s more space on the screen to fit the icons in both the timeline and the project view, it’s not necessary to squeeze them like that.

    I understand that the gui is a WIP, and apart from that it seems to be on the right track, I would love to make some plasmoids with that. How does it integrate with the qml plasma components?


    • Don’t worry, the scrollbars will return of course.
      About your last two sentences: you can start right now with if you want, just install plasmate from using your favorite package manager 🙂
      Qml plasma components are just bindings to expose plasma functionalities to plasma; just start plasmate and start a new declarative(qml) project, and plasmate will initialize
      a simple project with a stub of a qml applet ready to be modified as you wish.
      For the api, look at 😉


  2. Mmm Isn’t a plugin platform what KDevPlatform is? You should check out KDevPlatform before craeting a Yet Another Pluginable Editor (Kate has Plugins as well, I’m sure you can re-use the base…).


    • Yep it is, in fact my idea in the future is to try to write an Editor plugin which loads the kdevplatform editor, so we get their full featured editor too (the qml/python/js/ruby language plugin still should be written iirc) 🙂
      But still, i think we should take only the interesting bits of kdevplatform because scripted plasmoids/runner/dataengines simply have a different workflow than the usual projects.


  3. The top priority is to get a Plasmate release out. The architecture might not be the most beautiful in the world, but the code base is so small that it doesn’t actually make a big difference.

    What Giorgos is doing is actually the right thing: Banging on bugs, filling in parts of essential functionality, and moving it towards releasable state.

    I’m a bit disappointed that you instead re-write essential parts in your own private branch. It’s exactly what we talked about a few months back: being able to release it is more important than changing its architecture. It would’ve been nice if you joined our efforts in this (reviewing patches, fixing stuff, etc.) and not go off in private to rewrite stuff. :/

    Don’t get me wrong, it’s really cool that you work on Plasmate, it’s just not in line with what the other active contributors are focusing on as a team effort, that makes me unhappy because if we would all pull in the same direction, we’d be moving towards our goal faster.


    • I completely agree with you sebas but I still fear that someday, trying to implement a new feature or fixing some bugs, we will look at the codebase and say “if only we made it more modular when we had the chanche” 😦
      However, I didn’t “went off to work on my own” : I really don’t have much time for coding (except for the thesis I’m writing), just read my previous post. Since Giorgios was (and is) a very active PlasMate contributor, I decided to spend these couple of hours of this free time of mine to work on this “what if” project, and then see the feedbacks.
      I want to come back coding as the old times as soon as this crappy period is over 🙂


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s