Skip to main content

the avatar of Klaas Freitag

ownCloud Client 1.0.1

This week we prepared another ownCloud sync client (oCC) release for you. oCC is released together with csync 0.50.5, the underlying library on which shoulders oCC stands. Find packages for your distribution.

ownCloud LogoOnly a couple of weeks after the first release we could come up with a quite long changelog, larger than for a maintainance release.

First and foremost, oCC now supports SSL connections and does not store passwords any more, well, in clear text in a config file. Still there is no strong encryption for the password in (as that’s a non trivial if not impossible thing) but its not clear text any more, so accidents should not longer happen. For those who really care and put security over convenience there now is the option to not store the password at all but provide it at startup. The whole password storage will get more attention soon, I did some work on that already, also using kwallet, more on that in another post.

The whole start process of oCC, which is more complex as it might seem as libcsync expects a nice environment with a verified connection to the ownCloud, was cleaned and matured. I had to learn about QNAM but now we seem to be friends.

Efforts also went into the following areas:

  • Error handling: People got confused about error messages from oCC which were not accurate here and than. I added more fine granular error reporting to libcsync so that oCC now can give even more helpful error messages.
  • MacOSX: On the sprint weekend in Stuttgart, we made good progress on that platform, will also soon get a release. Domme got the most out of cmake to get dmg image building going, thanks, you rock!
  • Qt 4.6: As usual one has to learn that current distributions ship not so current Qt versions. Thanks to Thomas, he put quite some effort in porting back to Qt 4.6 - so that Debians friends can also use oCC now.
  • Packages: Check out the community repo on OBS: We now can provide packages for way more platforms including Ubuntu and Debian. Still your help would be appreciated in maintaining.

Speaking about the recent sprint in Stuttgart: It was great to be there, ownCloud has an open, friendly and welcoming community in which you really feel the spirit of working on something new and interesting with cool potential. I really enjoy being here,. Thanks guys for all your work and feedback :-)

a silhouette of a person's head and shoulders, used as a default avatar
a silhouette of a person's head and shoulders, used as a default avatar

Accepted to GSoC 2012

I got selected for GSoC 2012 to work with OpenSUSE. I will be mentored by Michal Hrusecky and my project involves developing a Karma plugin for OpenSUSE Connect.

This Plugin will reward people with Karma points on reporting bugs, making bug fixes, Wiki entries, posts on OpenSUSE planet, promoting OpenSUSE events on twitter etc. People will also be rewarded with badges on attainment of specific levels of Karma points, and they can also send across positive Karma to others, to show appreciation towards their work.

Have a look at my proposal:http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/priyankam/18002#

This summer will be a great experience with GSoC and OpenSUSE.


a silhouette of a person's head and shoulders, used as a default avatar

Google Summer of Code 2012 - accepted projects for LibreOffice

Google announced today the accepted students for Google Summer of Code 2011.

The students working on LibreOffice will be:

Student Title Mentor
Andrzej Hunt Smartphone remote control for LibreOffice Impress Muthu Subramanian
ArturoPL Tooling - More and better tests Michael Stahl
Brennan Vincent Implementing a Microsoft Publisher import filter for LibreOffice Valek Filippov
Daniel Bankston Calc Performance Improvements Kohei Yoshida
Daniel Korostil Lightproof improvements László Németh
Gökcen Eraslan Signed PDF export Stephan Bergmann
iainb Java GUI for Libre-Office Based Android App(s) Tor Lillqvist
Marco Cecchetti Enhanced Impress svg export filter Thorsten Behrens
Matúš Kukan Telepathy for collaboration Eike Rathke (erAck)
Rafael New templates picking UI Cédric Bosdonnat

Let the summer start immediately and let quality code fall like a spring rain!

a silhouette of a person's head and shoulders, used as a default avatar

Select element in system tray (Windows 7) using WDTP


There was a question from my colleague, how do I select an element from system tray icon in Windows 7 using windtp. I came up with the following code:

from ldtp import *
s=getobjectsize('pane0', 'btnNotificationChevron')
generatemouseevent(s[0] + s[2]/2, s[1] + s[3]/2, 'b1c')
wait(2)
s1=getobjectsize('paneNotificationOverflow', 'btnMcAffee*')
generatemouseevent(s1[0] + s1[2]/2, s1[1] + s1[3]/2, 'b3c')
wait(2)
getobjectlist('mnuContext')
selectmenuitem('mnuContext', 'mnuVirusScanConsole')

He asked me how do get to identify these objects, when I use UI Automation Verify, I could not identify the object as the icon in sys tray disappears after I select something in the tool.

I explained him this what I did to find the object in a python prompt:

