Archive for March, 2008

Akonadi Meeting – Day 4: The Big Stress

So yesterday after arriving at the hotel at 3am for the third day in row, and Tobias indicating that he wanted to go for breakfast at 8.30am, I decided that I’m old enough to decide on my own and prefer to do the breakfast at 10am, something that in the spirit of the akonadi meeting is called ‘a more than excellent night of sleep’. When I arrived at the KDAB building we had like another 15 minutes together before Kevin had to leave to the trainstation. So we rushed through the thing we just had to do together: prioritising the TODO list on the wiki and assigning names to the things we absolutely have to do before KDE 4.1.

KDE 4.1 is an important milestone as we can not change the API after that for a while. So we have to make sure everything is in there though we are not quite sure if we can tell up front what we exactly need, for example the resources need some support to do a live search in the resource when akonadi requests that. Anyhow, I ended up with some TODO’s that will certainly test my coding skills to the max. But sometimes you just have to set goals which just do that, what fun is it to constantly do stuff you already know.

Around noon Thomas left – also with a large list of todo’s. I think it is really great to see how he’s focussed on implementing things correctly and making sure the different parts of KMail are separated from each other, which wasn’t the case for a long time. With those different parts we can move stuff around to libraries, which make it easy to share with others. Sharing the KTextEdit based class which is used in KMail with KNode and Mailody makes sense, not only to me, but to everyone who attended the meeting. I think that’s a real good spirit and I enjoy the fact that Mailody has forced kdepim to decouple a lot of things and sharing stuff in public libraries. Till asked me to do a presentation on Akademy about that particular subject. I’ll think about it. I’m not much of a speaker person, I’m more a do things person, but maybe I can show while demo-ing Mailody what has been done in the past years, maybe that’s a good angle.

Tobias and Till worked on the API-changes we have discussed yesterday. I thing we had 96 items left when we left the building. I expect most of them to be fixed in the next couple of days, some of them might even done tomorrow, as some of us are continuing the Akonadi Meeting in the several different trains that bring us home.

Yesterday I found a bug where it was not possible to store into Akonadi two remote identifiers which had the same name, except the capitalisation. As it was a valid use case (they came from my Cyrus mailserver), I fixed that by changing the database scheme slightly. But unfortunately that broke the encoding badly. With help from our mysql expert Volker managed to fix the database and the code the server was using. So although I did not like that I broke it, in the end, it is good that we did find it now and could fix it properly. It also proved the value of good unit tests, we found it easily and could also confirm the fix easily. It was also one of the blockers which prevented me from switching to Mailody4 full time. I just need to implement one or two things and then I’ll switch. Which is crucial if you want to find bugs.

Around 4pm we left the building back to get to the trainstation, of course I had to hurry and then you know stuff will go wrong, right? Right. I went out a few minutes early to get my bag from the hotel, but was stopped by the gate which was closed, just when I wanted to get back the elevator went up, so I assumed the others were coming as well. They indeed did, but it turned out they had no key either. So we had to ask Frank Osterfeld to let us out, which meant another roundtrip for the elevator and loosing precious time. So we walked back to the hotel, I fetched my bag and went to the trainstation. With two minutes to spare I jumped in my train and found my seat. It was pretty crowded, I think everyone wanted to return home after spending the holidays somewhere else. In Amersfoort I had two minutes to switch trains, which worked and in Utrecht I had three minutes to get to the other end of the station for the final train. I just hate being in a hurry.

I had a great weekend, with great people, with great results. This has been awesome. Now I’m going to sleep for a couple of days.

Akonadi meeting – Day 3: The Big API Discussions

Today Thomas finished the delegate for the folder list, so folders with unread messages are painted differently and it makes it possible to add the unread count behind the folder name. It’s not used right now, because the folder view needs to support selecting of the columns, which is not there out of the box. After that some more renamings happened.

Tobias worked on the ’search’ and I heard him cheer a couple of times, so I think he had a basic working implementation. I’ll look at it and see how it works, and activate it in Mailody when possible.

Volker fixed a rather important bug in the transaction code we use for mysql and I found another little bug in the database scheme, a patch is pending review. After that we decided on some organisational issues, we are going to use #akonadi and – though reluctantly – we will start bugzilla from now on. I’ve reported a couple of bugs so Volker doesn’t forget them. I must say bugzilla is in worse shape than I already knew. After entering the summary the wizard starts to use for duplicated, that takes 1 to 2 minutes and after that returns silly results in other products. I wish we could move on to something better.

After lunch Volker, Kevin and Tobias started continuing the API review on the beamer. We already have a new list of changes we want to make, which probably break everything again and again. There was a large discussion about error handling, I did not understand the outcome, but I’ll just watch the commits and ask again after that, as it needs to communicationg with the new Tray application, which I worked on a bit more today. The popups it via KNotify were popping up all over the place. So I replaced it with KPassivePopup which is able to do it on the correct position. I would still prefer KNotify as that can be configured by the user, but I don’t feel like hacking on KNotify right now.

The whole evening was filled with API Discussions, we have made comments in the header files, with the changes we want to make and the next weeks we will implement all those changes. In the meanwhile I pimped the Akonadi KCM, by replacing a boring widget with the widget already available in Akonadi, which even shows the status of the different resources. Now it looks like this in Mailody:

[img_assist|nid=204|title=Akonadi KCM|desc=|link=node|align=center|width=300|height=226]

