Re: [Fresco-devel] Some questions

Nick Lewycky <[email protected]> Sat, 12 Apr 2003 19:12:07 -0400
Newsgroups gmane.comp.video.fresco.devel
Message-ID <[email protected]>
If you hadn't told us you were new to Linux, I wouldn't have guessed. 
Your question boils down to, "what is the state of X on Linux today, and 
what is the future and how is Fresco involved?" so I'll organize my 
answer that way.

X11 is responsible for handing the back end, drivers, mouse cursor, that 
sort of thing. A window manager is an X client that is responsible for 
decorating the windows. Some window managers also take clicks on the 
windowless areas, to provide desktop menus. A desktop environment is 
simply a group of programs that all agree to look similar, based on some 
style guide as an agreement (and usually some underlying libraries, such 
as toolkits which provide text entry boxes, buttons and the other 
standard UI elements.)

In Fresco, a client requests the window not directly from the display 
server, but from the DesktopKit, which is the Fresco incarnation of X11 
window managers. Similarly for standard UI elements, the clients are 
expected to ask the WidgetKit to provide them, instead of a client-side 
library. This means that clients have no idea what "desktop environment" 
they belong to, since they are decoupled form the implementation of the 
Kits.

3D acceleration is a touchy issue. At the moment, there is no 3D 
acceleration in Linux without X11, except for a gross hack called fbdri. 
That said, if you run Fresco on top of X, you can use 3D acceleration today.

OpenGL backend support isn't the end of the story. "OpenGL" only 
specifies the state machine responsible for rasterizing 3D elements. 
There exists a whole other piece called GLX for X11 or WGL for Windows 
or PGL for OS/2, AGL for Macs ... and possibly more. These 
specifications dictate how client programs ask the windowing system for 
an OpenGL Rendering Context (remember that OpenGL is a C API, so we 
can't simply return a CORBA/C++ object) and provide the interface for 
important functions such as flipping the front and back buffers. Without 
a comparable FrescoGL interface, we're nowhere.

You mention drop shadows, which are nice eye candy and fit rather nicely 
in Fresco, even though we can't actually draw them yet. A drop shadow is 
a gradient from black to transparent, but we don't support gradients. In 
theory, though, it would be simple for the DesktopKit to put the 
appropriate decorations on the window when creating it. Fresco does 
support alpha channel transparency quite well, so there's no 
architectural issue in implementing it.

One of the goals of the Fresco project is to provide a framework for 
user interface experimentation. This means at least two things, one good 
one bad. The bad news is that most of the tools and know-how for working 
in a Fresco-like system don't exist yet. You can't make a "theme" for 
Fresco with The GIMP, since we are a vector graphics system and 
bitmapped themes are useless to us. The good news is that while it may 
take us a while before something useful coalesces, we endeavour to 
produce a system that is different, better and perhaps some day, the best.

Nick Lewycky