Dependencies
============
:Author: core-devs
:Date: 10/2013
:toc:


Lumiera is written for GNU/Linux. We try to make the best out of modern system programming techniques
to reach the best possible performance. Lumiera shall scale with the provided Hardware,
the more RAM and the more/faster CPU's you have the better.
Nevertheless lower end 32bit machines are supported too.

Secondary targets will be other free operating systems which offer a decent Posix API. +
Porting to other more or less similar platforms will be possible, if -- by coincidence -- 
Someone(TM) helps with porting.

Having said that -- for the time being, the core team won't spend much effort on porting.

Platform
--------
We work and test on PC hardware, 32 and 64 bit. It is intended that Lumiera supports
other platforms running run GNU/Linux.
Lumiera expects a 'standard' desktop installation running a Xserver.

Graphics::
  There are no special requirements for the graphic system.
  Hardware acceleration will likely be added later through extensions,
  but will remain strictly optional. (For now we'll watch the evolution
  in that area and might revisit that topic when there are more compelling
  and widely supported solutions available)

Disks::
  No special requirements. Video editing requires decent disk speed though,
  so it is suggested to use a fast/big array of disks configured as raid.

Special Hardware::
  Support for special hardware would be possible, but depends on certain conditions
+
* we need access / donations for the hardware
* specs and APIs must be open.
* someone to do the actual interfacing and support needs to join the team


Languages and Tools
-------------------

* C / C++

 - a C99 / C++98 compatible compiler footnote:[in practice, we build using GCC and
   occasionally we check using Clang]
 - GCC *4.6* or Clang *3.0* should be fine footnote:[basically we try to use just the stock language.
   On rare occasions, we _did_ use some GCC extensions, like `typeof()`, but there are
   workarounds, in case this becomes a problem].
 - std::tr1 extensions for C++ (smart-ptrs, hashtables, function objects)
 - switch to C++11 can be expected in the near future footnote:[due to some
   minor problems, we can't compile in `-std=c++11` mode yet. See the
   link:http://issues.lumiera.org/ticket/924[tracking ticket]. These issues aren't
   fundamental though, we used a modern programming style right from start.]
 
* BOOST (listed below are the Debian package names)
 - libboost-dev (at least *1.48*)
 - libboost-program-options-dev
 - libboost-program-options-dev
 - libboost-filesystem-dev
 - libboost-regex-dev

* Script languages
 - Python (*2.6*) for build scripts
 - bash (some test scripts use bash specific extensions)

Build Tools
~~~~~~~~~~~

* Git
* SCons *2.0* footnote:[we build with SCons >= 2.0 since a long time. Previously the buildsystem used to work with 1.0
  In addition, we use some SCons plug-ins, which are all shipped in-tree (`admin/scons`)]
* pkg-config
* Doxygen

We maintain a link:/documentation/technical/infra/debianDepot.html[Debian/Ubuntu package] (relying on debhelper, CDBS, git-buildpackage)

Libraries
~~~~~~~~~

* BOOST
* link:http://nobug.pipapo.org/[NoBug]
* http://gmerlin.sourceforge.net/gavl.html[GAVL] (for raw media support)
* ALSA: libasound2-dev
* for the GUI: gtkmm-2.4 gdl-1.0 libglibmm-2.4 cairomm-1.0 xv
 - libgtkmm-2.4-dev
 - libcairomm-1.0-dev
 - libglibmm-2.4-dev, requiring glib2.0 and gthread-2.0
 - libxv-dev and X-lib footnote:[for the XV viewer widget `gui/output/xvdisplayer.cpp`]
 - librsvg-2.0 and librsvg2-dev for rendering Icons
 - libgdl-1-dev -- old version of the Gnome Docking Library footnote:[GDL isn't directly related to GNOME any more.
   We contributed to the improvement of this library in the past. These improvements went upstream
   with GDL-2.27. Since we're still using GTK-2, for now we're forced to use a _really ancient version_,
   which isn't available from the official repositories -- you can find the original tarball and several
   Debian/Ubuntu packages in our
   link:http://lumiera.org/debian/pool/experimental/g/gdl/[Lumiera package repository] though.
   Basically we need 2.27 =< GDL =< 2.30]


