Akonadi Google Resource Complete Rewrite

--- layout: post title: 'Akonadi Google Resource: complete rewrite' date: 2011-08-21 00:39:18 +02:00 categories: - Akonadi Google - KDE tags: - Akonadi - Google - KDE - PIM

Hi there,

today I finally pushed a completely new version of the Akonadi Google Resource. Since last update cca 2 months ago I've completely rewritten the resources, moving most of the functionality into libKGoogle . The library now provides access to Google services and can be easily used by any other project. So what's new? A lot of things changed for programmers. I've begun to fulfill my threats about providing a C++/Qt library for accessing Google Services. It's not pure Qt, I'm using some KDE stuff in there, but that will change :)

LibKGoogle now provides API similar to QNetworkAccessManager (KGoogleAccessManager) through which you can send KGoogleRequest and if it works, you'll receive a KGoogleReply. Each Google Service is represented by a KGoogleService subclass, implementing XML and/or JSON parser and serializer and providing informations about fetch/create/update URLs. Each object (contact, event, calendar) is represented by KGoogleObject subclass. For now, Event class is implements KCalCore::Event as well,  the Calendar and Contact classes provide their own implementation of everything. Porting it to KABC/KCalCore is on TODO.

libKGoogle provides unified authentication  framework and stores the tokens in KWallet. For now, you can only use one account per service (means that you can't have two calendars from two different Google accounts), but this is on my TODO as well. The framework is also able to automatically refresh the tokens when they expire, so that should fix the problem with "resources forgeting the authentication".

The API needs some more polishing and I must somehow force myself to write documentation, but the I think the libKGoogle can provide a solid base for any Google-related services.

The library is still in the same git repository with the Resources. I will try to move it to it's own repo when it gets support for more services and the API will really stabilize.

Contacts Resource new Settings DialogContacts Resource new Settings Dialog 2From users' point of view, there is just a very slight change in Contact Resource settings dialog. There are no new features in any resource. Though there are probably many new bugs :F So please try it out and don't be afraid to spam me with any issue, idea, problem, comment, invitations to a beer etc...:)

With libKGoogle I hope more developers will begin to create Google-related applications for Qt and KDE. This library could one day be a good start-point for them.

Plans for future versions:

  • support more contacts and event properties
  • support multiple Google accounts per service
  • changing contact photos
  • tie KGoogleObjects to KCalCore and KABC
  • API cleanup
  • make the libkgoogle optionally KDE-independent (long-term plan)

Akonadi Google Resource, part III

It's been more then two weeks since my last update about progress on Akonadi Google Resource, so here we go. Many bugs in calendar were fixed, resource now supports creating and editing events and Contacts resource can fetch contact photos.

So let's start with the contacts. I've implemented fetching photos from Google Contacts, so now you can see all your contacts smiling at you from your address book. Updating/removing photos is on to-do, but there are more important things to be implemented/fixed first.

Now to calendar resource: you can now finally create and edit events from KOrganizer. I've also fixed some issues with timezones, recurrence and reminders, so it really seems to work pretty good now. What has to be done are timezones in recurrence. I've also implemented removing of events, but there seems to be some hidden problem somewhere, because Akonadi refuses to invoke itemRemoved() signal, thus informing the resource, that event was removed and the resource can't send deletion request to Google Calendar....I hope I'll get to look into this this week. Of course, if you feel you can do something about it, just send patches ;)

Known bugs: except for the broken deleting of events there is a problem with authentication. Google only remembers the last authentication token it has issued, so when you have two Calendar resources for example, Google will accept requests only from the one you added as second. When you re-authenticate the first calendar, Google will forget access token of the second calendar and vice versa. Using KWallet to store the access token would be probably the best way how to share a single token among multiple resources and of course it would increase security a lot, but I need to learn how to do it first :).

And finally, about future of this project...I was in contact with developer of the original Akonadi GData resource (now called Akonadi GCalendar & Contacts resources) and we agreed that it would be nice to have a C++/Qt library for full support of GData API (including other services, not just calendars and contacts). I will be slowly moving all the GData-related code from resources to a separate library. My idea is to provide a pure-Qt library with optional KDE extensions (like conversion to KABC or KCalCore objects), which could be enabled during build-time, so that the library could be KDE-(in)dependent, depending on developers' needs. But this will be content of an another blog post, maybe later when things will begin to move. Now is my priority to improve the resource, because the Akonadi-related code is minimum compared to GData-related code which can be later dragged into the library.

So, that would be all for now, please test the resource and give me some feedback :)



Akonadi Google Resource 0.2


so it's been almost ten days since first version of Akonadi Google Resource and now here comes 0.2. This version introduces Google Calendar Resource, so that you can finally access Google Calendar from comfortable interface of KOrganizer.

UPDATE: Akonadi Google Resource is now in KDE git repository!

Preview of Google Calendar Resource settings dialogAs of now the resource supports read-only access to calendars, so you can just watch your busy schedule, but you still have to update it in GMail. Some basic write support is the main goal for version 0.3.
A good news is, that the resource supports multiple calendars, so you can finally see all your calendars in KOrganizer, not just the default one. You have to add a new resource for each calendar you want to access. In configuration dialog you can then choose, which calendar you want to sync with.
The resource supports, except for the basic properties, multiple attendees, including their roles and types, recurrent events (but without exceptions) and reminders (popup-dialog and email notification).

As I already said, in 0.3 I'd like to introduce read-write access to Google Calendar and add photo-fetching to the Contacts resource.

If you want to give it a try, you can download 0.2 tarball from here, or you get the most recent sources from git:

 git clone git://gitorious.org/akonadi-google/akonadi-google.git


UPDATE: Akonadi Google Resource is now in KDE git repository. To fetch it, use:

git clone git://anongit.kde.org/akonadi-google

Google support in Akonadi, part I

My job as a Red Hat internet is development of Evolution, the groupware software. Although I'm using Gnome 3 and all the Gtk stuff in work, I'm still loyal to KDE on my personal laptop. But one thing I really like on Evolution and I really miss in KDE PIM is proper support for Google services. As result of this and after some talking with my flatmate, I started to work on real, fullfeatured Akonadi Resource for Google Services.

At this moment, after about week of work I have working Contacts Resource. It can fetch, create, update and remove contacts from Google server using their GData API. The implementation of GData protocol is far from complete, as of now only few basic values are supported (name, emails, phones, addresses, notes).

Since this implementation is actually "working", I've decided to release it as 0.1.

Version 0.2 should bring basic support for Google Calendar and most probably some major refactoring of libkgoogle. Following releases will focus on improving support of GData protocol, including fetching of contacts photos.
I have to mention here, that the code is inspired by code of the great Akonadi Facebook Resource, because this is my first Akonadi-related code and I really need something to learn from :)

There are no screenshots worth posting at this moment, you rather try checking out the sources, maybe sending some patches back, what do you say? ;)
Sources are available in Gitorious: http://www.gitorious.org/akonadi-google, clone URL is git://gitorious.org/akonadi-google/akonadi-google.git.

UPDATE: the project is now hosted in KDE Git repo on https://projects.kde.org/projects/playground/pim/akonadi-google.

My Top10 Sci-Fi shows

As maybe not mentioned anywhere in this blog, I'm also a big fan of scifi series. I've been to Festival Fantazie, first in summer 2010, then again in autumn. By that time I've already seen some series, but it really encouraged me to see more. I was talking about publishing my top-scifi chart and to-see list, so finally here it comes.

Seen series

I created the list of following shows, so the best (for me) series are on the top. As time goes, I'll be updating this post, moving series from to-see to this list.

1. Babylon 5

