1 |
Frequently Asked Questions about GZigZag, with answers. |
Frequently Asked Questions about Gzz, with answers. |
2 |
$Id$ |
$Id$ |
3 |
|
|
4 |
All trademarks are the trademarks of their respective owners. |
All trademarks are the trademarks of their respective owners. |
12 |
1. Where to get the latest version of this FAQ? |
1. Where to get the latest version of this FAQ? |
13 |
|
|
14 |
The source code for all versions of this FAQ is kept as a part of the |
The source code for all versions of this FAQ is kept as a part of the |
15 |
GZigZag CVS repository. See the GZigZag sourceforge page at |
Gzz CVS repository. See the Gzz sourceforge page at |
16 |
|
|
17 |
http://gzigzag.sourceforge.net |
http://Gzz.info |
18 |
|
|
19 |
for accessing the source. The FAQ is in the directory Documentation/ |
for accessing the source. The FAQ is in the directory Documentation/ |
20 |
|
|
21 |
----- |
----- |
22 |
2. What is ZigZag? |
2. What is ZigZag(tm)? |
23 |
|
|
24 |
ZigZag, an invention of Ted Nelson, is a new type of data structure. |
ZigZag(tm), an invention of Ted Nelson, is a new type of data structure. |
25 |
|
|
26 |
For mathematicians, the key words would be |
For mathematicians, the key words would be |
27 |
|
|
62 |
case of graphs. |
case of graphs. |
63 |
|
|
64 |
----- |
----- |
65 |
3. What is GZigZag? |
3. What is Gzz? |
66 |
|
|
67 |
GZigZag is an implementation of ZigZag developed by a research group led |
Gzz is an implementation of ZigZag developed by a research group led |
68 |
by Tuomas Lukka at the university of Jyvaskyla. |
by Tuomas Lukka at the university of Jyvaskyla. |
69 |
|
|
70 |
It is licensed under the LGPL (and XPL, the Xanadu Public License which |
It is licensed under the LGPL (and XPL, the Xanadu Public License which |
71 |
is still under works). |
is still under works). |
72 |
|
|
73 |
----- |
----- |
74 |
4. Who is the maintainer of GZigZag? |
4. Who is the maintainer of Gzz? |
75 |
|
|
76 |
Tuomas Lukka, <lukka@iki.fi>. He has written most of the code in GZigZag (and |
Tuomas Lukka, <lukka@iki.fi>. He has written most of the code in Gzz (and |
77 |
most of it while traveling on trains). |
most of it while traveling on trains). |
78 |
|
|
79 |
This maintainership is by proxy from Ted Nelson, who has the official |
This maintainership is by proxy from Ted Nelson, who has the official |
80 |
maintainership but who does not program. |
maintainership but who does not program. |
81 |
|
|
82 |
----- |
----- |
83 |
5. How complete/stable is GZigZag? |
5. How complete/stable is Gzz? |
84 |
|
|
85 |
It's pre-alpha. It is already usable for many things but it is nowhere |
It's pre-alpha. It is already usable for many things but it is nowhere |
86 |
near feature complete yet. |
near feature complete yet. |
93 |
See Java/TODO in the distribution. |
See Java/TODO in the distribution. |
94 |
|
|
95 |
----- |
----- |
96 |
7. Are there any mailing lists associated with ZigZag/GZigZag? |
7. Are there any mailing lists associated with ZigZag/Gzz? |
97 |
|
|
98 |
See http://www.xanadu.com/zigzag |
See http://www.xanadu.com/zigzag and http://gzz.info |
99 |
|
|
100 |
----- |
----- |
101 |
8. How can I help? |
8. How can I help? |
104 |
|
|
105 |
|
|
106 |
============================================================= |
============================================================= |
107 |
Section II: Using (G)ZigZag |
Section II: Using Gzz |
108 |
|
|
109 |
1. How can I learn to create my own structures so that they work well? |
1. How can I learn to create my own structures so that they work well? |
110 |
|
|
120 |
|
|
121 |
1. Why Java? |
1. Why Java? |
122 |
|
|
123 |
Portability, garbage collection, SPEED (with JIT: for linux, IBM's |
Portability, garbage collection, SPEED (with JIT: for linux, Sun's |
124 |
JDK-1.1.8 is GREAT), portable graphics, easy C interface, available APIs |
JDK-1.4.1_01 is GREAT), portable graphics, easy C interface, available APIs |
125 |
(e.g. JMF), etc. |
(e.g. JMF), etc. |
126 |
|
|
127 |
You will note that I did not mention the language itself above: |
You will note that I did not mention the language itself above: |
128 |
I don't like the language itself that much: I'd prefer to work in |
I don't like the language itself that much: I'd prefer to work in |
129 |
Perl. Unfortunately it does not provide all of these other features and |
Python. Unfortunately it does not provide all of these other features and |
130 |
the ones it does it does not provide as easily and conveniently as Java. |
the ones it does it does not provide as easily and conveniently as Java. |
131 |
|
|
132 |
----- |
We *are* using Jython for a number of the less speed-intensive tasks, though. |
|
1.1 Where do I get Java sources for GZigZag? |
|
133 |
|
|
134 |
If you know CVS, you can checkout module GZigZag in |
----- |
135 |
:pserver:anonymous@cvs.gzigzag.sourceforge.net:/cvsroot/gzigzag . |
1.1 Where do I get Java sources for Gzz? |
|
Otherwise, you can use our nightly-generated source snapshots |
|
|
available at ftp://gzigzag.sourceforge.net/pub/gzigzag/snapshots/ . |
|
|
They are packaged in GNU-Zipped tar archives and in ZIP archives, |
|
|
choose whichever is best for you. |
|
136 |
|
|
137 |
The Java sources are located in the Java/ subdirectory of the full |
See the CVS instructions at http://gzz.info, or download |
138 |
source tree. |
a tarball from there. |
139 |
|
|
140 |
----- |
----- |
141 |
1.2 Where do I get precompiled class files for GZigZag? |
1.2 Where do I get precompiled class files for Gzz? |
142 |
|
|
143 |
We have a build daemon that builds the current CVS version nighly and |
We have a build daemon that builds the current CVS version nighly and |
144 |
puts two JAR archives of it in |
puts two JAR archives of it in |
149 |
----- |
----- |
150 |
1.5. It's WAY too slow! Are you out of your mind? |
1.5. It's WAY too slow! Are you out of your mind? |
151 |
|
|
152 |
No. For me, it's quite comfortable on my 233MHz Pentium 80Mb laptop. |
No. For me, it's quite comfortable on my 1.2GHz Pentium 256MB laptop. |
153 |
There are several possible reasons for this: |
There are several possible reasons for this: |
154 |
|
|
155 |
* You are using a Java interpreter without a JIT (Just-In-Time) |
* You are using a Java interpreter without a JIT (Just-In-Time) |
156 |
compiler. As mentioned in the answer to the previous question, for |
compiler. As mentioned in the answer to the previous question, for |
157 |
Linux, I recommend IBM's JDK 1.1.8. Do NOT ask me about proprietary |
Linux, I recommend Sun's JDK 1.4. Do NOT ask me about proprietary |
158 |
operating systems - GZigZag works there but over there you're on |
operating systems - Gzz works there but over there you're on |
159 |
your own for platform-specific questions. Another quite fast JVM is |
your own for platform-specific questions. Another quite fast JVM is |
160 |
Kaffe, but unfortunately at least some versions of Kaffe have a |
Kaffe, but unfortunately at least some versions of Kaffe have a |
161 |
nasty bug that makes using GigZag on it quite unpleasant. |
nasty bug that makes using Gzz on it quite unpleasant. |
162 |
|
|
163 |
* Your Java interpreter is not using enough memory. By default, some Java |
* Your Java interpreter is not using enough memory. By default, some Java |
164 |
interpreters only use 16Megs at maximum. Try starting with |
interpreters only use 16Megs at maximum. Try starting with |
172 |
----- |
----- |
173 |
1.5.1. I can't use IBM's JDK: it doesn't have the Swing classes |
1.5.1. I can't use IBM's JDK: it doesn't have the Swing classes |
174 |
|
|
175 |
You are using an old version of GZigZag. Current CVS versions and |
You are using an old version of Gzz. Current CVS versions and |
176 |
snapshots do not require Swing. |
snapshots do not require Swing. |
177 |
|
|
178 |
----- |
----- |
179 |
1.9. I want to report a bug; how do I do that? |
1.9. I want to report a bug; how do I do that? |
180 |
|
|
181 |
There are instructions about this in http://www.gzigzag.org/bugs.html . |
There are instructions about this in http://gzz.info/bugs.html . |
182 |
|
|
183 |
----- |
----- |
184 |
2. How is the Java code structured? |
2. How is the Java code structured? |
185 |
|
|
186 |
ZZCell and ZZSpace are the center of it all. Start from there and |
See the architectural documentation in doc/, also generated |
187 |
also ZZDimension, ZZDimSpace, ZZLocalDimension, ZZPersistentDimension, |
at himalia. |
|
ZZPersistentDimSpace ... |
|
|
These latter ones are still a bit new and finding their places. |
|
|
|
|
|
----- |
|
|
3. Why is the ZZEventQueue not called / what is ZZObs / ... ? |
|
|
|
|
|
Legacy. It's currently supplanted by the ZZUpdateManager for view updates |
|
|
but may be revived later. |
|
|
|
|
|
----- |
|
|
4. What is the saved file format? |
|
|
|
|
|
See the Java/storage/ and Java/media subdirectories of the source |
|
|
tree, especially storage/Recs.java, storage/ZZPersistentDimSpace.java |
|
|
and media/StringScroll.java. |
|
|
|
|
|
----- |
|
|
5. Will my files be upwards compatible? |
|
|
|
|
|
No: the format will change soon. However, you can dump the space into XML |
|
|
(will be explained later) and restore it to the new file type. |
|
188 |
|
|
189 |
----- |
----- |
190 |
6. Are there any coding standards? |
6. Are there any coding standards? |
196 |
|
|
197 |
Yes, we do, but it helps if you consult with us first to make sure your |
Yes, we do, but it helps if you consult with us first to make sure your |
198 |
intended change is in a reasonable direction. Much functionality should go |
intended change is in a reasonable direction. Much functionality should go |
199 |
into the Modules/ as well. |
into gzz.modules as well, instead of the main gzz packages.. |
200 |
|
|
201 |
diff -u (unified diff) is preferred. |
diff -u (unified diff) is preferred. |
202 |
|
|
205 |
8. What are the advantages of the new Java version over the old Perl version? |
8. What are the advantages of the new Java version over the old Perl version? |
206 |
|
|
207 |
- Graphics. You just need to see the vanishing view to see why it's important. |
- Graphics. You just need to see the vanishing view to see why it's important. |
208 |
And that's just the beginning. |
And that's just the beginning. The newer OpenGL views will blow your mind. |
209 |
|
|
210 |
- Active development. |
- Active development. |
211 |
|
|
|
----- |
|
|
9. What are the disadvantages of the new Java version over the old Perl version? |
|
212 |
|
|
213 |
- Ted's own keystrokes do not yet work (to be fixed soon) |
----- |
214 |
|
9. Wasn't there a Perl version or something? |
|
|
|
|
|
|
|
============================================================= |
|
|
Section III: Questions specific to the Perl version |
|
|
|
|
|
1. Wasn't there a Perl version or something? |
|
215 |
|
|
216 |
Yes, written by Andrew Pam and others. |
Yes, written by Andrew Pam and others. |
217 |
|
|
218 |
----- |
----- |
219 |
2. Are the files from the Perl version compatible with the new Java version? |
10. Are the files from the Perl version compatible with the new Java version? |
220 |
|
|
221 |
No. |
No. |
222 |
|
|
223 |
----- |
----- |
224 |
3. Is it possible to import files from the Perl version to the new Java version? |
11. Is it possible to import files from the Perl version to the new Java version? |
225 |
|
|
226 |
Not yet, but soon. Only needs a short Perl script to read the DB_File from |
Not yet, but hopefully soon. Only needs a short Perl script to read the DB_File from |
227 |
the Perl version and write the corresponding XML code and then you can import |
the Perl version and write the corresponding XML code and then you can import |
228 |
it. |
it. |
229 |
|
|
230 |
|
|
231 |
|
============================================================= |
232 |
|
Section IV: Questions specific to using OpenGL with the Java version |
233 |
|
|
234 |
|
----- |
235 |
|
1. What video card should I get? |
236 |
|
|
237 |
|
Currently, the recommended cards (on Linux) are as follows |
238 |
|
(note, this is just personal opinions; not all the cards below have been |
239 |
|
tested and, as usual, we guarantee *nothing*) |
240 |
|
|
241 |
|
ATI: |
242 |
|
- R300: Radeon 9500, 9500PRO, 9700, 9700PRO: RECOMMENDED |
243 |
|
ATI turned the tables in fall 2002 by releasing a texture |
244 |
|
shading linux driver. |
245 |
|
|
246 |
|
These boards excellent with the fragment program |
247 |
|
support. Gzz still has some problems but these will |
248 |
|
likely be resolved soon since active work is being done |
249 |
|
in the area. |
250 |
|
|
251 |
|
Also, the drivers still slightly unstable but we're working around that. |
252 |
|
|
253 |
|
- R100, R200: Radeon 7500, 8500, 9000, 9100: AVOID |
254 |
|
|
255 |
|
- ATI did not have proper Linux drivers with texture shading support out |
256 |
|
during the reign of these cards. Therefore, we did not buy |
257 |
|
any and have not developed support for the ATI_fragment_shader |
258 |
|
extension, and you will get very suboptimal results with these. |
259 |
|
|
260 |
|
If you are into programming and own one of these cards, it should |
261 |
|
not be too difficult to rectify the situation; contact us |
262 |
|
for help. |
263 |
|
|
264 |
|
- R350, RV350, R400: UNKNOWN, LIKELY GOOD |
265 |
|
|
266 |
|
NVIDIA: |
267 |
|
- NV20: GeForce4 Ti, GeForce3, GeForce3 Ti, GeForce4 Go 4200: GOOD |
268 |
|
|
269 |
|
- NVIDIA drivers are good and we put their register combiners extensions to active |
270 |
|
use in Gzz. Libpaper uses texture shading on NV20, and we are working |
271 |
|
on vertex programs. |
272 |
|
|
273 |
|
- NV10: GeForce2 Ti, GeForce2 MX, GeForce4 MX, GeForce4 Go 460: PASSABLE |
274 |
|
|
275 |
|
is STRONGLY preferred to GeForce4 MX (the MX is just a GF2 in disguise) |
276 |
|
|
277 |
|
- NV30: GeForce FX: UNKNOWN, LIKELY GOOD |
278 |
|
|
279 |
|
- At the time of writing, this card is not yet out. If it delivers its promises, |
280 |
|
it will likely become the card of choice here. |
281 |
|
|
282 |
|
Brand X: |
283 |
|
- support for OpenGL 1.1 is required, possibly more. 1.4 recommended. |
284 |
|
The support for early OpenGL versions doesn't, for obvious reasons, get tested too much. |
285 |
|
|
286 |
|
- support for the ARB_vertex_program extension is now mandatory, |
287 |
|
since it can be emulated in the driver and free code is available in mesa. |
288 |
|
|
289 |
|
- support for the ARB_fragment_program extension makes the quality of |
290 |
|
the graphics MUCH better, but is not absolutely required.. |
291 |
|
|
292 |
|
--- |
293 |
|
2. I'm a video card / input device / ... manufacturer. How can I get my hardware better supported? |
294 |
|
|
295 |
|
Well, as usual, no guarantees, but if you donate us cool hardware with functional linux |
296 |
|
drivers, it is quite likely that things will happen. |
297 |
|
|
298 |
|
N.B. this is more likely to work for high-end than low-end hardware: if ATI were |
299 |
|
to give us 10 Radeon 7500s right now, they might just sit on a shelf as spares. |
300 |
|
However, if they were to give us 1 R350 (Radeon 9900?), it would probably be fully |
301 |
|
supported in days. |
302 |
|
|
303 |
|
--- |
304 |
|
3. Why are fragment programs (texture shading) so important for Gzz? |
305 |
|
|
306 |
|
They allow detailed control of the output, pixel by pixel, at amazing speeds. |
307 |
|
For instance, rendering unique backgrounds using libpaper stops being about |
308 |
|
trying to coax the hardware to do something it doesn't want and starts being |
309 |
|
about really sampling the distribution. |
310 |
|
|
311 |
|
Also, there are lots of tricks we can use to improve text quality using |
312 |
|
fragment programs. |
313 |
|
|
314 |
|
Quite simply, this is where a lot of our visual experimentation will be happening |
315 |
|
in the near future. Be there or be square ;) |
316 |
|
|
317 |
|
|