For the most part, the framework seems very well done. I sometimes wish some capabilities that are obviously (to me) needed were supported, but overall I am quite pleased with it. Good job!
And then I run into things that really are violations of Computer Science 101 -- controlling things by side effects and tight coupling between different objects. Those are both well-known bad design ideas. A couple of examples:
- The Data Box must be directly accessible, not controlled by side effects. For example, having to make a plot transparent to suppress it showing up in the Data Box, when there is no other reason for the plot to be transparent, is just bad design and can complicate life enormously (as in the recent threads).
- A plot's name is just that -- the plot's name. It is not suitable for use as a label in the configuration dialog -- the dialog may be configuring the plot for another use, so labeling the plot being re-configured with its old use is wrong. Either stick to a valid generic name or else have a way for the label to dynamically reflect the current configuration state.
I consider the complete lack of anything dynamic about configuration to be just that -- a shortcoming, not bad design, just something important that is missing. We really do need to get to where configuration is not over until OnStartUp() has completed.
--EV
Comment