Where does the name come from ?
Wikipedia says of Quantum entanglement

Quantum entanglement is a property of a quantum mechanical state of a system of two or more objects in which the quantum states of the constituting objects are linked together so that one object can no longer be adequately described without full mention of its counterpart

Entangle is an application that links together a computer and camera to form a photographic system in which each part can no longer be adequately described without full mention of its counterpart.

Why was this application created?
During a presentation with a local photography club, the speaker was using tethered shooting during practical demonstrations to quickly display shots on a projector screen. This seemed like quite a useful thing to be able to do, but while many Linux apps use libgphoto for accessing/downloading images from a camera, at the time, none exposed its remote shooting and configuration capabilities. This was a gap in the open source application suite just crying out to be filled. More recently Darktable has also gained the ability todo tethered shooting.

What cameras are supported?
The recommended cameras to use with Entangle are Nikon or Canon DSLRs, since they offer the broadest level of functionality and are the mostly widely tested with libgphoto2. More generally though it is hoped that any camera supporting remote capture in libgphoto2 will work with Entangle.
What license is the code under?
The code is all made available under the terms of the GNU GPL v3+

What does the build process depend on?
At the time of writing the build dependancies are:

Library Min version License
libgphoto 2.4.11 LGPLv2+
glib 2.26.0 LGPLv2+
gtk 3.0.0 LGPLv2+
dbus-glib 0.60 AFL or GPLv2+
gobject-introspection 0.9.3 GPLv2+, LGPLv2+, MIT
lcms 1.18 MIT
gdk-pixbuf 2.12.0 LGPLv2+
libpeas 0.5.5 LGPLv2+
gexiv2 0.2.2 LGPLv2+
gudev 145 LGPLv2+

Unless otherwise stated, these dependencies are all currently mandatory. It may be possible to build with earlier versions by relaxing the version number checks in the configure.ac script. The current versions were picked conservatively based on what’s been tested to work

Where can I get the source code?
If you are a end user then you probably want to download a official released source archive on the download page. If you are a developer wanting to contribute, then goto the master GIT repository

How do I build libgphoto2 and entangle from scratch?
We strongly recommend installing the OS distributors own pre-built packages. Compilation from scratch is much more error prone, but for those who are feeling adventurous there are some instructions on compiling from scratch

How to I install the build requirements?
Each distro gives packages a slightly different set of names. To build from official release packages, on Fedora use:

# yum install gcc glib2-devel \
    libgphoto2-devel libgexiv2-devel libgudev1-devel libpeas-devel lcms-devel \
    gtk3-devel gobject-introspection-devel dbus-glib-devel

On Ubuntu/Debian use:

# apt-get install gcc libglib2.0-dev libgdk-pixbuf2.0-dev \
    libgphoto2-2-dev libgexiv2-dev libgudev-1.0-dev libpeas-dev liblcms1-dev \
    libgtk-3-dev libgirepository1.0-dev libdbus-glib-1-dev \
    libffi-dev gobject-introspection

If building from GIT some extra packages are required. On Fedora also use

# yum install git automake autoconf libtool intltool gtk-doc

On Ubuntu/Debian use:

# apt-get install git automake autoconf libtool intltool gtk-doc-tools
How do I build from source?
If you got a released source archive, then follow the normal autotools build process

./configure --prefix=$HOME/usr
make
make install

If you are building straight from the GIT repository, then instead of configure, use autogen.sh which will ensure all the autoconf/automake files are re-generated correctly

./autogen.sh --prefix=$HOME/usr
make
make install
How do I contribute to development?
Read about the TODO items, checkout known bugs and get hold of the source code. Patches are welcomed via email, preferably sent using git-send-email.

What’s this I hear about plugins?
The Entangle codebase is designed to be friendly to development of plugins, with a strict split between the application object model and the graphical user interface. In cases where a 3rd party library is used, that library’s APIs are first mapped to GObject derived classes. The recently added GObject introspection capabilities can thus be leveraged to expose the entire application backend to scripting languages. It is planned to use this to provide a python plugin system for extending the application