/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 to the existing email infrastructure.

Logo

The library is used eg. in the Delta Chat Android Frontend.

Using this library if your app, you get the ease of well-known messengers with the reach of e-mail. Moreover, you're independent from other companies or services - as your data are not related to Delta Chat, you won't even add new dependencies here.

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 - receivers 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
  • fully OpenSource and Standards-based

Build

The Delta Chat Core Library relies on the following external libs:

  • LibEtPan, OpenSSL; for compilation, use eg. the following commands: ./autogen.sh; make; sudo make install prefix=/usr To link against LibEtPan, add libetpan-config --libs in backticks to your project. This should also add the needed OpenSSL libraries.

  • SQLite is available on most systems, however, you will also need the headers, please look for packages as libsqlite3-dev. To link against SQLite, add -lsqlite3 to your project.

Alternatively, use the ready-to-use files from the libs-directory which are suitable for common system. You'll also find a fork of the needed Netpgp library there.

Coding

You're a developer and have an idea for another crazy chat, social or messaging app? We encourage you to take this source code as a base. We love to see many different messengers out there, based on existing, distributed infrastructure. But we hate to see the user's data hidden on some companies servers with undefined backgrounds.

Some hints:

  • Regard the header files in the src-directory as a documentation; mrmailbox.h is a good starting point

  • Headers may cointain headlines as "library-private" - stull following there is not meant to be used by the library user.

  • Two underscores at the end of a function-name may be a hint, that this function does no resource locking.

  • For objects, C-structures are used. If not mentioned otherwise, you can read the members here directly.

  • For get-functions, you have to unref the return value in some way.

  • Strings in function arguments or return values are usually UTF-8 encoded

  • Threads are implemented using POSIX threads (pthread_* functions)

  • For indentation we use tabs. Alignments that are not placed at the beginning of a line should be done with spaces.

  • For padding between funktions, classes etc. we use 2 empty lines

  • Source files are encoded as UTF-8 with Unix-Lineends (a simple LF, 0x0A or \n)

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


Copyright © 2017 Delta Chat contributors