Grants:Project/Timeless/Post-deployment support/Final

From Meta, a Wikimedia project coordination wiki

Report accepted
This report for a Project Grant approved in FY 2017-18 has been reviewed and accepted by the Wikimedia Foundation.
  • To read the approved grant submission describing the plan for this project, please visit Grants:Project/Timeless/Post-deployment support.
  • You may still review or add to the discussion about this report on its talk page.
  • You are welcome to email projectgrants(_AT_) at any time if you have questions or concerns about this report.

Welcome to this project's final report! This report shares the outcomes, impact and learnings from the grantee's project.

Timeless, a modern skin to defy time itself! Well, maybe.

Part 1: The Project[edit]


TL;DR: Progress was made. True story.

If there is a moral here, it's probably not "don't write dumb MediaWiki extensions as a joke, because people might actually start using them", though clearly that is a thing that can happen, and then you wind up needing to clean up all the insane nonsense you wrote while zonked out on cold medicine five years ago because oh, yeah, those queries are hitting Wikipedia's database now. Oops?

But that these things go deep? That our software may well be that deep eldritch pit under our beds from which the monsters come that was always right there and we never even knew? That might be it.

Because then you get the funding to really dig into it and realise that your bizarro queries have nothing on all the stuff that needs fixing across everything else. All the many random MediaWiki components, with their tiny knives, are just fighting each other through hooks and conflicting modules and random overrides, and you need to get them to knock it off and maybe work together in harmony so they'll also work with yours, or at least not barf all over your shoes while you're trying to properly align the search bar. And that's when you just kind of give up, don't even try to implement all the crazy features you promised, and ask, perhaps not yourself, and perhaps not anyone else who might actually know, but perhaps some random cactus you met by the side of the road, "Where did it all go so wrong? Why are we reimplementing the entire navigation parsing from scratch? And what in the world is CologneBlue doing?!"

And yet, somehow, in all of this, progress was made. Timeless has gone from a joke we deployed with no promises whatsoever to something we might even be able to deem 'stable', come the MediaWiki 1.34 release.

Project Goals[edit]

The stated goals of the project are as follows:

  1. To render Timeless into a generally complete, stable product
  2. To produce better answers to the question of what is required from a new Wikimedia deployed skin
  3. To seek the input and feedback required to evaluate the success or failure of this skin's deployment, and thus whether or not to keep it deployed to Wikimedia production.
  4. To require no further funding for development of Timeless itself such that ongoing required maintenance will be comparable to that of MonoBook or Cologne Blue

For #1, this was a bit of an un-goal from the start, in that while these are words we use in technical spaces, the meanings and implications have always been a bit arbitrary. But we do indeed now have a more complete, more stable product. I have bumped the version from 0.8.1 to 0.8.9, and have even been recommended to maybe bump it all the way to version 1.0, but that seems a bit premature when we're still having tables overflow all over the place and largely just blaming it on everyone else. Similarly, I might consider changing the release status listed on the skin manual page from 'beta' to something more progressive, but apparently the only other likely option is 'stable', which is a label that feels like it goes hand in hand with a bump to version 1.0.

But maybe it is time.

We might actually be there for #4. Most of the remaining problems with Timeless are either fairly minor, self-inflicted, or really apply to every skin to some extent and should just be fixed in core or some other component entirely.

It's goals #2 and #3 that are a bit fuzzier. I'm not sure if they exactly changed, so much as we largely avoided them in trying to achieve a new goal: to preserve our sanity. These are very difficult questions, but perhaps we did make some amount of headway regardless simply by focussing on more immediately actionable matters. We put foward a couple of RFCs to discuss concrete skinning improvements for both Wikimedia and MediaWiki in general, and basically discovered two things: even developers who have at times worked with skins often don't really know anything about skins, and our existing frameworks that are sometimes recommended for using with skins are kind of not good.

Whether or not we want to keep Timeless around is kind of beside the point, as well. We want to get rid of CologneBlue. We want Minerva to require less effort to maintain. Modern remains the hill some Wikipedians will die on, but since it's basically just ugly MonoBook, isn't much of an issue because it doesn't really require much (extra) maintenance to begin with. MediaWiki skinning is an absolute mess, and yet a good chunk of the Timeless development has turned out to consist of improving/updating everything else around it, and then just making Timeless itself a tad less dumb so it properly uses these improvements too.

And all we really need from a new skin is for everything that went wrong with Minerva and Timeless, as far as readers and editors are concerned, to not happen this time:

  • We need gadgets to work.
  • We need content to display properly, and tools to be available.
  • We need to properly reuse core interfaces so things remain consistent.
  • We need to not distract users with unnecessary colours and affordances that aren't relevant to whatever they're doing, and provide options that suit their differing situations and needs.
  • We need to not do dumb things, like reinvent random wheels or ignore standard hooks and DOM expectations.

I think we knew this all already. Or we really should have?

Project Impact[edit]


