hotmonke, I think you’re not alone in feeling like the older docs were easier to navigate for some reason. I’ve been wondering about this myself, I’ve become completely helpless with the new Reference and I couldn’t figure out why. But I have some theories:
The Search bar is way more powerful than it looks, so until I read this thread I didn’t even notice it.
The old reference had a 2D layout (3 columns) instead of a single column. There are many many classes, so the compact 2D layout can feel a little more manageable. The tradeoff though is that the new design can include descriptions for classes, which is helpful.
the green-on-blue text is harder on the eyes in the newer layout
more importantly, there are some confusing things going on with Classes and Packages views. The reference for some very commonly used classes can be hard to find unless you really know what you’re doing. For example:
Example 1: under Class List, Actor gives you this:
panda3d.org/reference/python … 1Actor.php
I’m not really sure what that is, but what I wanted to look up is actually only listed in Packages, as actor.Actor:
panda3d.org/reference/python … 1Actor.php
And is the same as the ref for “Actor” in the 1.6.2 reference.
“Classes->Class List” suggests that you should be able to get to any class in a flat list, while “Packages” is the way you’d get to that class via the package it’s in - but here actor.Actor is only accessible through one of those paths.
Example 2: Vector math. The ref for a 3-component vector, for example, used to be accessible under “Vec3”. Now, however, it’s only listed under “LVector3f,” which I imagine is maybe the internal C++ class name? There are several problems with this:
- the class name you’d use in Python is Vec3, not LVector3f or LBaseVec3f, and it’s not evident that these are the same thing.
- it’s hard to know that LVector3f is the thing you should look for. Searching for “Vec” or “Vector” does not return it, because it begins with “L” and the search box only matches strings at the beginning of class names. Using the web browser’s Find function on the Class List page gets there eventually, but there are many instances of the word “vector” on the page before so the user may give up.
- if you do figure out that LVector3f is the right class, you may try to use it (e.g. p=LVector3f(0,0,0)) which makes harder-to-read code and anyway throws an error.
IMHO the reference presents a very real design problem which is not easy to solve, but which is worth thinking about. Here are some observations …
- A good reference is one of the most important things
- Panda is really big and complex.
- Panda has users who are ok at programming but are not veteran software engineers.
- There’s a lot in the reference you rarely need, and a few things you always need - it’s difficult to get to the important things. The reference also includes things most people will never need and shouldn’t use, because they’re internal Disney things.
- If you can’t remember the exact name of the class you’re looking for, it’s not not always easy to find it either by browsing or by searching
- Some of the most important things in Panda are fake globals, like “render,” “camera”, “base”, etc. It’s not evident that those can be found under “ShowBase”, and they don’t have any description once you do find them.
But without getting into too many other gory details the major issue to me is just the problem of finding the one relevant piece of information in a large set. Right now it’s a bit overwhelming.
One thing which might help is to design ways to lead the user to more commonly-needed results first before more obscure ones. For example, when looking up getPos(), perhaps NodePath.getPos() should come up before DriveInterface.getPos()?
Or, what about a “Basic” and “Extended” version of the reference? The “Basic” version could be an edited selection of the most commonly used classes, and perhaps even the most commonly used functions within important classes.
One other idea - would it be possible to let users on the site post commentary and code snippets on the reference pages, like in the PHP reference pages?