I haven't seen the last two seasons yet, but I can already place Babylon 5 on the second place. First place be it! In many aspects it's better then FarScape, but on the other hand, it lacks the proper kind of humor and universe I was used to from FarScape (I've seen FS just before B5). First I was afraid that I won't like all the talking and politics involved, but actually that's the thing which keeps me at the series. And Sheridan, of course :) There's nothing our brave captain couldn't solve. I'm looking forward to see the last two series in hope, that Ivanova will get more space, becuase I think she's absolutely amazing.

Update 2011-04-25: So I've finished B5 last week. I really missed Ivanova in season 5, but the more happy I was when she appeared in the last episode. The final two parts were really moving and really awesome. B5 is now my #1 show. I'll really miss the guys.

2. FarScape

So, to explain this a little. I knew both Ben Browder and Claudia Black from SG-1, but I was really surprised. Crichton is much better written then Mitchell, and Aeryn is absolutely something different then Vala. First season was somehow boring, it really didn't took me in. But with Scorpius entering the show on full-time I just become to love the series. I've seen seasons 3 and 4 within one month (which is actually quite a short time for me!). The Peacekeeper Wars miniseries were very very good and led to a very good final, but for me, personally, the best final ever has BSG. Also, FarScape has absolutely the best Universe I've seen in scifi series.

3. Doctor Who 2005

Hey, Tennant is my Doctor! When I finally became to like The Ninth Doctor, he just changed and David came in. It took me about two episodes to get used to him and I become to love him soon. He's the best, ever will be. Smith is barely adequate follower for Tennant.

The idea of the entire Doctor is simply brilliant, they couldn't have made it better. There are only two big fails in the Doctor: Moffat and Smith. I don't like Karen either, but at least she's pretty :) Talking about companions, Rose is the best one for me. I don't think that Moffat is a bad writer and Smith bad actor, no. They're both very good, I just don't like their new style of Doctor. Well, let's see how it will change in season 6 this year, otherwise I'll have them all exterminated.

Update: season 6 was...hmm...avarage.

4. BattleStar Gallactica

BSG was my first really-scifi (SG-1 does not count). Second season was absolutely the best, I've seen it in one day, I just couldn't stop. The third season, on the other hand, was the worst - just boring. It was not bad, but it just didn't have the action and speed of the previous season. It is a very very good show, and the final is simply the best I've ever seen (yet). Strong, well done and absolutely unexpected. My favourite characters were admiral Adama, Kara and Chief. Unfortunatelly Kara and Cheif changed a lot and at the end their characters were, at least weird.

5. Firefly

Firefly! It will run for years...well it didn't because of the idiots in Fox, but still, it is a great show. It is very original - western scifi, duh! Nathan is a great actor and made watching the series a great fun for me. And I HAVE to mention Morena too. I've seen her in two or three episodes of V (haven't seen more yet) too and she's still so damned hot!! :) It's quite short, you can see it over night (or three nigths, like me) and it is definetely a must-see. And there's one more reason to see FireFly, and that's Jewel Staite and her smile.

6. Torchwood

I say TORCH, you say WOOD! This Doctor Who spin-off is a great for relaxation. It's very lamer but that's what make it so fraking awesome. I was quite surprised actually that a british thinkg can contain so lot of homosexuality, but it's the best they could've done. Harkness, being all-sexual, giving it with everyone and  everything..duh! Torchwood is so great because it's so lame - simply as that. If you don't have nothing else to do or see, you definetely go for this. I'm just little worried about the fourth season, which was shot in US.

Update: season 4 was cool - Gwen with bazooka? Go Torchwood, go!

7. Stargate SG-1

Stargate is a greate phenomenon, but in total, it's a nonsense. How it comes that everyone in the entire universe speaks English :)? It's very long and I really liked only the first five or so series. Oris could've been a good revival for the series, but unfortunatelly it was cut too soon. SG-1 is important for me in one way: it was the first sci-fi series I really begun to watch. And I don't regret it, because it moved me further, to BSG.

8. Stargate Atlantis

New, fresh and good idea, acutally a spin-off from one of the storylines of SG-1. Torri Higginson is a great leader (and actress of course!), and I really missed her in the fourth and fifth season. It's not the best scifi ever, but it's something worth seeing. But only when you've seen all the other series.

9. Startgate Universe (season 1)

Yet another SG spin-off. The only SG-related thing is the gate, but there it ends. It's not bad - they've met aliens and they have secrets (especially Rush). I've seen few episodes from the second season and it seems to be good, I'll know more when I see all. The first season was very unbalanced I think. There were very very bad episodes, followed by two or three weeks long pause and the came two abso-freakin-lutely awesome episodes.

10. Red Dwarf (I really must see it again)

Red Dwarf is not 10th because I wouldn't consider it a good (good? Awesome!) series, but because it's much more sitcom then sci-fi and because it's a long time I've seen it and I really must find some time to see it again. Jokes and quotes are simply legen-wait for it-dary!!

To see

So here comes the the "to-see" list of scifi series:
  • Star Trek
  • Caprica
  • Stargate Universe, season 2
  • Pioneer One (soon as there will be more episodes)
  • Red Dwarf
  • V

The order is random, just as I recalled the shows. What I can say now is, that I will probably give V second chance when I'm finished with Babylon 5, followed by Caprica and SGU S02.

I hope I didn't forget any series. I will try to return to this as soon as something changes. For now, I think it's quite enough :)