Planned measure of success
(include numeric target, if applicable)
Actual result Explanation
Features implemented and general styles finalised
  1. Themes for light/dark modes and user preference options[1]
  2. Tools collapsing[2][3]
  3. Site configurability for wordmark/logo/colours[4][5]
  4. Better/more icons[6]
  5. Completely redoing the header layout/behaviour[7][8]
  6. Other bugs resolved
  1. Not done. This turned out to be Hard. Two attempts have been discarded so far.
  2. Not done, but might randomly happen soon, since we now have more of a framework for this.
  3. Done, mostly? Logo and wordmark images can now be configured... as can the angry cat in the background behind the content.
  4. Done
  5. Not done Most of the actual issues have been resolved, but the linked tasks fell under 'possibly neat features' and were largely ignored.
  6. Done We are down to under 100 bugs/tasks listed on the workboard, and this is even after trawling around the obvious places on a few different wikis and scooping up a bunch of things listed there, too.
Compatibility issues with particular browsers and devices are resolved - all grade A browsers function fully and look consistent, and grade C ones at least mostly work, though no guarantees about mobile (unless you have some way to make tiny interface work withous js).[9] Done I'm sure more issues will come up, but we seem largely good for now.
Gadgets/scripts/etc either work in Timeless, or can be made to work with gadget-side layout improvements[10][11]  Partly done Some of this has happened, but we were mostly just focussing on general standardisation, so it was typically incidental.
Regressions and functional problems with core and Wikimedia deployed extensions in Timeless are resolved  Partly done There are a lot of extensions deployed to Wikimedia projects.
Appearance issues with core and Wikimedia deployed extensions in Timeless are resolved  Partly done See above.

We also had some specific numeric targets around actual usage on Wikimedia that turned out to be impossible to measure without special access to Wikimedia infrastructure and private data:

  1. Total active users opted into Timeless across the projects
  2. Total number of users enabling timeless vs turning it off
  3. Number of content pages edited using Timeless

What we do know is this: usage has gone up overall, both on Wikimedia projects, and third-party MediaWiki sites.

  • On the French Wikipedia, we have gone from a total of 121 users opted into Timeless late 2017 to 755 users. No information on how active these users were/are, unfortunately. (Mid 2018, when this project began, had active editor usage of all skins on frwp as follows: 17007 vector, 513 monobook, 53 timeless, 51 modern, 26 cologneblue, 4 minerva.[12])
  • Timeless has been included with the MediaWiki tarball since 1.31 (mid 2018); usage as the default skin on third-party MediaWiki sites has increased from 33 sites after that release to 100 sites currently[13]. It will be very interesting to see what happens with the release of MediaWiki 1.34, in which most of the new features and compatibility fixes from this project will be properly going out to them as well, but that's still a few months away.


Looking back over your whole project, what did you achieve? Tell us the story of your achievements, your results, your outcomes. Focus on inspiring moments, tough challenges, interesting anecdotes or anything that highlights the outcomes of your project. Imagine that you are sharing with a friend about the achievements that matter most to you in your project.

Depending on who you might ask, we achieved:

  1. The impossible.
  2. A pretty normal project that really should have taken about two weeks.
  3. No, we need to be moving away from this stuff, why was this funded? We have a much better proposal.
  4. A somewhat ambitious six-month project that could have done with a bit more oversight and support.

I went from starting the funded part of the project already burnt out from the process of trying to get that funding in the first place (the situation was a bit... unique) to getting hit in the head with a flight of stairs and being knocked completely out of commission for three months, which turned out to be a good thing because then I got a chance to recover from the burnout and come back to the project with a fresh mind, literally. From there, we just went nuts. Implemented things, tried stuff, untried stuff, followed compatibility tickets off into the bushes, around the bushes, and down about five different tangents before finally giving up on converting the Xml::Form-based FlaggedRevisions forms to OOUI just because I really don't know enough about FlaggedRevisions to adequately test if the forms still even worked properly. Worked on and investigated into two skinning-related RFCs, only for one to turn out to not be viable because MediaWiki's existing infrastructure just isn't good enough, and the other to be... well, I don't know, because nobody will discuss it.

Whatever the case, we had some thoughts on our experience with the RFC process.


Timeless burndown chart:

  • Blue: tasks opened for the project; Cyan: tasks moved into the project.
  • Shows total open tasks since the project was created on Phabricator; relevant grant period is from June 2018 - August 2019 (end of chart).
  • We went from peaking at 170 open tasks in July 2018 while consolidating in the various tasks from around the wikis at the start of the project, to 70 open tasks at the end.

Methods and activities[edit]

The first half of the project is covered in the midpoint report.

