Skip to content

Sunday, 8 March 2020

There's a clear gender gap in computer science, beginning with education: women in schools and colleges tend to approach computer studies less frequently than men. And we should also consider the usual obstacles for occupation every woman encounters in her work life in every field. So, it's not surprising that the majority of computer science workers are men.
And, at the same time, the Free Open Source Software world is made of many kinds of communities. Some are quite closed and unfriendly for new developers, expecially if they are women. Others, instead, commit to welcome everyone, without discrimination based on gender, nationality, or any other parameter.
At Akademy 2019 in Milan, as editor for GNU/Linux Magazine Italy, I've had the opportunity to discuss this issue with Lydia Pintscher, president of KDE e.V., and Lays Rodrigues, developer for KDE software.

Saturday, 7 March 2020

This year’s FOSDEM conference was a lot of fun – one of the things I always enjoy most about this particular conference (besides having some of the outstanding food you can get in Brussels and meeting with friends from the free software world) is the ability to meet a large range of new people who I wouldn’t usually have interacted with, or getting people from different communities together who otherwise would not meet in person as each bigger project has their own conference (for example, the amount of VideoLAN people is much lower at GUADEC and Akademy compared to FOSDEM). It’s also really neat to have GNOME and KDE developers within reach at the same place, as I care about both desktops a lot.

An unexpected issue

This blog post however is not about that. It’s about what I learned when talking to people there about AppStream, and the outcome of that. Especially when talking to application authors but also to people who deal with larger software repositories, it became apparent that many app authors don’t really want to deal with the extra effort of writing metadata at all. This was a bit of a surprise to me, as I thought that there would be a strong interest for application authors to make their apps look as good as possible in software catalogs.

A bit less surprising was the fact that people apparently don’t enjoy reading a large specification, reading a long-ish intro guide with lots of dos and don’ts or basically reading any longer text at all before being able to create an AppStream MetaInfo/AppData file describing their software.

Another common problem seems to be that people don’t immediately know what a “reverse-DNS ID” is, the format AppStream uses for uniquely identifying each software component. So naturally, people either have to read about it again (bah, reading! 😜) or make something up, which occasionally is wrong and not the actual component-ID their software component should have.

The MetaInfo Creator

It was actually suggested to me twice that what people really would like to have is a simple tool to put together a MetaInfo file for their software. Basically a simple form with a few questions which produces the final file. I always considered this a “nice to have, but not essential” feature, but now I was convinced that this actually has a priority attached to it.

So, instead of jumping into my favourite editor and writing a bunch of C code to create this “make MetaInfo file” form as part of appstreamcli, this time I decided to try what the cool kids are doing and make a web application that runs in your browser and creates all metadata there.

So, behold the MetaInfo Creator! If you click this link, you will end up at an Angular-based web application that will let you generate MetaInfo/AppData files for a few component-types simply by answering a set of questions.

The intent was to make this tool as easy to use as possible for someone who basically doesn’t know anything about AppStream at all. Therefore, the tool will:

  • Generate a rDNS component-ID suggestion automatically based on the software’s homepage and name
  • Fill out default values for anything it thinks it has enough data for
  • Show short hints for what values we expect for certain fields
  • Interactively validate the entered value, so people know immediately when they have entered something invalid
  • Produce a .desktop file as well for GUI applications, if people select the option for it
  • Show additional hints about how to do more with the metadata
  • Create some Meson snippets as pointers how people can integrate the MetaInfo files into projects using the Meson build system

For the Meson feature, the tool simply can not generate a “use this and be done” script, as each Meson snippet needs to be adjusted for the individual project. So this option is disabled by default, but when enabled, a few simple Meson snippets will be produced which can be easily adjusted to the project they should be part of.

The tool currently does not generate any release information for a MetaInfo file at all, This may be added in future. The initial goal was to have people create any MetaInfo file in the first place, having projects also ship release details would be the icing on the cake.

I hope people find this project useful and use it to create better MetaInfo files, so distribution repositories and Flatpak repos look better in software centers. Also, since MetaInfo files can be used to create an “inventory” of software and to install missing stuff as-needed, having more of them will help to build smarter software managers, create smaller OS base installations and introspect what software bundles are made of easily.

