Page MenuHomePhabricator

tstarling (Tim Starling)
UserAdministrator

Projects (18)

Today

  • Clear sailing ahead.

Tomorrow

  • Clear sailing ahead.

Tuesday

  • Clear sailing ahead.

User Details

User Since
Oct 15 2014, 8:27 PM (240 w, 3 d)
Roles
Administrator
Availability
Available
LDAP User
Tim Starling
MediaWiki User
Tim Starling (WMF) [ Global Accounts ]

Recent Activity

Fri, May 24

tstarling added a comment to T222964: WikiPEG character class optimization.

My reaction is... (holding my breadth) "why are you asking this?"

WikiPEG doesn't have a roadmap, and I haven't seen anything that says JavaScript parser generation will be phased out. WikiPEG runs on Node.js, so one would assume JS will always be supported along side PHP.

Fri, May 24, 11:22 AM · Patch-For-Review, Parsoid
tstarling updated subscribers of T202094: Deprecate Title::getUserCaseDBKey().

@daniel asked me about this, following a complaint in CR from @Simetrical that the function was deprecated despite its usage not having significantly changed since it was introduced, without apparent awareness of what it is for. The idea is that if you have a remote file repository hosted on a wiki with $wgCapitalLinks=false, or a remote file repository that is not a MediaWiki instance, then [[File:foo.jpg]] and [[File:Foo.jpg]] may refer to two different files. So to know which one was intended, you have to get the link text before it was mangled by ucfirst().

Fri, May 24, 12:45 AM · Core Platform Team Backlog (Watching / External), MW-1.33-notes (1.33.0-wmf.9; 2018-12-18), Core Platform Team (Code Health (TEC13)), MediaWiki-General-or-Unknown

Thu, May 23

tstarling added a comment to T221177: REST route handler extension interface RFC.

Task description update: I'm explicitly limiting the scope so that we can move towards approval.

Thu, May 23, 6:23 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling renamed T221177: REST route handler extension interface RFC from Route Handler Interface RFC to REST route handler extension interface RFC.
Thu, May 23, 6:21 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling edited projects for T223646: Create a policy on importing global classes, added: Code-Health; removed TechCom.

We don't think this needs TechCom involvement. Maybe Code Health is interested?

Thu, May 23, 5:59 AM · MediaWiki-Codesniffer, Code-Health
tstarling added a comment to T187147: Port mediawiki/php/wmerrors to PHP7 and deploy.

Basic porting work on wmerrors is hopefully complete.

Thu, May 23, 4:09 AM · MW-1.34-notes (1.34.0-wmf.7; 2019-05-28), Core Platform Team Kanban (Doing), wmerrors, Wikimedia-Logstash, MediaWiki-Logging, Operations, User-herron, Patch-For-Review, PHP 7.2 support, Core Platform Team (PHP7 (TEC4)), Performance-Team (Radar)

Tue, May 21

tstarling added a comment to T222964: WikiPEG character class optimization.

Why are you doing this? The JavaScript code will soon only be used by the compiler itself.

Tue, May 21, 10:59 AM · Patch-For-Review, Parsoid
tstarling added a comment to T223296: proposal: new &? !? and ~? predicates.

Would you accept a new feature request for @ operator that's compatible with PEG.js?

Tue, May 21, 10:14 AM · Patch-For-Review, Parsoid

Mon, May 20

tstarling closed T223296: proposal: new &? !? and ~? predicates as Declined.

Yes we need an operator which selects an element of a sequence and makes it the return value from the sequence. My previous idea for the selection operator was "@". I don't think we need a discard operator. The semantics are awkward if you try to discard the only element of a sequence, especially if the sequence is at the top level of a rule. This was the problem I had in trying to make parameter capture not return a result -- eventually I gave up and made it the same as an assertion. This may be the reason PEG.js has assertions that return values in the first place, it's definitely convenient when expressions always return values.

Mon, May 20, 7:13 AM · Patch-For-Review, Parsoid
tstarling added a comment to T146257: Create objectcache/BagOStuff library.

Would you move the classes to a namespace? If so, would the b/c aliases be part of the library?