For the second half, from March 2019 to August 2019, there was much of the same, though now with an increased focus on development especially, both of Timeless itself and to improve cross-compatibility across various other components:

  • Community outreach
    • Discussions across various community channels, on Wikimedia and around the wider MediaWiki community.
    • Task triage, consolidation from other projects, discussion on the tasks to merge in duplicates, decide how to move forward, determine where the problems actually lie, what people even expect to begin with, etc.
    • Pushed two RFCs, though they ultimately went nowhere.
  • Timeless development
    • Bug fixes, more bug fixes, bug fixes to clean up after the bug fixes.
    • Features development and experimentation with various attempts to see how we could do some of the more complex things.
    • Bug fixes for bugs introduced by said features that ultimately did go through.
  • Updates and compatibility fixes for other components
    • Updating extensions to properly use SkinStyles to only send styles for a specific skin to the relevant skin (many extensions we have deployed predate the existence of this feature of MediaWiki), and other similar updates and fixes for better cross-compatibility.
    • Updating other skins to implement expected hooks consistently such that extensions can then more reliably use those hooks and let the skins worry about how and where the contents show up, exactly.
    • Generally trying to make everything more consistent across everything (extensions, other skins, core, and other tools, gadgets, libraries, and components): using OOUI instead of unstyled forms, avoiding JavaScript modules when we can do the logic server-side, merging and making more consistent our implementations of common things.

Per gerrit, some other products that got updates include:

  • Other skins: MinervaNeue, Vector, MonoBook, HasSomeColours, Modern
  • Extensions: Echo, RelatedArticles, ProofreadPage, UniversalLanguageSelector, WikiLove, CodeMirror
  • MediaWiki core
  • A template on the french Wikipedia

That last one isn't in gerrit.

Jack Phoenix has also provided considerable code review, project direction, and various patches of his own, and we had many other contributors and involved users throughout as well.

Project resources[edit]

Please provide links to all public, online documents and other artifacts that you created during the course of this project. Even if you have linked to them elsewhere in this report, this section serves as a centralized archive for everything you created during your project.


The best thing about trying something new is that you learn from it. We want to follow in your footsteps and learn along with you, and we want to know that you took enough risks in your project to have learned something really interesting! Think about what recommendations you have for others who may follow in your footsteps, and use the below sections to describe what worked and what didn’t.

What worked well[edit]

What did you try that was successful and you'd recommend others do? To help spread successful strategies so that they can be of use to others in the movement, rather than writing lots of text here, we'd like you to share your finding in the form of a link to a learning pattern.

What didn’t work[edit]

What did you try that you learned didn't work? What would you think about doing differently in the future? Please list these as short bullet points.

  • Doing two projects at once.
  • Taking on every role at once as a single person - developer, designer, product manager, project manager, community coordinator, outreach manager - when I'm really only good at development/design in the first place.

Both those things combined, really.

Fortunately this wasn't too bad for this project, since most of the things on the latter list that I'm the worst at had largely been taken care of already and I could mostly just focus on the development and design aspects for the project, write a few reports of dubious quality, and be done with it. Even having a volunteer manager to handle some of the overhead (and code review!) as more things came up, as well as a few others around to offload some tasks to from time to time as well, helped so much.

Even that there were two projects likely wouldn't have been much of an issue had I been able to just focus on the development of each, but I seriously underestimated how much other administrative work and outreach would be required, and how incredibly draining that type of work can be for me in particular.

Next steps and opportunities[edit]

Are there opportunities for future growth of this project, or new areas you have uncovered in the course of this grant that could be fruitful for more exploration (either by yourself, or others)? What ideas or suggestions do you have for future projects based on the work you’ve completed? Please list these as short bullet points.

  • We have a lot of MediaWiki-related and other technical projects around Wikimedia with products that are un/undermaintained and worth picking up. Developers (and those interested in becoming developers!) should just look into what interests them and see what the status is, really. Patches welcome.
  • Plenty of open tasks remaining on the Timeless workboard!

Part 2: The Grant[edit]


Actual spending[edit]

Expense Approved amount Actual funds spent Difference
Timeless skin development, outreach and research, and related expenses 16000 USD 16000 USD 0
Total 16000 USD 16000 USD 0

For the first half of the project, funds use within the specified item breaks down as follows:

  • 6700 USD for work hours
  • 1300 USD for travel to attend the Wikimedia Hackathon in Barcelona, as a part of which I also visited the WMF office in San Francisco.

For the second half:

  • 8000 USD for work hours and coffee

Remaining funds[edit]

Do you have any unspent funds from the grant?

Please answer yes or no. If yes, list the amount you did not use and explain why.

  • No


Did you send documentation of all expenses paid with grant funds to grantsadmin(_AT_), according to the guidelines here?

Please answer yes or no. If no, include an explanation.

  • No; this is a grant funding contract development work. The expenses are a part of that as such.

Confirmation of project status[edit]

Did you comply with the requirements specified by WMF in the grant agreement?

Please answer yes or no.

  • As far as I know, yes.

Is your project completed?

Please answer yes or no.

  • Yes, strangely enough!

Grantee reflection[edit]

We’d love to hear any thoughts you have on what this project has meant to you, or how the experience of being a grantee has gone overall. Is there something that surprised you, or that you particularly enjoyed, or that you’ll do differently going forward as a result of the Project Grant experience? Please share it here!

  • Next project, I need a manager. I am not a manager. I don't want to be a manager. I just want to make things and let someone else deal with all the administrative overhead and stuff. -— Isarra 00:32, 31 August 2019 (UTC)