[1] The intent was to allow for any program using GGI to run on any computing platform supported by it, requiring at most a recompilation.
GGI is free and open-source software, subject to the requirements of the MIT License.
[2] The project was originally started to make switching back and forth between virtual consoles, svgalib, and the X display server subsystems on Linux more reliable.
The goals were: The GGI framework is implemented by a set of portable user-space libraries, with an array of different backends or targets (e.g. Linux framebuffer, X11, Quartz, DirectX), of which the two most fundamental are LibGII (for input-handling) and LibGGI (for graphical output).
Andreas Beck and Steffen Seeger founded The GGI Project in 1994 after some experimental precursors that were called "scrdrv".
[3] Development of scrdrv was motivated by the problems caused by coexisting but not very well cooperating graphics environments (mainly X and SVGAlib) under the Linux operating system at this time which frequently lead to lockups requiring a reboot.
The first scrdrv design was heavily influenced by the graphics subsystem of the DJ DOS extender and some concepts from the SANE project.
The basic problem that scrdrv solved was that it provided a kernel mode driver that knew enough of the video hardware to set up modes, thus allowing to get into a sane state even from a messed-up or crashed graphics application.
EvStack was a pretty much complete redesign of the input and output subsystem that allowed for events (thus the "Ev") to flow through a "Stack" of modules that can be configured to manipulate them.
It worked on FreeBSD, code for OpenBSD, NetBSD and even Microsoft Windows were there as well as some support for more hardware platforms.
It allows to combine user actions with events at run time.
The most user visible change, however, was the support for static linked in targets.
The input handling had been replaced with a reactor event model, which is more flexible than using select() on a file descriptor.
This also simplified the input-drivers in general, particularly for those who don't use file descriptors such as input-quartz.
libggi had merged some targets into one sublib, multi with tile and mono text with palemu.