Issue 336

20th April 2014 by KDE Commit-Digest Team

Contributors

Jürgen Appel
Danny Allen
Alex Fikl
Giacomo Barazzetti
Marta Rybczynska

This Week...

Ktexteditor adds keyword-based completion model. Smb4k changes the implementation of notifications correctly, as a side-effect the notifications can be edited via system settings. libtmdbqt adds basic tv show support.
KF 5 and a look into KDE SC on devices
Aaron Seigo, KDE SC developer and one of the driving forces behind the Plasma Framework, mentioned that the Commit Digest is not monitoring the development happening in git-next.kde.org, which is currently hosting 9 public projects. Among them the GCompris rewrite in QML and Sprinter, the upcoming replacement for KRunner. To investigate what else we are missing, we connected with Aaron to find out and take a look at current developments and as well as a glimpse into future possibilities.

KDE Frameworks 5 include a number of changes compared to the 4.x series. Which ones do you think will be the most notable for the user and the most important ones for developers and the platform itself?

For the end user, Frameworks 5 does not bring many visible changes. Some of the bigger changes, such as the new backend for semantic search, are already coming to the 4.x releases. This "boringness" is a good thing, as it will allow minimal disruption for those using KDE software. One thing they may notice is that installing individual KDE applications will often pull in a much smaller set of packages than they currently do as dependencies. For developers, the changes are significant. While source compatibility has been retained nearly throughout (a major exception is libplasma, which had a necessary refactoring due to changes in QML with Qt5), the libraries are now well sorted into topical units and have clear dependency chains. Instead of being shipped as one massive collection of code, the individual frameworks are released as separate units. This means that applications will only carry the bare minimum dependencies, making it far easier to developers to take advantage of KDE frameworks. Developers of Qt applications will be able to cherry pick exactly the functionality they want. This is a hugely significant step as it means KDE libraries will have a wider audience and hopefully that will translate into greater participation. Development is currently going at a fantastic pace, and having nice discrete modules makes it a lot easier to get started working on a specific area of the Frameworks.

With Plasma Active 4 there is a workspace available for tablets, but for many devices it is not possible or not easy to replace the installed OS, limiting Plasma Active to a few devices. So far there appears to be only one non-PC device coming natively with KDE Software. Do you think KDE should play a bigger role in the growing markets of mobile and wearable devices, do you think it is even necessary?

It is still unclear if wearables will become a significant area of computing, but phones, tablets and media devices are undeniably a part of every computing now. Even laptops are slowly blurring the lines between the clamshell laptop form factor, tablets and mobility focused devices. To remain relevant in the coming decade, it will be key to have products designed for all of these form factors. Otherwise, we will risk becoming less and less relevant as people expect their devices to work together and be consistent. In fact, I expect that any desktop environment project which does not have a clear device spectrum strategy will be rendered irrelevant by the end of the decade. This is really about KDE's future.

Some immediate efforts such as KDE Connect, which builds a bridge between your Android device and your Plasma desktop, is a good step in that direction. However, being able to run KDE software on your phone, tablet, media box as well as desktops and workstations opens up entirely new possibilities for how they can be used together. Plasma was designed for exactly this from the beginning, so we are well positioned, we just need to execute. What are the obstacles in the way?

There are two major obstacles that I see on a regular basis:
  • community interest
  • friendly hardware
Not many people in the community are interested enough in the idea of getting KDE software on devices to get involved and help make it happen. We do have a great core group of developers who are excited by the possibilities and have put a lot of work into things so far, but more is definitely needed. The second problem is perhaps even harder: relatively few people are willing to purchase a device and flash it with some other operating system. Many devices do not even allow this at all, and others will void your warranty by doing so. Even when there is a will to do this, it is generally harder to get an OS on to a device than it is on your average laptop; there is no "one installable image covers all devices" such as we know from Linux distributions and x86 computers. Each device, which typically use ARM CPUs, needs a complete OS build just for it and drivers are often difficult to find, especially ones that work outside of a stock Android release. The best situation would be to have devices that come with KDE pre-installed, but that takes a level of financial support and commitment that has been hard to come by. Even with that support, it is not easy; but without support it is not possible. These are solvable problems, however, if the community makes it a priority. Given the importance of mobile and other devices have already gained, it would be a very good idea for the community to do so. It is obviously harder for people to get excited about it when supported hardware is not easy to come by.

