Subscribe to Planet KDE feed
Planet KDE -
Updated: 22 min 42 sec ago

From window killing to screenshot

Wed, 11/23/2016 - 08:52

Last week I concentrated most of my development work on screenshot support through spectacle in a KWin Wayland session. Now I am happy to announce that we merged support for capturing a screenshot of a window with the help of an external application like spectacle.

To explain why this is a great achievement we first need to look at X11. On X11 taking a screenshot of a window is easy. It’s part of the X protocol to read the pixmap data of the root window and you get the position and size of each window. Thus one is able to cut out the window and have it as a screenshot. That’s the most simple variant to do it, spectacle and previously ksnapshot do it differently. More on that later on.

This is the way to screenshot the active window. If one wants to screenshot any window the user needs to select it. Also for that the X protocol contains everything one needs: grab the mouse cursor, get the click and query the x window tree to figure out which window got clicked. Afterwards screenshot it the same way as explained.

For bringing that to Wayland we see some “problems”. Wayland is designed in a sane and secure way matching the security requirements of 2016 and not the security requirements of the 1980s. An application taking a screenshot of another window or of the complete system is nowadays not acceptable any more. And there is no built in way to take a screenshot – neither of fullscreen nor of a window.

And even if there were, it wouldn’t help much. Information about other windows are not available. One cannot get the information of which is the active window or what is the window under the current mouse position. Also an application is not able to grab the mouse and get the click anywhere on the screen. Mouse is always only available on the current window.

So overall quite some obstacles to take a screenshot and we see that it will need support from the Wayland compositor:

  • Selection of the window
  • Taking the screenshot
  • Communication protocol with the application

Luckily KWin is partially already prepared for it. Even on X11 KWin provides a screenshot functionally to spectacle. A few years ago we wanted to have something better than the standard X screenshots. We wanted to have a window completely taken without overlapping windows and the decoration with the shadows included. Shadows are in case of KWin rendered by the compositor and not part of the X windows. So in order to screenshot it needed support from the compositor, just like on Wayland.

Unfortunately we didn’t think of something like “a successor for X11” back then and designed the interaction more in a way suited for KSnapshot than for not X. We used a DBus API which passed the window id of the window to screenshot as argument and as a result sent an XPixmap to ksnapshot.

Overall not suited for Wayland, but a very good starting point as we already have the screenshot functionality available. So what we needed is a an X free DBus protocol and a way to select the window from within KWin.

Just like spectacle also KWin has a functionality to select a window through mouse interaction: the kill window functionality triggered through Ctrl+Alt+Escape. So far this functionality was only available for X11 and X11 windows, we were not able to do the same on Wayland.

For taking the screenshot I wondered whether we could use this functionality in a more generic way: a feature to interactively select a window. This required a slight refactoring. Of course the X11 way to select a window doesn’t help much, but the ideas we have there. The X11 specific code got moved into the X11-standalone Platform plugin and is now invoked through the internal Platform API. It doesn’t directly kill the window any more, but only returns the window which got selected.

A similar interaction code got added for Wayland and now the kill window functionality can be triggered on both X11 and Wayland and can kill both X11 and Wayland windows.

Now all we needed was making this functionality aware to the screenshot functionality. And with that we could trigger an interactive way to trigger a screenshot. This keeps the user in control of the process: the user is informed that a screenshot is being taken and informed how to cancel this. This addresses the security concerns we had for taking screenshots. By making the user perform an explicit action we know that the user agreed to taking the screenshot.

Notification about screenshot taking

Now all that was needed is adjusting spectacle. Spectacle is a rather new and modern application which had multiple windowing systems in mind when the implementation started. So far I had not done any work on spectacle and the code base was new to me. Nevertheless in about an hour I had the screenshot selection working:

Spectacle on Wayland

Not everything is supported though. Fullscreen or screen area screenshots are not yet supported. But given that the primary problem is solved now, this will also be addressed soonish.

If you like the work we are doing for Wayland consider participating in our end of year fundraiser.

Brittain’s Snoopers charter threatens your privacy

Tue, 11/22/2016 - 17:16
pic from the ZDNet articleThe United Kingdom this week passed the so called Snoopers Charter, a law which forces UK internet providers to store the browsing history of UK citizens for a full year. You, your family, visitors or any devices in your household which have been hacked (the government is now allowed to do that, by the way) better not visit anything bad as the government can get their hands on this data quite easily. What does this mean and what can you do?

An attack on privacyThere is a global siege on privacy. Governments all over the world have introduced legislation (sometimes secret) which forces email, internet or data storage providers to track what you do and make that data available to their governments. This, of course, also means third parties who gain access to the storage systems can see and abuse it. And because so many of us have put so much of our data at just a few providers, we're at great risk as events like last week's shutdown of hundreds of Google accounts did show.

While Google, Dropbox and others lure customers in with 'free' data storage and great online services, governments benefit from centralized data storages as it makes it easy for them to hack in or demand data from these companies.

Why this surveillance?While governments usually claim they need access to this data to find terrorists or child pornography, experts point out that it will not be helpful at all. As multiple experts (even internally) put it, growing the haystack makes it harder to find the needle. Intelligence agencies are swamped with data and nearly every terrorist attack in western states over the last decade took place despite the agencies having all information they would have needed to prevent it. The Paris attackers, for example, coordinated their attack using plain SMS messages. The Guardian thus rightly points out that:
"Paris is being used to justify agendas that had nothing to do with the attack"which has become a familiar refrain after nearly every terrorist attack.

