User Details
- User Since
- Oct 23 2014, 10:14 AM (589 w, 3 d)
- Availability
- Available
- IRC Nick
- divec
- LDAP User
- Unknown
- MediaWiki User
- DChan (WMF) [ Global Accounts ]
Thu, Jan 29
Tue, Jan 27
Mon, Jan 26
We've also now implemented useTemplate, which is an alternative approach we're using for T413420. Either template or category could be useful, depending on the particular circumstances.
Thu, Jan 22
Mon, Jan 19
The current mapping was derived as follows:
Thu, Jan 15
Wed, Jan 14
Mon, Jan 12
We should decide whether or not the issues mentioned amount to a showstopper.
Jan 6 2026
Note that wgCategories is populated at load time, so won't reflect changes during the edit session. On the other hand, it does include categories that implicitly apply to the page via a template.
The mwCategory group doesn't contain hidden categories, whereas I think for this usage we do want them.
Nov 28 2025
The above refactor introduces SetTextFinder, which avoids having to rebuild normalizedQuery on every single call to ve.dm.Document#findText. It also introduces MemoizedTextFinder, which avoids rechecking the same runs of text on each document update, making it faster even than the RegExp method. Here are some rough timings on a 90k article:
Hmm I think building normalizedQuery is the slow part of ve.dm.Document#findText. On a 90k article, I'm seeing a 5000-element Set search with caseSensitiveString: true being twice as fast as caseSensitiveString: false.
Nov 25 2025
We discussed this in the dev sync, and looked at how to clone with an empty internal list, which solves the issue.
Nov 18 2025
We folded these improvements into TextMatchEditCheck in T398478 .
The alternative technique we decided on (subclassing) is sufficient for current needs, so this is no longer needed right now.
Following discussion, we decided the final implementation should use a different technique (subclassing).
Nov 13 2025
The above patch set tests lazy rendering the CE branch corresponding to each UnrenderedNode. It doesn't attach it to the CE tree (and nor, therefore, the DOM). It shows a count of rendered UnrenderedNodes as the save button caption.
Nov 12 2025
Yes, here are some differences. In all the use cases we can think of, TextMatch:
- finds an exact word or phrase,
- regardless of context,
- optionally offering one or more replacements;
Nov 11 2025
Based on our discussions, it seems like minOccurrences, and expand=paragraph generally, open up a world of new use cases that seem distinct from plain old text matching.
Nov 10 2025
As an aside, it's interesting what a large difference page complexity can make, for a given byte size. And it's not just tables. Of articles around the 99th centile point (82 kB), Parabola is particularly slow, presumably due to all the inline mathematics templates plus the images.
Nov 4 2025
Nov 3 2025
I would prioritize the ideas above as follows:
Possible optimization: Use IndexedDB to ensure VE code is cached
These benchmark timings suggest that >3 second waits should be rare on typical articles when internet connectivity is good. So any optimizations should be targeted at either large articles or slow internet connectivity. One optimization that would help with both scenarios is:
Testing on a basic device (Samsung Galaxy A13 5G) on Wifi, an average article took under 2 seconds to load:
Oct 23 2025
Oct 21 2025
Oct 9 2025
Here's an example with voice input running well over 100 characters in a single "paste". I think for a mobile user writing a paragraph from scratch, that would be pretty feasible.
Unfortunately composition events are not at all consistent across IMEs (some don't even issue them at all). I think it would be better to go with a higher limit, like say 250 chars. Coincidentally that would also help to exclude other things that are likely to be reasonable short pastes, e.g. the official long name of an institution, where copyright law / Wikipedia policy is unlikely to be relevant.
Hmm this is an intriguing idea. However there are some IMEs that "paste" a sentence at once. Below is an example with a Chinese text input method. Many voice input methods do this too I think. Therefore the thresholds would need to be high.
Sep 25 2025
Some further points here following our team discussion:
Sep 15 2025
Aug 27 2025
Aug 26 2025
I cannot reproduce the behaviour exactly as described in Step 3:
Aug 20 2025
Aug 19 2025
Thanks @cscott. Documenting what you pointed out in our engineering discussion: mwparserfromhtml is built on Parsoid, so its plaintext rendering should in principle be closer to something we can replicate in VE based on the Parsoid HTML input we load.
Aug 6 2025
As mentioned in face-to-face discussions, a use case Growth is considering is where ranges are identified in the article's content directly, obtained via REST (without loading it into VisualEditor). It is likely that mapping such ranges to ranges in a VisualEditor session would require some sort of heuristic element (e.g. matching runs of plaintext) which means the accuracy would not be 100% (e.g. due to inline templates). The optimal heuristic parameters would depend on the use cases we hope to support.
Jul 24 2025
Jul 10 2025
Jun 30 2025
On review, I think there is enough here for now. The UI is a little underdocumented, but it contains less that is unique to VisualEditor than either the DM or CE do.
Jun 26 2025
Jun 23 2025
Alternatively, investigate transaction isolation levels
Jun 19 2025
Jun 18 2025
Jun 17 2025
Per discussion, we're reinstating the Learn More links, but pointing to metawiki:NPOV .
Resolved by the merge of https://gerrit.wikimedia.org/r/1149663 .
To avoid accumulating techdebt on this, @zoe and I refactored the Edit Check architecture to always treat checks as asynchronous. For technical details, see comments under https://gerrit.wikimedia.org/r/1149663 .
Jun 16 2025
Jun 9 2025
This edit appears to include language that people might consider subjective.
May 27 2025
Final estimate was a peak load of 2.6 requests per second, and a mean load of 0.7 requests per second, if Edit Check were running on all Wikipedias for users who've completed <100 edits.
May 23 2025
Reviewed by me
May 21 2025
Done by me
Done by me
May 20 2025
Reviewed by me