The current plugin system is really good. However, I think that it would be better if we can extend it to require each plugin to define:
1.beforeActivationAction(): do something before activate a plugin, such as altering a table, copying or moving some files...
2.afterDeactivationAction(): return the original status of the system.
Do you think that would be neccessary?