Jump to content

KDE PIM/Meetings/Akonadi-2010-05: Difference between revisions

From KDE Community Wiki
Vkrause (talk | contribs)
Steveire (talk | contribs)
Blogs / Press: Add dot article
 
(10 intermediate revisions by 3 users not shown)
Line 242: Line 242:
| Akonadi
| Akonadi
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_akonadi.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_akonadi.diff diff]
| Reviewed, changed pending
| DONE
|-
|-
| GpgME++
| GpgME++
Line 250: Line 250:
| KABC
| KABC
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kabc.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kabc.diff diff]
| Reviewed, changes pending
| DONE
|-
|-
| KCal
| KCal
Line 262: Line 262:
| KIMAP
| KIMAP
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kimap.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kimap.diff diff]
| Reviewed, changes DONE
| DONE
|-
|-
| KLDAP
| KLDAP
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kldap.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kldap.diff diff]
| Revert entirely, changes pending
| DONE
|-
|-
| KMime
| KMime
Line 274: Line 274:
| Kontact Interface
| Kontact Interface
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kontactinterface.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kontactinterface.diff diff]
| Reviewed, changes pending
| DONE
|-
|-
| KPimIdentities
| KPimIdentities
Line 282: Line 282:
| KPimTextEdit
| KPimTextEdit
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kpimtextedit.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_kpimtextedit.diff diff]
| Reviewed, changes pending
| DONE
|-
|-
| KPimUtils
| KPimUtils
Line 290: Line 290:
| MailTransport
| MailTransport
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_mailtransport.diff diff]
| [http://officespace.kdab.com/~volker/kdepim-api-review-2010-05/kdepim_mailtransport.diff diff]
| Reviewed, changes pending
| DONE
|-
|-
| kdeui/itemviews
| kdeui/itemviews
Line 376: Line 376:
=== Sunday ===
=== Sunday ===


9:00 Start
9:00 Start, use the opportunity to build everything since nobody is committing yet
 
10:00 Arrival of the slackers


10:00 Setup KMail2 for Thomas
10:30 Setup KMail2 for Thomas


''free slot''
11:00 Hacking


12:30 Lunch  
12:30 Lunch  


''free slot''
14:00 Hacking


Departure
Departure
Line 534: Line 536:


=== Conflict Detection and Resolution ===
=== Conflict Detection and Resolution ===
 
[[File:Conflict_Schema.png]]
[Tobias will fill in this section]
The above image shows the possible conflicts that can appear inside Akonadi:
# The client has changed some data which are transferred via the cache to the resource. If the resource discovers in its ResourceBase::itemChanged() method that the data in the backend has changed, the resource shall download the new version from the backend and present the user a conflict resolution dialog with both items, the one from the user and the one from the backend.
# The client has changed some data and stored it in the cache. Before this change can be forwarded to the resource, the resource pushes data from the backend to the cache. This conflict can be discovered, because the dirty flag has been set when the client has changed the data. In this case, the Akonadi server shall return a special LR (LocalRemote) conflict error, which is catched by the ItemModifyJob, that has been triggered by the client, and will bring up a conflict resolution dialog with both items.
# One client has loaded an item, changed it and wants to save it back, but in the meantime, another client has changed this item. This conflict can be detected by the revision flag of the Akonadi::Item. In this case the Akonadi server shall return a special LL (LocalLocal) conflict error, which is catched by the ItemModifyJob, that has been triggered by the first client, and will bring up a conflict resolution dialog with both items.


=== KResource Deprecation ===
=== KResource Deprecation ===
Line 550: Line 555:
== Blogs / Press ==
== Blogs / Press ==


Please add links to everything referring to this meeting, very helpful for e.V. reporting and dot story writing etc.
* http://thomasmcguire.wordpress.com/2010/05/14/akonadi-meeting-and-the-kde-sc-4-5-release/
* http://www.omat.nl/2010/05/13/akonadi-meeting-here-i-come-mailody-is-dead/
* http://www.omat.nl/2010/05/13/accountwizard/
* http://www.omat.nl/2010/05/15/akonadi-meeting-day-2-hacking-accountwizard-continued/
* http://www.omat.nl/2010/05/16/akonadi-meeting-day-3-productivity-is-amazing/
* http://www.kdedevelopers.org/node/4218
* http://www.kdenews.org/2010/06/03/kde-pim-stabilization-sprint
 
== Quotes ==
 
Almost, but not quite, entirely taken out of context.
 
 
Team discusses the (non-)usefulness of POP3
 
Bertjan: "Some people have a private life."
 
Volker: "I have a private IMAP server!"
 
 
Thomas: "I have lots of STDs."
 
 
Matthew hammers angrily on his laptop
 
Thomas: "Does it work?"
 
 
Teams looks with amazement and shaking heads at the following code:
<code cpp>
        bool readOnly = CollectionUtils::isStructural( collection )
              || ( itemAction && ( !( collection.rights() & Collection::CanCreateItem )
                    || collection.contentMimeTypes().toSet().intersect( mimetypes ).isEmpty() ) )
              || ( collectionAction && ( !( collection.rights() & Collection::CanCreateCollection )
                    || QSet<QString>( mimetypes ).subtract( AgentManager::self()->type( collection.resource() ).mimeTypes().toSet() ).isEmpty()
                    || !collection.contentMimeTypes().contains( Collection::mimeType() ) ) );
 
</code>
Thomas: "It should be const bool readOnly!"
 
 
Matthew: "I'm thinking about just putting in an arbitrary number here and hope it works for everyone."
 
 
Matthew: "Beer?"
 
Tobias: "Pizza?"
 
Thomas: "Cocaine?"
 
Tom: "I didn't see that one coming."
 
 
 
Thomas to Matthew: "How do you like changing column sizes?"
 
Matthew: "It was one of the most frustrating experiences of my life."
 
Thomas: "Ok, we can make it worse."


[[Category:Akonadi]] [[Category:PIM]]
[[Category:Akonadi]] [[Category:PIM]]

Latest revision as of 16:09, 3 June 2010

This page is about the upcoming Akonadi Meeting in May 2010

Date

13th to 16th of May 2010.

Location / Travel Information

Office

Attention: KDAB moved since last time!

KDAB
Tempelhofer Ufer 11
10963 Berlin
Germany
Phone: +49-30-5213254-70

Google Maps

Getting there by public transportation:

  • subway lines U1 or U6 to "Hallesches Tor"
  • subway lines U1 or U7 to "Möckernbrücke"
  • bus line M41 to "Hallesches Tor" (leaves from Berlin Hauptbahnhof)

Getting in:

  • If the big front door is closed, there is a door bell on the right, labeled 'KDAB'.
  • After passing the main gate, there are two options:
    • Take the stairs on the right, go up one floor, take the door on your right and go up one more floor. You'll find a door labeled KDAB in front of your with a door bell on the right (that one might need some more pressure to trigger).
    • Be lazy and go through the second big door right in front of you, turn right and take the entrance to the elevator on your right. KDAB is on the second floor.

Hotel

Hotel Ibis Berlin City Ost
An der Schillingbrucke 2
10243 Berlin
Germany
Phone: (+49)30/257600 
Fax : (+49)30/25760333

Google Maps

Easiest way to reach the hotel is by taking a train to Ostbahnhof (it's just across the street from the station). If your train doesn't stop there, take the S-Bahn from Hauptbahnhof, any east-bound line will do.

From TXL take the bus labeld 'TXL' to Hauptbahnhof or Alexanderplatz and switch to the S-Bahn there, any east-bound train will do.

From SXF take the regional train 'RE7' or 'RB14' towards Berlin to station "Ostbahnhof" (2 stops, about 20 min).

Hotel <-> Office

Two options with public transportation:

  • via Friedrichstraße
    • any westbound S-Bahn from Ostbahnhof to Friedrichstraße (4 stops)
    • U6 southwards (direction Alt-Mariendorf) until Hallesches Tor (4stops)
  • via Warschauer Straße
    • any eastbound S-Bahn from Ostbahnhof to Warschauer Straße (1 stop)
    • U1 westwards (there is only one direction, the station is the terminus for U1) to Hallesches Tor (5 stops)

Or take a taxi, possibly even cheaper when shared with enough people.

Public Transportation

Some general notes on public transportation in Berlin, more relevant this time with hotel and office not in walking distance from each other.

Reginal trains/S-Bahn/U-Bahn/Tram/Bus Tickets

Zones

Everywhere you need to go is covered by the 'AB' zone tickets, with the exception of SXF, for that you need one for the 'ABC' zone.

Buying Tickets

Tickets can be bought at ticket machines which you'll find at every station and the bus stop at TXL. On stations with long-distance connections you might find two types of ticket machines, use the ones labeled 'BVG' in black on a yellow square, not the ones labeled 'DB' or 'Deutsche Bahn'.

Ticket machines always take coins, and sometimes bills and ec cards (no credit cards IIRC).

Prices and Price Optimizations

Single trip costs 2.10€ in 'AB' zone and 2.50€ for 'ABC'. The ticket if valid for a single trip (including changing trains, as long as you go roughly into one direction) for all means of transportation listed above, ie. you don't need two tickets when switching from S-Bahn to U-Bahn for example. Tickets have to be stamped before entering the train once.

There are a number of optimizations though:

  • You can purchase a batch of four tickets at once ("4 Fahrten Karte"), which costs 8€ for 'AB'.
  • If you plan to do more than 2 trips a day, purchase the day ticket instead, 6.10€ for 'AB'.
  • If you do two trips a day with 4 or 5 persons, consider the group day ticket ("Kleingruppenkarte"), which costs 15.90€ for 'AB'.
  • If you only travel for three stops, there is the short trip ticket which costs 1.30€. This might be interesting in combination with the next option.
  • If you are traveling together with a local who has a monthly ticket, one additional person can tag along for free after 20:00 on workdays and during the entire day on weekends and public holidays.
Schedule

Schedule can be checked online (see link below), which makes sense when traveling outside of the normal working hours on weekdays (where trains go every 5 minutes). During weekdays service ends at around 1am. On weekends, public holidays and nights leading up to those trains usually go all night but only every 15 or 20 minutes.

More Information

Local transportation in Berlin

Subway and railway map of Berlin

Taxis

Taxi to TXL costs 20-25€, taxi between office and hotel around 10€. So, if you order a big one this might actually be the cheapest and most comfortable way to travel between office and hotel.

Airports

There are currently two active airports in Berlin: Tegel (TXL) and Schönefeld (SXF). Make sure you know which one to go to, picking the wrong one has only happend to locals so far and you don't want to change that :)

TXL is not connected to any train line, but there is a shuttle bus (called 'TXL') leaving in front of the terminal building towards the city center.

SXF has a station for both regional trains (red 'B' on white square) and a S-Bahn line (white 'S' on green circle).

Berlin airport website (includes airport maps etc.)

Attendees

Please add yourself, your travel details and accommodation needs as well as your preferred date to the following table.

Name Travel Arrival Departure Accommodation needed
Volker Krause none already here not leaving no
Tom Albers Train 12-05-2010 23u30 16-05-2010 16u30 yes, single room.
Bertjan Broeksema none already here not leaving no
Stephen Kelly none already here not leaving no
Thomas McGuire train 12.05, around 3 pm, ICE857 16.05, around 2 pm, ICE556 yes, single room, non smoking
Matthew Leach Flying from Manchester Arriving at Berlin Schoenefeld 12 May 17:10 Departing from Berlin Schoenefeld 17 May 17:35 yes, single room, non smoking
Sascha Peilicke Train from Magdeburg 14.05, around 10:00 14.05, in the evening Not needed
Tobias Koenig Train from Dresden 12.05.2010 16.05.2010 yes, sharing room is ok
Kevin Krammer plane GRZ-VIE-TXL 2010-05-11 19:05 2010-05-17 09:20 yes, single room, non smoking
Sérgio Martins plane from Lisbon 11-05-2010 (17:55 TXL) 16-05-2010 (19:00 TXL) yes, single room, non smoking
Kevin Ottens Plane: TLS->LHR->TXL 11-05-2010 (landing 13:45) 16-05-2010 (takeoff 07:15) yes, single room, non smoking

Topics

Please collect stuff you want to do/discuss here.

  • API review
    • Reviewing new public API, as usual, see table below for the changes that still need to be reviewed
    • Discuss deprecating the KResource API and porting away or identifing the last users of it in PIM
    • Review Maemo's KCal patches
  • KDE PIM 4.5 Release
    • Evaluate the state of KMail and the Kontact suite and decide on release plan
    • identify KMail release blockers
    • identity KOrganizer release blockers
    • Making KDE PIM ready for 4.5 if in a releasable state, or execute a Plan B
  • Project Management
    • Branch strategy during the 4.5 freeze regarding KDE PIM Mobile work
    • Git migration: Status and timeline discussion
  • Look at KMail filtering and evaluate the amount of work needed to integrate teh filtering framework from Szymon. Maybe start a first hacking session for that.
  • IMAP resource
    • Kevin's refactoring plan
    • Unit testing the resource
    • Attachment load on demand
  • Summer of Code/ Season of KDE projects
    • Roadmap/plans of the SyncML GSoC and SOK


  • Mobile specific stuff (can be done during the mobile team pre-meeting)
    • incidenceeditor refactoring plan
    • Porting plan for KOrganizer to its extracted view components
    • Replacement for KDGantt1 based views in KOrganizer
    • Mail composer: how to share even more code with kmail-mobile

API Review

Library Changes since 4.4 Status
Akonadi diff DONE
GpgME++ diff Done by trusting Marc
KABC diff DONE
KCal diff Reviewed, changes pending
KHolidays diff Only moved code
KIMAP diff DONE
KLDAP diff DONE
KMime diff Reviewed, changes pending
Kontact Interface diff DONE
KPimIdentities diff Only comment changes
KPimTextEdit diff DONE
KPimUtils diff Only comment and style changes
MailTransport diff DONE
kdeui/itemviews diff Several new classes, mostly refactored out of KSelectionProxyModel, reviewed, changes pending

Schedule

To be filled...

Thursday

8:30 Incidence editor internals refactoring/redesign discussion

9:30 Start, getting set up, get coffee and fill the schedule

10:10 Report on what happened since Osnabrück 8

10:45 First API review session

13:00 Lunch

14:30 Nepomuk tag widget discussion

14:45 Mailtransport API review

15:30 KCal changes from MeeGo team

17:45 KDE 4.5 release discussion

19:00 Hacking

19:45 Leaving for dinner

20:00 Dinner

22:00 Hacking

Friday

8:00 Breakfast

9:45 Discuss KCal/MeeGo invitation API

11:45 Hacking

12:30 Lunch

13:45 Group Photo

14:00 Make IMAP resource work with Tom's server

16:00 Hacking

19:30 Dinner

22:00 Hacking

01:15 Watch Knut Yrvin Videos

Saturday

9:00 Start

10:00 Forced Akademy Sign-Ups

10:30 Second API review session

13:45 Lunch

15:30 KResource deprecation

15:45 Hacking

16:45 Some more KBiHash bashing ;)

17:00 Hacking

19:00 Branch strategy during 4.5 freeze

19:30 Dinner

22:00 Hacking

Sunday

9:00 Start, use the opportunity to build everything since nobody is committing yet

10:00 Arrival of the slackers

10:30 Setup KMail2 for Thomas

11:00 Hacking

12:30 Lunch

14:00 Hacking

Departure

Meeting Notes

Please fill this section.

KOrganizer Refactoring Plan

Make reusable components out of KOrganizer for reuse in the mobile applications, initial draft based on KOrganizer meeting from April 12th. Current status in square brackets.


Incidence Editor

eventually used in: KOrganizer desktop and mobile, invitation BPF plugin, korgac, summary view, plasmoids

Plan
  • To make it independent from KOrganizer we need at least:
    • split up preferences [done]
    • get rid of interfaces/incidencechangerbase [done]
    • move incidencechanger to kcal_next [done]
  • For mobile we need:
    • new fb view, see below [Bertjan volunteered to investigate that]
    • ui'ify [in progress, Bertjan]
    • get rid of Qt3Support usage [done excpet for fbview]
  • Bonus points for:
    • remove code duplication between eventeditor, todoeditor, journaleditor
New Design

Similar to KCM, consisting of compositable sub-components.

Free/Busy and Timeline view

Write a new freebusy graph widget (libfbview) that can also be used in timelineview

Still unsure which option is best:

  • use and extend KDGantt2
  • write a entirely new view, possible reusing some of the rendering and layouting code from month/agenda view

[Bertjan volunteered to investigate that]

Incidence Viewer

  • eliminate duplication between KOrganizer and akonadi/kcal, necessary since korgac depends on the koeventviewer.

[done]

Views

Plan

Make views independent from KOrganizer

  • kdepim/libeventviews
    • move all non-todoview views here
    • move interfaces/baseview.h here
    • move view kcms here as well
  • kdepim/libtodoviews
    • move todoview here
    • shouldn't need baseview.h
    • anything reusable in/for zanshin here?
  • remove Qt3support
Current State
  • agenda view extracted
    • Qt3Support removal complete
    • Decorations are still disabled
    • KOrganizer still has its own copy
      • to be ported after 4.5 branching
      • Sergio monitors commits and merges them between the two copies if necessary
      • Porting KOrganizer requires porting the multi agenda view away from Q3ScrollArea as well
  • month view
    • Sergio says it's much easier to do
  • timeline view
    • see above, requires a rewrite
  • todo model/view
    • Sergio says it's easy


MeeGo KCal Extensions

  • Created ExtendedCalendar and ExtendedStorage classes.
    • Acceptable, but BIC, evaluate BC way to do this
  • Adding multicalendar support using one ExtendedCalendar object. Not using many Calendar objects as originally.
    • Acceptable, but BIC, evaluate BC way to do this
  • Not needing to load all Incidences into memory, UI can load on demand. New ways of loading from storages.
    • same as above
  • New storage classes, Sqlite, tracker, etc.
    • Acceptable, depends on items above, not build by default
  • Improved performance in sorting. New sorting algorithms.
    • Acceptable immediately, obviously :)
  • Services Plugins. Support for invitations, attachments from different sources.
    • Acceptable. API draft to be developed tomorrow.
  • RecurrenceID support in all Incidence types, not just Todo.
    • Acceptable, but BIC currently. Can be fixed separately from items above. Can be taken into pipeline first.
  • Some bug fixes.
    • Acceptable immediately as well.