Indeed, we all know the argument But you have nothing to hide, do you? and indeed, we probably don't. But some people do, so they'll try to avoid being seen. That being illegal won't change their behavior...

And as Phill Zimmermann, the inventor of the PGP encryption pointed out:
"When privacy is outlawed, only outlaws will have privacy"
So not terrorists. Then what?Experts agree that the vast majority of these surveillance and anti-privacy laws have little or no effect on real criminals. The crime syndicates, corrupt politicians and large corporations evading taxes and anti-trust/health/environmental laws, they DO have something to hide, and thus they would use encryption or avoid surveilled communication methods even if it were outlawed.

However, ordinary citizens, including grass-roots local activists, charitable organizations, journalists and others, who DO have nothing to hide, would be surveilled closely. And with that information, the real criminals mentioned earlier - crime syndicates, corporations or corrupt politicians - would have weapons in hand to keep these citizens from bothering them. Whistle blowers can be found out and killed (like in Mexico), journalists can be harassed and charged for trivial transgressions (like was recently done at the US pipeline protest) and charities can be extorted.

What can we do?Luckily, there are initiatives like the Stanford Law Schools' Crypto Policy Project which aim to train, for example, journalists in the use of encryption. Tools and initiatives like Signal, PGP email encryption, Let's Encrypt and Nextcloud provide the ability for users to protect themselves and their loved ones from surveillance. More importantly, these at the same time making it harder and more costly to conduct mass surveillance.

There is nothing wrong with governments targeting criminals with surveillance but just vacuuming up all data of all citizens that might, some day, be used is a massive risk for our democracy. We all have a responsibility to decentralize and use tools to protect our privacy so those who need it (press, activists and others) have a place to hide.

Progress update for AtCore.

Tue, 11/22/2016 - 14:09

A few days ago we hit a milestone in our development of AtCore. We are now able to properly install the libary for general use. Not only is installing a necessary for a libary that you plan to use within other stuff it also means that we can now focus our attention mostly on Atelier. We have now entered that magical time in development when the real world usage begins to drive its development. Thanks to everyone efforts we are almost ready for the next stage. Patrick has been doing reviews on every pull request. While he has been unable to help with as many commits as he would have liked to. His advice and direction in his reviews has been really helpful and has kept our style and code quality at a high level. Tomaz has been busy fixing up AtCore to be a proper KF5 libary with all the cmake deployment parts to go along with it. Most all of the cmake stuff has been written by Tomaz. Lays has been working on Atelier setup and getting all the non AtCore parts working. Thanks to her effort we are now able to use Atcore from Atelier!

As for me i have been adding stuff to AtCore. Since our last progress update a few new things have been added. Emergency Stop this simply allows you to stop the printer using the emergency stop code.It also cleans up any the command queue. Pause/Resume  when paused we store the current location of the head that that way after resume you can move your print head out of the way to access the model.Pause supports a comma seperated string of commands to be sent after pause. For my printer i use "G91,G0 Z1,G90,G1 X0 Y195" when pause this move my head up 1 mm and then pushes my model out toward the front fo the machine. This is useful if you want to maybe put a nut into printed part or change filament durring print and even to corrrect print defects while printing. We have also started to do lay ground work for more status info being picked out from the serial chatter. Setting of the firmware plugin can be done durring connect to force a specific plugin. A progress bar for printing progress. Some cleanup for autodetection of the plugin. There is still things to add to AtCore but it should provide enough for most use cases already!

I have made a package for Arch Linux on the aur (atcore-git). Other distro packages as well as a proper alpha release tarball will hopefully come in not to long. We are currently working on getting a more defined release plan so that we can get user testing as well as have AtCore deployment ready since its a prerequsite of making Atelier. Currently the package comes with the A test panel “AtCoreTest”. You are encouraged to try it out if you have a 3D printer and report back.Since AtCore will be doing all the communication bug testing here is very important.

Even if you don’t have a printer Installing the package and running the test gui to see that it works and the plugins are shows under the firmware combobox correctly will help us.

For anyone wishing to help with packaging. its simple to get install set up

in the root of the source.

cmake -DCMAKE_INSTALL_PREFIX=$(qtpaths –install-prefix) -DCMAKE_LIBARY_PREFIX=lib CMakeLists.txt


make install

add -DBUILD_TEST_GUI=ON to build the test gui and set up its install

come join us on freenode in #kde-atelier ;



Functional reactive programming at Meeting C++

Mon, 11/21/2016 - 15:51

I’ve just returned from Meeting C++.

There were couple of really nice talks – some less technical like the one from Jon Kalb of CppCon to the low level ones like the Rainer’s talk about the memory model of C++. Also, seing Bjarne Stroustrup in-person was a pleasure.

Sadly, I was not able to watch all the talks that I wanted (including Arne’s), but I plan to do so once the recordings are posted online.

My talk was about functional design and reactive programming. The slides are available here. I’ll post the link to the recording as soon as it is uploaded.

Unfortunately, there was no support for DisplayPort nor VGA at the venue, and I didn’t have a HDMI adapter on me, so I had to give my presentation from a friend’s computer (thanks Goran!) without any demos, but I’d say it all went well.

Next year, I’ll probably give a talk about immutable (aka functional) data structures. We’ll see. :)


Windows installer for Kate 16.08.3 KF5.28

Mon, 11/21/2016 - 09:59

New Kate installer for Windows!

