On 04/07/2013 07:10 AM, Bartosz Dziewoński wrote:
> tl;dr: Let's add class="skintimestamp-YYYYMMDD" to <body> in all skins,
>             so we can make HTML+CSS changes without breaking the sites.
> 
> [Resending as it doesn't seem to have gotten through the first time.]
> 
> We need HTML versioning information needed in skins to be able to
> cleanly make incompatible CSS changes.
> 
> In the Wikimedia setup generated page HTML is cached for ~30 days
> regardless of skin HTML changes, while CSS&JS is purged at most a few
> minutes after a change is deployed.
> 
> This is a highly suboptimal situation, as this means that in every
> change that modifies both the HTML and the CSS, the CSS must be
> backwards-compatible with old HTML. This requires a lot of care and
> additional awkward testing and causes major issues when not done
> carefully enough (e.g. bug 42452), and sometimes just isn't possible
> at all unless some transitional hacks are inserted (e.g. bug 46947).
> 
> Luckily this isn't an issue for most third-party wikis, as
> `php update.php` after upgrade purges the cache entirely.
> 
> ----
> 
> I'm proposing adding another class to <body>,
> "skintimestamp-YYYYMMDD", where YYYYMMDD is the year, month and day of
> the time that given skin's HTML was last modified in an incompatible
> way. Day should be enough granularity to avoid conflicts while keeping
> the class name short enough.
> 
> This can be easily done using the addToBodyAttributes() method of the
> Skin class. The timestamp would be updated manually by whoever is
> making those changes, and the class could be used in the CSS to only
> apply new styles to newly generated HTML. Older styles could be simply
> left intact, and then removed after enough time has passed.
> 
> If multiple incompatible changes are ever done in overlapping time
> periods, the successive ones would include updates to the "old new"
> styles to use both the new and old class.
> 
> Thoughts?
> 
> [Bug for this is https://bugzilla.wikimedia.org/show_bug.cgi?id=46956 ,
> but let's keep the discussion here, please.]

Thanks, Bartosz, for clearly and collegially stating this problem and
your proposed solution!  The problem sounds like a real problem.  I
don't see any particular blockers in your proposed solution, but I do
want to watch out for one implementation detail. "The timestamp would be
updated manually by whoever is making those changes" -- could we
introduce some clever automation to propose an update every time a
relevant file is touched or a particular automated test breaks?
Otherwise we have to thoroughly educate authors and reviewers to always
update this, which sounds tedious.

Thanks again.
-- 
Sumana Harihareswara
Engineering Community Manager
Wikimedia Foundation

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to