Allow parallel installation of KDE KCal and MeeGo KCal as long as they are BIC.

  • Needs different library name (already done)
  • Rename namespace


KCal Refactoring Plan KDE/MeeGo

The initial agreement to be able to maintain a common code base between MeeGo KCal and KDE's KCal is the following:

  • Create a new library initially named libkcalcore. This library will contain:
    • Data Definitions and the code to operate them. (Eg: Incidence and all related subclasses, also alarms).
    • Recurrence Handling.
    • TimeZone handling.
    • Common interface for the Invitation handler plugin (only the interface, the real implementation of the loading and unloading is separated).
  • Improve the API (eg: Use shared pointers instead plain pointers as it is now).
  • Integrate the extendedkcal sorting optimizations.
  • Integrate the extendedkcal bugfixes.

MeeGo will extend the KCalCore with some library that will include all the extensions currently implemented in extendedkcal and the Calendar and Storage classes from the original Kcal.

KDE will only use the kcalcore, because all the other functionality is provided currently by akonadi.

In order to make everything working and iteroperable the Kdecore needs to be available into MeeGo, not like currently in extendedkcal that the classes needed are just copied, and also not like in FreOffice where there is a stripped down version (not compatible with standard KDE apps).

Tom's IMAP Server

Works now!

Problems fixed:

  • NetworkManager reports wrong network state on Debian (allways offline), worked around by disabling network state tracking for now
  • LOGIN auth method bug in KIMAP, fixed.
  • ItemSync terminates too early on local job failures causing the resource to hang, fixed. Needs verification that we caught all cases.

