Using Akonadi to manage Google calendars with KDE's Kontact (or KOrganizer)
KOrganizer was built for a long time with the ability to use iCal and vCal data. In recent years, however, http://www.google.com/calendar has become a very popular calendaring tool. Integrating Google Calendar with KDE's native calendaring application has been, unfortunately, hit and miss.
Read-only access has always been pretty straightforward. You just load a remote ICal file. This technique has been documented on a few sites including http://win.ua.ac.be/~nschloe/content/korganizer-google-calendar.
Google Calendar supports CalDAV and there have been some people who have documented how to take advantage of this to do read-write with Google Calendar from Kontact/KOrganizer by entering Google Calendar as KDE DAV groupware resource. This is documented http://jpwhiting.blogspot.com/2011/04/kontact-with-google-calendar.html.
Probably the most documented strategy is using a Java daemon called http://gcaldaemon.sourceforge.net/. The project's website states that the daemon "offers two-way synchronization between Google Calendar and various iCalendar compatible calendar applications."
I tried unsuccessfully to get GCalDaemon to work a couple of times and gave up. Many people have gotten it to work, however. http://www.yeap.de/blog2.0/archives/206-Accessing-Google-Calendar-from-KOrganizer.html is one of many that documents how it is done.
Recently, the KDEPIM project added a component called http://community.kde.org/KDE_PIM/Akonadi which is an "extensible cross-desktop storage service for PIM data and meta data providing concurrent read, write, and query access."
Basically, it is a modular system that allows KDEPIM applications (like Kontact and KOrganizer) to read from and write to various data sources, local and online. Like Google Calendar? You bet!
On Fedora, all you need to do to talk to Google Calendar with Akonadi is to install a few packages:
# yum install akonadi-google-calendar
Then restart the
$ akonadictl restart
Then, after restarting Kontact/KOrganizer, you can add a new calendar and
"Google Calendars" as the type of calendar you want to add. Provide your
Google credentials, choose the calendar you want to manage inside
Kontact/KOrganizer, and let 'er rip!