Warning, /pim/akonadi/docs/history.md is written in an unsupported language. File is not indexed.

0001 # Historical background # {#history}
0002 
0003 # General #
0004 
0005 During the last 5 years, after the release of KDE 3.0, the requirements of our users
0006 have constantly increased. While it was sufficient that our PIM solution was able to handle 100 contacts,
0007 300 events and maybe 1000 mails in 2001, nowadays users expect the software to be able to
0008 handle a multiple of that. Over the years, the KDE PIM developers tried to catch up with the new
0009 requirements; however, since KDE 3.x had to stay binary compatible, they were limited in their
0010 efforts.
0011 
0012 With the new major release KDE 4.0 it's possible to completely redesign the PIM libraries from
0013 the ground up and use new concepts to face the requirements of 2006 and beyond.
0014 
0015 After some discussion at the annual KDE PIM meeting in Osnabrück in January 2006, the PIM developers
0016 came to the conclusion that a service is needed which acts as a local cache on the user's desktop
0017 and provides search facilities. The name Akonadi comes from a divinity from Ghana and was chosen since
0018 all other nice names were already used by other projects on the Internet ;)
0019 
0020 # Problems with the implementation of KDE 3.x #
0021 
0022 Before digging into the internals of Akonadi, we want to take a look at the implementation of the
0023 old KDE PIM libraries to understand the problems and conceptual shortcomings.
0024 
0025 The main PIM libraries libkabc (contacts) and libkcal (events) where designed at a time when the
0026 address book and calendar were files on the local file system, so there was no reason to think
0027 about access time and mode. The libraries accessed the files synchronously and loaded all data of the
0028 file into memory to be able to perform search queries on the data set. It worked well for local files,
0029 but over time plug-ins for loading data from groupware servers were written, so the synchronous access blocked
0030 applications which used libkabc/libkcal, and loading all 2000 contacts from a server is not only
0031 time consuming but also needs a lot of memory to store them locally. The KDE PIM developers tried to
0032 address the first issue by adding an asynchronous API, but it was not well implemented and was difficult to use.
0033 In the end, the design decisions caused the following problems:
0034 
0035 * Bad Performance
0036 * High Memory Consumption
0037 
0038 Another important but missing thing in the libraries was support for notifications and locking.
0039 The former was partly implemented (at least reflected by the API) but only implemented in the local
0040 file plug-in, so it was in practice unusable. The latter was also partly implemented but never really tested and
0041 lead to deadlocks sometimes, so the following problems appeared as well:
0042 
0043 * Missing Notifications
0044 * Missing Locking
0045 
0046 The main aim of Akonadi is to solve these issues and make use of the goodies which the new design brings.