This page is about the upcoming Akonadi Meeting in May 2010
- 1 Date
- 2 Location / Travel Information
- 3 Attendees
- 4 Topics
- 5 API Review
- 6 Schedule
- 7 Meeting Notes
- 7.1 KOrganizer Refactoring Plan
- 7.2 MeeGo KCal Extensions
- 7.3 KCal Refactoring Plan KDE/MeeGo
- 7.4 Tom's IMAP Server
- 7.5 Account Wizard
- 7.6 Conflict Detection and Resolution
- 7.7 KResource Deprecation
- 8 Blogs / Press
- 9 Quotes
13th to 16th of May 2010.
Location / Travel Information
Attention: KDAB moved since last time!
KDAB Tempelhofer Ufer 11 10963 Berlin Germany Phone: +49-30-5213254-70
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)
- 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 Ibis Berlin City Ost An der Schillingbrucke 2 10243 Berlin Germany Phone: (+49)30/257600 Fax : (+49)30/25760333
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.
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
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.
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 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.
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.
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.)
Please add yourself, your travel details and accommodation needs as well as your preferred date to the following table.
|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|
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
|Library||Changes since 4.4||Status|
|GpgME++||diff||Done by trusting Marc|
|KCal||diff||Reviewed, changes pending|
|KHolidays||diff||Only moved code|
|KMime||diff||Reviewed, changes pending|
|KPimIdentities||diff||Only comment changes|
|KPimUtils||diff||Only comment and style changes|
|kdeui/itemviews||diff||Several new classes, mostly refactored out of KSelectionProxyModel, reviewed, changes pending|
To be filled...
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
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:45 Leaving for dinner
9:45 Discuss KCal/MeeGo invitation API
13:45 Group Photo
14:00 Make IMAP resource work with Tom's server
01:15 Watch Knut Yrvin Videos
10:00 Forced Akademy Sign-Ups
10:30 Second API review session
15:30 KResource deprecation
16:45 Some more KBiHash bashing ;)
19:00 Branch strategy during 4.5 freeze
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
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.
eventually used in: KOrganizer desktop and mobile, invitation BPF plugin, korgac, summary view, plasmoids
- 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
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]
- eliminate duplication between KOrganizer and akonadi/kcal, necessary since korgac depends on the koeventviewer.
Make views independent from KOrganizer
- move all non-todoview views here
- move interfaces/baseview.h here
- move view kcms here as well
- move todoview here
- shouldn't need baseview.h
- anything reusable in/for zanshin here?
- remove Qt3support
- 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
- 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.
- 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 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.
- 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
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."
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."