So, be welcome at #akonadi on freenode if you have questions!

Akonadi meeting – Day 2: The Big Changes

Yesterday evening we continued working on Akonadi and Co. Kevin is working on replacing KLocalSocket with the new QLocalSocket, but that’s not going that good yet. Thomas is working on the collection model/view/delegate (simple language: the folderlist), to allow it to make the unread count of the toplevel visible and available. Frode is cleaning up Mailody resources and the KCM, code style, indentation, consistent placement of the * and & signs, etc, etc.

I made the systemtray a bit more intelligent by watching the dbus to see if Akonadi is started or stopped. When it notices a change the menu items are adjusted and the title of the context menu changes. That title of the context menu costed some headaches, because the kdelibs api did not have a way to do it, so I had to draw my own title above the context menu. Urs Wolfer spotted my commit and immediatly fixed the kdelibs API and improved to layout of the title. That’s awesome. I will change the tray application soon, but I don’t want to force everyone to recompile kdelibs trunk and depend on let kdepim depend on that. I assume not everyone has a build cluster like we have here at KDAB currently.

Tobias made some changes to the API just before we left the building, which broke kdepim and playground. We fixed that in the meanwhile. Yesterday we started at ~9.30 and left around ~2.30, so we managed to invest 6×17=102 hours of time in one day. Say a ‘normal’ person would work on KDE – next to his dayjob – 4 hours a day, that means, we put 25 days of work in one day ;-)

Anyhow today Tobias continued API changes, assisted by Till and Volker. Frode implemented purging of mailboxes for the imap resource and I did some fixes here and there, one change made sure Mailody can be used for reading newsgroups from now on. After the lunch at 15pm (that’s an improvement of 4h compared to yesterday), Thomas gave a small presentation / tutorial about debugging with gdb, I’m sure I’ll use it from now on, instead of a flooding amount of kDebugs. We concluded with a small valgrind demo, so I can check mailody for memleaks soon. After that we walked through Mailody and discussed what we could share between KMail / Mailody and KNode. We’ll soon prioritise that list, so we have some kind of planning for the next couple of releases.

About one thing we doubt a bit, we can now only store nine quintrillion, two hundred and twenty-three quadrillion, three hundred and seventy-two trillion, thirty-six billion, eight hundred and fifty-four million, seven hundred and seventy-five thousand, eight hundred and eight items in Akonadi, and we would like to know if that is sufficient. Say everyone on this world would use the same akonadi database and want to make an addressbook with everyone else in the world in there, would that fit?

Akonadi meeting Day 1: The Big Move.

Yesterday evening we met at KDAB to discuss the agenda for this weekend. We decided that we would try to move the various Akonadi parts to the correct places in subversion for the 4.1 release. And that is exactly what happened this morning, we moved libakonadi – the kde dependend part – to kdepimlibs, the mailody resource moved to the other resources, etc, etc. It all went pretty smoothly although we finished 4 hours later than planned. That only caused us to skip lunch ;-(. Some people who updated during the big shuffle probably had some compile errors, sorry for that.

I also removed the local copy of Akonadi we had in Mailody. That means Mailody now depends on kdepim in KDE’s svn. I expect the distributions to ship the resources in a separate package, so it is not a big problem. The Akonadi Server still has a dependency on KDE (KLocalSocket), as soon as it’s replaced by QLocalSocket, that part will move to kdesupport or somewhere else.

While Volker and Tobias were moving things around, I started working on create a systemtray application for controlling Akonadi from the systemtray. Already it can stop and start the akonadi server and show the satus of the server. Soon it will serve as ‘host’ for displaying errors from the different resources. Now we need sone icons for Akonadi, althought the question mark icon is also triggering attention nicely ;-)

So after we had lunch&dinner at the same time, we started to review the API of Akonadi. Till joined us and soon the discussion was to complex for me to follow 100%. Not a big problem. I guess this review will continue for the next couple of hours, and probably result in some API changes tomorrow. One change will corrupt all current items in Akonadi, it just needs to be done. All this has to be completed before the 4.1 release, as from that moment on, we can not change the API.

Akonadi meeting – Day 0: Getting there

Could’t post it yesterday, but anyway:

For the first time in my life, I’m making a rather large journey in the train. We are just about to cross the non existing border between The Netherlands and Germany, and in a couple of hours I hope to arrive in Berlin. And I’ve also brought down my laptop, I’ve already reached the conclusion that it’s far to heavy if you travel a lot. Need to remember that for the next one.

The train is perfect, the tickets were cheap, so I bought first class tickets. That means I’ve plenty of leg space ( I need that ), and there is a power socket a few centimeters away. This way I can use my laptop the whole trip.

In my previous blog, I already explained a bit what we will be doing in Berlin. It’s a meeting where all the people currently involved in Akonadi will sit around in the KDAB building, give ratings to the coffee machine and praying the elevator wil not get stuck – at least not when you are in there. Besides that we will be working on Akonadi. There is a lot to talk about.

I’m also pleased that Thomas Mcguire will give a presentation about kdevelop/gdb, although not related to Akonadi, it will give me more knowledge in debugging an application, currently I only use gdb for backtraces on known crashes, but it would be good to learn how to walk step-by-step through an application.

To be continued… I wish Aaron was here now, I bet that if he was here, this would be the time a beatiful woman would come and sit in this coupe, open a laptop, start KDE4 and I could have an animated talk with her… Ah dreams…