KDE 4.6 beta preview

Based on KDE 4.6 beta 1 release last week, I decidedI to test the latest KDE snapshot 4.5.82 and here are the news I've found in there :) I haven't been using development snapshots I'm creating every week for ArchLinux regularily last few weeks, since I'm mostly on Fedora now, so the changes are now more obvious for me.

First interesting thing I noticed already in KDM. In the list of available desktop environments, there's no longer any "KDE", but it's KDE Plasma Workspace!

The first thing after login I was going to test was the new, aesome and almighty Akonadi. Well - it's cool, I really like that. On the other hand, I think it's quite slow on my 2x1.5GHz laptop. Loading 6k mails takes considerable amount of time after the KMail starts. I hope this will get fixed soon or later (most probably later :).

Next think I checked was KAdressBook. I hoped there will be an Akonadi Resource for something like sync with GMail contacts and calendar, but I haven't find anything, so I will probably have to write something myself :)

Unfortunatelly, Akregator does not store feeds and their content in Akonadi database, which was something I hoped for since I first heard about KDE PIM2 migrating to Akonadi. It's not a great feature, not definetelly usefull for any resource integrations (you really don't need to access your feeds from other apps, unless you are writing something better then Akregator), but I'd like to see all the PIM stuff stored in one DB, which would really simplify backups and improve portability (when you are migrating between more PCs, possibility to simply take with you just one DB file would be a nice feature).

A really great feature, a very appreciated one is the "Grid desktop" (Desktop Settings -> View -> Layout -> Grid Desktop). When you are dragging an applet on you desktop, a grid is displayed allowing you to position the applet and after you drop it, the applet is automatically aligned to grid.

When you move mouse to a screenedge, a bar with + and - buttons appears allowing you to change the density of the grid.

The new grid functionallity is further extended by applets groups. You can create widget which contains tabs. In each tab there is a grid and you can put multiple applets into the grid. Another cool feature, don't you think? I wish there were more usefull applets like this, instead of something like KDE Observatory.

However I still found some issues with this applet, mostly when you try to insert a widget which is bigger then the Group widget, it somehow overflows.

When we are talking about Plasma, I must mention Activities. It's a very cool feature, but it's not used a lot. Probably because they still were unperfect, I personally for example really minded that the activities were all named like Activity #1, Activity #2...now finally you can finally name your activities as you wish and they are more stable.

KDE 4.6 is also a great step toward HAL-less KDE. The PowerDevil has UPower backend now, but it's not yet enabled by default, HAL is still preferred, because it provides more features, but it's possible to already use it for watching battery/AC state and scaling CPU, but some features are slower then with HAL. UDisk was also implemented in 4.5.73 bringing support for mounting devices without HAL.

KDE 4.6 will be another great release in the KDE4 series, I'm happy to see KDE still evolving and moving towards modern and fast desktop environment.

Czech version (not exact translation) can be found on my blog on ABCLinuxu.cz.