Difference between revisions of "Projects/PIM/Akonadi/Meeting2009-10"

< Projects‎ | PIM‎ | Akonadi
Jump to: navigation, search
(Attendees)
(Add my meeting notes, only one month late.)
 
(26 intermediate revisions by 7 users not shown)
Line 3: Line 3:
 
Date: October 16th (Friday) - October 18th (Sunday)
 
Date: October 16th (Friday) - October 18th (Sunday)
  
== Location ==
+
== Location / Travel Information ==
 +
 
 +
=== Office ===
  
 
<pre>
 
<pre>
Line 10: Line 12:
 
10999 Berlin
 
10999 Berlin
 
Germany
 
Germany
 +
Phone: +49-30-5213254-70
 
</pre>
 
</pre>
  
== Travel Information ==
+
 
* [http://www.bvg.de/index.php/de/Common/Document/field/file/id/2597/filename/S+U-Bahn_aktuell.pdf Subway and rail map of Berlin]
+
Getting there from the hotel: takes about 15 minutes to walk, just follow the others, most have been here already ;-)
 +
 
 +
[http://maps.google.com/maps?f=d&source=s_d&saddr=An+der+Schillingbrucke+2,+10243+Berlin,+Germany&daddr=Adalbertstrasse+7%2F8,+10999+Berlin,Germany&hl=en&geocode=&mra=ls&dirflg=w&sll=37.0625,-95.677068&sspn=60.806372,49.130859&ie=UTF8&ll=52.504454,13.426173&spn=0.011611,0.032852&z=16 Hotel -> Office map]
 +
 
 +
Getting there directly: Take the subway line U8 to "Kottbusser Tor".
 +
 
 +
[http://www.bvg.de/index.php/de/Common/Document/field/file/id/2597/filename/S+U-Bahn_aktuell.pdf Subway and rail map of Berlin]
 +
 
 +
 
 +
=== Hotel ===
 +
 
 +
<pre>
 +
Hotel Ibis Berlin City Ost
 +
An der Schillingbrucke 2
 +
10243 Berlin
 +
Germany
 +
Phone: (+49)30/257600
 +
Fax : (+49)30/25760333
 +
</pre>
 +
 
 +
Easiest way to reach the hotel is by taking a train to Ostbahnhof (it's just across the street from the station). If your train doesn't stop there, take the S-Bahn from Hauptbahnhof, any east-bound line will do.
 +
 
 +
From TXL take the bus labeld 'TXL' to Hauptbahnhof or Alexanderplatz and switch to the S-Bahn there, any east-bound train will do.
 +
 
 +
In both cases you'll need a single 'AB' Ticket, which can be purchased on ticket machines and costs 2.10€.
 +
 
  
 
== Attendees ==
 
== Attendees ==
Line 71: Line 99:
 
|-
 
|-
 
| Sascha Peilicke
 
| Sascha Peilicke
|
+
| train
|
+
| 16th
|
+
| 20th
 
| no
 
| no
 
|-
 
|-
Line 83: Line 111:
 
|-
 
|-
 
|-
 
|-
| Will Stepehnson
+
| Will Stephenson
 
| drive
 
| drive
 
| 16th pm
 
| 16th pm
 
| 18th
 
| 18th
 
| no
 
| no
 +
|-
 +
| Brad Hards
 +
| train in, flight out
 +
| 16th around 13:30
 +
| 19th, 11:05 TXL
 +
| yes
 
|-
 
|-
 
|}
 
|}
Line 103: Line 137:
  
 
* We have quite some new public API which needs to be reviewed, in the following libraries:
 
* We have quite some new public API which needs to be reviewed, in the following libraries:
** Mailtransport
+
** Mailtransport [[http://deltatauchi.de/~vkrause/kde/mailtransport-kde-4.3-trunk.diff Diff]]
 
** MessageViewer
 
** MessageViewer
** KMime
+
** KMime [[http://deltatauchi.de/~vkrause/kde/kmime-kde-4.3-trunk.diff Diff]]
** Akonadi Core
+
** Akonadi Core [[http://deltatauchi.de/~vkrause/kde/akonadi-kde-4.3-trunk.diff Diff]]
 
** Akonadi Contact
 
** Akonadi Contact
 
** Akonadi KMime
 
** Akonadi KMime
 
** Kontact Interface
 
** Kontact Interface
  
* Porting KMail to Akonadi
+
* Application porting status and planning, data and settings migration:
 +
** KMail
 +
** KOrganizer
 +
** Akregator
 +
 
 +
* KDE PIM module organization
 +
** Fix apps/runtime split again
  
 
* Nepomuk integration
 
* Nepomuk integration
 
** Fix the usage of non-Fast resources in the feeder agents
 
** Fix the usage of non-Fast resources in the feeder agents
 +
** Fix the feeders to behave according to Sebastian's email, and document the correct behavior somewhere
 +
** Avoid ontology duplication, move them to kdelibs or soprano maybe?
 +
 +
* Extensions
 +
** Free / busy management
 +
** Mail Handling / Rules (Sieve, etc)
 +
 +
* StandardActionManager redesign (to support multiple views and extensibility)
 +
 +
* Do PIM applications still need to be KUniqueApplications?
 +
 +
=== Friday ===
 +
 +
* Hacking
 +
 +
* 18:00 Porting status and planning, module organization etc.
 +
 +
* 19:00 Dinner
 +
 +
* 22:00 API review Akonadi Core library
 +
 +
=== Saturday ===
 +
 +
* 08:15 Hacking
 +
 +
* 10:00 API review libakonadi and mailtransport
 +
 +
* 12:30 Lunch
 +
 +
* 13:00 Nepomuk integration
 +
 +
* 15:30 API review Akonadi contact library
 +
 +
* 17:30 Hacking
 +
 +
* 18:30 ETM API review
 +
 +
* Hacking
 +
 +
* 20:00 Dinner
 +
 +
* 23:00 OpenChange demo, free/busy abstraction, mail filtering abstraction
 +
 +
* Hacking
 +
 +
=== Sunday ===
 +
 +
* 8:30 Begin
 +
 +
* 9:00 SAM redesign
 +
 +
* KMime API review
 +
 +
* Group photo
 +
 +
* Hacking
 +
 +
* 12:00 Lunch
 +
 +
* Hacking
 +
 +
== Meeting Notes  ==
 +
 +
=== Porting status / release planning / app/runtime split  ===
 +
 +
*KOrganizer: Not ready for KDE 4.4
 +
*Akonadi OpenSync, KitchenSync: Move to playground for KDE 4.4
 +
*Akonadi SyncML Client Resource: Can be moved to trunk for KDE 4.4
 +
*KJots rewrite: Can be merged for KDE 4.4
 +
*KResource bridges: Using the old KResource API with the bridges causes some problems, thus all applications should be ported to the new Akonadi Contacts API
 +
*KMailCVT: Porting to Akonadi is probably easy. We should get rid of the D-Bus interface to KMail and make it use Akonadi nativly. Target is KDE 4.5. In general, we want to remove all D-Bus controlled stuff and replace it with native Akonadi calls.
 +
*KNotes: Will be replaced by KJots in the future
 +
*KResources: Some KResources which have native Akonadi replacement can be removed. Others however are public API because they are in kdepimlibs
 +
*Wizards: The idea is to use wizards with Kross scripting, so that custom providers can be added easily. That could even be integrated with KNewstuff. Volker has a prototype for this, just missing the servertest stuff.
 +
*Akonadi KCM: Remove for KDE 4.4, not useful for most users, just confusing
 +
 +
Tom blogged about this [http://www.omat.nl/2009/10/17/akonadi-meeting-day-1-discussions-api-review/ here].
 +
 +
=== Akonadi/Nepomuk/Search and the future  ===
 +
 +
Attending: Volker, Steve, Sebastian Trueg, Will Stephenson, Kevin Ervin
 +
 +
*Discussed future of desktop PIM and applications which are context or project specific rather than transport specific. Ie, beyond the concepts of "one application handles my email, another handles my contacts, another handles my notes." Instead these things should be grouped and available in applications which present them by project/task or person.
 +
**Should be able to clear completed tasks by taking action on them. For any task, there may be multiple action paths to complete before the task is "complete", eg "The cat just threw up. Clean up the mess. Take the cat to the vet". Two action paths to handle the sick cat.
 +
*Communicating with contacts independently of the transport mechanism in an application which can show history of communication with the person. Also, be able to configure notifications such as "Notify me the next time this person is online using the message 'Talk to Alice about the server backups'"
 +
*Merging of contacts from multiple resources.
 +
**Tricky because some resources have read-only access.
 +
**Some resources rewrite fields, which could mean bugs like having to perform a merge operation again and again.
 +
**Could be sensible to link Akonadi contacts to PIMO::Person objects in Nepomuk.
 +
*Considering the implementation of how tags should be represented in PIM apps.
 +
**Showing "All available tags from Nepomuk with linked items in the collections" would not scale because people could have thousands of, eg, emails, but only several would be relevant and contain tagged emails. It could be more sensible to configure individual simple searched such as "show me emails tagged with 'giraffe'" and use searches instead of explicitly using the tag resource.
 +
**Nepomuk triples can be queried in interesting unrestricted and versatile ways. predicates can be variables and can have placeholders.
 +
**Discussed the ideas brought out in Zeitgeist and how it can relate to Nepomuk and hooked into KIO.
 +
*How can PIM relate to plasma activities, for example?
 +
**Possible that PIM applications should not directly respond to changes in plasma activity, but plasma activity should map in some way to one or more 'PIMO::Project', and therefore change the most easily acceptible data related to the project.
 +
*Storing search index of encrypted emails in a second, encrypted rdf store.
 +
**Virtuoso has some useful stuff to make this possible, but it is preferable to create a model in the Soprano interface instead.
 +
*Synching two Nepomuk stores.
 +
**Possible to use a resource that represents remote nepomuk objects as akonadi Items and feed them into the local index.
 +
**Soprano needs to get some more api for that.
 +
*Separate but related is accessing a remote Akonadi server over ssh for example.
 +
 +
=== StandardActionManager (SAM) redesign  ===
 +
 +
*Have a central generic action manager in libakonadi which propagates selection model changes and selection changes to special action managers for type specific actions.
 +
*In case of multiple item views, have a way to select which one is active, most notably before showing a context menu on it.
 +
*We need customizing of operations, such as
 +
**FFV actions
 +
**anything using a mime type filter
 +
*We also need undo
 +
 +
<br>
 +
 +
*New design:
 +
**Separate action (the visual and state part) and operation (a single instance of an executed action)
 +
**Use prototype pattern for operations, which allows to customize them
 +
**Allow inheriting operations from QUndoCommand and let SAM push them onto a QUndoStack
 +
**Allow to register custom action/operations with SAM
 +
**Put the most common state handling into SAM (mimetype, amount of selected objects, ACL), provide accessor methods for selection models and a updateState() signal for custom state handling
 +
**Keep visual/state updates in SAM and don't mix them with operation objects.
 +
 +
=== Handling large address books  ===
 +
 +
There was a quick discussion of large addressbooks.
 +
 +
There is a general problem with very large address books. An example is something like a company wide (global) address book. This will probably affect LDAP based address books (e.g. Kolab resource) and Exchange-based address books (e.g. openchange resource).
 +
 +
The scale of the problem is address books with potentially hundreds of thousands of entries. They could be a mixture of user addresses and distribution lists in a flat list.
 +
 +
For Akonadi to handle this properly, we need a few thing:
 +
 +
*We need a way to query all the address books for the information the user is looking for. Consider that the user may want to search the address book for users who's surname starts with Mac or Mc, or who's first name is Bob or Robert. Or some combination.
 +
*We need a way to merge the results from various address books to present them to the user.
 +
*We need to be able to avoid downloading / caching the whole global address book inside the Akonadi cache.
 +
*We need to be able to page results from the resources. So if you have a dialog showing the global address list (with say 400 thousand entries), we don't need to download 200 thousand entries before you repaint the dialog contents. If the user scrolls down a bit, we ideally don't want to reload the bits that are the same.&nbsp;
 +
 +
Those requirements lead to some akonadi features we need to add:
 +
 +
*We need a caching policy that says "don't cache any of this". This would be particularly useful if we ever handle the Exchange offline address book.
 +
*We need a (abstract)&nbsp;query language that gives resources enough flexibility to either allow searching / filtering on the server (whenever we can) or resource side (where we have to, or there is no server). It might be that the client needs to do some additional filtering.
 +
*We need to have a consistent approach to showing global address books. Perhaps always showing it as a separate Collection would be useful to avoid resync operations.
 +
 +
=== Mail filtering  ===
 +
 +
General discussion of mail filtering capabilities and how to handle this.
 +
 +
There are three kinds of rules that we could think of:
 +
 +
*client rules. this isn't really in scope for akonadi (see also playground/pim/akonadi/filter for Szymon's GSoC on client side filtering)
 +
*Sieve ([http://tools.ietf.org/html/rfc5228 tools.ietf.org/html/rfc5228]) server-side filtering using Cyrus IMAP&nbsp;server (for Kolab resource)<br>
 +
*Openchange / exchange server-side filtering ([http://msdn.microsoft.com/en-us/library/cc307725.aspx msdn.microsoft.com/en-us/library/cc307725.aspx]) for the openchange resource<br>
 +
 +
Exchange rules can be set up to run on the client or server, or partly on both. Not yet clear how we can do the partly case - perhaps this would need to be a client-only rule.<br>
 +
 +
We didn't do a close comparison between what Sieve can do and what Exchange can do, however it appears difficult to share more than just a generic interface design. The problems we identified are that we'd need to be able to show the superset of all possible mail rule features (e.g. consider what happens if there is a rule created by another client that doesn't map properly into a hypothetic akonadi mail rules design).<br>
 +
 +
The initial plan is to add an class similar to Akonadi::TransportResourceBase (perhaps Akonadi::MailFilteringResourceBase) that a resource can inherit if it supports filtering.&nbsp; This might also require a change to the .desktop capability list.
 +
 +
We looked at Out-Of-Office handling as well. This is also needed for both Kolab and the openchange resource (and probably other groupware server resources). We can probably make this generic / shared.<br>
 +
 +
<br>
  
[[Category:Akonadi]]
+
[[Category:Akonadi]] [[Category:PIM]]
[[Category:PIM]]
+

Latest revision as of 20:50, 20 November 2009

This page is about the upcoming Akonadi Meeting in October 2009.

Date: October 16th (Friday) - October 18th (Sunday)

Contents

[edit] Location / Travel Information

[edit] Office

KDAB
Adalbertstrasse 7/8
10999 Berlin
Germany
Phone: +49-30-5213254-70


Getting there from the hotel: takes about 15 minutes to walk, just follow the others, most have been here already ;-)

Hotel -> Office map

Getting there directly: Take the subway line U8 to "Kottbusser Tor".

Subway and rail map of Berlin


[edit] Hotel

Hotel Ibis Berlin City Ost
An der Schillingbrucke 2
10243 Berlin
Germany
Phone: (+49)30/257600 
Fax : (+49)30/25760333

Easiest way to reach the hotel is by taking a train to Ostbahnhof (it's just across the street from the station). If your train doesn't stop there, take the S-Bahn from Hauptbahnhof, any east-bound line will do.

From TXL take the bus labeld 'TXL' to Hauptbahnhof or Alexanderplatz and switch to the S-Bahn there, any east-bound train will do.

In both cases you'll need a single 'AB' Ticket, which can be purchased on ticket machines and costs 2.10€.


[edit] Attendees

Non-locals, please add yourself, your travel details and accommodation needs to the following table.

Name Travel Arrival Departure Accommodation needed
Tobias König train 16th, around 16:00 18th, around 17:30 yes
Thomas McGuire train 14th, around 17:00 18th, around 15:00 yes
Tom Albers train 16th, around 16:00 18th yes
Dmitry Ivanov plane 16th, around 12:00 18th, around 15:00 no
Andras Mantia plane 14th, 17:05 TXL 19th, morning yes
Sebastian Trueg train 16th afternoon 18th, ~ 18:00 yes (prefer not to share a room and will pay myself)
Martin Koller plane 16th around 12:30 18th, ~ 18:00 yes
Sascha Peilicke train 16th 20th no
Kevin Ottens plane 11th 18th yes
Will Stephenson drive 16th pm 18th no
Brad Hards train in, flight out 16th around 13:30 19th, 11:05 TXL yes

Locals present anyway:

  • Bertjan Broeksema
  • Frank Osterfeld
  • Steve Kelly
  • Till Adam
  • Volker Krause

[edit] Agenda

Please collect stuff you want to do/discuss here.

  • We have quite some new public API which needs to be reviewed, in the following libraries:
    • Mailtransport [Diff]
    • MessageViewer
    • KMime [Diff]
    • Akonadi Core [Diff]
    • Akonadi Contact
    • Akonadi KMime
    • Kontact Interface
  • Application porting status and planning, data and settings migration:
    • KMail
    • KOrganizer
    • Akregator
  • KDE PIM module organization
    • Fix apps/runtime split again
  • Nepomuk integration
    • Fix the usage of non-Fast resources in the feeder agents
    • Fix the feeders to behave according to Sebastian's email, and document the correct behavior somewhere
    • Avoid ontology duplication, move them to kdelibs or soprano maybe?
  • Extensions
    • Free / busy management
    • Mail Handling / Rules (Sieve, etc)
  • StandardActionManager redesign (to support multiple views and extensibility)
  • Do PIM applications still need to be KUniqueApplications?

[edit] Friday

  • Hacking
  • 18:00 Porting status and planning, module organization etc.
  • 19:00 Dinner
  • 22:00 API review Akonadi Core library

[edit] Saturday

  • 08:15 Hacking
  • 10:00 API review libakonadi and mailtransport
  • 12:30 Lunch
  • 13:00 Nepomuk integration
  • 15:30 API review Akonadi contact library
  • 17:30 Hacking
  • 18:30 ETM API review
  • Hacking
  • 20:00 Dinner
  • 23:00 OpenChange demo, free/busy abstraction, mail filtering abstraction
  • Hacking

[edit] Sunday

  • 8:30 Begin
  • 9:00 SAM redesign
  • KMime API review
  • Group photo
  • Hacking
  • 12:00 Lunch
  • Hacking

[edit] Meeting Notes

[edit] Porting status / release planning / app/runtime split

  • KOrganizer: Not ready for KDE 4.4
  • Akonadi OpenSync, KitchenSync: Move to playground for KDE 4.4
  • Akonadi SyncML Client Resource: Can be moved to trunk for KDE 4.4
  • KJots rewrite: Can be merged for KDE 4.4
  • KResource bridges: Using the old KResource API with the bridges causes some problems, thus all applications should be ported to the new Akonadi Contacts API
  • KMailCVT: Porting to Akonadi is probably easy. We should get rid of the D-Bus interface to KMail and make it use Akonadi nativly. Target is KDE 4.5. In general, we want to remove all D-Bus controlled stuff and replace it with native Akonadi calls.
  • KNotes: Will be replaced by KJots in the future
  • KResources: Some KResources which have native Akonadi replacement can be removed. Others however are public API because they are in kdepimlibs
  • Wizards: The idea is to use wizards with Kross scripting, so that custom providers can be added easily. That could even be integrated with KNewstuff. Volker has a prototype for this, just missing the servertest stuff.
  • Akonadi KCM: Remove for KDE 4.4, not useful for most users, just confusing

Tom blogged about this here.

[edit] Akonadi/Nepomuk/Search and the future

Attending: Volker, Steve, Sebastian Trueg, Will Stephenson, Kevin Ervin

  • Discussed future of desktop PIM and applications which are context or project specific rather than transport specific. Ie, beyond the concepts of "one application handles my email, another handles my contacts, another handles my notes." Instead these things should be grouped and available in applications which present them by project/task or person.
    • Should be able to clear completed tasks by taking action on them. For any task, there may be multiple action paths to complete before the task is "complete", eg "The cat just threw up. Clean up the mess. Take the cat to the vet". Two action paths to handle the sick cat.
  • Communicating with contacts independently of the transport mechanism in an application which can show history of communication with the person. Also, be able to configure notifications such as "Notify me the next time this person is online using the message 'Talk to Alice about the server backups'"
  • Merging of contacts from multiple resources.
    • Tricky because some resources have read-only access.
    • Some resources rewrite fields, which could mean bugs like having to perform a merge operation again and again.
    • Could be sensible to link Akonadi contacts to PIMO::Person objects in Nepomuk.
  • Considering the implementation of how tags should be represented in PIM apps.
    • Showing "All available tags from Nepomuk with linked items in the collections" would not scale because people could have thousands of, eg, emails, but only several would be relevant and contain tagged emails. It could be more sensible to configure individual simple searched such as "show me emails tagged with 'giraffe'" and use searches instead of explicitly using the tag resource.
    • Nepomuk triples can be queried in interesting unrestricted and versatile ways. predicates can be variables and can have placeholders.
    • Discussed the ideas brought out in Zeitgeist and how it can relate to Nepomuk and hooked into KIO.
  • How can PIM relate to plasma activities, for example?
    • Possible that PIM applications should not directly respond to changes in plasma activity, but plasma activity should map in some way to one or more 'PIMO::Project', and therefore change the most easily acceptible data related to the project.
  • Storing search index of encrypted emails in a second, encrypted rdf store.
    • Virtuoso has some useful stuff to make this possible, but it is preferable to create a model in the Soprano interface instead.
  • Synching two Nepomuk stores.
    • Possible to use a resource that represents remote nepomuk objects as akonadi Items and feed them into the local index.
    • Soprano needs to get some more api for that.
  • Separate but related is accessing a remote Akonadi server over ssh for example.

[edit] StandardActionManager (SAM) redesign

  • Have a central generic action manager in libakonadi which propagates selection model changes and selection changes to special action managers for type specific actions.
  • In case of multiple item views, have a way to select which one is active, most notably before showing a context menu on it.
  • We need customizing of operations, such as
    • FFV actions
    • anything using a mime type filter
  • We also need undo


  • New design:
    • Separate action (the visual and state part) and operation (a single instance of an executed action)
    • Use prototype pattern for operations, which allows to customize them
    • Allow inheriting operations from QUndoCommand and let SAM push them onto a QUndoStack
    • Allow to register custom action/operations with SAM
    • Put the most common state handling into SAM (mimetype, amount of selected objects, ACL), provide accessor methods for selection models and a updateState() signal for custom state handling
    • Keep visual/state updates in SAM and don't mix them with operation objects.

[edit] Handling large address books

There was a quick discussion of large addressbooks.

There is a general problem with very large address books. An example is something like a company wide (global) address book. This will probably affect LDAP based address books (e.g. Kolab resource) and Exchange-based address books (e.g. openchange resource).

The scale of the problem is address books with potentially hundreds of thousands of entries. They could be a mixture of user addresses and distribution lists in a flat list.

For Akonadi to handle this properly, we need a few thing:

  • We need a way to query all the address books for the information the user is looking for. Consider that the user may want to search the address book for users who's surname starts with Mac or Mc, or who's first name is Bob or Robert. Or some combination.
  • We need a way to merge the results from various address books to present them to the user.
  • We need to be able to avoid downloading / caching the whole global address book inside the Akonadi cache.
  • We need to be able to page results from the resources. So if you have a dialog showing the global address list (with say 400 thousand entries), we don't need to download 200 thousand entries before you repaint the dialog contents. If the user scrolls down a bit, we ideally don't want to reload the bits that are the same. 

Those requirements lead to some akonadi features we need to add:

  • We need a caching policy that says "don't cache any of this". This would be particularly useful if we ever handle the Exchange offline address book.
  • We need a (abstract) query language that gives resources enough flexibility to either allow searching / filtering on the server (whenever we can) or resource side (where we have to, or there is no server). It might be that the client needs to do some additional filtering.
  • We need to have a consistent approach to showing global address books. Perhaps always showing it as a separate Collection would be useful to avoid resync operations.

[edit] Mail filtering

General discussion of mail filtering capabilities and how to handle this.

There are three kinds of rules that we could think of:

Exchange rules can be set up to run on the client or server, or partly on both. Not yet clear how we can do the partly case - perhaps this would need to be a client-only rule.

We didn't do a close comparison between what Sieve can do and what Exchange can do, however it appears difficult to share more than just a generic interface design. The problems we identified are that we'd need to be able to show the superset of all possible mail rule features (e.g. consider what happens if there is a rule created by another client that doesn't map properly into a hypothetic akonadi mail rules design).

The initial plan is to add an class similar to Akonadi::TransportResourceBase (perhaps Akonadi::MailFilteringResourceBase) that a resource can inherit if it supports filtering.  This might also require a change to the .desktop capability list.

We looked at Out-Of-Office handling as well. This is also needed for both Kolab and the openchange resource (and probably other groupware server resources). We can probably make this generic / shared.



This page was last modified on 20 November 2009, at 20:50. This page has been accessed 6,185 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal