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 todo, but while many Linux apps use libgphoto for accessing/downloading images from a camera, none exposed its remote shooting and configuration capabilities. This was a gap in the open source application suite just crying out to be filled.

NB, since starting the project, it was discovered that gphoto SVN has an app called gtkam that does in fact allow ue of gphoto's tethered shooting capabilities. The interface for that application is focused around camera file management, with shooting hidden away in a popup menu. The GVFS gphoto plugin already provides integration with nautilus and the wider ghome stack, so there is no compelling reason to duplicate file management capabilities in a standalone application. Thus Entangle focuses exclusively on providing an effective interface for tethered shooting.

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 Optional
libgphoto 2.4.7 LGPLv2+  
glib 2.10.0 LGPLv2+  
gtk 2.12.0 LGPLv2+  
libglade 2.6.0 LGPLv2+  
gconf 2.12.0 LGPLv2+  
HAL 0.5.0 AFL or GPLv2+  
dbus-glib 0.60 AFL or GPLv2+  
gobject-introspection 0.6.2 GPLv2+, LGPLv2+, MIT Y
lcms 1.18 MIT  
startup-notification 0.5 X11, LGPLv2+  
unique 1.0.0 LGPLv2+  

Unless otherwise stated, these dependancies 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 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 javascript 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 in combination with either Seed or Gjs to provide a javascript plugin system for extending the application