I welcome contributions to the MetaInfo Creator! You can find its source code on GitHub. This is my first web application ever, the first time I wrote TypeScript and the first time I used Angular, so I’d bet a veteran developer more familiar with these tools will cringe at what I produced. So, scratch that itch and submit a PR! 😉 Also, if you want to create a form for a new component type, please submit a patch as well.

C developer’s experience notes for Angular, TypeScript, NodeJS

This section is just to ramble a bit about random things I found interesting as a developer who mostly works with C/C++ and Python and stepped into the web-application developer’s world for the first time.

For a project like this, I would usually have gone with my default way of developing something for the web: Creating a Flask-based application in Python. I really love Python and Flask, but of course using them would have meant that all processing would have had to be done on the server. One the one hand I could have used libappstream that way to create the XML, format it and validate it, but on the other hand I would have had to host the Python app on my own server, find a place at Purism/Debian/GNOME/KDE or get it housed at Freedesktop somehow (which would have taken a while to arrange) – and I really wanted to have a permanent location for this application immediately. Additionally, I didn’t want people to send the details of new unpublished software to my server.


I must say that I really like TypeScript as a language compared to JavaScript. It is not really revolutionary (I looked into Dart and other ways to compile $stuff to JavaScript first), but it removes just enough JavaScript weirdness to be pleasant to use. At the same time, since TS is a superset of JS, JavaScript code is valid TypeScript code, so you can integrate with existing JS code easily. Picking TS up took me much less than an hour, and most of its features you learn organically when working on a project. The optional type-safety is a blessing and actually helped me a few times to find an issue. It being so close to JS is both a strength and weakness: On the one hand you have all the JS oddities in the language (implicit type conversion is really weird sometimes) and have to basically refrain from using them or count on the linter to spot them, but on the other hand you can immediately use the massive amount of JavaScript code available on the web.


The Angular web framework took a few hours to pick up – there are a lot of concepts to understand. But ultimately, it’s manageable and pretty nice to use. When working at the system level, a lot of complexity is in understanding how the CPU is processing data, managing memory and using the low-level APIs the operating system provides. With the web application stuff, a lot of the complexity for me was in learning about all the moving parts the system is comprised of, what their names are, what they are, and what works with which. And that is not a flat learning curve at all. As C developer, you need to know how the computer works to be efficient, as web developer you need to know a bunch of different tools really well to be productive.

One thing I am still a bit puzzled about is the amount of duplicated HTML templates my project has. I haven’t found a way to reuse template blocks in multiple components with Angular, like I would with Jinja2. The documentation suggests this feature does not exist, but maybe I simply can’t find it or there is a completely different way to achieve the same result.

NPM Ecosystem

The MetaInfo Creator application ultimately doesn’t do much. But according to GitHub, it has 985 (!!!) dependencies in NPM/NodeJS. And that is the bare minimum! I only added one dependency myself to it. I feel really uneasy about this, as I prefer the Python approach of having a rich standard library instead of billions of small modules scattered across the web. If there is a bug in one of the standard library functions, I can submit a patch to Python where some core developer is there to review it. In NodeJS, I imagine fixing some module is much harder.

That being said though, using npm is actually pretty nice – there is a module available for most things, and adding a new dependency is easy. NPM will also manage all the details of your dependency chain, GitHub will warn about security issues in modules you depend on, etc. So, from a usability perspective, there isn’t much to complain about (unlike with Python, where creating or using a module ends up as a “fight the system” event way too often and the question “which random file do I need to create now to achieve what I want?” always exists. Fortunately, Poetry made this a bit more pleasant for me recently).

So, tl;dr for this section: The web application development excursion was actually a lot of fun, and I may make more of those in future, now that I learned more about how to write web applications. Ultimately though, I enjoy the lower-level software development and backend development a bit more.


Check out the MetaInfo Creator and its source code, if you want to create MetaInfo files for a GUI application, console application, addon or service component quickly.

Friday, 6 March 2020

When using a profiler to look into your programs, sometimes it feels like looking behind the stage of magician and suddenly grasping the trick behind the magic… Quite recently, I had an application in front of me, which demanded surprisingly much CPU time. In a nutshell, this application has some heavy computational operations in its core and (primarily) produces a rectangular 2D output image, which is rendered by QPainter to display the results. This output is updated once every few milliseconds and is embedded inside a QtQuick window. The handover of the rendered QImage is done by a harmless looking Q_PROPERTY.