Could Intel's new Atom generation solve the driver problems?

If Intel is able to execute successfully on its mobile hardware targets, and can do so at a price that is even remotely competitive with ARM products, this would be a wonderful new world for us. Driver issues would largely disappear and the devices using the Intel platform would likely be interoperable at the hardware level to a far greater degree than typical ARM devices currently are.

What would be necessary to bring KDE SC on mobile devices?

KDE Frameworks and Plasma workspaces already compile and work well on both ARM and Intel based devices. The major work at this point is in three areas:
  • get open operating systems (e.g. Mer) working on more devices so we can target them more easily
  • provide more of the great KDE applications touch-friendly and even living-room (for media center) user interfaces; we've shown that this is possible with things such as Okular, Kontact and Krita Sketch
  • continue to refine the core Plasma product, in particular complete a handset UI
All of this takes development time as well as funding for devices and, preferably, people to work on it full or part time.

There is a possibility to donate to the Improv development, the promising predecessor to a KDE tablet. What were the reasons to raise additional funds not from the usual suspects like Kickstarter or Indigogo?

Both have overhead (taking 7-10% of what is raised) and being on those sites does not guarantee success at all; the challenge has not been so much to have a way for people to donate as it has been to motivate people to support these efforts. As I noted earlier, it does not seem to be a high priority for the community.

How big is the support of the active KDE community in developing software for the mobile device spectrum?

There is a handful of dedicated individuals working on Plasma on devices, and others working on things such as KDE Connect. It needs to grow, however, and so we come back to it being a priority. It needs to be balanced with our focus on laptop and desktop systems, of course, but we are not paying enough time and attention to the device world.

Has the KDE e.V. or Blue Systems shown any interest in supporting device development or development directed to bring KDE Software to existing devices?

Unfortunately, not so far.

What could or should the community and other entities do?

I can't say what they should do, but I think the entire community could find ways to put at least some resources on device focused development. In Plasma, we did this by making the workspace shell re-usable and modular so that we could produce a great desktop product while sharing nearly all of that work in the device efforts. It is possible to do both.

Statistics

Commits 1642 by 149 developers
Open Bugs 22185
Open Wishes 16084
Bugs Opened 245 in the last 7 days
Bugs Closed 179 in the last 7 days

Commit Summary

Module Commits
/trunk/l10n-kde4
145
 
/tags/KDE
63
 
/trunk/l10n-support
58
 
/branches/stable
53
 
/trunk/www
31
 
/trunk/l10n-kf5
7
 
/akonadi/src
7
 
/plugins/paintops
7
 
/libs/widgets
6
 
/chat/org.kde.ktp-chat
6
 
Files Developer Commits
567
 
Laurent Montel
212
 
261
 
Albert Astals Cid
90
 
111
 
Aleix Pol Gonzalez
39
 
114
 
Aurélien Gâteau
38
 
99
 
Burkhard Lück
33
 
99
 
Chusslove Illich
33
 
90
 
Jesper Pedersen
30
 
87
 
Christophe Giboudeaux
29
 
72
 
Boudewijn Rempt
28
 
78
 
Marco Martin
26
 

Internationalization (i18n) Status

Language Percentage Complete
Ukrainian (uk)
100%
 
Swedish (sv)
99%
 
Brazilian Portuguese (pt_BR)
99%
 
Polish (pl)
99%
 
German (de)
99%
 
French (fr)
97%
 
Dutch (nl)
97%
 
Spanish (es)
96%
 
Bosnian (bs)
93%
 
Italian (it)
91%
 

Bug Killers

Person Bugs Closed
Christoph Feck
28
 
Ralf Habacker
23
 
Laurent Montel
9
 
Marco Martin
7
 
Jekyll Wu
7
 
Frank Reininghaus
5
 
Aleix Pol Gonzalez
5
 
Martin Klapetek
4
 
Myriam Schweingruber
4
 