Mon, May 20, 6:53 AM · Patch-For-Review, User-Addshore, MediaWiki-Cache, Librarization
tstarling added a comment to T221177: REST route handler extension interface RFC.

BagOStuff is in includes/libs/, which in theory means it's in a state where it could be put into a library as-is (i.e. it has no dependencies on MediaWiki). MediaWiki-specific implementations such as SqlBagOStuff are in includes/objectcache/.

Mon, May 20, 6:52 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Thu, May 16

tstarling added a comment to T221177: REST route handler extension interface RFC.

Latest task description edit: RequestInterface::getParsedBody() has been removed, replaced by getPostParams().

Thu, May 16, 3:25 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated the task description for T221177: REST route handler extension interface RFC.
Thu, May 16, 3:24 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Wed, May 15

tstarling moved T221177: REST route handler extension interface RFC from Inbox to Request IRC meeting on the TechCom-RFC board.
Wed, May 15, 9:19 PM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling reassigned T223240: REST API ResponseFactory from tstarling to Tgr.
Wed, May 15, 6:28 AM · MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Tue, May 14

tstarling updated the task description for T221177: REST route handler extension interface RFC.
Tue, May 14, 6:39 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

To do that, we will need to extend ResponseInterface with a cookie-setting method. It needn't actually wrap WebResponse, instead EntryPoint could use the collected data to call WebResponse's existing method. Adding a cookie-getting method to RequestInterface seems less needed, but it'd also be simple enough. WebRequest::getCookie() seems simple enough to just copy if we omit the Unicode normalization bit that's only intended for $_GET anyway.

Tue, May 14, 6:34 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated the task description for T221177: REST route handler extension interface RFC.
Tue, May 14, 3:14 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated subscribers of T221177: REST route handler extension interface RFC.

Question from @Krinkle from Gerrit: can getLastModified() be omitted? You can construct an ETag from a timestamp, so ETag is a more generic facility.

Tue, May 14, 3:10 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Mon, May 13

tstarling added a comment to T221177: REST route handler extension interface RFC.

Some questions copied from the task description:

Mon, May 13, 1:04 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated the task description for T221177: REST route handler extension interface RFC.
Mon, May 13, 12:42 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T187154: Consider enabling wgExtensionInfoMTime in wmf-production.

Aaron also pointed out we should look into why there is the overhead we see because in theory the overhead should be minimal given the os and php filestat cache. But perhaps the lookups are slow when done 100s of times? Or (Aaron suspects) that maybe the filestat cache size is not big enough and entires are being pushed out.

If that's the case we should see if we can increase the stat cache size on app servers.

Mon, May 13, 12:08 AM · Core Platform Team (Security, stability, performance and scalability (TEC1)), Core Platform Team Backlog (Later), Performance-Team (Radar), Wikimedia-Site-requests

Fri, May 10

tstarling added a project to T221177: REST route handler extension interface RFC: TechCom-RFC.
Fri, May 10, 6:57 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated the task description for T221177: REST route handler extension interface RFC.
Fri, May 10, 6:54 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Thu, May 9

tstarling added a comment to T222224: Normalizing *links tables.

I mentioned in TechCom that DB normalisation can sometimes cause performance problems with range queries. For example, if a page has a very large number of outbound links, and you want to page through them, sorted by title. In general, since an index can only aggregate fields in a single table, splitting a table may require the loss of such indexes, which can cause performance degradation. I'm not aware of any actual instances of this query pattern in the links tables, but Daniel asked me to make a note of this concern.

Thu, May 9, 6:11 AM · MediaWiki-Database, TechCom-RFC

Wed, May 8

tstarling added a comment to T221177: REST route handler extension interface RFC.

I wrote a "path template matcher" class based on the tree building code I previously pasted. It's decoupled from the router and could go in a separate library. I wrote a benchmark script for it, which uses path templates like '/6/{8}/{9}/1/2/{7}'. They are random templates of length 1-6 where 30% of the path components are parameters, filtered in advance to remove conflicts. For 1000 such templates, it takes about 12ms to build the tree, and 1.3µs to match a path against it. The paths were prefiltered so that they always matched a template. This is a very rough model for intended usage. But it supports the proposition that tree based routing is an efficient approach to matching templates, but that a cache of the routing tree is required.