First used getojbectlist('pane0') to verify whether its the bottom panel and noticed 'Start' button was part of the output.
Tried clicking all the objects one by one in the tray icon to see which one has all the hidden app icons and found 'Notification Chevron' button.
He asked me why do you use s[0] + s[2] / 2 ... I explained as: to click on the center of the widget, get the object size (x, y, width, height) then do x + width / 2, y + height / 2 and get the center point on the object and do left click (b1c).
Once the app icons popup do right click on the object, which pops up the menu.
Next question from him was, how did you found 'mnuContext' as the window name ?
I did getwindowlist() before right clicking the object and after that as well, with that I found one additional window name in the list which is 'mnuContext'.

Now you are all set for selecting the element from sys tray icon.

a silhouette of a person's head and shoulders, used as a default avatar

VMWare Open Sources Windows Version Of Linux Desktop Testing Project

Today Diksha Gupta of EFY have published an article about Windows GUI automation tool.

Summary from the article:
Linux Desktop Testing Project is a black box (GUI) testing library written in Python. LDTP works based on GNOME accessibility stack, so applications that are accessibility enabled can be automated. Currently GTK, Java Swing, Mozilla XUL, LibreOffice UNO, QT >= 4.8 are supported on Linux. Any GUI application running in Linux, Solaris, FreeBSD with the previous requirement can be automated. With recent addition of WinLDTP, tests in Windows environment can also be automated. This library has been tested with Windows XP SP3, Windows 7 SP1, Windows 8 beta. If the same application exists on both the platforms, with our experience automating VMware Workstation product, we have reused 95 per cent of test automation code across both the platforms, which is a huge win for the QA team. Just develop in one platform and make the minimal required changes to run on other platform and your tests are ready!
Thanks Diksha :-)

a silhouette of a person's head and shoulders, used as a default avatar

Announce: Windows version of LDTP - GUI test automation tool


I'm excited to announce Windows version of Linux Desktop Testing Porject (WinLDTP) !!!

Special thanks:
VMware Inc permitting me to open source my work
VMware Desktop Engineering QE team to test it extensively
David Connet for creating the WinLDTP installer

Existing LDTP API's are compatible with WinLDTP, if there is any mismatch then we have to fix it ;-)

About LDTP:

Linux Desktop Testing Project is aimed at producing high quality test automation framework (using GNOME / Python) and cutting-edge tools that can be used to test Linux Desktop and improve it. It uses the Accessibility libraries to poke through the application's user interface. We strive to help in building a quality desktop.

Download source

Download binary (Windows XP / Windows 7)
System requirement: .NET 3.5, refer README.txt after installation

Documentation references:

For detailed information on LDTP framework and latest updates visit

For information on various APIs in LDTP including those added for this release can be got from

Report bugs

To subscribe to LDTP mailing lists

IRC Channel - #ldtp on irc.freenode.net

a silhouette of a person's head and shoulders, used as a default avatar

slatternly typing

I just invented a new term to go along with loose typing and strict typing: slatternly typing.

You heard it here first, unless you heard it somewhere else before.
a silhouette of a person's head and shoulders, used as a default avatar

CLI to upload image to openstack cloud

I work on automatic testing of one of our products that creates other projects.
And because there is a lot of clouds everywhere I want to use them too. We
have internally an OpenStack cloud (still Diablo release). So I need to solve
automatic uploading of images built in the Build Service. Below I describe my working version.

At first, for other cloud related tasks we are using the nova command (which
e.g. has also image-delete, but not add). For uploading we use
glance. I found a few obstacles which I separately describe and also provide
a solution.

Authentication

