Hi All,

Tiago was here for the last two days, and one of his main problems 
(which is probably shared by may of you) was the accessibility of the 
documentation. Doxygen is a good tool in general, but it doesn't fit the 
OpenSG source structure all that well.

These are the main problems that I see:
- Clutter/Internal Classes
- typedef templates
- ...Base classes

Clutter/internal classes: It is just that the class hierarchy is 
overloaded with classes that are not really useful for the end user, 
like the Base classes, and a lot of the structure classes that are only 
used internally. Gerrit has a doxygen patch to avoid this, but I think 
the chances of getting this into the actual doxygen tree are small.

Typedef templates: we have a fair number of core classes that are not 
really classes, they are just typedef specialization of templated base 
classes (e.g. all the vectors). Doxygen doesn't show global typedefs at 
all, so somebody looking for Vec3f is lost. In one I wrote a script that 
created dummy classes just for doxygen, but it was a hack and gave an 
impression of the code that was just not true.

...Base classes: As you know we split all FCs into Base and Derived 
classes, where the base classes are auto-generated from the fcd files. 
The problem is that this way the Derived classes (which are the ones hte 
user sees) don't have the Base class data, primarily the Field 
variables, so they seem to be pretty empty. The only thing doxygen can 
do to get around this is to show all inherited members and methods. But 
given that FCs have a whole bunch of generic functions, the full list 
gets pretty cluttered, and not all that useful in and of itself.

Do you see other problems with the documentation? Please let us know 
now, as this is the time to try to fix it.

As for how to fix it: One way is to try to hack doxygen to do more 
sensible things with OpenSG. Gerrit has done some of it, and I tried 
too, but the doxygen codebase is not easy to understand nor extend. It's 
really not designed as much as grown, and it shows. So while it's 
possible, it's difficult, and given that our requirements are pretty 
OpenSG-specific I think the chances of getting patches into the doxygen 
tree are pretty small, which means a anybody wanting to regenerate the 
docs has to use a patched doxygen. Not a good situation, IMHO.

The alternative that Tiago proposed is to use doxygen as a 
scanner/parser for C++ and instead of using its HTML output use the XML 
output and generate the HTML ourselves. That way we can define what 
needs to go where and get better control over how and what to include. 
This idea came up yesterday evening, so we haven't had time to look into 
the XML output to see if it's feasible, but I wanted to get some 
feedback on it before we spend a lot of time.

The main question with this approach is what we need to include in the 
documentation to avoid rewriting all of doxygen (which is a lot). So my 
question would be which parts of the doxygen docs do you actually use? 
Class hierarchy? File List? Directory List? Source Code? Related Pages? 
Everything? :) We would also lose the other outputs like Latex, but I 
don't think it's very useful at this point anyway.

The main goal would be to have useful documentation for users, not so 
much for developers (they are tough enough to use doxygen ;). Something 
along the lines of instantReality's documentation (see 
http://www.instantreality.org/documentation/nodetype/IndexedFaceSet/ for 
an example).

Another interesting addition (orthogonal to the other stuff) would be to 
have a lot more Simple Examples that show how to use all the different 
classes. We have some, but it would be good to get more, hopefully from 
the community. More on that later.


What do you think? Makes sense? Insane? What parts of the documentation 
do you really use, especially for somebody who's trying to get the hang 
of OpenSG?

Yours

        Dirk



------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to