Friday, August 29, 2008

Hackweek 3 Resume

Hackweek is over for me now. I wrote a short summary in my regular blog.

Now with Akonadi

I started to write an Akonadi resource yesterday after dinner and today I have Attica fetching the people data from the Open Collaboration Services API through Akonadi working. This screenshot demonstrates it:



And here is the proof that it actually is Akonadi, the data shown in the Akonadi console:



It was amazingly easy. Writing the resource was a breeze, because it only took kapptemplate generating a template and then following the Akonadi Resource Tutorial step by step. For accessing the data from the UI I mainly took the examples from the Akonadi API Documentation and adapted them slightly to my needs and suddenly everything magically worked. Kudos to the people writing the Akonadi code and documentation. Fantastic job.

Thursday, August 28, 2008

Code landed in SVN

The first code has landed in SVN. It's a small client app which operates the Open Collaboration Services API. You can get user profiles, search for users and show your activity log. Still a long way to go, but it's a nice start. The app has the working title "Attica", after the region of Greece where democracy was born.

Frank and me discussed the API in detail today and came up with a couple of changes. The backend of the app will have to be adapted once these changes are implemented on the server, but it shouldn't be a big deal. I still have to come up with some more abstraction of the REST access, though.

Tuesday, August 26, 2008

First Screenshot

After half a day of coding I'm ready to present my first screenshot:


Community users from www.opendesktop.org live on my desktop.

Research about Social Desktop

There is an interesting research paper about the Social Desktop: ContactMap: Organizing Communication in a Social Desktop. The authors investigate which social information on the desktop would help users to improve communication and other social tasks. They also come up with a prototype which looks pretty interesting.

Users in your neigbourhood

Another use case from Frank's keynote: Users in your neighborhood.

Design Decisions

I took some preliminary design decisions for the implementation of the Open Collaboration Services client library:
  • Separation of transport and content
  • Abstract implementation of transport using kio_http as backend and configurable URI schemes for the REST access
  • Job-based transport API
  • Concrete implementation of content classes providing a C++ native interface to the application. Maybe look into code generation for these classes.
  • Value based API for content. Possibly with implicit sharing.
  • Don't care about caching for now. Look into using Akonadi for that later.
  • Implement an id based relations API on top of the data objects. Maybe Nepomuk can help here.

Monday, August 25, 2008

OpenSocial

OpenSocial is an API created by Google to provide a standard way to embed small apps in social web sites. It specifies a container format for embedding HTML and Javascript in a site and specifies an API how to access the site through Javascript. This way it's easily possible to write small apps which interact with the data about people and their activities which is provided by the site.

With version 0.8 OpenSocial also specifies a REST API to access container servers. This makes it much more interesting as it's not tied into specific web sites, but the data gets accessible much more widely, especially on the desktop. I still have to find a site which actually implements this API, though.

Open Collaboration Services API

On freesektop.org you can find the specification for the Open Collaboration Services API. It provides a REST interface for accessing user and content data. It's already implemented on www.opendesktop.org.

Sunday, August 24, 2008

Hackweek 3

Next week is hackweek time again. It's the third SUSE hackweek, which means we are doing this for more than a year now. Hackweek has created lots of interesting projects and some of the results have significantly improved our distribution.

Last hackweek I was too busy with other interesting stuff, but this time I will fully participate again. The project I plan to work on is the Social Desktop. That's inspired by the keynote Frank Karlitschek gave at Akademy this year. He proposed some ideas how to get the community on the desktop, how desktop applications could be enriched by making use of the data and functionality which is available on community web sites like opendesktop.org.

One example he gave was an about dialog on steroids, which would provide more info about the people behind the applications, and would also give users a way to become a "fan" to visibly be part of the user community of an application.



Another interesting use case Frank presented was integration of online content in the help center. Lots of info about how to use application is in online forums these days and it would be great, if the user would get more direct access to this info by integrating it into the help center.



Frank has already implemented a first version of the API on opendesktop.org, so what we now need is a client implementation on the desktop. This involves questions like how to best access the REST API, how to handle authentication through OpenID, and how to make the information accessible in a useful way for applications to use it. I'm looking forwared to work on findind answers to these questions.