Except for the general bug-fixes and feature additions in Kate and KF5 this installer also fixes a rename file failure bug by including the needed KIO dll.

Kate 16.08.3 KF5.28

Grab it while it is hot: Kate 16.08.3 KF5.28 64bit or Kate 16.08.3 KF5.28 32bit

Time to craft

Mon, 11/21/2016 - 09:10
Time to craftIt's time for KDE Emerge to emerge as Craft.

After many years of being the KDE Windows build tool we want to make KDE Emerge more visible and a tool for all developers.

People associate Emerge with Gentoo, and they are right about it. This was a problem for many years now.

For that reason Emerge will be called Craft from now on.

What is CraftCraft is an open source meta build system and package manager.
It manages dependencies and builds libraries and applications from source, on Windows, Mac, Linux and FreeBSD.

It's actively used to provide KDE software on Windows, FreeBSD and Mac but is capable of crafting any C or C++ application. With your help it is capable to craft any software in the world.

Every developer on Windows knows, how hard it is to obtain all the libraries you need to build your application. There are different build systems and quite often you even need to patch the libraries to support Windows at all.
For that reason many people tend to keep a copy of those libraries with in their projects code. A copy that won't be updated in years. VeraCrypt, for example recently had a zlib vulnerability from 1998.

With Craft all you need to do is to provide a recipe for your application, provide it's dependency and then ask Craft to build it for you. Craft provides all the libraries, patches and tools needed to build your application and their dependencies.

Craft also provides everything you needed to craft an installer on Windows.
The Kate and KDevelop installers where crafted by Craft.

It is not only a handy tool for KDE and Qt developers, currently we provide about 106 non Qt libraries and about 54 tools, so each and every developer should be interested.

What's planned
  • Make Craft available for CI systems like Appveyor, using prebuild binaries form a server.
  • Qt-Installer-Frameworks support, craft packages that can be retrieved using the Qt installer.
What you could do
  • You could add your project to Craft and enable others to build your project (When you add a recipe we would be incredible grateful if you could try to support at least one of the platforms other than Linux).
  • With the availability of appimages on Linux it could be interesting to teach Craft to craft appendages.
How to Craft
  1. Get Craft and start a crafting environment
  2. craft okular
Craft will take care that all tools needed to craft okular and all libraries needed to compile it are available.New LocationsCraft on the Community Wiki.The new git repository for craft can be found here.

So spread the word and start crafting

Your Craft team

Welcome new Kubuntu Members

Sun, 11/20/2016 - 22:14

Friday November 18 was a productive day for the Kubuntu Community, as three new people were questioned and then elected into Membership. Welcome Simon Quigley, José Manuel Santamaría, and Walter Lapchynski as they package, work on our tooling, promote Kubuntu and help users.

Read more about Kubuntu Membership here:

KStars 2.7.2 for Windows is released

Sat, 11/19/2016 - 21:30
Less than a month from the release 2.7.0, KStars v2.7.2 for Windows 64bit is now available for download on KStars website! Get it now and give it a go.

The new release features many minor improvements and bug fixes including very fast startup time (about 300% faster) in addition to more streamlined Ekos GUI for capture and schedule modules. Images captured with Ekos on Windows would now conform to legal filenames in Windows when using ISO 8061 time stamped files.

Unfortunately, a few problems remain in this release most importantly is that KStars does not gracefully closes, it always remains in the background and must be terminated explicitly by the Windows task manager. This bug was supposed to be fixed by Qt 5.8 but alas it is still affecting Qt 5.8 in emerge. Once fixed by Qt/KDE, we shall make another release addressing this issue. 

Multiple notifications across multiple monitors in KDE Plasma 5?

Sat, 11/19/2016 - 12:56
I have 3 monitors, and on each monitor, I have a Plasma panel at the bottom. When any notification pops up, I get 3 notifications on each monitor. I have a full fledged panel on each monitor with everything including task bar and system tray.

As you can imagine, this can get annoying pretty fast. Thanks to IRC and Bhushan Shah who proposed this solution, simply remove the system tray from the panels on the secondary monitors, and just keep the system tray on the primary monitor. This way, you will only get one-notification popup on each monitor instead of multiple ones!

To achieve this, first click on the hamburger icon in the panel to edit the panel. Then hover the mount over the system tray area where you get a popup like below that enables you to remove the system tray plasmoid.

Minuet in KDE Applications 16.12: code convergence, tablet UX and Windows release

Fri, 11/18/2016 - 05:41

 code convergence, tablet UX and Windows release

Hi there,

Yesterday was the feature freeze for KDE Applications 16.12 and that's the time where you look forward for all the new awesome features will land at users devices at 15th December. As for the Minuet land, I'd like to disappointingly let you know no new features are coming but that doesn't mean things are not progressing. After some days of quite intense work ‒ trying to find some spare time between daily job, my fluffy 10 month old baby <3, and the work on the KDE e.V. board ‒ I'm right now enjoying some booze while writing these words about recent advances in Minuet.

Minuet is a quite young KDE project aimed at providing an open source platform for music education. Its first release happened in April 2016, where basic features for ear training have been released. Then ‒ as part of his Google Summer of Code 2016 project ‒ Ayush Shah worked on the port of Minuet to Android and we came up with a first Android release in October 2016. Thenceforth, in spite of our struggles to leverage reuse, two independent codebases have coexisted in an obviously not sustainable way at long-term.

Unified codebase and build system

