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)
= Sign off steps
[] Evaluate the patches that came out of this experiment and open up tasks if necessary to follow up on this work.