Wed, May 8, 12:33 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Mon, May 6

tstarling added a comment to T221177: REST route handler extension interface RFC.

Most are just to generate the right version when manually calling header( "HTTP/1.1 404 Not Found" ) or the like. The one in OutputHandler was added in rSVN19996 to send a Content-Length header to HTTP/1.0 clients; it doesn't specify why it's not also including it for 1.1 clients.

Mon, May 6, 11:36 PM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
jrbs awarded T6845: CAPTCHA doesn't work for blind people a Heartbreak token.
Mon, May 6, 6:32 PM · Security, WCAG-Level-A, Security-Extensions, Design, Accessibility, ConfirmEdit (CAPTCHA extension)
tstarling added a comment to T221177: REST route handler extension interface RFC.

Comparison of WebRequest and PSR-7 ServerRequestInterface:

Mon, May 6, 7:27 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Fri, May 3

tstarling added a comment to T221177: REST route handler extension interface RFC.

I've been reading PSR-7. We already have Guzzle's PSR-7 library as a core dependency, so we could use GuzzleHttp\Psr7\ServerRequest as the parent class of our Rest\Request. ServerRequest::fromGlobals() is wrong for us, but we could have an implementation that gets data from WebRequest. There is ServerRequest::getAttributes() which, PSR-7 strongly suggests, is supposed to have template variables from the path, so that would replace my Request::getParams().

Fri, May 3, 5:33 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

That's the kind of thing you'd use a middleware for.
...
Keeps the framework simple, keeps handlers flexible in case they need to do something strange (e.g. do the date / etag check in some unusual way).

Fri, May 3, 3:29 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Thu, May 2

tstarling added a comment to T221177: REST route handler extension interface RFC.

OK, let's use ObjectFactory.

Thu, May 2, 9:28 PM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

Mostly yes. But I think that it's mixing response and handler for instance. lastmodified as mentioned in this proposal, is a response property and thus does not belong in a standard Handler class. In Laravel, you would 1 of three things:

  • create a MySpecializedResponse, initialized (incl. LastModified) by a factory based on your model
  • say that your Handler uses LastModifiedTrait to provide the getLastModified and then Router checks for the function being present and then enforcing it on the response.
  • add a MyETAGMiddleware to conditionally check if your ModelType requires setting the eTAG and then doing it.
Thu, May 2, 11:01 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling updated subscribers of T221177: REST route handler extension interface RFC.
Thu, May 2, 10:34 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

I went through a few iterations on the API in the last couple of days. Here's my current favourite. First the verbose interface:

Thu, May 2, 1:21 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Wed, May 1

tstarling added a comment to T221177: REST route handler extension interface RFC.

Several REST libraries have "reverse routing", i.e. serialization of parameters into a URL. That requires named routes, or some other way to refer to a route, since you don't want to have to provide the full template in order to serialize parameters. Do we need that?

Wed, May 1, 11:56 PM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

One thing I brought up tonight in the meeting is that HyperSwitch uses OpenAPI 3.0 to define routes. It's a unique architecture in my experience!

UPDATE: It's actually a pretty well-established architecture; it's how Swagger works, after all.

Wed, May 1, 3:27 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling edited P8463 detect-template-ambiguity.php.
Wed, May 1, 2:31 AM
tstarling added a comment to T221177: REST route handler extension interface RFC.

Real ambiguity is pretty hard to detect, in both directions:

  • the template pair /foo/{var}/baz and /foo/bar/{var} is ambiguous, but short of turning one into a regexp, matching against the other, and doing that for all pairings of templates, I don't think you can detect it.
Wed, May 1, 2:29 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling created P8464 detect-template-ambiguity sample.
Wed, May 1, 2:11 AM
tstarling created P8463 detect-template-ambiguity.php.
Wed, May 1, 2:10 AM
tstarling added a comment to T221177: REST route handler extension interface RFC.