So, I wondered: How big can the impact of handing over a QImage to the QSG renderer be? In particular — as we all know — copying a big chunk of memory is a CPU expensive operation which should be avoided if possible. For getting proper profiling results, I created a simple test application. This application just creates a QtQuick scene with a QQuickPaintedItem derived render object, which updates its output every millisecond (thus renders whenever the render-loop iterates). I use a big output rectangle of 640×640, because I want to focus on the memory copying effect, which is more obvious with bigger outputs.

When using QQuickPaintedItem::Image as render target for the QQuickPaintedItem object, on my computer I can see a quite constant 30% CPU usage (one core) and the following flamegraph when looking into the process with Perf (sudo perf record --call-graph dwarf -p $(pidof qmlwithqpainter-experiment) -o and visualizing the result with Hotspot:

However, when simply changing the render target to QQuickPaintedItem::FramebufferObject, the application’s CPU usage drops to about 11-12% (of one core) and I get the following result:

Actually, this change is to be expected! We get rid of a quite expensive copy operation that has to be done on every image update. Let’s look into the QQuickPaintedItem documentation for confirmation:

When the render target is a QImage, QPainter first renders into the image then the content is uploaded to the texture. When a QOpenGLFramebufferObject is used, QPainter paints directly onto the texture.

So, what is the story I want to tell? — When facing performance problems inside an application, one can only guess until looking at the problem with a decent profiler (and Perf + Hotspot is an excellent combination for that!). And even then, you have to think about what your application is doing when much of CPU time is lost and ponder whether there are better code paths for your specific situations. In my example, the output still looks the same after the change, but note that I lost all of the fancy anti-aliasing of QImage and now resizing the output became a much more expensive operation.

Hence, for my scenario this change made sense, because the CPU usage drops from 30% to 11% and I do not need to support resizing operations. For other scenarios, this might be different.

Thursday, 5 March 2020

In case you missed the news: last month I decided to make the full version of GCompris gratis for all platforms! I hope that this move will make it easier for all the children in the world to get access to the best educational software.

Now in order to support my work on GCompris development, I will rely only on Patreon.

Each month I will publish a News post there to keep patrons informed of the work done. All the patrons will have their name on the donation page of GCompris website, except those who select the “Hidden Cats” tier.

If you like my work and want to support Free Software in education, please consider becoming a patron of GCompris.

Monday, 2 March 2020

Earlier this month I attended FOSDEM and the Plasma Mobile Sprint right after. Both of these events were especially important for our mobile venture. First, seeing how people are asking us to provide a good experience also in their pockets, then seeing how many people and energy is being put into making it happen.

Now what’s to coming from my end?

Better Wayland integration: keyboard

This was what I spent most of my time during the sprint. Now it was a bumpy one for me, since I got a bit of a flu and I wasn’t on my best shape. Still, it got me to produce this patch which implements zwp_input_method_context_v1 into KWin. Yes, there’re discussions of iterating the protocol, but as is, it already allows us to adopt Maliit, integrate some of ibus and in the end, exposing some very interesting features so one can care for text input without hacking them right into KWin.

Optimal EGL interfaces

Something else that was (made) clear to me that needed implementing was EGL_KHR_partial_update. This one is especially important specifically for the Pine Phone, but I’d expect other drivers to implement such an interface over time. It allows us to tell the driver which parts of the screen have changed, which is expected to in turn offer better responsiveness when rendering, since there’re some textures that won’t need to be fiddled with, when using a graphics card that uses tiled rendering.

For the curious, you can find the patch now here.

More Android

Having Android support for our applications has been undoubtedly useful for Plasma Mobile. We have a bunch of Free Software applications being developed on Android such as: Itinerary, Kaidan, Kirogi or Kongress. All these applications will be handy the day Plasma Mobile is in all our pockets. Until then, we can develop them for Android and get them used by the any of the millions of people who nowadays use the system, including most of us.

Now this is a delicate time since Qt 5.14 introduced a bunch of changes that made us have to adapt what we had, but now we are there and we’ll soon be able to start offering you all our applications using Qt 5.14 and newer stable versions as well. Volker explained it very well here.

I hope you’re all excited like I am to see Free Software reach our pockets. Plus, I’m also glad about how getting it in the pockets improve the experience overall: all the new apps will be useful when we are on our Desktops. All the Wayland improvements and optimizations will make our systems more useful and responsive.

What a time to be a free software hacker! 🙂

Saturday, 29 February 2020

This is the first post in a monthly series about improvements to the KDE websites. I plan to publish it every last Saturday of the month. Since a lot happened in January and I didn’t mention it anywhere, I will also mention those things in this post.

New Websites

  • KDE Connect gained a new website and a promotional video. This was done during the Season of KDE project. (Arjun Thekoot Harisankar, see repository).

KDE Connect website

Updated Websites

  • Juk is a music player and music manager. A new website for it was created by Anuj Bansal, (see commit).

Juk website{:.img-border}

  • KDE e.V. is the non-profit organization that represents the KDE community in legal and financial matters. The e.V. website was migrated to Jekyll and now uses the shared Jekyll theme. (Me: Carl Schwan, see commit).

KDE e.V. website{:.img-border}

  • KMyMoney is a personal finance manager and the project website was also migrated to Jekyll and now uses the shared Jekyll theme (Me: Carl Schwan, see commit).

KMyMoney website{:.img-border}

KDE chinal website{:.img-border}

Updates to

  • A hardware page was created listing all the devices that ship with Plasma preinstalled (Niccolò Venerandi, see commit).

  • Updated image for the recently launched Plasma 5.18 (Jonathan Riddell and Me: Carl Schwan).

  • Reduce KDE patron logo size for (Ilya Bizyaev, see task).

Library updates

  • Added options to customize footer in the Jekyll theme. This will be helpful for the coming update to (Jumpei Ogawa, see commit).

  • Added option to disabled the donation form in the Jekyll theme. (Jumpei Ogawa, see commit).

  • Various minor fixes to the Aether css theme (Anuj Bansal and Me: Carl Schwan).

  • A component selector for the Jekyll theme was also added. This will be helpful for making use the KDE Jekyll theme and not a custom theme and for others projects who have multiples components (e.g. Calligra). (Anuj Bansal, see merge request).

  • Improve translations infrastructure for (Me: Carl Schwan, see commits).

How you can help

We always need help with website, fixing papercuts, upgrading old websites to the new Jekyll/Hugo infrastructure, making sure information on the website is up-to-date, creating beautiful home page for your favorite project and a lot more.

The Elisa maintainers are looking for someone who wants to create a website and a junior job task was created.

You can join the web team through our Matrix channel , our IRC channel (#kde-www) or our Telegram channel.

It’s been two months since my previous KF6 progress report. Clearly an update is long overdue, it’s time to make it happen!

An actual Qt 6 is not published yet and we didn’t branch for KF6 yet either. Still as can be seen on the KF6 Workboard there are plenty of tasks in our backlog which can be acted upon now. No need to wait to participate, all the work done now will make the transition to KF6 easier later on anyway.

What has been done since the last post?

On the workboard, we currently have 25 tasks in progress and 8 tasks done. That’s still quite some activity brewing. We got fewer tasks done than since the previous report but nothing to worry about I think. A bit more disappointing to me is that they are mostly done by our core contributors (although to be fair we got less known names in the in progress tasks). Anyway, I will say it again then: there is work for everyone, it’s a very good time to get your feet wet contributing to KDE Frameworks. Don’t be shy! We’re nice. ;-)

Anyway, let’s see the tasks done during the past few weeks (in no particular order):

If you pay close attention, you will see that some of those tasks involved patches outside of KDE Frameworks. This is to be expected (and there are more such tasks), if we want the transition to be easier for the community later on, it’s a good thing to get our applications ready as well. In any case, thanks to everyone involved!

KDE Frameworks Community Analytics?

Per usual, I will use the opportunity to look at the community analytics for KDE Frameworks itself. That’s why I ran my scripts against the repositories in the frameworks section of the KDE repositories tree. Of course, this means we won’t capture some of the activity from the tasks above (since as I mentioned some activity is outside KDE Frameworks itself) and it also means we’ll capture some activity unrelated to the KF6 transition. Still I think it’s interesting to see how KDE Frameworks itself is doing.

Let’s start with the commit activity since the previous KF6 Progress Report.

During that time frame, we got 74 different committers. That’s quite a lot indeed and more than the last time! Of course some of our usual suspects stick out as very active, but it’s nice to see so many other names present and helping with KDE Frameworks.

Now, how does the code contributor network looks like?

Unsurprisingly, we find our usual suspects again as very central to the network. Like the last time we find a couple of lesser known names (at least to me) in that set of central people… interestingly those names are the same than the last time. This means we had some recruiting happening and the retention seems good. This is great news! As I keep reminding everyone, high centrality is not an end in itself, in such networks it healthier to have a mix of tightly and loosely connected nodes, it’s exactly what we got here.

How You Can Help

Next time, your name could be in visualizations like the ones above!

Check out the KF6 Workboard and pick a task to help us toward this great transition. If you need help to get started, feel free to contact us on the #kde-devel IRC channel on Freenode.

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Sunday, 1 September 2019

Now it’s the end of Google Summer of Code 2019. As my GSoC project, the port of KDE Connect on macOS has made great progress. You can find and download it in my blog release page.

Note: This post aims at presenting the features of KDE Connect which have been implemented on macOS. If you’d like to know more information, such as compilation of your own KDE Connect binary on macOS, please turn to another post in my post Connect your Android phone with your Mac via KDE Connect. And if you’re interested in what I’ve done during Google Summer of Code, my status report of Google Summer of Code is HERE.


In this chapter, I’d like to give you a preview of all features, as well as how to configure to make some of functions work.

Launch KDE Connect

First, we can click on KDE Connect application - the to open it.

Then, we can open KDE Connect configuration window from the indicator in the tray bar of macOS.

As you can see, this is the main page of KDE Connect. All available plugins are here, you can enable/disable or configure them. In addition, available devices will be listed on the left, you can choose them to pair/unpair with them/it.


Pair notification

When you pair from your Andoid Phone, you should be able to receive a notification that shows the pair request. You can accept or reject it in the KDE Connect configuration window, or you can do it with KDE Connect indicator tray icon, there would be an entry for the pair request as well.

Otherwise, if you change the notification type of KDE Connect to alert in the system preference, you should also be able to do a quick action with the notification itself. Just as I showed in Enable notification plugin in KDE Connect on macOS.

Once paired, you can enjoy your adventure on macOS with KDE Connect!

Clipboard synchronization

The text that you copy on your Mac will be shared to your phone, and those you copy on your phone will be also synchronized to your Mac.

Notification synchronization

With KNotifications support for macOS, you can receive notification from your Android phones and react to them. You can ping your Mac to test whether they are well connected.

Sending file

Sharing your file on your Mac with your Android phone is also a basic feature. You could also send a file from your Android phone, by default, the file will be saved in the Downloads folder in your Mac.

System Volume

You can control the system value of your Mac from your Android Phone remotely.


With my SFTP browser, you can browse files in your Android Phone from your Mac, easily synchronize a file.


Thanks to SMS application of Simon Redman, sending and receiving SMS on your Mac are possible!

Running command

Run command from your Android phone. I believe that using AppleScript, more and more things that KDE Connect can do on macOS, will be discovered, maybe by you!

Mouse and Keyboard

You should be able to use your Android phone as a temporary trackpad and a keyboard. But it needs your permission to allow your Android phone to do it on your Mac. The GIF above shows how to do that.


Except the functions shown above, you can also do these from your Android phone:

  • Keep your Mac awake when your phone is connected
  • Use your phone to control your slides during a presentation
  • Check the battery level of your phone
  • Ring your phone to help find it

And, you may have noticed that, in the screen capture, there are KDE Connect in dark mode and in light mode. Thanks to Qt, we are able to benefit it.

Furthermore, there is no doubt that more functions will be delivered and released in the future. We are all looking forward to them.


There are some issues that we’ve known and we are trying to fix them.

The released application package isn’t notarized and still has some lirary reference issues. So, it requires you to manually open it, if it’s rejected by Gatekeeper(package validator on macOS), like that showed in the image above.

We’ll try to fix all issues and make a release which you can run it without barricade.


Thanks to KDE Community and Google, I could finish this Google Summer of Code project this summer.

Thanks to members in KDE Connect development. Without them, I cannnot understand the mechanism and get it work on macOS so quickly :)