Vishesh Handa
4
 

Commit Countries

Commit Demographics

Sex

Age

Contents

  Bug Fixes Features Optimization Security Other

Accessibility

     

Development Tools

  []    []

Educational

  []    

Graphics

  []    

KDE Base

[] []    []

KDE-PIM

[] []    []

Office

[] []    

Konqueror

     

Multimedia

[] []    

Networking Tools

[] []    []

User Interface

  []    

Utilities

     

Games

     

Other

     []

There are 41 selections this week

Bug Fixes

KDE Base

Miquel Sabaté committed changes in [kate] /:

vimode: fixed a couple of crashes in replace mode.

REVIEW: 117613

Martin Klapetek committed changes in [plasma-workspace] wallpapers/image/backgroundlistmodel.cpp:

Correct rows calculation for beginInsertRows for wallpapers

This should fix the dialog having an additional black wallpaper

KDE-PIM

Laurent Montel committed changes in [kdepimlibs/KDE/4.13] akonadi/standardactionmanager.cpp:

Start to fix Bug 316097 - copying or moving folder to one of its own subfolders should never be possible

Disable move folder to its subfolder.
Disable copy folder in own folder
Still need to fix recent folder

But for me copy to subfolder must be authorized

Dan Vratil committed changes in [akonadi/1.12] /:

Use per-thread QDBusConnections

This moves DBusConnectionPool from Nepomuk search code to Akonadi and makes
use of it in search infrastructure and couple other classes that interact
with DBus from non-main thread.

QDBusConnection is not thread-safe in Qt 4, so we need to workaround it by
having a connection for each thread. Qt 5 should be OK, so we can remove this
in Frameworks.

This should fix random crashes I've been seeing when SearchTaskManager::addTask()
was called from multiple threads simultaneously.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision a554275...
Christian Mollekopf committed changes in [kdepimlibs] /:

ItemSync: Fix full sync and transaction handling

* Ensure that checkDone doesn't start the next batch while we're still fetching
the items.
This bug was triggered only if setFullSyncItems was called at least twice in streaming
mode (therefore it only appeard on large imap folders where the items
we delivered in two batches, and only during the flag sync which is a full sync).
The first call triggered the ItemFetch, but while that was in progress,
the second call went via process() to checkDone(), which cleared mProcessingBatch
and immediately started a second parallel batch, and a third batch was started
by deliveryDone(). This resulted in the first two batches (20 items), appearing as new
(because the were processed before the local items were fetched), and the already locally
available items getting deleted, because they couldn't be removed from
mUnprocessedLocalIds (since they were processed before entering that list.

We use the job counter to lock, just like everywhere else.

* mTransactionJobs should not be checked in execute(), as it is already checked in
checkDone(), and the check in execute() is only valid when using
MultiTransactionMode.

* Adapted the test to the discovered problems.

* The fetchjobs need to be part of the transaction as well, as they are otherwise
not executed before the transactoin is complete.

REVIEW: 117608

Diffs: 1, 2, 3 Revision d54a1b8...

Office

Thomas Fischer committed changes in [kbibtex/kbibtex/0.5] src/gui/bibtex/bibtexeditor.cpp:

When assembling a list of selected elements, only consider column-0 model indices.
This avoids duplicates in list, as the list of selected model indices spans over all columns.

Multimedia

Jean-Baptiste Mardelle committed changes in [kdenlive] /:

Cleanup and fix crashes in extract frame & DVD Wizard

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 4b585a7...

Networking Tools

David Edmundson committed changes in [ktp-common-internals] /Declarative:

Connect contact signals in chat plasmoid

REVIEW: 117537

Martin Klapetek committed changes in [ktp-common-internals/kde-telepathy-0.8] /:

Add contacts only from valid accounts

Reviewed-by: David Edmundson

FIXED-IN: 0.8.1

Features

Development Tools

Miquel Sabaté committed changes in [ktexteditor] /:

vimode: implemented the ctrl-w and the ctrl-u commands in replace mode.

REVIEW: 117634

Diffs: 1, 2, 3 Revision 06344c0...
Sven Brauch committed changes in [ktexteditor] /:

Keyword-based completion model

REVIEW:115422
Port of ec9a0f7507dbd43

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 4 more) Revision 0903572...
Sven Brauch committed changes in [kdevplatform] /:

A base expression visitor class for dynamically-typed languages.

This is potentially useful for Python, PHP, JS and Ruby.
For documentation on what it does, see the docs in the header file.
It's not a lot of shared functionality, but it is a piece of shared /
suggested architecture which makes it a) easier to write new language
plugins because there is a clear path for solving this problem; and b)
easier to understand other language plugin's architecture, because they
all work similar.

Diffs: 1, 2, 3 Revision 25cdf0a...
Anton Kreuzkamp committed changes in [qmlweb] /:

Educational

Filipe Saraiva committed changes in [cantor] /backends/kalgebra:

Added autorun scripts support to KAlgebra backend

Filipe Saraiva committed changes in [cantor] /backends/sage:

Added SagePackagingExtension::importPackage to Sage backend

Diffs: 1, 2, 3 Revision e40b226...
Alexander Semke committed changes in [labplot] src/kdefrontend/dockwidgets/XYEquationCurveDock.cpp:

Improved completion handling in XYEquationCurveDock.

Graphics

Jesper Pedersen committed changes in [kphotoalbum/wip/android] /:

allow different size for thumbnails and category items.
Plus improve layout

KDE Base

Vishesh Handa committed changes in [baloo/frameworks] /runner:

Improve the Baloo search runner

Add category support in the results

Marco Martin committed changes in [plasma-framework] /:

make possible for containments to run as applets

take into account the slightly different behaviour needed when containments such as folderview act as a normal plasmoid

Trevor Blight committed changes in [kate] /:

improve pascal indenting for comments

new comment line follows previous comment line
line up stars in multiline comments
correct initial values of document variables
keep relative indent only when first char has positive indent
close '}' comment lines up with open '{' comment
tests updated

pascal.js

Diffs: 1, 2, 3 Revision 27f2de6...
Aleix Pol Gonzalez committed changes in [kdbusaddons] src/kdbusservice.cpp:

Expose the all slots on KDBusService-enabled applications

Makes it possible to use kquitapp again. So far quit wasn't being exposed
because QCoreApplication::quit is not a scriptable slot, but a regular
slot.

REVIEW: 117565

Vishesh Handa committed changes in [baloo/KDE/4.13] /file/kcm:

KCM: Do not only show the folder name in the exclude folders

We now show the full path relative to the $HOME folder or the mount
point.

REVIEW: 117420

KDE-PIM

Laurent Montel committed changes in [kdepim] /:

Start to implement contact info widget

Diffs: 1, 2, 3 Revision f29eb8c...
Jan Kundrát committed changes in [trojita] /:

Introducing a common implementation for bridging the password plugins with the UI

Diffs: 1, 2, 3 Revision 6bc6bf9...

Office

Lassi Nieminen committed changes in [calligra] filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h:

Ooxml filter drawingML: support for opacity in gradients

Multimedia

Vishesh Handa committed changes in [libtmdbqt] /:

Add basic tv show support

Added - TvDb, TvDbList and TvSearchJob

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 76a0321...

Networking Tools

Martin Klapetek committed changes in [ktp-text-ui] /styles/WoshiChat.AdiumMessageStyle:

Import WoshiChat theme

This is based on the works of Seth Chisamore, originally
found at https://github.com/schisamo/hipchat-adium-message-style

We modified couple things to fit more to our needs, but 98% of the work
stays original to Seth.

Thank you Seth for your work!

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 7 more) Revision 30a8a07...
Albert Vaca Cintora committed changes in [kdeconnect-android/feature/export-contac] /main:

Sending SMS works :D

Alexander Reinholdt committed changes in [smb4k] /:

Implemented notifications correctly. Part of the rewrite is the
transformation of the Smb4KNotification class into a namespace.
Since now the notifications can be edited via system settings, there
is no need for the "Show notifications" setting anymore that was
removed accordingly.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 9 more) Revision ef61c2f...
Leon Handreke committed changes in [ktp-text-ui] /:

Overlay presence icon with phone as tab icon if user is on mobile

REVIEW: 117554
Reviewed-By: David Edmundson

Leon Handreke committed changes in [ktp-text-ui] app/invite-contact-dialog.cpp:

Allow inviting multiple people at once into a group chat

REVIEW: 117567

User Interface

Marco Martin committed changes in [kdeclarative] /qmlcontrols/draganddrop:

new property: preventStealing

this, consistent with MouseArea::preventStealing, will make sure
that a droparea with it will take the exclusive of all dropevents,
all its parents (all up the hyerarchy to top) won't take any
as long as this is managing

Other

Development Tools

Sven Brauch committed changes in [kdevplatform] /:

Move Python's List and Map types upstream.

They are useful for at least Ruby and JS too, and if PHP wanted to
use them, they would work there too.

Diffs: 1, 2, 3, 4 Revision ea23efa...

KDE Base

Aleix Pol Gonzalez committed changes in [plasma-workspace] /:

React to containment status changes

At the moment the Panel didn't have any code to react status changes from
the containment (and therefore its applets).

This patch aims to add this, only problem being that it doesn't work. The
"unhide requested" and "unhiding" messages are being displayed though.

I've been looking for the code that does the actual display of the
auto-hiding panels and I wasn't able to find it, help is welcome.

REVIEW: 117563

Nicolás Alvarez committed changes in [kwallet] /:

Rewrite FindLibGcrypt.cmake to not use gcrypt-config.

Using the gcrypt-config shell script won't work on Windows.
I wrote a new find module from scratch. It now searches for the
library and include directory the usual CMake way (find_library and
find_path). It still supports version checking by extracting the
version number from the gcrypt.h header.

REVIEW:117652

Diffs: 1, 2, 3 Revision 7035a9f...
Marco Martin committed changes in [plasma-workspace] /:

a first rough porting of lockout applet

Diffs: 1, 2, 3, 4 Revision 7109e01...
Martin Gräßlin committed changes in [kwin] /:

[effects] Get xcb_connection_t* and rootWindow through EffectsHandler API

So far the effects could just use the connection() and rootWindow()
provided by kwinglobals. Thus an internal detail from KWin core is
accessed directly.

To be more consistent with the rest of the API it's wrapped through the
EffectsHandler and with a convenient method in Effect.

The connection() is provided as xcbConnection() to free the very generic
name connection which could create confusion once we provide a wayland
connection to the Effects.

The rootWindow() is provided as x11RootWindow() to indicate that it is
for the X11 world.

REVIEW: 117597

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 8 more) Revision 4230a0d...

KDE-PIM

Christian Mollekopf committed changes in [kdepim-runtime] resources/imap/imapresource.cpp:

IMAP-Resource: Set an appropriate status if we're not connected to the server.

This is not an error state, but it's still good to know what's going on.

Kevin Ottens committed changes in [zanshin] /:

Add spec for the data source listing

Let's try our first ATDD cycle. I start from the spec first, and just
add the necessary empty shells to get it to run. Now will make TDD
cycles to get to the point where the spec passes.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision 4d1c330...

Networking Tools

Leon Handreke committed changes in [ktp-accounts-kcm] src/avatar-button.cpp:

Use smooth image scaling for avatar change button

This makes the avatar icon not look like garbage.

Approved-by: Daniel Cohen

Other

Alex Merry committed changes in [extra-cmake-modules] /:

Remove ECMDBusAddActivationService module

ecm_dbus_add_activation_service() requires suffient knowledge of its
internals to use that replacing two lines with one seems silly.

In order to use it you have to know it behaves like configure_file()
(because you have to construct the file yourself), except that it also
installs it somewhere (for which you have to make sure
DBUS_SERVICES_INSTALL_DIR is defined before you use it, which is
certainly not a given for non-KDE projects). By this point, why not just
use configure_file() and install()? The DBUS_SERVICES_INSTALL_DIR
provided by KDEInstallDirs is all the magic you actually need, and if
that's explicit in the CMakeLists.txt file, it's a lot more obvious that
you should have it defined somewhere.

REVIEW: 117581