I for one prefer /{type}/{id}.{format}, like /page/Main_Page.json. And having URLs for related resources under that "directory", like /page/Main_Page/revisions. It's tricky, since in this case our page titles allow "/", but I think that can be fudged...?

Wed, May 1, 12:22 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Tue, Apr 30

tstarling updated subscribers of T221177: REST route handler extension interface RFC.
  • Resources identified using a path hierarchy.

Note this conflicts with module prefixes somewhat. The typical REST API approach is something like /<resource type>/<representation>/<id>, e.g. /page/html/Barack_Obama. But a large number of APIs will provide functionality for the same small set of resource types (page, revision, user etc) and often an extension will provide functionality for several different resource types.

Tue, Apr 30, 5:35 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Mon, Apr 29

tstarling updated subscribers of T221177: REST route handler extension interface RFC.

There's no single accepted definition of a REST API. Is this a fair summary of what we are building here?

Mon, Apr 29, 5:27 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T221177: REST route handler extension interface RFC.

Library surveys and some related thoughts.

Mon, Apr 29, 4:17 AM · TechCom-RFC, Patch-For-Review, MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)
tstarling added a comment to T219959: REST API Router.

I suggest merging this task with T221177. The same things are being discussed in both places.

Mon, Apr 29, 2:07 AM · MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Apr 25 2019

tstarling closed T221858: Release wikipeg 2.0.3 through npm as Resolved.

I added cscott, arlolra and subbu as maintainers.

Apr 25 2019, 11:55 PM · Patch-For-Review, Parsoid

Apr 24 2019

tstarling added a comment to T219959: REST API Router.

I would lean towards option 1, rest.php. Special pages are mostly for UIs, not APIs. Actions usually have a required title parameter and are intended for taking an action on a page.

Apr 24 2019, 3:55 AM · MediaWiki-REST-API, Core Platform Team (Parsoid REST API in PHP (CDP2)), Core Platform Team Kanban (Doing)

Apr 22 2019

tstarling lowered the priority of T219942: Analyse performance of the PHP tokenizer code and do any necessary optimisation work from Normal to Low.
Apr 22 2019, 11:59 PM · Core Platform Team (Parsoid PHP (CDP2)), Parsoid-PHP

Apr 17 2019

tstarling added a comment to T219942: Analyse performance of the PHP tokenizer code and do any necessary optimisation work.

"Keyword set extraction" is actually on my PEG.js idea list from 2016. I wrote a note "Find minimum prefix length. Construct a switch case for each unique substring of the minimum length." I think what stopped me at the time was fear of corrupting the stops stack by omitting execution of impossible choices. Now that we have rule parameters, it should be feasible.

Apr 17 2019, 5:04 AM · Core Platform Team (Parsoid PHP (CDP2)), Parsoid-PHP
tstarling added a comment to T219942: Analyse performance of the PHP tokenizer code and do any necessary optimisation work.

I've done an initial pass on this, and written a series of changes to both WikiPEG and Parsoid:

Apr 17 2019, 4:49 AM · Core Platform Team (Parsoid PHP (CDP2)), Parsoid-PHP
tstarling renamed Core Platform Team (Parsoid PHP (CDP2)) from Parsoid PHP (CPD2) to Parsoid PHP (CDP2).
Apr 17 2019, 4:06 AM

Apr 12 2019

tstarling closed T219341: Cross-language test suite for WikiPEG as Resolved.
Apr 12 2019, 5:30 AM · Patch-For-Review, Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Parsoid-PHP
tstarling closed T219341: Cross-language test suite for WikiPEG, a subtask of T219339: PHP generator backend for WikiPEG, as Resolved.
Apr 12 2019, 5:30 AM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP
tstarling added a comment to T176916: Set up sampling profiler for PHP 7 (alternative to HHVM Xenon).

Is it feasible to always traverse the whole stack?

I know this sounds like a naive ask, and from your description I'm guessing that would be too expensive (which totally makes sense). But it's unclear to me how this compares to related to PHP functions debug_backtrace() and ( new RuntimeException() )->getTraceAsString(). We we use regularly in production code, and appear to do this.