Developing for multiple platform poses its challenges, in spite of all nice support already provided by Qt. Handling different audio backends, UX implementation for diverse form factors and localization are some of the challenges we are currently facing when making Minuet available for multiple platforms while still keeping maintenance and evolution in order. The solution is a mix of ECM (extra-cmake-modules), a flexible architecture and some QML magic for properly selecting components depending on the platform at hand. That required a lot of refactoring/merging of desktop and Android codebases and some polishing is still in progress. The unified codebase has already been pushed to Applications/16.12 branch and that was a quite important move to keep feature parity between platforms and streamline evolution.

 code convergence, tablet UX and Windows release Minuet on an Android smartphone

An important aspect of Minuet architecture is the selection of different sound controllers (new Qt plugins) depending on the platform supporting its execution. In Linux and Windows (yes, now we have a Windows build), sound synthesis is made by Fluidsynth, while CSound (which is, by the way, celebrating its 30th anniversary :O) is the back-end adopted in Android.

Tablet UX

One of the issues we had in last Minuet for Android release was its poor rendering on tablet screens. With Applications 16.12, I've done some work to properly layout UI components in different form factors and also using a fixed or collapsed navigation drawer depending on how much horizontal space is available on the screen. I'm still doing some polishing to automatically change the layouting flow for use in landscape and portrait modes. The resulting is quite nice already :)

 code convergence, tablet UX and Windows release    code convergence, tablet UX and Windows release Minuet running on a Android tablet Minuet for Windows

Some weeks ago, Hannah (TheOneRing) sent me a few lines patch which made Minuet to work on Windows. To be honest, my first impression was: is that all there is? :). We were lucky of having Fluidsynth functionalities working like a charm in Windows and then it ended up being a matter of dealing with emerge and installer issues. That was my first adventure with emerge but, with the help of Hannah and Kevin Funk (thanks folks!), I'm glad to announce we'll have a Windows installer for Minuet in 16.12.

 code convergence, tablet UX and Windows release    code convergence, tablet UX and Windows release Minuet running on a Windows 10 box

For some reason, Windows installers generated by emerge become easily quite bloated and blacklisting files is a pain. For now, I'm following some systematic instructions to manually select the files which should go with the installer.

Minuet is totally built on top of QtQuickControls2 and different QML styles are used depending on the deployment platform. When running on Android, Minuet uses the Material style, while Windows executions are rendered with the Universal style. In Linux, Minuet currently adopts the default style for now. IIRC, there is work in progress regarding Breeze styles implementation for QtQuickControls2.

 code convergence, tablet UX and Windows release Minuet running on KDE Plasma

So, what's next? :) I'm still wondering whether I should invest some time towards Minuet builds for OS X and iOS but I guess that's likely to happen at some point, given the huge musicians userbase for those platforms. If you wanna help with that, just poke me by email or in the #kde-edu channel on Freenode, and then I'd have some more spare time to work on some new appealing features for Minuet next releases.

As usual, bug reports (in any supported platform) are quite welcome as well.

See you!

Cutelyst benchmarks on TechEmpower round 13

Thu, 11/17/2016 - 19:05

Right on my first blog post about Cutelyst users asked me about more “realistic” benchmarks and mentioned TechEmpower benchmarks. Though it was a sort of easy task to build the tests at that time it didn’t seem to be useful to waste time as Cutelyst was moving target.

Around 0.12 it became clear that the API was nearly freezing and everyone loves benchmarks so it would serve as a “marketing” thing. Since the beginning of the project I’ve learned lots of optimizations which made the code get faster and faster, there is still room from improvement, but changes now need to be carefully measured.

Cutelyst is the second Web Framework on TechEmpower benchmarks that uses Qt, the other one being treefrog, but Qt’s appearance was noticed on their blog:

The cutelyst-thread tests suffered from a segfault (that was restarted by master process), the fix is in 1.0.0 release but it was too late for round 13, so round 14 it will get even better results.

If you want to help MongoDB/Grantlee/Clearsilver tests are still missing😀

fill bug reports!

Wed, 11/16/2016 - 19:46

