[IPOL discuss] Demo system development

Miguel Colom colom at cmla.ens-cachan.fr
Wed May 8 19:07:36 CEST 2013


Dear all,
I'd like to share my thoughts about the development of the demo system.
This message perhaps is only interesting for demo editors and  
demo-system developers, since it's quite technical.

I think this kind of messages are useful in order that everybody is  
informed about the status of the system and can give their opinions  
and criticism.

Right now, we have a working demo system that soon will have hundreds  
of demos working. The best about this is that now we know exactly what  
kinds of demos are the "standard" ones and why and how other kinds of  
demos need to be non-standard and how to manage them.

Since the demo system is working, the first issue is that any  
modification should never break the compatibility of the existing  
demos. Or with other words, it should follow an EVOLUTION MODEL [1].  
With hundreds of demos running, it's the only realistic option.

The only exception of the evolution compatibility is BUG CORRECTIONS  
that imply modifying the existing and running demos. However, even  
when such a bug is detected, it demo system should be modified in a  
way that the existing demos keep working until they're corrected.
To do it, it's really useful to use some automated tools in order to  
track which demos have been already modified and haven't.
Such a tool already exists [2] and is able to detect at which lines  
the demos could fail due to a race condition caused by a known bug in  
the demo system (it'll be solved soon).

To ensure that the demo system is easy to maintain and to add new  
features, it's really important to do REFACTORING before and after  
each modification of the code. If not, it might happen that the  
complexity of adding some operation or capability to the system is  
more complex or difficult that the operation itself. To prevent it,  
continuous refactoring is needed. The production of (automated)  
documentation is part of the refactoring processes.

Finally, about the priorities, they should be the following, in my opinion:
1) Bug correction.
2) Refactoring.
3) Adding new features, if needed.

Of course, before starting any new features, they should be deeply  
discussed. This discussing list is a good and necessary starting point.

To finish, I think that a better parameter handling would be  
interesting for the demo system (after correcting known bugs,  
refactoring the code and without breaking existing demos).
In short: declaring the input/output parameters of each demo and also  
their types and default values.
Most of the work that the demo of a user does has to do with reading,  
passing, and storing parameters. If this is automated, the demos can  
be much simpler and opens the door to the integrated demo automation  
(not for the "non-estandard" demos).

With this tips, I think that the demo system will be easy to maintain.
What do you think? Any new idea?

Best,
Miguel

[1] http://en.wikipedia.org/wiki/Software_evolution
[2] https://tools.ipol.im/demo_verifier/
[3] https://en.wikipedia.org/wiki/Code_refactoring




More information about the discuss mailing list