Apr 12 2019, 1:57 AM · Core Platform Team Kanban (Doing), PHP 7.1 support, Core Platform Team (PHP7 (TEC4)), Performance-Team

Apr 11 2019

tstarling added a comment to T208776: Introduce PageIdentity to be used instead of Title.

How would this help to remove the cyclic dependency between User and Title? I was looking at those classes last night, and the dependencies between them don't seem related to this proposal. There is User::isWatched() etc., which is already a wrapper around WatchedItemStore, so the dependency could be removed by just moving it fully to WatchedItemStore and deprecating the wrapper. Similarly Title::getUserPermissionsErrors() is now a deprecated wrapper for PermissionManager, and most of the other uses of User in Title could receive similar treatment.

Apr 11 2019, 11:31 PM · TechCom-RFC, Core Platform Team (Decoupling (CDP2)), Core Platform Team Backlog (Later)
tstarling added a comment to T176916: Set up sampling profiler for PHP 7 (alternative to HHVM Xenon).
  1. Assuming I understood correctly that we trim from the start currently, is this something we can/should change?
  2. How big a stack depth would you be comfortable with?
Apr 11 2019, 5:48 AM · Core Platform Team Kanban (Doing), PHP 7.1 support, Core Platform Team (PHP7 (TEC4)), Performance-Team
tstarling added a comment to T220514: MediaWiki web installer do not show extension when their dependency is missing.

I'm thinking about how to fix this. In the meantime, for CI, if you know the extension list, you could pass it to the --extensions option of install.php. That way you would get an error even if the extension directory is missing, which sounds like it would be a useful sanity check.

Apr 11 2019, 4:16 AM · MW-1.33-release, Patch-For-Review, Continuous-Integration-Infrastructure, MediaWiki-Installer

Apr 10 2019

tstarling added a comment to T220563: Undefined index: june in DateFormatter.php (makeIsoMonth).

The months are combined into a regex without preg_quote(), which wasn't quite so bad in the original commit, which only supported English and thus fairly well-known and well-behaved month names. Now that other language are supported, it becomes a problem, since for example German has "jun" => "Jun.". So the bug can be reproduced with:

Apr 10 2019, 2:40 AM · MW-1.33-notes (1.33.0-wmf.25; 2019-04-09), MW-1.34-notes (1.34.0-wmf.1; 2019-04-16), Wikimedia-production-error, MediaWiki-Parser
tstarling added a comment to T220563: Undefined index: june in DateFormatter.php (makeIsoMonth).

A significant amount of DateFormatter.php is unchanged since I introduced it in November 2003, including makeIsoMonth() and the check of its return value. It was one of the first things I wrote in PHP. I was developing with PHP notices disabled at the time. Code was often committed that emitted notices, we just had them disabled in production. It took a while for us to make it a development policy to not emit notices.

Apr 10 2019, 1:26 AM · MW-1.33-notes (1.33.0-wmf.25; 2019-04-09), MW-1.34-notes (1.34.0-wmf.1; 2019-04-16), Wikimedia-production-error, MediaWiki-Parser
tstarling added a comment to T220563: Undefined index: june in DateFormatter.php (makeIsoMonth).

It's probably just a change in the input text, not a change in the code. DateFormatter.php is obviously broken, line 260 calls makeIsoMonth() speculatively, and checks if the return value is false or "00", anticipating this error but not the notice that goes with it. $fail is set to true, but $bits['m'] is subsequently used anyway, even though it is unset. It's used to construct text that is subsequently thrown away at line 314, and then used again unconditionally at line 321.

Apr 10 2019, 12:44 AM · MW-1.33-notes (1.33.0-wmf.25; 2019-04-09), MW-1.34-notes (1.34.0-wmf.1; 2019-04-16), Wikimedia-production-error, MediaWiki-Parser

Apr 3 2019

tstarling added a comment to T219279: Some pages will become completely unreachable after PHP7 update due to Unicode changes.

I see now that the ligatures are indeed changing, but there is only one affected username:

