Wednesday, January 15, 2014

Looking for an opportunity

Hello, merry Christmas and happy New Year!

Lately, I have had to refrain from participating in open source projects in order to deal with some real life issues, such as masters studies and the like. However, in the near future I hope to be able to dedicate a considerable amount of time to KDE. Having been around for a good while as a user and recently also as a contributor, I've always appreciated the atmosphere in the project, as well as the infrastructure, the technologies behind KDE (that is, Qt and cmake) and even the code itself. (Well, some code is really difficult to detangle, but that's challenging and thus engaging, given I have enough time to read through all the 10-15+ long include file chain :) ).

Once, I had the opportunity to code for KDE on an official basis, as a freelancer. I enjoyed that opportunity, since I find developing in an international team for an open source project to be light years ahead of coding for an outsorcing company in favor of an unknown and faceless customer. Furthermore, it is indeed rare that you get the chance to develop for the open source project that you like, as your job.

Hence I've made this post, to express the interest in finding an opportunity to develop a KDE-based project (or one of the core KDE projects) as my job.

P.S. Should this post violate any guidelines, I will immediately remove it. Any opinions expressed in the post are entirely mine and do not express the opinion of any team(s) in the KDE project.

Thank you for your attention!

Thursday, August 8, 2013

FolderView update

Hello planet,

Well I think it's time for a small update on porting the FolderView applet to QML.

First of all, I've dubbed it QuickFolder for now, this is the name under which it exists in  the kde-baseapps repo. The reason is that both codebases need to coexist for a while for me to carry over the old (existing) code to the new applet.

The repository I'm currently working in is a personal clone, and can be found via

Branch plasma/isemenov/qml.

Now my impression of this work is that it's quite, I'd even say *very* challenging at times, since for me, QML is an unknown technology and I'm lazy to thoroughly read through all the docs (of which there are lots, as usual). So big thanks goes to all the people who help me out on irc in #plasma and #qt-quick.

For now we are sticking to QML1, well there is no solid reason that I could name out of my head, although the QML1 choice may be subject to change in the future.

So for now, we've done three milestones, even if minor per se:

  • get the view to show a model
  • get the view selection based on applet/containment to work (different implementations required, for a certain reason)
  • get the selection to work (click, shift, ctrl selection implemented, rubberband / shift in a free layout to be done yet, a lot of fun to be had)
  • and, today, we finished the basic context menu implementation, i.e. got it to show where we need it to.

Now the context menu could be done in QML components easily, but unfortunately we depend on a specific menu implementation - KonqPopupMenu, which is a C++ menu library. Thus we are forced to stick to that, and come up with a solution to show the menu at the correct coordinates.

Technical - the menu works like this: for a delegate that the user right-clicks, we pass that delegate in a QVariant to the C++ side, and then perform some coordinate mapping magic to get the menu to show at the said delegate's position. Then we offset the menu a little to show it right under the cursor, as common.

While these achievements may sound minor, for me, who hasn't done any solid programming from the ground up for a long time, this is a lot of fun and also challenge :)

Acknowledgements go to Eike Hein (Taskbar is a great reference), all the Plasma QML crew, and folk from #qt-quick (esp. jpnurmi).

Friday, March 8, 2013

Why Do They Say Android Phones Run Linux?

Hello World!

Long time no code - exams underway, my apologies to the Plasma Team for the silence. I prefer to stay away from IRC since that gets me engaged into work real easy - I *love* the stuff we're working on :) Next week should be it and back to full-time hacking!

Now one of the courses I've been doing is Android Programming. In order to test the school task software I write in a native environment, I got a real Android PDA (ZTE V985, equal to HTC 1X / LG 4x, if I recall correctly, it is built on a quad core Tegra chip). Well, the hardware is awesome to say the least, especially the high resolution display, however I'd like to elaborate on the software part of the device in this post. So, this thing runs Android, which, from what I understand, is used to refer both to an OS and a set of API's to code against. OK, cool, it runs Linux, sounds awesome. I've been using Linux for years on the desktop (ever since father made me get familiar with it, RedHat 3.0 back then IIRC) and love it, especially the control it gives to the user (as in the PC operator, regardless of the admin privilege level). If you asked we for 1 distinctive feature of Linux that sets it apart form another OS'es, I would for sure say "control".