The first chalenge is authentication, as glance doesn`t use NOVA_*
environment variables. But it allows to use an authentication token. So we
just need to get such a token. With help of Martin Vidner we have this script,
that returns a valid token.

# cloud_auth_token.sh
OS_AUTH_URL="http://cloud.example.com:5000/v2.0"
OS_TENANT_NAME=$NOVA_USERNAME
OS_USERNAME=$NOVA_USERNAME
OS_PASSWORD=$NOVA_API_KEY
AUTH_JSON="{\"auth\":{\"passwordCredentials\":{\"username\": \"$OS_USERNAME\", \"password\":\"$OS_PASSWORD\"}, \"tenantName\":\"$OS_TENANT_NAME\"}}"
curl -s \
    -d "$AUTH_JSON" -H "Content-type: application/json" \
    $OS_AUTH_URL/tokens \
    | python -c "import sys; import json; tok = json.loads(sys.stdin.read()); print tok['access']['token']['id'];"

What does it do? It calls OpenStack Identity API, passes credentials encoded
as JSON. The response is also JSON, so we use python that is already on the
system to parse the response and get the token.

Compressing the Image

The next challenge is compression of the image. We get a raw disk from the
build service and we extend it to have more than 15GB (we mirror there rpms
so we need this space). For resizing we use qemu-img from
virt-utils. If we simply upload this image it means that we send the whole
15GB over the network. Which is fine for one-time tasks, but for regular
testing it is a problem. Thanks to Christoph Thiel we solved it with the
conversion to qcow2. Qcow2 is also supported in OpenStack and qcow2 allows
compression. The final script for conversion:

qemu-img convert -c -f raw -O qcow2 img.raw img.qcow2
qemu-img resize img.qcow2 +10G

Using it Together

Now we have prepared an image and a helper script to get a cloud auth
token. So let’s upload the image.

cat img.qcow2 | glance -H cloud.example.com -A `sh cloud_auth_token.sh` add name='testing_img' is_public=False disk_format=qcow2 container_format=bare

Cleaning Up After Testing

We use it for testing and release new versions of the testing appliance often,
therefore we need cleaning up. It is quite simple with unix text utils:

for i in `nova image-list | grep "image_name" | sed "s/^|[[:space:]]\+\([[:xdigit:]-]\+\).*$/\1/"`; do nova image-delete $i; done

I hope that it helps you with automatic uploading of images to
OpenStack. It works for me with the Diablo release and there is no guarantee that it is the best way 🙂

a silhouette of a person's head and shoulders, used as a default avatar

KDE vs. Gnome

For geeks like us, it can be hard not to get caught up in the over-enthusiasm and fanboyism of our favorite technologies. One of the biggest, and perhaps oldest in the GNU/Linux world is the contest between KDE and Gnome. Now, back in the long long ago KDE reigned supreme having the lion's share of usership. Then along came KDE 4, and people ran screaming to Gnome. Now, Gnome 3 has arrived and many people have ran screaming to KDE. This can tell us a couple of things, the most obvious being that no desktop environment is perfect. Secondly, as so many of us have moved from our beloved old to something different and perhaps not beloved, we have had to come to terms with the idea that ultimately what we once thought solid fact was really just a matter of taste.

Since I started using Linux I preferred KDE. I started with KDE 4.0, which was bloody rough... but I saw the potential and the beauty and stood in awe. Now with the KDE that shipped in 12.1, I ran screaming. Now, I knew fully well that KDE is a constantly evolving beast and I was okay with that. I found it was stable enough to meet my needs and expectations. For me though, I ran into so many bugs that I had to use something else if I wanted to stay sane and productive. Not to say that KDE (I believe the version that shipped in openSUSE 12.1 was 4.7) has gotten worse, but it isn't unusual for me to run into an awful lot of bugs that are rare for other people. Indeed, the reports from friends and on forums was that our KDE was incredible and stable. It seems God thinks I should be a QA tester.

Right now, I use Gnome 2 and 3 on my two systems. When I upgraded my 11.4 netbook to 12.1, it was a bad experience with KDE. I wound up rolling back my system to 11.4. Now, I saw some serious improvements in some areas that I would certainly miss, (especially since performance improvements are very noticeable on a netbook) so when I rolled back, I decided to use Gnome. I figured also, that I needed to get reacquainted with Gnome anyway in order to be able to help others who use it instead of KDE. Also, it had an odd power regression so I wanted the older kernel from 11.4 to address that issue.

Recently I acquired another laptop. I bought it off a friend who had a messed up Windows installation, and hadn't used it in a long time. Part of why I bought it was to have a machine I could be more risky with, to experiment more with. The other reason is that it had a 64-bit AMD processor and an ATI Radeon GPU. These are all unfamiliar territory, so this was a good chance to become acquainted with AMD, ATI, and the 64 bit openSUSE. Frankly, I didn't want to go so risky since the hardware is beefier than my netbook so I opted to use Gnome 3 instead of the KDE that had been so problematic for me before.

I was a bit reticent about using Gnome 3. I had tried the preview of it in openSUSE 11.4, and found it comfortable enough to use on my netbook. In fact, it was very comfortable on my netbook. The final clencher on it, and the explanation for my reluctance was its trouble with resuming the desktop environment after suspending the system to RAM. Since I had rolled the netbook back I got pretty cozy with the Gnome way of doing things, and figured Gnome 3 was worth another chance. I'm not going to go too much into that since I have done so in another blog posting. Suffice to say, I was pleasantly surprised... though not entirely without some frustration.

So, KDE vs. Gnome; who will win? Its irrelevant, in my opinion. Each has their respective strengths and weaknesses. If you want configurability, you go with KDE. If you want your DE to get out of your way, you use Gnome 3. Honestly, I'm personally torn between them. I love the amazing configurability and the power and flexibility of the KDE environment and its application ecosystem. On the other hand, I love the clean interfaces and ease of use of Gnome. Quite frankly though, the configurability of KDE means that I can easily recreate the Gnome 2 or 3 experience with it. So, in essence once I feel my issues have been mostly addressed in KDE then I will go back. But not without having learned a lot, and picking up many fresh ideas from the world of Gnome.

A small note. Since I have clients that I do conversions and maintenance from Windows to openSUSE, I put them on Gnome. Gnome tends to be a bit more predictable and solid, as well as slightly lighter on system resources. Though the default KDE interface looks a lot like Windows, some of its rough edges spook users and cause me to use more time in maintenance. Plus its complexity in the options it gives the user can be very intimidating and confusing to someone coming fresh from Windows.