Apr 3 2019, 9:22 PM · Core Platform Team Kanban (Waiting for Review), MW-1.34-notes (1.34.0-wmf.4; 2019-05-07), Patch-For-Review, Core Platform Team (PHP7 (TEC4)), serviceops, Operations, PHP 7.2 support, MediaWiki-General-or-Unknown
tstarling added a comment to T219279: Some pages will become completely unreachable after PHP7 update due to Unicode changes.

Excluding the ligatures, since I think they are correct already in HHVM, there are only four affected usernames:

Apr 3 2019, 8:47 PM · Core Platform Team Kanban (Waiting for Review), MW-1.34-notes (1.34.0-wmf.4; 2019-05-07), Patch-For-Review, Core Platform Team (PHP7 (TEC4)), serviceops, Operations, PHP 7.2 support, MediaWiki-General-or-Unknown

Mar 27 2019

D3r1ck01 awarded T205059: Excimer: new profiler for PHP a Party Time token.
Mar 27 2019, 1:25 PM · serviceops, Core Platform Team (PHP7 (TEC4)), Excimer, Core Platform Team Kanban (Doing), Performance-Team (Radar), PHP 7.1 support

Mar 26 2019

tstarling triaged T219341: Cross-language test suite for WikiPEG as Normal priority.
Mar 26 2019, 11:07 PM · Patch-For-Review, Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Parsoid-PHP
tstarling triaged T219339: PHP generator backend for WikiPEG as Normal priority.
Mar 26 2019, 11:02 PM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP
tstarling triaged T219337: Port Parsoid tokenizer to PHP as Normal priority.
Mar 26 2019, 11:02 PM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP
tstarling created T219339: PHP generator backend for WikiPEG.
Mar 26 2019, 11:00 PM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP
tstarling updated the task description for T219337: Port Parsoid tokenizer to PHP.
Mar 26 2019, 10:57 PM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP
tstarling created T219337: Port Parsoid tokenizer to PHP.
Mar 26 2019, 10:56 PM · Core Platform Team (Parsoid PHP (CDP2)), Core Platform Team Kanban (Doing), Patch-For-Review, Parsoid-PHP

Mar 22 2019

Jdforrester-WMF awarded T166010: The Great Namespaceization and Reorg a Like token.
Mar 22 2019, 8:42 PM · TechCom-RFC (TechCom-Approved), TechCom, Core Platform Team (Code Health (TEC13)), Core Platform Team Backlog (Epic), Epic

Mar 21 2019

tstarling created P8249 (An Untitled Masterwork).
Mar 21 2019, 4:10 AM

Mar 20 2019

tstarling closed T216295: RFC: Update to Gerrit privilege policy as Resolved.
Mar 20 2019, 8:42 PM · TechCom-RFC (TechCom-Approved), Developer-Advocacy

Mar 16 2019

