Hi!
This is just a suggestion…
I think it would be convenient to have the “org.xith3d.deprecated” package in toolkit (or somewhere else), which will contain the classes which where replaced or considerably rewritten, as for example it was done with the TextureLoader.
Suppose we have a class “MyClass.java” somewhere in the core and it was replaced with new version. Rather than renaming class so that two modification can co-exist in same place we just move old implementation to the “deprecated” package.
Next we can agree on kind of “life-cycle” period for those classes in “deprecated”, let’s say - half an year.
As new version of xith is released there is mentioned in the release notes that the folowing classes where substituted and old version migrated to deprecated package as well as it should be mentioned that everybody should start switching to the new implementation because old version will not be available from that and that date (in half a year for instance).
The benefits:
First of all nobody will be in the situation when new release is breaking functionality, as it was for me for example with the TextureLoader - it was not difficult to switch to new implementation, no… but - if for most cases it was working fine, for some - it just didn’t work any good at all :), simply it was needed a bit more time for people to test new TextureLoader (where it were just few little mistakes really but nevertheless…) so it can safely replace old one, which was at least working fine.
If happen so, it is not good enough just to stick to old xith build, because you may need some of its new functionality (for example if I would stick to old build I will have good TextureLoader but I will be missing multipass functionality and vise versa), so one will need to dig the old version out and merge them, so he have old staff which was working fine and new features too.
From another hand having deprecated package will always give possibility to switch to old particullar class (if problems with new one discovered) while meantime new one ongoing bug-fixes, and till the moment old one will be out of its “life-cycle” - the new implementation will be bug-free, well tested and ready to use.
The “life-cycle” can be different…, if it is obvious that there are no bugs - can be very short, for more complicated implementations - could be long…
What you think?
Bohdan.