If you have any question, KDE Connect Wiki may be helpful. And you can find a bug tracker there.

Don’t be hesitated to join our Telegram Group or IRC channel if you’d like to bring more exciting functions into KDE Connect:

  • Telegram
  • IRC (#kdeconnect)
  • (

I wish you could enjoy the seamless experience provided by KDE Connect for macOS and your Android Phone!

Wednesday, 16 November 2016

Μετά από το post μου με τίτλο: "Συναντήσεις μου με famous και λιγότερο famous σε συνέδρια και όχι μόνο", σκέφτηκα να ψάξω και ομαδικές φωτογραφίες από τα συνέδρια του εξωτερικού που έχω συμμετάσχει ως ανάμνηση. Υπάρχουν και τα συνέδρια FOSSCOMM στην Ελλάδα, αλλά ίσως γράψω κάτι όταν πλησιάζει ο καιρός να συμμετάσχω στο επόμενο FOSSCOMM.

Έχουμε και λέμε:


Desktop Summit

Το desktop summit διεξήχθη για τελευταία φορά το 2011 στο Βερολίνο. Είναι η πρώτη φορά που επισκέπτομαι το Βερολίνο. Επίσης είναι η πρώτη φορά που βγαίνω στο εξωτερικό μετά από ένα χρόνο που είχαμε ξεκινήσει την κοινότητα openSUSE στην Ελλάδα μαζί με τον Κώστα.

Desktop Summit Group Picture


Το 2012 συμμετείχα ως εθελοντής στο παγκόσμιο συνέδριο openSUSE στην Πράγα. Συμμετείχαμε πολλοί Έλληνες (δείτε παρακάτω) επειδή την επόμενη χρονιά θα διοργανώναμε στην Θεσσαλονίκη το αντίστοιχο συνέδριο.

Έλληνες στο συνέδριο openSUSE 2012

Η ομάδα των Ελλήνων
Το συνέδριο ήταν συνδιοργάνωση με άλλα 2 συνέδρια.

Συνέδριο openSUSE 2012


Την χρονιά αυτή, το παγκόσμιο συνέδριο openSUSE διοργανώθηκε στην Θεσσαλονίκη. Συμμετείχα ενεργά τόσο στην οργάνωσή του όσο και στην διάρκειά του, με την διαχείριση των μέσων κοινωνικής δικτύωσης.

Συνέδριο openSUSE 2013


Το παγκόσμιο συνέδριο openSUSE διοργανώθηκε στο Dubrovnik στην Κροατία. Έχοντας αποκτήσει εμπειρία, μου ανατέθηκε ο ρόλος των μέσων κοινωνικής δικτύωσης.

υνέδριο openSUSE 2014


Το 2015 συμμετείχα στο συνέδριο ownCloud στο Βερολίνο. Ήταν η χρονιά που είχα κάνει πολλές παρουσιάσεις και αρκετή προώθηση του ownCloud στην Ελλάδα. Είχα κερδίσει την συμμετοχή μου στο συνέδριο μέσω της πλατφόρμας προώθησης που χρησιμοποιούσε εκείνη την εποχή το ownCloud.

Συνέδριο ownCloud 2015


Το 2016 συμμετείχα σε δυο συνέδρια. Ο λόγος ήταν ο διαχωρισμός-διάσπαση σε ownCloud και Nextcloud (είναι δυο διαφορετικές εταιρίες με δυο εντελώς διαφορετικά projects).

Αρχικά ως προσκεκλημένος του ownCloud.

Συνέδριο ownCloud 2016

Στη συνέχεια ως προσκεκλημένος-εθελοντής του Nextcloud.

Συνέδριο Nextcloud 2016


Το 2017 συμμετείχα στο συνέδριο Nextcloud στο Βερολίνο. Ήταν ιδιαίτερη χαρά μου γιατί συμμετείχαν και 2 Έλληνες μαζί μου.

Συνέδριο Nextcloud 2017


FOSDEM, 3 & 4 Φεβρουαρίου, Βρυξέλλες. Συμμετοχή με το Nextcloud...

FOSDEM 2018 με Nextcloud

Συνέδριο Nextcloud, 23 - 30 Αυγούστου, Βερολίνο.

Συνέδριο Nextcloud 2018

Συνέδριο ownCloud, 18 - 21 Σεπτεμβρίου, Νυρεμβέργη.

Συνέδριο ownCloud 2018

Συνέδριο GNU Health, 23 - 25 Νοεμβρίου, Λας Πάλμας.

Συνέδριο GNU Health 2018


Συνέδριο openSUSE, 23-24 Μαΐου 2019 στη Νυρεμβέργη.

openSUSE conference 2019, May 23-24, Nuremberg

Συνέδριο GUADEC, 23-28 Αυγούστου, Θεσσαλονίκη

GUADEC 2019 Θεσσαλονίκη

Συνέδριο Nextcloud, 12-21 Σεπτεμβρίου, Βερολίνο.

Συνέδριο Nextcloud 2019 στο Βερολίνο


FOSDEM, 1 & 2 Φεβρουαρίου, Βρυξέλλες. Συμμετοχή με το Nextcloud...

FOSDEM 2020 with Nextcloud

Σύντομα θα ακολουθήσουν και άλλα...

Friday, 14 October 2016

One afternoon twenty years ago Matthias Ettrich and Martin Konold sat at a stone table in the cafeteria of the university Tübingen and talked computers. They talked Linux and they talked desktop. They talked about making Linux accessible to everyone. This was the moment where KDE was born. This afternoon they walked away with a mission. Matthias went on to write the call to action to found the KDE project, and Martin to create the very first KDE mailing list

On October 14th 1996 the famous announcement arrived on the newsgroups comp.os.linux.development.apps, comp.os.linux.misc, and de.comp.os.linux.misc:

    New Project: Kool Desktop Environment. Programmers wanted!

The new project quickly attracted a group of enthusiastic developers and they pushed out code with a frentic pace. kdelibs-0.0.1 was released in November, containing the first classes KConfig and KApplication. In May 1997 the young project presented at the Linux-Kongress in Würzburg. In August Kalle Dalheimer published the famous article about KDE in the German computer magazine c't which attracted a whole generation of KDE developers to the project. On Jul 12th 1998 KDE 1.0 was done and released. The community had not only implemented a friendly face for Linux but also a bunch of applications while going, including a full web browser.

KDE did hundreds more releases over the years, continuously improving and maintaining the growing number of applications and amount of code. The community grew. It started to do annual conferences such as Akademy or the Desktop Summits and focused developer sprints such as the Osnabrück or the Randa meetings. KDE e.V., the organization behind KDE, which was founded as partner for the KDE Free Qt Foundation, grew with the community to be the corner stone of the organizational structure of KDE, using German association law as its secret superpower (read more about this in the book "20 Years of KDE: Past, Present and Future").

Millions and millions of people used KDE software over the years. Thousands of people contributed. KDE made appearances in Hollywood movies, it was subject of theses and scientific studies, and it won many awards. KDE's founder, Matthias Ettrich even received the German Federal Cross of Merit. The timeline of twenty years of KDE is an impressive demonstration of what Free Software is able to achieve.

Akademy 2014 group photo by Martin Holec (CC-BY)

KDE also was a breeding ground. Many people started their careers there. Hundreds of students went through mentoring programs such as the Summer of Code or the Season of KDE. Whole projects emerged from KDE, such as ownCloud and its sibling NextCloud, Kolab, or KHTML, which turned into WebKit and then Blink, powering most of web browsers on this planet today.

Today Linux has reached world domination in various, sometimes surprising, ways. KDE has contributed its share to that. With Plasma it provides a slick and powerful desktop which does make Linux accessible to everyone. This mission has been accomplished. But there is more. Following KDE's vision of bringing freedom to people's digital life there are amazing projects exploring new areas through Free Software, be it an application such as Krita to bring freedom to digital painters, or a project such as WikiToLearn to create collaborative text books for education. When KDE people meet you can feel the enthusiasm, the openness, and the commitment to change the world to the better just as in the days of the beginning.

I joined KDE in 1999 with my first patch to KOrganizer. I wrote a lot of code, maintained and founded applications, served on the board of KDE e.V. for nine years. Most importantly I found a lot of friends. Neither my personal nor my professional life would be what it is today without KDE. I owe a lot to this community. Thank you for the last twenty years.