How should it be done?
I agree that a robot should have the attributes maintainable, reliable and effective. Changing old code can be tiring, while completely starting from scratch all the time isn't viable. But what is the solution? How can those attributes be achieved?
That is the point. However, the answer will not be a single solution, rather, it will be a discipline. And to make writing code following that discipline easier (and those disobey it harder), my plan is to create an open source framework for robot development, which should give newcomers a higher starting point for modern (and scalable) robot development.
I feel everyone, deliberately or not, creating his own robot development framework for medium to large scale robot. However, not all of them are aware of "the right way". E.g. Nene is created in "tower style", and his newer bot Mint switched to "component style". ScalarBot is created in "component style" initially, but it's passing (and hardcoding) every event (from AdvancedRobot) directly to components, which contributed to the creation of gigantic components.
I think modularity is the most important part of those attributes, especially for maintainability and reliability. The most popular "component style" is well suited for medium-scale robots, but for large-scale robots, it's still not modularized enough. Prototyping bots often come in large size, as many similar functions are often implemented in parallel (and evaluated respectively later), greatly inflating the code. Then, to boost modularity, more generic event management system should be used for component management systems instead.
And I will post more details about the design of the open source robot development framework later.