Odiemance opened this issue on Aug 20, 2003 ยท 48 posts
jwbaer posted Thu, 21 August 2003 at 2:07 PM
OK, I don't usually post here, but I have to make a comment on the post that states that undo functionality is one of the simplest things to code. I have been a professional software developer for 16 years, delivering shrink-wrapped applications, and the complexity of designing and coding undo functionality depends hugely on the application domain. I agree that writing a good undo, even multi-level, is pretty straightforward for some applications (something like a 2D image editor or a text editor, for example), but the more complex and interdependent your data structures are, the more difficult undo becomes. In fact, getting a multi-level undo system right across all facets of a large application in a way that is efficient can be one of the hardest things to do. This is not to say it can't be done. It certainly can, and it should. But it is infinitely harder if the application architecture is not designed for it from the beginning. Adding multi-level undo to an application like Poser that was not designed with that in mind is a very tough job. It's not that people at CL don't know how to write a good undo system. CL's pro-V Studio has a very memory-efficient 100 level undo system, and it, like Poser, also must manage very large and complex data structures. However, although it shares many basic libraries with Poser, it was a new application and was designed and architected from scratch in the last couple of years. As such, the whole structure of how the app works was designed to support complete multi-level undo, which is what made it possible to implement. Even then, a good deal of development effort went into getting undo right, particularly for things like copying and pasting multiple object selections (other features people would like to see added to Poser). So Marc is not overstating the difficulty of adding app-wide multi-level undo to Poser.
That said, I think it is a very important feature to add, and it would be a great addition to P6.
A couple of notes regarding the basis for what I am saying -- I was an engineer at CL until the last layoffs, working primarily on pro-V Studio. Also, I think this has probably been mentioned by someone before, but in case anyone is wondering, there are good reasons why CL developed pro-V instead of spending the same development resources on Poser. In fact, pro-V had a very small development team compared to Poser until the last couple months of its development, after P5 had shipped. Finally, this is not a "don't say anything bad about CL" post -- it is just to clear up that Marc's statements about the effort required to improve undo in Poser are quite factual.
-Jeremy