Environment Options
Environment Options
Some Requirements:
We need as part of this project to define which environment or software stacks we are going to use for our Graphical User Interface(GUI) and access to other hardware such as the operating system that gives access to any file system and access to USB devices.
As an Open Source project we need to make our software available without requiring the user to purchase any products. For this reason it should be based on an open source operating system such as Unix. The question is should it also be cross platform compatible. This is, able to run on any of Unix, Windows or Mac Operating Systems.
I don't believe that this is absolutely necessary from the point of view of the final product but the following advantages occur if we can keep the software cross platform compatible:
- - Allows people to participate in this project who either don't feel comfortable with Unix or are otherwise a devotee to one of the other propriety operating systems.
- - Allows use of sound cards or other hardware modules previous to drivers being available in the Unix world.
For most of the main Open Source stacks we have a Operating System or Desktop Environment such as Xfce, GNOME or KDE. These then use a a specific GUI package such GTK+ or Qt. Within the desktop environment there is normally support for sound cards but newer multimedia applications such as GStreamer have been written under the freedesktop.org. See the Wikipedia description of freedesktop.org.
http://en.wikipedia.org/wiki/Freedesktop.org
This is an umbrella project or set of standards to allow programs to be more independent of the particular Unix used or at least compatible with all of GNOME, KDE and Xfce.
Even without the freedesktop.org standards, most applications written for one of these Unix systems will work under the others but little problems crop up and it is best to keep compatibility with one. The main environments and GUIs are as follows:
Full Environments including a Graphical User Interface (GUI)
GNOME with GTK+
http://www.gnome.org/
http://en.wikipedia.org/wiki/GNOME
<a href="http://www.gtk.org/" title="GTK+ ">GTK+</a>
http://en.wikipedia.org/wiki/GTK%2B
Both GNOME and GTK+ are licensed under LGPL
Xfce with GTK+
http://www.xfce.org/
http://en.wikipedia.org/wiki/Xfce
A lightweight desktop environment.
LXDE/GTK+
http://en.wikipedia.org/wiki/LXDE
Another lightweight desktop environment but as there still isn't fully stable versions of this, I am dismissing this one. Includes both GPL and LGPL components.
KDE with Qt
<a href="http://www.kde.org/" title="KDE GUI package homepage">KDE package</a>
http://en.wikipedia.org/wiki/KDE
http://www.qtsoftware.com/products
http://en.wikipedia.org/wiki/Qt_(toolkit)
Note: Since Jan 2009 Qt have given the option to license under LGPL with vers. 4.5 or later.
Qt is now available to run on Windows, Mac and the S60 mobile phone platform. As well as desktop applications it is well supported for embedded applications such as mobile phones.
JAD
http://wiki.jacklab.net/index.php/JAD_introduction
A complete Linux operating system with options for desktop of either KDE or Enlightenment 17. It comes with a comprehensive collection of free, open source multimedia software for audio visual content creation. It was created primarily for music production and so it comes with a real-time kernel optimised for low-latency recording etc.
All of these all use the LGPL license although some extensions may use another license such as BSD, X11 or MIT license.
Repackage for Mobile Computing:
Repackaging, changes and/or additions to various parts of these software stacks have occurred on a number of packages that were designed as Open Source versions suitable for mobile computing. These include the following:
GNOME Mobile
http://www.gnome.org/mobile/
http://en.wikipedia.org/wiki/GNOME_Mobile_&_Embedded_Initiative
Already includes GStreamer as a central component.
Modlin
http://en.wikipedia.org/wiki/Moblin_Linux
This software package is sponsored by Intel and already includes GTK+ software, GStreamer and ALSA compatibility. This package is also based on GNOME environment.
Hildon
http://en.wikipedia.org/wiki/Hildon
Originally developed by Nokia using the GTK+ GUI. Hildon seems to have the GPL rather than the LGPL license. Hildon is the framework for the Ubuntu Mobile and Embedded Application
http://en.wikipedia.org/wiki/Ubuntu_Mobile_and_Embedded_Edition
It is also the basis for the Maemo Mobile Devices Operating System
http://en.wikipedia.org/wiki/Maemo_(operating_system)
Qt Extended
http://en.wikipedia.org/wiki/Qt_Extended
Extends Qt for Embedded Linux-based mobile computing devices. With Qt Software now being a subsidiary of Nokia, graphics for mobile computing is likely to be well supported.
Standalone GUIs
Rather than specifying a full operating system/environment, we can just specify the GUI or GUI plus libraries. If this GUI is compatible with a number of environments then we can use any one of these environments. As well as using the Qt GUI or GTK+ (both as above) we could base our project on any of the following:
wxWidgets (Previously called wxWindows)
http://en.wikipedia.org/wiki/WxWidgets
A widget toolkit for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes. It covers systems such as Microsoft Windows, Mac OS X, Linux/Unix (X11, Motif, and GTK+), OpenVMS, OS/2 and AmigaOS. A version for embedded systems is under development. Includes a cross-platform API for GTK+.
GDK
http://en.wikipedia.org/wiki/GDK
GDK (GIMP Drawing Kit) is a computer graphics library that acts as a wrapper around the low-level drawing and windowing functions provided by the underlying graphics system. Originally developed on the X Window System for the GIMP image manipulation program, GDK lies between the X server and the GTK+ library, handling basic rendering such as drawing primitives, raster graphics (bitmaps), cursors, fonts, as well as window events and drag-and-drop functionality. Like GTK+, GDK is licensed under the GNU Lesser General Public License (LGPL). GDK is an important part of GTK+'s portability. Since low-level cross-platform functionality is already provided by GLib, all that is needed to make GTK+ run on other platforms is to port GDK to the underlying operating system's graphics layer. Hence, the GDK ports to Win32 and Quartz are what makes GTK+ applications run on Windows and Mac OS X, respectively.
FLTK
http://www.fltk.org/index.php
http://en.wikipedia.org/wiki/FLTK
It has LGPL modified license that gives exceptions for static linking.
FLTK (pronounced "fulltick") is a cross-platform C++ Graphical User Interface (GUI) toolkit for UNIX/Linux, Windows, and MacOS. FLTK is promoted as providing modern GUI functionality without the bloat. Note: As this is only a GUI, using it would mean that we would have to pick one or other operating system/environment but could then pick any. A significant number of audio utilities seem to have gone with FLTK.
Freedesktop.org
http://www.freedesktop.org/wiki/
Freedesktop.org is building a base platform for desktop software on Linux and UNIX. The elements of this platform have become the backend for higher-level application-visible APIs such as Qt and GTK+. The base platform is both software and standards.
Simple Direct Media Layer (SDM)
http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer
This provides a multimedia library and API (includes graphics and sound) which can be used with most Operating Systems.