General Graphics Interface Project (GGI) LG #54

Rate this post

Olinux: Please, introduce yourself and our workgroup.

Steffen Seeger: I am working with the General Graphics Interface Project (GGI). The GGI Project is developing a suite of libraries, that should allow applications to output graphics using a common Application Programming Interface no matter what the actual underlying mechanism (target) is. For instance, you can run GGI applications directing output to an X window, but also run the same application fullscreen using output to SVGAlib, frame buffer devices etc. I am mainly working on design and implementation of the Kernel Graphics Interface (KGI), a part of GGI. KGI should provide the neccessary Operating System services to allow several applications to share the graphics hardware safely.

Olinux: Where did you graduate and live?

Steffen Seeger: I received my Diplom in Phyiscs from the Chemnitz University of Technology and live in Chemnitz.

Olinux: What is GGI?

Steffen Seeger: A general graphics interface. Strictly speaking it is a set of libraries that allow you to write programs that can do graphics output on any so-called target. A target is a generalized output device that is capable of doing graphics output. This way you may for instance run the same program in an X11 window, fullscreen using SVGAlib or fullscreen using fbdev. Also, there are so-called wrappers which translate other application programming interfaces into GGI, so that you may – for instance – run SVGAlib programs on any target GGI supports.

Olinux: When and how did it start?

Steffen Seeger: The first ideas were developed in 1995, at that time known as scrdrv, then it grew bigger and became what is known as the GGI project.

Olinux: Was it a group?

Steffen Seeger: Yes, it is. I can hardly image both GGI and KGI become what they are now without the input from all the people that contributed to this effort.

Olinux: Were you unsatisfied or willing to innovate?

Steffen Seeger: Both. In 1995 I got my first computer capable of running Linux. I had trouble getting XFree86 running. It crashed from time to time, preferably when I switched between X and virtual consoles or started a SVGAlib application. Mostly this action resulted in hard-locking the machine so I could only reset and reboot. I tried to understand why this happened, and found several implementation details that — if done different — would have prevented the troubles I had. So I looked around for projects that had similar concepts and came about an early version of scrdrv, and got involved. However, I had no idea how difficult this effort would be.

Olinux: What are the most important innovations and future in all GGI projects?

Steffen Seeger: As far as I know the ability to run the same application in any environment, from a simple terminal window to a full screen video wall is unique to GGI. As far as the kernel part is concerned, I think we could claim to have done some important steps towards a flexible console system the first time. There have been a lot of controverse discussions about the approach we have taken, but the latest developments of the console subsystem show that these approaches were at least not as wrong as believed by some people.

Olinux: What were the main ideas ands plans involved?

Steffen Seeger: Originally, the basic idea to overcome the troubles mentioned was to have one an only one driver responsible for coordinating access to the hardware by different applications. Considering the traditional UNIX operating system design, the most natural place of this driver would be as a part of the kernel. However, this implies that one should not prescribe any drawing operations or hardware models specific to a particular API, but rather provide a ‘virtual graphics card’ that should have most or all capabilties of the real hardware. We soon realized that this in turn makes it neccessary to have some library that does convert the actual drawing routines into ‘hardware commands’, which is pretty much independent of the kernel part. This way libGGI and KGI became the two main components we are working on.

Olinux: How the project is divided?

Steffen Seeger: For the reasons mentioned above, development may be divided into the following parts, though all might be seen as an integrated effort:

  • development of a set of very flexible graphics libraries, mainly libGGI and it’s target drivers;
  • development of wrappers to allow other applications to run on targets supported by libGGI, e.g the SVGAlib and ggiMesa libraries
  • development of a X server (XGGI) that uses libGGI directly
  • development of KGI, the kernel graphics interface to allow libGGI to take full advantage of the hardware present.

Olinux: Does it involve universities or any other gnu/linux organizations?

Steffen Seeger: Except for the fact that some developers are students, and that the universities implicitly provide infrastructure to do development, there is no active involvement in terms of research projects etc. There is no GNU/Linux organization involved.

Olinux: How is GGI integrated with GNU/Linux community?

Steffen Seeger: As much as the community likes it. All enhancements to existing GNU/Linux programs we have done are available to the community, but we will not force anybody to use it.

Olinux: Are there any sponsors helping and funding the project?

