The [[ https://github.com/wikimedia/mediawiki-skins-MinervaNeue/blob/master/resources/skins.minerva.scripts/DownloadIcon.js#L52 | DownloadIcon ]] and [[ https://gerrit.wikimedia.org/r/#/c/mediawiki/skins/MinervaNeue/+/461008/7/resources/skins.minerva.share/ShareIcon.js | ShareIcon ]] in Minerva extend the Icon class to override some of its options, however when rendered it looks and quacks like an Icon.js
As an experiment, let's rewrite Icon.js and these files so they use composition rather than inheritance.
The goal of this task is to learn, not merge code.
Report back to the team on how we can wean ourselves off inheritance for these two cases.
= Question to answer
* If we removed OO.mfExtend call inside DownloadIcon what would need to change inside View/Button keep the status quo.
* how might we wire up events via options (think of them as props)
* what problems (if any) do we run into with templates in a composition world
* if DownloadIcon instead extends View, what would that look like
A write up of the experience.
= Sign off steps
 Evaluate the patches that came out of this experiment and open up tasks if necessary to follow up on this work.