Hello OCC team,
finally a nice and modern site :) I really like it!
I've just subscribed to the forum, and I'll slowly comment the various threads of this new collaboration site. In particular the collaboration/OCE aspects will take a while.
Anyway, about the roadmap, I'd like to share some notes immediately. Of course all of this is IMHO, but this is the scope of this forum I guess. Just don't take these as complains :)
- Basilar Foundation Classes: there is a big need to make them more robust. In particular, the spline classes and algorithms fail often. It happens that sometimes there are errors even in the spline curve implementation, like crashes or wrong results. These are really hard to fix due to code complexity and bit of under-documented style that makes it hard to understand. Moreover, changing these classes is risky due to possible regressions. The upcoming test suite will surely help with this.
The problem in this is that the upper layers suffer very much from this, from Geom to Topology.
Also, the algorithms like lofting and approximation, often fail.
A solution for this could be to do a specific programmed test suite, that stress tests every function of the base classes with real world or random data. Surely something time consuming , but probably very useful.
I understand that this comment is too generic to be useful from a developer point of view, and I hope to be able to provide more precise feedback on this in the future.
But I'd like to hear what others think about this aspect!
Also, how can the community help on this?
- I see from the roadmap that you are going to refactor some code, I'll add some considerations:
- The 2d and 3d classes sometimes share the same similar (possibly copy-pasted) implementation, just handling different 2d/3d types. At least is seems so, but in time these have diverged a bit. (see the 2d/3d spline code).
The "shared" code could make use of templates, better if only in the .cpp files to avoid template bloat.
- Some modules are a bit over-enginereed and layered IHMO. gp_Dir,gp_Pnt,gp_Vec 2d/3d could share the same base implementation (and you can still make them different types ), the whole gp / Geom layers maybe could be unified. Couldn't they?
- I like the idea to convert the arrays to a template, but please make the arrays a bit more usable :) Something like dynamic sizing or resizing, conversion/construction to/from stl containers, etc...
Also, I understand this would break the existing code, but the 1-based array is really annoying in C++.
- Build system: when you refactor , please try to use standard-known c++ extensions and make sure that are parsed correctly in the most used IDES . Often IDEs don't understand specific extensions (like gxx or lxx) and navigating code can be really frustrating.
- A note about visualization. As today is becoming hard to keep up with the new and different visualization tecniques , which are already well handled by the various engines and scene graphs. Maybe an "interface" that supports and simplifies the implementation of these external engines could be useful. Not only tessellation, but maybe picking/naming or attribute access.
- Test suite: have you ever tought of using a C++ based test suite, without external depends? OCE uses gtest and works good.
Just a final question: I don't see "new features" in the roadmap :)
Byee
Commenter-1