Account Wizard

  • For email use Mozilla ISPDB, at least for the first step
  • Keep it as simple as possible, only ask the user for the bare minimum of options (e.g. email and password)
  • Keep GHNS support for non-email, which is not covered by ISPDB
  • Add a mimetype association for GHNS wizard packages to the accountwizard to allow single-click setups, e.g. in company intranets

Conflict Detection and Resolution

The above image shows the possible conflicts that can appear inside Akonadi:

  1. The client has changed some data which are transferred via the cache to the resource. If the resource discovers in its ResourceBase::itemChanged() method that the data in the backend has changed, the resource shall download the new version from the backend and present the user a conflict resolution dialog with both items, the one from the user and the one from the backend.
  2. The client has changed some data and stored it in the cache. Before this change can be forwarded to the resource, the resource pushes data from the backend to the cache. This conflict can be discovered, because the dirty flag has been set when the client has changed the data. In this case, the Akonadi server shall return a special LR (LocalRemote) conflict error, which is catched by the ItemModifyJob, that has been triggered by the client, and will bring up a conflict resolution dialog with both items.
  3. One client has loaded an item, changed it and wants to save it back, but in the meantime, another client has changed this item. This conflict can be detected by the revision flag of the Akonadi::Item. In this case the Akonadi server shall return a special LL (LocalLocal) conflict error, which is catched by the ItemModifyJob, that has been triggered by the first client, and will bring up a conflict resolution dialog with both items.