dbarratt awarded T214998: Remove .m. subdomain, serve mobile and desktop variants through the same URL a Love token.
Mar 16 2019, 2:25 PM · TechCom-RFC, Readers-Web-Backlog (Tracking), Traffic, Operations, MobileFrontend
tstarling edited projects for T218135: +2 in mediawiki/* for WMDE engineers, added: MediaWiki-Gerrit-Group-Requests; removed Repository-Ownership-Requests.
Mar 16 2019, 1:59 AM · MediaWiki-Gerrit-Group-Requests
tstarling edited projects for T218362: +2 for Ciencia Al Poder in mediawiki/tools/grabbers, added: Gerrit-Privilege-Requests; removed Repository-Ownership-Requests.
Mar 16 2019, 1:58 AM · Gerrit-Privilege-Requests, Utilities-grabbers
tstarling archived Repository-Ownership-Requests.
Mar 16 2019, 1:58 AM

Mar 14 2019

TerraCodes awarded T214998: Remove .m. subdomain, serve mobile and desktop variants through the same URL a Dislike token.
Mar 14 2019, 7:31 AM · TechCom-RFC, Readers-Web-Backlog (Tracking), Traffic, Operations, MobileFrontend
tstarling added a comment to T217850: Remex could use some helper/utility classes.

I punted on this originally, hoping that once we had some users, we would know what pipelines are most commonly used and thus need shortcuts to access them. But last time I checked, I think everyone was using a different pipeline. Maybe we need a pipeline builder class, with chainable mutator methods and sensible defaults, so that even diverse use cases can be catered for. A possibly complimentary option is to have local convenience functions, so that the kind of pipeline Parsoid generally needs would be provided by a utility class within Parsoid.

Mar 14 2019, 12:01 AM · RemexHtml

Mar 13 2019

tstarling edited projects for T193049: Make MGChecker maintainer of Extension:LanguageTag & InteractiveBlockMessage, added: Gerrit-Privilege-Requests; removed Repository-Ownership-Requests.
Mar 13 2019, 4:37 AM · Gerrit-Privilege-Requests
tstarling edited projects for T212452: Requesting repository ownership : Push, added: Gerrit-Privilege-Requests; removed Repository-Ownership-Requests.
Mar 13 2019, 4:36 AM · Gerrit-Privilege-Requests
tstarling set the color for MediaWiki-Gerrit-Group-Requests to Violet.
Mar 13 2019, 4:36 AM
tstarling set the icon for Gerrit-Privilege-Requests to Group.
Mar 13 2019, 4:35 AM
tstarling edited projects for T214618: Requesting repository ownership for /mediawiki/extensions/OdbcDatabase, added: Gerrit-Privilege-Requests; removed Repository-Ownership-Requests.
Mar 13 2019, 4:33 AM · Gerrit-Privilege-Requests
tstarling created Gerrit-Privilege-Requests.
Mar 13 2019, 4:15 AM
tstarling created MediaWiki-Gerrit-Group-Requests.
Mar 13 2019, 4:13 AM
tstarling moved T191231: RFC: Abstract schemas and schema changes from Request IRC meeting to Under discussion on the TechCom-RFC board.
Mar 13 2019, 2:23 AM · Patch-For-Review, User-Addshore, Core Platform Team (Code Health (TEC13)), Core Platform Team Backlog (Epic), TechCom-RFC, SQLite, Oracle Database, MSSQL, PostgreSQL, MediaWiki-Database, Epic
tstarling moved T217158: RFC: Skin templating from Under discussion to Request IRC meeting on the TechCom-RFC board.

That said, I think the proposal is ready for an IRC meeting to finish discussing it. There are still some unresolved things such as how to handle caching of skins, which I can't entirely qualify by myself.

Mar 13 2019, 2:16 AM · TechCom-RFC

Mar 10 2019

tstarling created T218000: Set up CI for wikipeg.
Mar 10 2019, 11:08 PM · Patch-For-Review, Continuous-Integration-Config

Mar 9 2019

Platonides awarded T214998: Remove .m. subdomain, serve mobile and desktop variants through the same URL a Like token.
Mar 9 2019, 9:40 PM · TechCom-RFC, Readers-Web-Backlog (Tracking), Traffic, Operations, MobileFrontend

Mar 7 2019

tstarling added a comment to T217708: Remex should offer an option to not set namespaceURI.

Element namespaces are specified in detail in the HTML 5 parsing spec, and are required for compliance, in order to support MathML and SVG fragments embedded in HTML. Elements with the same tag name can have different content models depending on the namespace they are in. But once the element comes out of TreeBuilder you are free to throw away whatever you like.

Mar 7 2019, 12:30 AM · Patch-For-Review, RemexHtml
tstarling added a comment to T217708: Remex should offer an option to not set namespaceURI.

I don't think it needs to be refactored. You can just have an option to DOMBuilder which tells it to ignore namespaces. TreeBuilder needs to keep track of namespaces, and it stores them in Element objects, but Element objects are just temporary state, there is no requirement for DOMBuilder to retain the information from Element.

Mar 7 2019, 12:16 AM · Patch-For-Review, RemexHtml

Mar 4 2019

D3r1ck01 awarded T166010: The Great Namespaceization and Reorg a 100 token.
Mar 4 2019, 5:41 PM · TechCom-RFC (TechCom-Approved), TechCom, Core Platform Team (Code Health (TEC13)), Core Platform Team Backlog (Epic), Epic
Ladsgroup awarded T166010: The Great Namespaceization and Reorg a Love token.
Mar 4 2019, 5:38 PM · TechCom-RFC (TechCom-Approved), TechCom, Core Platform Team (Code Health (TEC13)), Core Platform Team Backlog (Epic), Epic

Feb 27 2019

Ladsgroup awarded T176370: Migrate to PHP 7 in WMF production a Love token.
Feb 27 2019, 12:29 PM · Core Platform Team Kanban (Doing), Core Platform Team (PHP7 (TEC4)), Patch-For-Review, TechCom-RFC (TechCom-Approved), User-ArielGlenn, HHVM, Operations

Feb 18 2019

tstarling created P8102 https://gerrit.wikimedia.org/r/#/c/mediawiki/services/parsoid/+/490564/.
Feb 18 2019, 10:30 AM

Feb 11 2019

tstarling added a comment to T209565: Dry run for normalizeThrottleParameters.php.
arwiki:  Throttle count and period are malformed or empty for the following filters: 66, 96. Please fix them by hand in the way they're meant to be, then launch the script again.
cawiki:  normalizeThrottleParameter has found 1 rows to change in abuse_filter_action for the following IDs: 9
cawiki:  normalizeThrottleParameter would insert 1 rows in abuse_filter_history for the following filters: 9
cawiki:  Throttle parameter normalization would change a total of 2 rows.
cawikinews:  normalizeThrottleParameter has found 1 rows to change in abuse_filter_action for the following IDs: 15
cawikinews:  normalizeThrottleParameter would insert 1 rows in abuse_filter_history for the following filters: 15
cawikinews:  Throttle parameter normalization would change a total of 2 rows.
dawiki:  Throttle groups are empty for the following filters: 5. Please add some groups or disable throttling, then launch the script again.
glwiki:  Throttle groups are empty for the following filters: 15. Please add some groups or disable throttling, then launch the script again.
mrwiki:  Throttle count and period are malformed or empty for the following filters: 9. Please fix them by hand in the way they're meant to be, then launch the script again.
rowiki:  Throttle groups are empty for the following filters: 67. Please add some groups or disable throttling, then launch the script again.
trwiki:  normalizeThrottleParameter has found 5 rows to change in abuse_filter_action for the following IDs: 37, 46, 47, 48, 50
trwiki:  normalizeThrottleParameter would insert 5 rows in abuse_filter_history for the following filters: 37, 46, 47, 48, 50
trwiki:  Throttle parameter normalization would change a total of 10 rows.
ukwiki:  Throttle groups are empty for the following filters: 29, 30, 53. Please add some groups or disable throttling, then launch the script again.
Feb 11 2019, 4:37 AM · MW-1.33-notes (1.33.0-wmf.22; 2019-03-19), User-notice, Patch-For-Review, MW-1.32-release, Core Platform Team Kanban (Doing), Core Platform Team (Security, stability, performance and scalability (TEC1)), Wikimedia-maintenance-script-run, AbuseFilter

Feb 8 2019

tstarling added a comment to T209565: Dry run for normalizeThrottleParameters.php.

Thanks for all your work on this, @Daimona. If the number of unfixable filters is small (<50) then I would be inclined to fix them manually, since changing the script takes a while, and a bug in the script could cause data corruption. Also, I don't think you should do do any more performance optimisations on this script, since the time it takes to write and review them is presumably much larger than the amount of time they will save. IIRC the script only takes a second or two per wiki.

Feb 8 2019, 2:19 AM · MW-1.33-notes (1.33.0-wmf.22; 2019-03-19), User-notice, Patch-For-Review, MW-1.32-release, Core Platform Team Kanban (Doing), Core Platform Team (Security, stability, performance and scalability (TEC1)), Wikimedia-maintenance-script-run, AbuseFilter

Feb 7 2019

tstarling committed rMSCA070c0a5e181c: Run rebuildLocalisationCache.php as www-data (authored by tstarling).
Run rebuildLocalisationCache.php as www-data
Feb 7 2019, 12:10 PM
tstarling committed rMSCA68d383989ed8: Run rebuildLocalisationCache.php as www-data (authored by tstarling).
Run rebuildLocalisationCache.php as www-data
Feb 7 2019, 12:10 PM