=============
telepathy-qt
=============

This is a library for Qt-based Telepathy clients.

Telepathy is a D-Bus framework for unifying real time communication,
including instant messaging, voice calls and video calls. It abstracts
differences between protocols to provide a unified interface for
applications. See the Telepathy website for more information:

  http://telepathy.freedesktop.org/

Telepathy specification
=======================

The copy of the Telepathy specification in the spec/ directory indicates
the specification that this library claims to implement. The HTML documentation for the latest version of the specification can be viewed at:

  http://telepathy.freedesktop.org/spec/

Requirements
============

Building telepathy-qt requires:
  Qt, QtDBus, QtNetwork and QtXml (QtGui and QtWidgets are required for some examples) <http://www.qt-project.org/>

  GNU make <http://www.gnu.org/software/make/>
  pkg-config <http://ftp.gnome.org/pub/GNOME/sources/pkg-config/>
  libxslt, xsltproc <http://xmlsoft.org/XSLT/>
  Python <http://www.python.org/>

For the full set of regression tests to run, you'll also need:
  telepathy-glib <http://telepathy.freedesktop.org/releases/telepathy-glib/>

For building the Farsight convenience library, you'll need:
  telepathy-glib <http://telepathy.freedesktop.org/releases/telepathy-glib/>
  telepathy-farsight <http://telepathy.freedesktop.org/releases/telepathy-farsight/>
  GStreamer <http://gstreamer.freedesktop.org/>

and to build the Farstream convenience library, you'll need:
  telepathy-glib <http://telepathy.freedesktop.org/releases/telepathy-glib/>
  telepathy-farstream <http://telepathy.freedesktop.org/releases/telepathy-farstream/>
  farstream <http://freedesktop.org/software/farstream/releases/>
  GStreamer <http://gstreamer.freedesktop.org/>

See CMakeLists.txt for full details, including versions required.
Of the packages listed above, only Qt libraries are required at runtime.

Building also requires the cmake build system.

Qt 5 alpha release contains some build issues that should be addressed in order to build
telepathy-qt against it:

  - When running 'configure' in Qt 5 alpha, the pkg-config files are properly generated, but when
    'make' is executed, these files are replaced with empty ones. So, to build telepathy-qt against
    it one must either backup the pkg-config files generated during the 'configure' phase before
    running 'make' and replace them afterwards, or re-run 'configure' with the same parameters
    after building it.

  - If Qt 5 alpha is built with -reduce-relocations enabled, one must add the keyword
    "reduce_relocations" to qtbase/lib/pkgconfig/QtCore.pc in the qt_config section, so that
    telepathy-qt knows when to use -fPIC/PIE at linking stage accordingly.

Both issues were reported and should be fixed when beta is out.

Bugs, feature requests and to-do list
=====================================

Report all bugs, feature requests and "to-do" items here:
  <https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy&component=tp-qt>

Running "make check" will produce FIXME.out, which lists all the mentions of
FIXME, TODO or XXX in the source code. Ideally, all of these should be in
Bugzilla, but sometimes they're not.

API stability policy
====================

We use an "odd/even" versioning scheme where the minor version (the y in
x.y.z) determines stability - stable branches have y even, development
branches have y odd.

In a stable (even) branch, we will not make incompatible API or ABI changes
between one release tarball and the next.

In a development (odd) branch, if we make incompatible ABI changes
between one release tarball and the next, we will change the SONAME of the
library; we will attempt to avoid incompatible API or ABI changes.

Unreleased builds straight from git identify themselves as version
"x.y.z.1". We DO NOT make any API guarantees about unreleased builds:
any binary relying on new functionality from an unreleased build is not
guaranteed to work with any subsequent release or unreleased build, and on
platforms with versioned symbols (mainly Linux) it definitely won't work with
subsequent releases (you'll have to at least relink the binary).
We do not increment SONAMEs on the basis of unreleased changes.

Unreleased builds are compiled with -Werror, so they might stop working
if your gcc version issues more warnings than ours. If this is a problem
for you, use a release tarball.

Contact info
============

This library is maintained by the Telepathy project:
  <http://telepathy.freedesktop.org/>
  <mailto:telepathy@lists.freedesktop.org>
  <irc://irc.freenode.net/telepathy>

Telepathy development is supported by Collabora Ltd.
  <http://www.collabora.co.uk/>.

Hacking
=======

See HACKING for version control, coding style and patch submission information.
