Documentation

Build instructions

First, check that you satisfy all the dependencies to compile SFLphone.

Depending the version you downloaded, you will have to compile the external libraries or not.

The external libraries are in the libs directory, excepting the stund and utilspp directories, which are integrated in the daemon build system. But for instance, if you fetched the head of our git repository, you will have to compile the pjsip library first. So:

Go to libs/pjproject-1.0, then:

./configure && make dep && make clean && make
sudo make install

Check the INSTALL notes for further information.

Once this is done, we are going to compile the daemon. Go to the root of the repository and:

./autogen.sh --prefix=/usr --with-debug
make && sudo make install

Then we are going to compile the GTK+ client. So go to sflphone-gtk directory and, again, the same routine:

./autogen.sh --prefix=/usr --with-debug
make && sudo make install

Be sure to configure the daemon and the client in the same directory ( /usr in this example ).

Development branches

There are several development branches in the Git repository. Here are a brief description of each. We were used to work on the stable_release branch and not anymore at all on the master branch, and over time they diverged too significantly to merge them. Moreover, as I already isolated the video work and the contact/presence stuff, the code on the master branch is not very useful; So the master branch contains now the latest development and replaces the stable_release branch.

origin/master

The main development branch. On this branch, you will find the latest stable code. The release packages are build from this branch. The development parts are generally made on annexe branches and the code is merged into the master when this one is done and tested.

origin/contactslist

The contact and presence code has been separated from the video code; This is the work of Guillaume Carmel-Archambault. It implements a persistant contact list based on XML and the possibility to monitor your contacts and check their status (online, on the phone, offline, etc...).

origin/eeepc

Here is a compatible version for the Xandros distribution on the Asus eeepc. The main problem is the GTK widgets compatibility like GtkToolTip or GtkStatusIcon because an old version of GTK is provided by Xandros. This version has been successfully compiled on the eeepc. But some work needs to be done on the audio side. The latest revision of this branch has been merged into the stable one.

origin/freebox

We needed to get compatible with the SIP expiration value the Free server is asking for. The latest revision of this branch has been merged into the stable one.

origin/history_addons

This branch contains all the development done on the call history, included the search bar tool. The latest revision of this branch has been merged into the stable one.

origin/voicemail

We are currently developing an Asterisk module for SFLphone to visually manage the voicemails. Read More ...

origin/pulseaudio

This is the development branch for the native PulseAudio interface. As it is the default sound server in the latest Linux distribution, we felt it was very important to be able to use SFLphone through PA. The next release will provide the user the choice between ALSA and PulseAudio. For instance, one of the great possibility PulseAudio provides is, on an incoming call, to mute the other audio applications.

origin/python-client

Soon available. A python client for sflphoned is being developed. It uses the DBus interfaces.

origin/video

All the video code.

Developer documentation

upcoming

Modules

No module here have been merged into the main trunk yet.

Voicemail

Check here Florian Desportes's work on the voicemail module.

Video call

Here is the work of the Polytechnic School on the video layer.

Contact/presence management

no info yet

Test

To test and use SFLphone, you need to have a SIP or IAX2 account. Here is a list of potential providers :

Feel free to contact us and complete this list if you have had a good experience with other providers.

Register on one of those sites and use your account information during the SFLPhone wizard.

How To git

A very quick tutorial on how to switch branches with Git

When you clone the git repository, you get every branches. By default, you are on the master branch. You can list branches with:

git branch -all

The star indicates the branch you are working on. The branch names beginning with origin/ indicates the remote branches. The other ones are the local branches. To checkout a remote branch, for instance the pulseaudio branch:

git checkout origin/pulseaudio -b <local_branch_name>

The -b option will create a local branch named local_branch_name pointing on the pulseaudio remote branch. If you already created a local branch pointing on this specific remote branch, you only need that line:

git checkout <local_branch_name>
  • config file example

You may need to edit your git config file (.git/config) to specified multiple branches behaviour. Here is an example of a config file which deal with several branches of the Git repository:

[remote "origin"]
        url = git+ssh://sflphone_org@sflphone.org/git/sflphone.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        push = refs/heads/master:refs/heads/master
        push = refs/heads/stable:refs/heads/emilou_release
        push = refs/heads/search_bar:refs/heads/release
        push = refs/heads/history_addons:refs/heads/history_addons
        push = refs/heads/pulseaudio:refs/heads/pulseaudio
        push = refs/heads/eeepc:refs/heads/eeepc
        push = refs/heads/freebox:refs/heads/freebox

[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "history_addons"]
        remote = origin
        merge = refs/heads/history_addons
[branch "eeepc"]
        remote = origin
        merge = refs/heads/eeepc
[branch "pulseaudio"]
        remote = origin
        merge = refs/heads/pulseaudio

How to build a nice patch

The following lines describes a way to nicely build a development patch with git. First retrieve the package source:

apt-get source --download-only sflphone

Then import the source code in a git repository:

git-import-dsc sflphone*.dsc
cd sflphone

Now make your modifications and commit them locally:

git-commit -a -m "my patch ... "

Then build the patch with the git-diff command:

git-diff <debian_branch_name> -- > mypatch.patch

Note: <debian_branch_name> corresponds to the debian branch name; it is imported by default by git-import-dsc as the debian version number (for instance debian/0.9.2-2ubuntu3). Refer to git-branch to find out the right name of the branch.

Finally, you can either submit the patch through the ticket system or send it by email (sflphoneteam@…).