To whom it may concern;

I would like to propose an idea to get libGGI included in all major Linux
distributions.
One way to do this, is to take a heavily graphical program that almost always
gets installed
automatically when you install a distribution, and port it to use libGGI.
Ofcourse it should not only made to use libGGI, but you should also make sure it
runs a lot
faster, fix some bugs, etc. to make the original author happy, to be sure (s)he
will include your
patches. This would ofcourse create a dependency so that anyone using that
program now
should also install libGGI to use it.

The candidate program I'm proposing to alter is xscreensaver (or xlock). This is
by its nature
a fullscreen program.
I've looked into it's structure, and it works by loading 'hacks' which are the
individual screen
drawing programs, loaded from a master program. The template by which the
'hacks' are
programmed are very easy, even I could produce a 'hack'. I've rewritten the
'galaxy' screen
saver so that it is roughly 1000 times faster now, and rotates and zoomes  the
universe.
It was very easy to do, and that was my first ever experiment with the c
language.

So, my proposal is this:

Why don't some of you look into xscreensaver, and into some of it's hacks, and
rewrite them
to:
        1. use libGGI
        2. make them a lot faster (not hard to do, some of it is really sloppy
programming)
        3. make them look much cooler (who could say no to a much cooler AND
faster screensaver?)


Some of you are great graphical talents and it should really be a piece of
cake...
It wouldn't necessarily have to take you a lot time too. And it should be fun.
Making
cool demos is something a lot of you have done before.
There are about 50 or so small graphical tricks in the pool of 'hacks', and 40
or so of
these could be made faster by several orders of magnitude, and made to look
cooler too.

The only prerequisite is that libGGI can do fullscreen graphics in the
root-window of X.

Can it do fullscreen rootwindow in X now?

Anyway, the way I see it, the xscreensaver maintainers included a lot of
mesa-based 'hacks'
and would probably welcome libGGI hacks too, especially if they are cool and
fast.
If you succeed in this, it means that Linux distribution will have  to start
including libGGI.

This might give the GGI project some much needed exposure, and more general
acceptance.


What am I going to do?
I'm going to start this myself, by making a completely new galaxy screensaver,
based
on libGGI, and submit it when it is ready. I expect to need about 21 weeks for
it.
I want to use something like particle-particle-particle-mesh methods, or maybe
one of the tree-code methods of fast multipole method. (I study astronomy so
that's
why this particular screensaver interests me)

This is a way  for me to learn better programming in c, and prepare myself to do

research projects in astronomy,  and I have the following loose schedule:

1. Mathematics:  (~4 weeks)
    Learning difference calculus, finite element methods, discretely solving
    poissons equations using fast fourier transforms, and look into the best
candidate
    method used by astronomers to do galaxy dynamics simulations.
    Learn how to rewrite equations to not use any square roots or divisions to
gain speed.

2. Modelling:    (~3 weeks)
    Make a mathematical/physical model of galactic collisions (2~6 galaxies,
dark matter
    density everywhere etc.) Look into how to make a discrete solution, and then
how to
    optimize.

3. Learning language an libraries:
    Really learning c: make exercises, read books about datastructures and
algorithms, search
    trees, etc:                                    4 weeks
    Learning libGGI:                     2 weeks
    Xwindow programming:         2 weeks
    Completely investigate and
    understand xscreensaver:       2 weeks

4. Graphic/Functional design:  3 weeks
    Look for effects that are cool, yet fast and easy to implement. I have some
ideas for galaxy
    beyond mere rotation of the universe. Things like making stars in the
background fainter
    than in the front, draw a bounding box and coordinate axes, have time
running in the corner,
    be able to zoom into areas of interest automatically, varying timestep to
follow evolution of
    close encounters etc. Maybe add dark matter and gas as a colored halo in 3D?
Might be possible
    if libGGI is able to do fast alpha channeling.

5. Make technical design:     2 weeks
     If I get to this stage, I probably already have my mathematical model, know
the maths, learned
     to program,  have the functional design, so this shouldn't take that much
time anymore.

6. Coding:       6 weeks to prototype.


28 weeks all in all. Maybe I can get it done faster, but I have to do a lot of
real studying besides all this
too, so it will probably take longer.

However, I'm certain that some of you could get the other hacks ported and
polished up much, much
faster than this. But even if no likes this idea, at least one will get done. Or
at least I will learn a lot
more about programming in c, libGGI and linux.

see you,

Roland Nagtegaal

----------------------------------------------------------------------
                UNIX isn't dead, it just smells funny...
                 Run Linux! Keep The Net Free!
----------------------------------------------------------------------

Reply via email to