KResource Deprecation

  • Thomas will add the necessary conditional deprecation macros to KResources, KABC and KCal
  • Tobias and Kevin will write a techbase page about KABC::StdAddressbook porting
  • Remaining users in kdepim
    • Migration tools (have to stay)
    • Compat resources (have to stay)
    • Blog resource (status unknown)
    • Groupwise resource (Will will port it)
    • Remote resource (only lacks minor feature in Akonadi iCal file resource)

Blogs / Press

Quotes

Almost, but not quite, entirely taken out of context.


Team discusses the (non-)usefulness of POP3

Bertjan: "Some people have a private life."

Volker: "I have a private IMAP server!"


Thomas: "I have lots of STDs."


Matthew hammers angrily on his laptop

Thomas: "Does it work?"


Teams looks with amazement and shaking heads at the following code:

       bool readOnly = CollectionUtils::isStructural( collection )
             || ( itemAction && ( !( collection.rights() & Collection::CanCreateItem )
                   || collection.contentMimeTypes().toSet().intersect( mimetypes ).isEmpty() ) )
             || ( collectionAction && ( !( collection.rights() & Collection::CanCreateCollection )
                   || QSet<QString>( mimetypes ).subtract( AgentManager::self()->type( collection.resource() ).mimeTypes().toSet() ).isEmpty()
                   || !collection.contentMimeTypes().contains( Collection::mimeType() ) ) );

Thomas: "It should be const bool readOnly!"


Matthew: "I'm thinking about just putting in an arbitrary number here and hope it works for everyone."


Matthew: "Beer?"

Tobias: "Pizza?"

Thomas: "Cocaine?"

Tom: "I didn't see that one coming."


Thomas to Matthew: "How do you like changing column sizes?"

Matthew: "It was one of the most frustrating experiences of my life."

Thomas: "Ok, we can make it worse."