Then I started to tinker with the box. On a long journey back home from the Uni I decided to check some email, and launched the GMail built-in application. First blow: it logged in automatically, no password required. Where the heck did it manage to sneak peek my password and login from? Ah, yeah, right, I had logged into the application store to install some city navigation software. OK, why don't you ask me if I want to share the password with another application? Not to say that this kind of behavior may teach the kids to care less for the security of their PC's and data (why, it's my phone / PC / $box, why place passes all around the OS?) I admit, this is not the OS' fault, it's Google security policy.

(To be fair: the pass is not stored neither in a shadow nor encrypted, an "authentication token" is used instead.)

So, what was the second blow like? I wanted to remove that application for goodness sake. Not possible!

Of course, there is no package manager, at least in the default distribution. OK, there are Linux'es that lack a package manager IIRC, using a bundle system instead. But the thing won't let me erase an application! That is, not even a library, or a userspace service / component (which I'd understand, but of course not welcome). Nope, you have to "root" it, and that voids the warranty. Third blow! No root access? Voiding the warranty by obtaining that? Nice, that's Linux at its finest.

OK, some of you may say that this is how the HW vendors exploit poor Google and their art. Heh, that's what licenses are for! State it explicitly - no freaking removal of control, or you don't get our code. Simple as that. Examples? IIC (L)GPLv3 (not sure it it's the L or the simple one or maybe both) contains a paragraph forbidding the locking of devices running that code, called "tivoization". (OK, I'm not a lawyer, but that's what Linux Format claim, and I trust them on those matters).

Do not call it Linux if it is locked and its license allows locking! Call it Lockix or Blockix or whatever your "product managers" come up with. Do not fool people please!

Disclaimer: this is my personal opinion and it does not express the opinion of the KDE team, nor is related in any manner. All the responsibility for spreading any flames or such is mine and only mine.

Monday, December 24, 2012

Merry Christmas and decent bug reports to everyone!

Merry Christmas to all the KDE devs and users!

Yesterday I finally fixed an often reported crash (bug #299077). Fact is, I'm still celebrating this achievement since that used to be a really mysterious crash. With this post, I would like to thank the user "wodencafe" who provided the bit of detail that made it possible to fix the crash.

Now I know this crash was very trivial. Basically, since plasma-desktop is a process, and applets are merely c++ objects in memory that get created and deleted over time, a leaked instance of dynamically allocated variable in one of the applets may remain in the plasma-desktop process memory until it is quit (restarted). In this case, it was an item view, whose parent was never deleted properly. What made things worse is that the model that view was using got deleted properly on applet removal. So, this leaked itemview kept receiving signals on plasma theme change, and then tried to dereference the (already-invalid) model pointer. Voila!

Moral of the story: a good bug report is one of the best things we could wish to a fellow programmer. The key bit of information, in this case, was that you had to remove the applet from the panel to trigger the leaked item view state.

Also, I'd like to thank dfaure for teaching me to use the debugger any time I have questions about the program. Sound simple, but still :)

While I am at it,  I'd like to ask the C++ experts (hope that the Qt devs read the Planet and this blog post): is it 100% safe to assume that calling the delete operator on a 0 pointer will not crash on any platform / compiler / libc implementation? Or is it, in the general sense, not quite guaranteed? Thank you!

Tuesday, March 27, 2012

Selection Marker in the FolderView Applet

Hello fellow kde devs & users!

There is an active discussion going on around this bug:

The problem in question is adding an option to disable the "+" overlay button in the FolderView applet, in analogy with the existing "Click to view folders" option.

So, to really get the option in, we need to demonstrate that this option is valuable to a solid part of the KDE user community. To do this, I've created this poll here:

Opinions welcome! :)

Disclaimer: This post is not intended to create any kind of holywar, flame or FUD. It is intended to explore the opinions of the user base and to raise awareness of the issue. Thank you for understanding the rationale behind this post and treating it constructively.

Monday, March 26, 2012

NFS FolderView Bug

Hello fellow KDE devs and users!

Once again I am asking you to report on a bug which is not reproducible for me.

Here it is:

Basically, folderview lays the icons out in a random order (though automatically, on a grid and sequentially) on plasma restart if the icons had been previously put in custom positions (dragged around with the mouse.)

I would like those of you who have ever experienced this bug to check out the trunk and see if the bug persists. I have just made a commit fixing a potential race condition that could lead to the manifestation of this bug, but this is, of course, just a guess. Also, any additional information is welcome.

Please, comment directly at the bug page listed above.

Thank you in advance!

Thursday, March 8, 2012

KDE 4.8.1 available in Fedora

Hello fellow KDE devs and users!

I'm glad to tell you that the 4.8.1 update is available in Fedora in fedora-kde48 and kde-testing. Check out the amazing KDEPIM and folderview bugfixes, and probably a ton of other nice stuff!

Also, the hardcore desktop tweakers out there will appreciate one kdelibs / workspace / folderview fix I did for 4.8.1. Namely, I introduced a new KGlobalSettings category, SETTINGS_STYLE, and patched kcmstyle to emit a KGlobalSettings::settingsChanged notification with this category when the Graphic Effects level in the Fine Tuning tab is changed. Then, I patched FolderView to take advantage of that functionality, so now the hover-enter / hover-leave icon frame animation will only be enabled for the "low-low" and "high-low" (the topmost two) effect levels. I welcome those of you who use animations in your apps to take advantage of this change as well and consider disabling some or all of those animations at a certain graphic effects level. FolderView, for example, disables animations at NoEffects and GradientEffects and enables them at the higher levels.

Unfortunately, I forgot to backport the kde-workspace (kcmstyle) part of the fix to 4.8.1, and done that only a few hours ago (the original fix I did it mid-February). However, in Fedora, the fix will be available in 4.8.1-2. The other distros will probably push it as part of 4.8.2 when it is released.

Feedback for 4.8.1 in fedora-kde48 / kde-testing welcome! (of course, you should be reporting it to the RH tracker, I can only notify you about the updates)