/deltachat-core

Create your own, email-compatible messenger.

Primary LanguageCGNU General Public License v3.0GPL-3.0

Delta Chat Core Library

You can use the Delta Chat Core Library to build your own messenger or plugin that is completely compatible with the existing email infrastructure.

Logo

Using this library in your app, you get the ease of well-known messengers with the reach of email. Moreover, you're independent from other companies or services as your data is not relayed through Delta Chat, only your email provider. That means that there are no Delta Chat servers, only clients made compatible via Delta Chat Core.

The library is used eg. in the Delta Chat Android Frontend and in the Delta Chat iOS Frontend, but can also be used for completely different messenger projects.

Some features at a glance:

  • Secure with automatic end-to-end-encryption, supporting the new Autocrypt standard
  • Fast by the use of Push-IMAP
  • Read receipts
  • Largest userbase - recipients not using Delta Chat can be reached as well
  • Compatible - not only to itself
  • Elegant and simple user interface
  • Distributed system
  • No Spam - only messages of known users are shown by default
  • Reliable - safe for professional use
  • Trustworthy - can even be used for business messages
  • Libre software and standards-based

API Documentation

The C-API is documented at https://deltachat.github.io/api/.

Please keep in mind, that your derived work must be released under a GPL-compatible licence. For details, please have a look at the LICENSE file accompanying the source code.

Build

Delta Chat Core can be built as a library using the meson build system. It depends on a number of external libraries, most of which are detected using pkg-config. Usually this just works automatically, provided the depending libraries are installed correctly.

By default a few stripped-down versions of these libraries are bundled with Delta Chat Core and these will be used. They are marked as optional in the list below. It is possible to use system-provided versions of these libraries using a configure option to meson.

Otherwise installing all of these using your system libraries is the easiest route. Please note that you may need "development" packages installed for these to work.

  • LibEtPan; optional A stripped-down version of this library is vendored and used by default. Use the system-etpan=true option to use a system-provided version instead. Note that this does not use pkg-config so the system-provided version will be looked up by using libetpan-config which must be in the PATH. Version 1.8 or newer is required.

  • OpenSSL

  • SQLite

  • zlib

  • libsasl

  • bzip2

To build you need to have meson (at least version 0.36.0) and ninja installed as well.

On Linux (e.g. Debian Stretch) you can install all these using:

sudo apt install libetpan-dev libssl-dev libsqlite3-dev libsasl2-dev libbz2-dev zlib1g-dev meson ninja-build.

Once all dependencies are installed, creating a build is as follows, starting from the project's root directory:

mkdir builddir
cd builddir
meson
# Optionally configure some other parameters
# run `meson configure` to see the options, e.g.
#    meson configure -Dsystem-etpan=true
ninja
sudo ninja install
sudo ldconfig

The install keeps a log of which files were installed. Uninstalling is thus also supported:

sudo ninja uninstall

Note that the above assumes /usr/local/lib is configured somewhere in /etc/ld.so.conf or /etc/ld.so.conf.d/*, which is fairly standard. It is possible your system uses /usr/local/lib/x86_64-linux-gnu which should be auto-detected and just work as well.

License

Licensed under the GPLv3, see LICENSE file for details.

Copyright © 2017, 2018 Delta Chat contributors