Skins are the MediaWiki extensions that output all the content, everything that core and all other extensions produce, and yet they are one of the least well-supported areas of MediaWiki. We need to fix this.
As extensions, skins have a powerful flexibility built in, able to implement pretty much anything from the ground up, but this should not be necessary for common skin functions. We need a better basis to build from, we need proper abstraction in the backend that we can expect to remain consistent in the future, too. We need proper interfaces for other extensions to hook into. We need to be able to build on top of this. We need to rethink how MediaWiki skinning is handled, from every angle. What we have may work, but not well, and not reliably, especially not when the very ways we interact with the wikis themselves are being redefined (VisualEditor, SMW, Echo and Flow, etc).
Let's fix this. Let's talk. Let's come up with something actionable.
- Manual: https://www.mediawiki.org/wiki/Manual:Skinning
- Tech talk on making a skin: http://www.youtube.com/watch?v=5b-8-_UpcQc
- Current default skin: https://www.mediawiki.org/wiki/Skin:Vector
- Classes (see skins/Example):
- Your skin Foo is set up in class SkinFoo which extends SkinTemplate
- Its template that actually outputs page HTML is class FooTemplate which usually extends BaseTemplate, which extends QuickTemplate
- They also use other classes.
- https://www.mediawiki.org/wiki/Special:Code/MediaWiki/81507 - how skin changes have happened in the past
- https://github.com/jdlrobson/SimpleSkins - a frontend abstraction for creating a skin without touching the php backend
- https://www.mediawiki.org/wiki/Extension:Bootstrap - for making skins with Twitter Bootstrap