Steffen Seeger: The Freiberger Linux Users Group, 3Dlabs Incorporated and AEON Technologies donated development hardware, but beside that there is no sponsoring or funding of the project except by the developers themselves. As much as we would a preciate it sometimes.

Lire aussi...  Back Page LG #32

Olinux: How many people are involved?

Steffen Seeger: All in all probably 10-20 active developers.

Olinux: How far the project has gone? Steffen Seeger: libGGI is pretty much useable already. Currently my main effort is to get the next generation of KGI delivered so that we can work on a improved version of XGGI.

Olinux: What can be done to improve the project?

Steffen Seeger: There are lots of things that could be done, mainly active developers are welcome. But we also need a new webmaster, documentation writers, etc. I think KGI could most benefit from porting it to another hardware platform, e.g. PowerPC or Alpha. Unfortunately an Alpha based system is beyond my budget.

Olinux: Are there any weakness that still disturbs you?

Steffen Seeger: Speaking of KGI, it has advanced quite a lot, but there are still some deficiencies I would like to fix, mainly it needs to have specification and documentation, and further improved backward compatiblity.

Olinux: Are there any part of it already available for use?

Steffen Seeger: Yes. LibGGI is useable already. As far as KGI is concerned, the KGI console subsystem is quite useable already, though there are still some known bugs, so this part of KGI could be labeled being in beta testing state. The KGI drivers, however, are still alpha or early development.

Olinux: What are the main objectives for this year?

Steffen Seeger: Yes. LibGGI is useable already. As far as KGI is conce rnedTo deliver the new KGI and get an accelerated X server running on top of it.

Olinux: Are there any deadlines for GGI apps releases?

Steffen Seeger: Yes. LibGGI is useable already. As far as KGI is conce rnedToGGI applications are outside the main GGI development (except XGGI). As for KGI or GGI, we will announce when new versions become available.

Olinux: How GGI project is related with Berlin?

Steffen Seeger: Berlin is a windowing environment, while GGI is a drawing kit. Berlin may use GGI to draw it’s windows and GGI may provide its drawing to Berlin. Just as GGI provides its drawing to XGGI. Some GGI developers are also involved in Berlin.

Olinux: Are GGI applications compatible with X or svgalib?

Steffen Seeger: Sure. You are able running GGI applications using the SVGAlib target and you can run SVGAlib applications on GGI using the SVGAlib wrapper.

Olinux: How Linux graphical interface has evaluate since it began? How will GGI help Linux interface improvement?

Steffen Seeger: GGI is primarily about a stable and fast graphics output, which is one thing required for a good user interface. There are much more areas where current user interfaces need to be improved.

Olinux: What about hand devices: GGI will ever be used in this kind of technology?

Steffen Seeger: GGI already has been used on the Itsy, a little hand-held computer using the StrongARM processor. Whenever there is a need for graphical output, without the overhead involved with running a full featured X server, GGI can help to ease development.

Olinux: Pick the most interesting and promise new technology for the future in your opinion.

Steffen Seeger: Optical information processing and storage.

Olinux: What are the web sites that you like most?

Steffen Seeger: I prefer well-structured sites with interesting content. I do not have that much time to surf the web, and I do not have particular sites I would prefer.

Olinux: Do you have any other idea that will pursue in future?

Steffen Seeger: There are quite some ideas I want to try, but first I want to finish my part on KGI such that it can stand on it’s own.

Olinux: What else do you imagine to create or project o be involved with?

Steffen Seeger: Animation tools, creation of tools for film production and special effects…

Olinux: Are there any special personalities or organizations that you admire. Who is he/she?

Steffen Seeger: People who have the braveness to think their own thoughts. Organisations that remain open to input from outside.

Olinux: Send a message for developers dedicated to FS/OS around the world?

Steffen Seeger: If you intend to write free software, write it to solve a problem, not to please a particular person or organization. Write it such that others can re-use your work easily, you can’t know everything.

Abstract::: Steffen Seeger is leading GGI projects to develop « a suite of libraries, that should allow applications to output graphics using a common Application Programming Interface. » He explains what are the other related projects as KGI (kernel Graphic Interface), XGGI (Xserver for GGI) and libGGI (its graphic library).

Copyright © 2000, Fernando Ribeiro Corrêa
Published in Issue 54 of Linux Gazette, June 2000