Everything starts with a good idea or a bug report. Someone asked for an app icon for claws mail ( and Jens Reuterberg make one. As I don’t think that every application need an breeze specific app icon, I’m look more for a consistent look of the applications so I made an claws breeze icon theme. You can download the icon pack from the claws webpage and dont’t forget to give me feedback cause I don’t use claws.


So if you think there is an application which need to be breezified, fill a bug report. This doesn’t mean I will fix it (in my spare time), but there is a chance.

Ethics in engineering

Wed, 11/16/2016 - 16:57
KDE Project:

Powerful: The Code I'm Still Ashamed Of

Things like this are a big reason why I work in open source.

FUDCon 2016 Phnom Penh, Cambodia

Wed, 11/16/2016 - 16:34

I was selected for delivering a talk on WikiToLearn at the FUDCon APAC, Phnom Penh, Cambodia from 4th to 6th November, 2016.

FUDCon (Fedora Users and Developers Conference) is an important event in the world of free software that is held in different parts of the world organized by Fedora Organization. The FUDCon comprised of sessions, talks, workshops and hackfest in which project participants worked on specific initiatives. FUDCon Phnom Penh was conducted at Norton University, Phnom Penh along Barcamp ASEAN. Around 50 speakers from around the world gave talks related to entrepreneurship and open source software. I was traveling with one my friends, Abhinand N, who also got selected to deliver a talk on Mediawiki. Looked like, we were the only two undergrads who were invited to deliver talks.

It was my first international trip and pretty amazing. My itinerary was something like this : Cochin -> Kuala Lumpur -> Phnom Penh (4th November) and Phnom Penh -> Bangkok -> Cochin (9th November).

Phnom Penh looked more or less like an Indian city just with more prettier girls (:D) and no public transport. We reached Phnom Penh on 4th evening, and a tuktuk driver was waiting for us at the airport to take us to the hotel. If you're wondering what a tuktuk looks like, see this :

As soon as we reached Hotel, it was almost Dinner time. Sirko Kemter was the local organizer and all the developers decided to go to a nearby BBQ place. Remember, Abhinand is a pure vegeterian and he came to eat BBQ (:P). Anyway, the food was great, since I had never tried Lobster and Prawn. Amazing experience, it was.

At the time of dinner, I interacted with rest of the Fedora developers from India, Australia, China and USA. Kushal Das, Sayan Chowdhary were among the famous open source developers from India. It was great meeting and interacting with them.

Day 1 : FUDCon APAC, Norton University, Phnom Penh

FUDCon Day 1 was pretty amazing. We started off with Barcamp pitches followed by Fedora State of the Union talk from Brian Exelbierd, Fedora Community Action and Impact Coordinator.

The first talk I went to was Introduction to Rust Programming Language by Kanika Murarka. Kanika actively contributes to Fedora, and is an intern at Red Hat, Bangalore. She engrossed us, telling that Rust is designed to be a safe, concurrent, practical language, supporting functional paradigms and is sponsored by Mozilla.

Lunch was pretty interesting. Everyone gathered at a common lunch place with full of local khmer snacks, jackfruits, veg fried rice and non veg rice. Veg food had egg in it, so yeah! (:D) Lunch was okayish, but what made it interesting was the discussion! I had a long discussion with Sumantro Mukherjee and Parag Nemade about my project and it was great! After the discussion, we followed for the next series of talks.

Next talk, I went onto was How to globalize your software by Parag Nemade. Parag Nemade is a Senior Software Engineer at Red Hat. He is an active contributor to Fedora project, sponsor for packager group, proven packager, helps in improving Fedora packaging and testing Fedora updates. Parag introduced us to Globalization. It is a collaborative work done by internationalizing, localizing your software. He told us how important it is to globalize the code you write. Then he told what Localization is and how to add internationalization in code by showing some code examples. It was a great talk!

The following talk was by Alex Eng on Zanata, a translation platform. One of the best and interesting talk for the day. Alex presented a round up of the new features that will be available in the next release of the translation tool. I was very eager to learn more about how Zanata works, and therefore had a brief conversation with him. I was fascinated about the new editor and discussed  my GSoC project and collaborative editing would work in Zanata. Handling translations is very challenging and great thing is that, WikiToLearn is also looking for ways to implement Zanata.

The next talk was on Web Virtual Reality by Sumantro Mukherjee. The highlight of the talk was a-frame. A-frame is a web framework for building virtual reality experiences and works on almost all devices. With just few lines of code, you can turn a video into 360 degree Virtual Reality. Amazing, isn't it?

The last talk of the day was by Anwesha Das on A walk on licenses in Fedora ecosystem. She gave an overview of all the open source licenses, why it is important to use a license and what are the best practices of using a license. The take from the talk was not to use personalized licenses and even if you use it, not to name it like Buy me a beer or something similar. Overall, it was great to learn about Licenses.

The day ended with all the Indians and Ryan going to a Riverside Restaurant and having amazing food.

Day 2 : FUDCon APAC, Norton University, Phnom Penh

Day 2 started with heavy rains at Cambodia. Thanks to Sirko for providing raincoats! It was another day of interesting talks and I had my talk at 3pm.

The first talk I went to was by Noriko Mizumoto on How can you help us get Fedora to the world?. Noriko hails from Japan and is a Community Relations Specialist and Program Manager, Red Hat Asia Pacific. Noriko focused on the importance of localization. Localization of a software is very important, since non-native English speakers are much more when compared to native English speakers.She introduced how Fedora has been localized into over 80 languages. A great talk, indeed.

Following was the talk on Exploring Fedora Infrastructure by Sayan Chowdhary. Sayan Chowdhary is a Senior Software Engineer at Red Hat, Pune and has been a Python developer contributing to Fedora. Sayan talked about Fedora web projects and how can one contribute to them.

Next was the talk by Kushal Das on Testing Fedora Atomic in an automated way. I don't need to introduce him (:P). He talked about testing fedora atomic project in an automated way by using Python and Go script made by him. It went over my head mostly, since I never contributed to Fedora. Anyway, it is always amazing to listen him speaking. The way he explains a scenario, is absolutely stunning.

After the better lunch, next talk I attended was on Fedora QA by Sumantro Mukherjee. Sumantro introduced us to Fedora Quality Assurance, the workflow and how to test a package. Great talk, indeed.

Now, it was time for my talk on WikiToLearn : Bringing Academia to the Internet Era : A revolution in Knowledge Sharing. I introduced WikiToLearn to the attendees, how to contribute and gave them a hand-on session on "How to make a personalized book". I briefed on how WikiToLearn is being adapted at European Universities and making it easier for students and professors for collaborative learning. I spoke on who/how can contribute being a student, teacher, translator or hacker, how the project is having powerful impact not only in Europe but also in the world with many universities involved and also organizations like KDE, Wikimedia Foundation and the CERN, About the power of collaboration and its impact in academia with the help of WikiToLearn and also how students and professors are using it in their universities as a tool to make learning much more effective in a collaborative way. Slides for the talk can be found here.

The last talk was on Contributing to Mediawiki by Abhinand N. Abhinand is a Google Summer of Code'16 select for Mediawiki. He actively contributes to Mediawiki. He introduced attendees to Mediawiki and how can one contribute to Mediawiki by code. He briefed about Gerrit and the workflow of patch submition. It was a great talk, too.

We had a great party after the talks at Fudpub with Barcamp organizers. Free beer, yaay (:D).

This was the first time, I attended Fedora event and it was amazing to meet and interact with developers around the world. Kudos to the local organizers and KDE for sponsoring my trip. Overall, it was an amazing experience which I'm going to cherish for long.

Wiki(1.0), what’s going on? (Part17)

Wed, 11/16/2016 - 13:31



WikiToLearn1.0 is moving its first steps, let’s find out how is it going!

Here we go! It is almost two weeks now since we released WikiToLearn1.0!

Since the release, we got a lot of feedback and support! We could accomplish this not only through our own promotion, but also, inter alia/amongst others, with the help of:

  1. Dot-Kde announcement;
  2.  An interview with Radio Popolare (Italian radio station);
  3.  baltolkien ‘s post on KDE-Blogs;
  4.  a presentation at Imperial College London;
  5.  Wikimedia CH, KDE and many contributors of ours shared the announcement post on their socials

We are very happy, that we could welcome new contributors and we hope our community will keep on growing, both in contribution and content.

Now, something special for you in this episode! We have decided to do an interview with Srijan Agarwal: he is a member of our community  located in Meerut, India, where he’s doing great promoting WikiToLearn! To spread the word about our community, he is organizing events (MediaWikiToLearn hack/edit-a-thon) and talks on WikiToLearn. We wanted to appreciate his efforts and therefore , we decided to put him into WikiToLearn’s  spotlight and  interviewed him.

Q: When (and how) did you become a member of the WikiToLearn community?
Ans: So, it all started after I made my first technical contribution to Mediawiki in early 2016. I was looking for a project to contribute to in Google Summer of Code that same year, and one of my mentors at Free Software club in our campus : FOSS@Amrita, Harish Navnit, asked me to check WikiToLearn. And there starts my journey with WikiToLearn. I applied for a project : Offline Extension for WikiEditor, and it got accepted. My GSoC mentors, Gianluca Rigoletti and Irene Cortinovis, were really helpful and guided me throughout the summer of 2016.

Q: You are part of the community for a while now. What do you like most?
A: I really like the motive behind the WikiToLearn project.. WikiToLearn focuses on a worldwide problem with students, that can be solved by sharing knowledge. Being a student myself, I’ve experienced and know the problems faced by students and I really like how WikiToLearn is helping solve these problems.

Q: You are doing a great work to talk about WikiToLearn in your country, can you tell us something more about it?
A: Sure. What I feel is that, Indian education system lacks creativity, collaborative thinking and a technology infrastructure. WikiToLearn is a platform, which certainly is the answer to these problems. Therefore, I’m promoting WikiToLearn in India in as many ways as I can. I have been giving talks on WikiToLearn at universities and conferences, eventually helping students and professors with contributing to WikiToLearn. I’m now working on making the next event a success, i.e, WikiToLearn India Conference, 2017.

Q: Are you happy with your WikiToLearn-experience so far?
A: Yes of course. WikiToLearn is like a second family for me. It has taught me that love for knowledge and learning can overcome all kinds of barriers, even geographical and cultural ones. Working with such amazing developers around the world has taught me so very much. I have grown so much technically and socially with my association with WikiToLearn. Overall, my experience has been startling.

Q: Why should other people join WikiToLearn?
A: Are you a student and want to have personalised textbooks for your courses? Are you a professor and want to make your teaching methodologies better?  Are you a programmer, and want to contribute to open source software? WikiToLearn is the right place for you, then. Join WikiToLearn and grow along with volunteers and academics around the world.

If you are more curious on who are our top contributors these two weeks after the release, want to know more about our statistics you should know that with the 1.0 release, Reports-WikiToLearn came out too. Here you can find these two weeks report!

Thats it for this episode,

Bye all! 🙂



L'articolo Wiki(1.0), what’s going on? (Part17) sembra essere il primo su Blogs from WikiToLearn.

Krita 3.1 Beta 4 Released

Wed, 11/16/2016 - 10:51

Here is the fourth Krita 3.1 beta! From the Krita 3.1 on, Krita will officially support OSX. All OSX users are urged to use this version instead of earlier “stable” versions for OSX. We’re releasing a fourth beta because of more changes to the code that actually saves your images… We’ve tried to make it much safer, but please do test this!

These are the most important fixes:

  • Don’t show and hide the rulers on creating an image
  • Improve the framerate of the stabilizer
  • Fix a regression with saving animations in the previous beta (3.0.92)
  • Fix some crashes when drawing in the scratch pad
  • Make the color selector in the color-to-alpha filter work properly

Note: the beta still contains the colorize mask/lazy brush plugin. We will probably remove that feature in the final release because the current algorithm is too slow to be usable, and we’re still looking for and experimenting with new algorithms. With the current beta you will get a preview of how the user interface will work, but keep in mind that the we know that it’s too slow to be usable and are working on fixing that

The fourth beta is also much more stable and usable than earlier builds, and we’d like to ask everyone to try to use this version in production and help us find bugs and issues!

You can find out more about what is going to be new in Krita 3.1 in the release notes. The release notes aren’t finished yet, but take a sneak peek all the same!


Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes.


There is also a snap image available in the Ubuntu App Store, in the beta channel.

OSX Source code

KDE Applications 16.12 branches created

Tue, 11/15/2016 - 22:41

The dependency freeze for KDE Applications 16.12 is on since November 10

For all repositories part of the KDE Applications 16.12 release the Applications/16.12 branch has been created.

The list of modules+branches that will be part of the release is at

Please make sure the list is correct. If it's not please email release-team at *NOW*

From now on master is open for feature changes, but remember that all your fixes also should get to the Applications/16.12 branch (my suggestion, commit fixes to Applications/16.12 and then merge that branch to master)

KDE Applications 16.12 Beta (version number 16.11.80) will be tagged November 17 at 23:59 UTC

Once the Beta is tagged no more features can be added.

KSyntaxHighlighting – A new Syntax Highlighting Framework

Tue, 11/15/2016 - 21:35

Today, KDE Frameworks 5.28 was released with the brand new KSyntaxHighlighting framework. The announcement says:

New framework: syntax-highlighting
Syntax highlighting engine for Kate syntax definitions

This is a stand-alone implementation of the Kate syntax highlighting engine. It’s meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class.

This year, on March 31st, KDE’s advanced text editor Kate had its 15th birthday. 15 years are a long time in the software world, and during this time Kate won the hearts of many users and developers. As text editing component, Kate uses the KTextEditor framework, which is used also by applications such as KDevelop or Kile.

The KTextEditor framework essentially is an embeddable text editing component. It ships everything from painting the line numbers, the background color, the text lines with syntax highlighting, the blinking cursor to code completion and many more features. One major feature is its very powerful syntax highlighting engine, enabling us to properly highlight around 275 languages.

Each syntax highlighting is defined in terms of an xml file (many examples), as described in Kate’s documentation. These xml files are read by KTextEditor and the context based highlighting rules in these files are then used to highlight the file contents.

For the last 15 years, this syntax highlighting engine was tightly coupled with the rest of the KTextEditor code. As such, it was not possible to simply reuse the highlighting engine in other projects without using KTextEditor. This lead to the unfortunate situation, where e.g. the Qt Creator developers partly reimplemented Kate’s syntax highlighting engine in order to support other languages next to C/C++.

This changed as of today: The KSyntaxHighlighting framework is a tier 1 functional framework that solely depends on Qt (no dependency on Qt Widgets or QML), is very well unit tested, and licensed under the LGPLv2+. As mentioned in the announcement and in the API documentation, it is a stand-alone implementation of the Kate syntax highlighting engine. It’s meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class. This also implies that you can reuse this framework to add syntax highlighting to e.g. QML applications.

We hope that other applications such as Qt Creator will start to use the KSyntaxHighlighting framework, since it allows us to cleanly share one single implementation of the syntax highlighting engine.

In the next KDE Frameworks releases, we will remove KTextEditors syntax highlighting engine in favor of just using KSyntaxHighlighting. This will happen step by step. For instance, we already have a pending patch that removes all xml files from KTextEditor.git in favor of using the ones shipped by the KSyntaxHighlighting framework. That means, with the KDE Frameworks 5.29 release, Kate’s and KTextEditors dependency (and other application’s dependencies) will look as follows:

KTextEditor and KSyntaxHighlighting

This is quite an interesting change, especially since moving the syntax highlighting engine out of KTextEditor was already planned since Akademy 2013 in Bilbao:

Another idea was raised at this year’s Akademy in Bilbao: Split Kate Part’s highlighting into a separate library. This way, other applications could use the Kate Part’s highlighting system. Think of a command line tool to create highlighted html pages, or a syntax highlighter for QTextEdits. The highlighting engine right now is mostly internal to Kate Part, so such a split could happen also later after the initial release of KTextEditor on 5.

This goal is now reached – thanks to Volker Krause who did most of the work. Pretty cool!

If you are interested in using the KSyntaxHighlighting framework, feel free to contact us on our mailing list. Further, we welcome all contributions, so please send patches to our mailing list, or post them on phabricator. (You can also find the KSyntaxHighlighting framework on github for convenience, but it’s not our primary platform).

You can also support Kate and the KDE Frameworks by donating to the KDE e.V., KDE’s non-profit organization.

Improvement in converting video/audio files with VLC

Tue, 11/15/2016 - 18:05

VLC Media Player has the ability to convert video/audio files into various formats it supports, since a long time. There is a dedicated “Convert/Save” menu for converting single or multiple files at once into a different format, with limited ‘editing’ features such as specifying a start time, caching options etc. It is quite useful for basic editing/cropping of multimedia files.

As an example, one of the easiest ways to create a custom iPhone ringtone is to create a “.m4r” (AAC format) file exactly 40 seconds long. It is a matter of selecting your favourite music file and doing a “Convert/Save” with appropriate “Profile”. A “Profile” specifies the video/audio encoding to be used, which can be easily customized by selecting different audio and video codecs.

The options “Caching time”, “Play another media synchronously” (think adding different sound track to a video clipping) and a “Start time” etc can be specified under “Show more options” button and even more advanced functionality is available by making use of the “Edit Options” line. Internally, all the options specified at this line are passed to the converter.

There was one thing lacking in this “Convert/Save” dialog though – there was no possibility to specify a “Stop Time” akin to the “Start Time”, in the GUI (although it can be manually specified in the “Edit Options”, but you need to calculate the time in milliseconds). VLC 2.x series convert looks like as follows – notice the lack of “Stop time”:


Being bugged by this minor annoyance, I set out to add the missing “Stop-time” functionality. Going through the codebase of VLC, it was relieving to see that the converter backend already supports “:stop-time=” option (akin to “:start-time=“). It was then a matter of adding “Stop Time” to the GUI and properly updating the “Edit Options” when user changes the value.

A working patch was then sent to vlc-devel mailing list for review and feedback. After 5 rounds of review and constructive feedback from Filip Roséen the code was cleaned up (including existing code) which is now committed to the master branch. This functionality should be available to users in the upcoming 3.0 release. Screenshot below:



Tagged: hacking, vlc

CMake support in Qt Creator (and elsewhere?)

Tue, 11/15/2016 - 12:59

Kitware released CMake version 3.7 on Friday night. There is one feature mentioned at the very bottom of the feature list that makes this a really exciting release for people writing tools that integrate with CMake: The server-mode.

What is CMake server-mode?

The Qt Creator team has had contact with the CMake community for a long time now and was actively involved in discussions with CMake and other IDE and tools vendors. After many discussions the CMake community decided that the best way forward to support the use-cases of IDEs was to add a new interactive way to interact with CMake, the so called server-mode. There was some initial development started by Stephen Kelly, who made an impressive prototype.

At this point the Qt Creator team decided that this functionality is crucial to enable first class CMake support in Qt Creator. So I went ahead and jumped into CMake development. The result is a set of patches that implement a production-ready server-mode for CMake that was merged in time for the CMake 3.7 release. The server-mode currently focuses on core functionality like parsing the project structure, etc.

This development happened in close collaboration with developers from KDevelop and the CMake community.

I am committed to maintain CMake server-mode support going forward and hope to continue to develop this feature in close collaboration with all interested parties.

CMake version 3.7 is the first release that ships this code.

What does CMake 3.7 enable?

The first change in CMake 3.7 is that it now provides machine-readable output with basic information about the capabilities of the CMake binary (via “cmake -E capabilities”).

This includes static information like version number or whether server-mode is available, but also details on the supported generators.

IDEs can use this information to provide a better UI for selecting generators.

CMake server-mode (started via “cmake -E server”) allows IDEs to query a range of CMake settings and project information in a machine-readable form, many of which were not available to IDEs before. This enables a more detailed view of the CMake project.

The information is also taken from CMake directly, making sure to use the same code that is also used by the CMake generators to write the actual build-system files. So the information is more accurate than what was available before. This makes the code model more exactly represent what is actually going to be built.

When will we see these improvements in action?

I think the server-mode is the way forward for all tools that need to extract information from CMake. Interest in this topic seemed very strong in my workshop about CMake at QtCon this year. I hope to see CMake server-mode flourish going forward.

There is code that makes use of the new CMake 3.7 features in the master branch of Qt Creator. So this will be present in Qt Creator 4.3, planned for spring of 2017.

What will improve in Qt Creator?

Creator will continue to support any CMake version 3.0 (or later), just as current versions of Qt Creator do. But Qt Creator master does support CMake server-mode already and will make use of the better information. You will be able to switch between CMake binaries with and without server-mode support as needed.

Using CMake server-mode enabled binaries will have the following effects:

  • Generator selection is no longer limited to those generators with support for the “CodeBlocks” extra generator. Any generator can now be used.

    CMake Generator setup in Qt Creator

    CMake Generator setup in Qt Creator

  • The Generator selection UI now knows which options are available for each generator. E.g. the “Ninja” generator used above does not support Toolsets or Platform settings.
  • The project tree is much improved and knows about projects and build targets defined in CMake."<yoastmarkThe screenshots show the project tree from Qt Creator 4.2 and from Qt Creator master — with an old CMake and with CMake server-mode.
    Qt Creator master adds all headers found in include paths of a build target and not listed in the CMakeLists.txt to the project tree (for all versions of CMake). These headers are printed with a grey text color so they can be distinguished from sources known to CMake.
    In server-mode the project structure is more visible: The “scribus” project defined in the top-level CMakeLists.txt file is clearly visible. So are the different build targets. The “scribus_colormgmt_lib” build target is expanded and all files belonging to that target are listed.
  • The code model has way more accurate information about all targets. This sounds very simple, but has not always been the case for CMake projects up to now.
What will happen next with CMake server-mode?

Stephen Kelly has pioneered interesting features in his CMake server-mode implementation prototype. Many did not make it into the new CMake release.

Going forward I would like to see more of these powerful features. This includes debugging of CMakeLists.txt files and syntax highlighting driven by CMake itself. These require deep integration into CMake and will require a much deeper understanding of CMake internals than I currently have. So I hope CMake developers find the server-mode interesting enough to help out a bit here and there:-)

I would like to say thanks to Aleix Pol (KDevelop) and Stephen Kelly (CMake community) for all the feedback they provided. Finally I have to thank Brad King from Kitware for his patience while  reviewing my code.

Where can I get this?

Get CMake 3.7 here:
View the Qt Creator master sources:
Or use git to clone the code: git clone git://

The post CMake support in Qt Creator (and elsewhere?) appeared first on Qt Blog.