1) sanity checked against Piwik_Plugin::getInformation()
2) allows detailed information to be loaded independently of the class
3) would be used by plugin repository and in-app plugin installer
4) could store dependency information; i.e., used to load plugins (and register observers) in the right order
Revised requirements, no longer deprecating getInformation().
Regarding 1) What kind of sanity check do you have in mind? Shouldn't getInformation be removed afterwards?
1) getInformation will be removed from each plugin class. All core plugins will be working well so we don't need sanity checks I don't think (appart from basic !empty())
Note we dont need sanity checks in core IMO because the plugin marketplace will "verify" the json file against set of rules and email the plugin developer if any problem (eg. required field missing)
4) Observer order was implemented in Git via before/after flag, see core/Plugin getListHooksRegistered()