[Kde-pim] PIM Sprint report: Akonadi Next

Aaron J. Seigo aseigo at kde.org
Thu Nov 27 12:46:01 GMT 2014


On Wednesday, November 26, 2014 14.17:41 Milian Wolff wrote:
> One question: Why flatbuffers? I'm not arguing against it, I just would like

As the others mentioned, portability is a required feature. This took 
cap'n'buffer out of the equation, unfortunately.

Even if that wasn't a blocker, we may still have elected for flatbuffers. As 
Christian noted the development seems a bit more active, which is nice. It 
also is used by a number of commercial Qt users out there and feedback is that 
it works very well, so that's one element of risk removed. There are also a 
few technical issues which also weigh in flatbuffer's favor. 

First, sanity checking buffer content is optional. This is great for when we 
are generating buffers from known data internally; we already know the data 
and it will have been sanity checked once already, such as when read from a 
local iCal file or gone through the IMAP protocol handlers. In those cases 
further checking of the buffers is just overhead. Of course, we'll want this 
when reading over the wire or from the key/value store on disk (although in 
theory we could rely on OS level security to ensure nobody can tamper with 
those files and then treat them as trusted .... there is no portable method 
for that which I know of, however.)

Also with flatbuffers fields you skip don't take space. This is nice as we'll 
probably need to pack two flatbuffers in many cases into a single value in the 
key/value store to pick up properties that the resource does not natively 
understand and therefore ignores.

.. but mostly it's the portability thing being a hard blocker.

> Interesting, thanks. Slide 17 has me worried though. How do you intend to
> make this thread/multi-process safe, when you have read/write access from
> the resource and _direct_ read access from the client?

Thread-safe, multi-process safe was a requirement for the key/value store. We 
looked at a large number of such stores and if they didn't provide this, they 
were scratched off the list immediately. So not only can we safely access the 
store from multiple processes, but also multiple threads which is just as 
important for us.

We will be able to access data from the stores in applications (KMail, etc..) 
without blocking the main thread, and we can even multithread certain access 
patterns to speed up delivery (different data sets from the same store, or 
data sets from multiple stores at once; both are common patterns in the PIM 
apps)

Thankfully, this is actually a fairly common pattern in real world problems, 
so several embedded k/v stores provide this precise feature set. Kind of funny 
to think how much the big data and web phenoms are helping us out here :)

> Why? I'm still not convinced. For the calender e.g. create a small library
> that can be used by the Plasma applet and be done with it.

If Plasma developers would be willing to write such a library, I imagine that 
would make the decision rather easier :)

-- 
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20141127/9cc5c25a/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list