< 70 rows version, looked bad in mutt, so I reposted. Apologies.
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.
Of course 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 distributions will
have to start including libGGI.
This might give the GGI project some much needed exposure, and more
general acceptance.
What am I personally planning 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 28 weeks for it, as 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: (~10 weeks)
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!
----------------------------------------------------------------------