for (;;);{"error":null,"payload":{"timeline":"\u003cdiv class=\"phui-timeline-older-transactions-are-hidden\" data-sigil=\"show-older-block\"\u003eThere are a very large number of changes, so older changes are hidden. \u003ca href=\"\/transactions\/showolder\/PHID-TASK-o47oln57tv4tbvxqwo62\/?after=5755642&quoteTargetID=UQ0_1&quoteRef=T241180\" data-mustcapture=\"1\" data-sigil=\"show-older-link\"\u003eShow Older Changes\u003c\/a\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_192\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/vujzl5hgii6pty7gvjgn\/PHID-FILE-dyybnatmpguzojq462gd\/92b8c4-alphanumeric_lato-white_D.png-0%2C0%2C0%2C0.3.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/DannyS712\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5755642\" id=\"5755642\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_191\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/DannyS712\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_0\"\u003eDannyS712\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5755642\" data-sigil=\"has-tooltip\" data-meta=\"0_190\"\u003e\u003cspan class=\"screen-only\"\u003eDec 19 2019, 11:07 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-19 23:07:58 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_195\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/woaup5gfhgyt3xpvwi4f\/PHID-FILE-xcnwlpurjz3rsuiv56td\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tgr\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5755655\" id=\"5755655\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_194\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tgr\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_60\"\u003eTgr\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5755655\" data-sigil=\"has-tooltip\" data-meta=\"0_193\"\u003e\u003cspan class=\"screen-only\"\u003eDec 19 2019, 11:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-19 23:14:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_198\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/iir5jbauup65hgghykcf\/PHID-FILE-65jkktwkqmfsnzefodpb\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/matthiasmullie\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756205\" id=\"5756205\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_197\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/matthiasmullie\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_61\"\u003ematthiasmullie\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756205\" data-sigil=\"has-tooltip\" data-meta=\"0_196\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 7:56 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 07:56:40 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_201\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3b2u6t3rpqitrnep34og\/PHID-FILE-jphtzkuxubpx5bfnxwqv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Pablo-WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756335\" id=\"5756335\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_200\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Pablo-WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_62\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Pablo-WMDE\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756335\" data-sigil=\"has-tooltip\" data-meta=\"0_199\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 8:59 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 08:59:14 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_204\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3zykhqrr7oc6zlvpks3q\/PHID-FILE-2ht3vu5zqzkppfnws54h\/profile-Schottlender%2C_Moriel_March_2014.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Mooeypoo\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756343\" id=\"5756343\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_203\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Mooeypoo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_63\"\u003eMooeypoo\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756343\" data-sigil=\"has-tooltip\" data-meta=\"0_202\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:02 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 09:02:22 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_207\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/24kjulskdfpovj576ie3\/PHID-FILE-2oozvnh6ixmaiqbes6qz\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756375\" id=\"5756375\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_206\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_64\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Tonina_Zhelyazkova_WMDE\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756375\" data-sigil=\"has-tooltip\" data-meta=\"0_205\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:20 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 09:20:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_210\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/d2jbgpbfrur5bcozllul\/PHID-FILE-qajhkccumyez26hhhmkl\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jakob_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756376\" id=\"5756376\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_209\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jakob_WMDE\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_65\"\u003eJakob_WMDE\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756376\" data-sigil=\"has-tooltip\" data-meta=\"0_208\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:21 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 09:21:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_214\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/24kjulskdfpovj576ie3\/PHID-FILE-2oozvnh6ixmaiqbes6qz\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756415\" id=\"5756415\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_212\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_213\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_66\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Tonina_Zhelyazkova_WMDE\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756415\" data-sigil=\"has-tooltip\" data-meta=\"0_211\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:35 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 09:35:00 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_219\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/m25d4sm73mzvfxk7efxx\/PHID-FILE-zigk2s47ziyr7hqvpw7v\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Ladsgroup\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5756768\" id=\"5756768\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_216\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_217\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Ladsgroup\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_67\"\u003eLadsgroup\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5756768\" data-sigil=\"has-tooltip\" data-meta=\"0_215\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 11:37 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 11:37:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_218\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Ladsgroup\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_68\"\u003eLadsgroup\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_223\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3ndsxtl44eofytwep42p\/PHID-FILE-4ybkrghfwjvx4ndzbgkv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/kchapman\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757159\" id=\"5757159\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_221\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_222\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/kchapman\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_69\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e kchapman\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757159\" data-sigil=\"has-tooltip\" data-meta=\"0_220\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 2:27 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 14:27:01 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_227\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/pdvgf6bwbegtkliymkn2\/PHID-FILE-xratrbg4u35mp2lcxckv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Masumrezarock100\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757378\" id=\"5757378\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_225\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-like-1 phui-timeline-token\" data-meta=\"0_226\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Masumrezarock100\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_70\"\u003eMasumrezarock100\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757378\" data-sigil=\"has-tooltip\" data-meta=\"0_224\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 4:12 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 16:12:09 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_230\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ua6pmaml7tfotckpwxff\/PHID-FILE-g6ae7dx6rjstwerekelo\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dr0ptp4kt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757467\" id=\"5757467\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_229\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dr0ptp4kt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_71\"\u003edr0ptp4kt\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757467\" data-sigil=\"has-tooltip\" data-meta=\"0_228\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 4:42 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 16:42:15 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_234\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/mvnjsjyjh423h34xyed4\/PHID-FILE-3txutfsig4f57m4sphwq\/b888c9-alphanumeric_lato-white_A.png-255%2C255%2C255%2C0.4.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/AnneT\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757598\" id=\"5757598\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_232\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_233\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/AnneT\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_72\"\u003eAnneT\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757598\" data-sigil=\"has-tooltip\" data-meta=\"0_231\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 5:19 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 17:19:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_237\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/mvnjsjyjh423h34xyed4\/PHID-FILE-3txutfsig4f57m4sphwq\/b888c9-alphanumeric_lato-white_A.png-255%2C255%2C255%2C0.4.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/AnneT\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757605\" id=\"5757605\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_236\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/AnneT\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_73\"\u003eAnneT\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757605\" data-sigil=\"has-tooltip\" data-meta=\"0_235\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 5:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 17:21:49 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_241\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/dghib42waatwlgvm4hk4\/PHID-FILE-4gigwuzypxvaafwfpes5\/335862-alphanumeric_aleo-white_N.png-0%2C0%2C0%2C0.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/nray\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5757733\" id=\"5757733\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_239\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-like-1 phui-timeline-token\" data-meta=\"0_240\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/nray\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_74\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e nray\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757733\" data-sigil=\"has-tooltip\" data-meta=\"0_238\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 6:24 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 18:24:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_252\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/dghib42waatwlgvm4hk4\/PHID-FILE-4gigwuzypxvaafwfpes5\/335862-alphanumeric_aleo-white_N.png-0%2C0%2C0%2C0.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/nray\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/17\/\" data-sigil=\"has-tooltip\" data-meta=\"0_250\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_251\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5757784\" id=\"5757784\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_249\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/nray\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_76\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e nray\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5757784\" data-sigil=\"has-tooltip\" data-meta=\"0_248\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 6:32 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 18:32:08 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_246\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_247\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_75\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThanks so much to all the people involved in making this happen (FAWG, \u003ca href=\"\/p\/Niedzielski\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_1\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@Niedzielski\u003c\/span\u003e\u003c\/a\u003e, others)! The points outlined in the RFC are articulated very well, and I am excited for the future ahead\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_255\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ivwhf47velzhvezdacv6\/PHID-FILE-2w7kcbyh7ae7il5d24k5\/799a6d-alphanumeric_lato-white_S.png-255%2C255%2C255%2C0.7.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Saturae\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5758088\" id=\"5758088\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_254\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Saturae\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_77\"\u003eSaturae\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5758088\" data-sigil=\"has-tooltip\" data-meta=\"0_253\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:09 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 21:09:55 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_260\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/cb7drpxbvgenyzwrkksf\/PHID-FILE-547pv3cgz3h7hfu24c3h\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/MSantos\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5758118\" id=\"5758118\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_257\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_258\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/MSantos\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_78\"\u003eMSantos\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5758118\" data-sigil=\"has-tooltip\" data-meta=\"0_256\"\u003e\u003cspan class=\"screen-only\"\u003eDec 20 2019, 9:13 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-20 21:13:54 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_259\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/MSantos\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_79\"\u003eMSantos\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_263\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/5rgojmch25zjn4qbyihr\/PHID-FILE-lammujrvef44b2xfeygm\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Volker_E\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5759910\" id=\"5759910\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_262\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Volker_E\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_80\"\u003eVolker_E\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5759910\" data-sigil=\"has-tooltip\" data-meta=\"0_261\"\u003e\u003cspan class=\"screen-only\"\u003eDec 23 2019, 12:50 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-23 00:50:10 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_266\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/all4nmu7r2zy4tkzylqf\/PHID-FILE-2vmllqw3gk3opezv5lar\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jan_Dittrich\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5766523\" id=\"5766523\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_265\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jan_Dittrich\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_81\"\u003eJan_Dittrich\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5766523\" data-sigil=\"has-tooltip\" data-meta=\"0_264\"\u003e\u003cspan class=\"screen-only\"\u003eDec 30 2019, 7:59 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-30 07:59:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_275\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/all4nmu7r2zy4tkzylqf\/PHID-FILE-2vmllqw3gk3opezv5lar\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jan_Dittrich\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5766561\" id=\"5766561\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_274\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jan_Dittrich\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_82\"\u003eJan_Dittrich\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5766561\" data-sigil=\"has-tooltip\" data-meta=\"0_273\"\u003e\u003cspan class=\"screen-only\"\u003eDec 30 2019, 8:14 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-30 08:14:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_271\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_272\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_83\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eWhat is also in vue\u2019s favor but something that is not highlighted in the RFC is that the documentation is very good. This does not only mean comprehensive and not wrong, but also that there are different types of documentation for different usecases (Onboarding, General Learning, Reference). This was one of the key points when some colleagues and me were thinking about a new framework at WMDE. A lot of people come from PHP or OOUI rather than from other MVVM-frameworks. Thus, a good documentation which \u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003equickly shows people what the framework is about\u003c\/a\u003e, is important. Since the js file of vue is sufficient, people can quickly try it out what the documentation tells them (there are also embedded examples, but maybe you want to try in a mediawiki-context or whatever)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_279\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/all4nmu7r2zy4tkzylqf\/PHID-FILE-2vmllqw3gk3opezv5lar\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jan_Dittrich\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5766563\" id=\"5766563\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_277\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_278\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jan_Dittrich\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_84\"\u003eJan_Dittrich\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5766563\" data-sigil=\"has-tooltip\" data-meta=\"0_276\"\u003e\u003cspan class=\"screen-only\"\u003eDec 30 2019, 8:14 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-30 08:14:39 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_282\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/xgwhe457x2mpoape27fc\/PHID-FILE-xstukxq53ilthb4afahd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/santhosh\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5766660\" id=\"5766660\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_281\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/santhosh\/\" class=\"phui-handle handle-availability-partial phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_85\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e santhosh\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5766660\" data-sigil=\"has-tooltip\" data-meta=\"0_280\"\u003e\u003cspan class=\"screen-only\"\u003eDec 30 2019, 9:17 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-30 09:17:25 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_285\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ied4uhepf36ypa3nofxt\/PHID-FILE-3wexu5vn7ik2tafjyzdk\/profile-profile-baselogo135.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Base\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5767471\" id=\"5767471\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_284\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Base\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_86\"\u003eBase\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5767471\" data-sigil=\"has-tooltip\" data-meta=\"0_283\"\u003e\u003cspan class=\"screen-only\"\u003eDec 30 2019, 7:32 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2019-12-30 19:32:43 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_290\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/2zz2qufv676bzdu6xl35\/PHID-FILE-u2exw2yza7wcs3xhtrry\/4eb4f3-alphanumeric_lato-white_A.png-0%2C0%2C0%2C0.3.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/abi_\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5770100\" id=\"5770100\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_287\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_288\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/abi_\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_87\"\u003eabi_\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5770100\" data-sigil=\"has-tooltip\" data-meta=\"0_286\"\u003e\u003cspan class=\"screen-only\"\u003eJan 2 2020, 6:59 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-02 06:59:44 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_289\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/abi_\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_88\"\u003eabi_\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_293\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/uvuvpzke6akpdmtaum6m\/PHID-FILE-nojnhpdwsdztlxi3cgpa\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/KartikMistry\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5770102\" id=\"5770102\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_292\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/KartikMistry\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_89\"\u003eKartikMistry\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5770102\" data-sigil=\"has-tooltip\" data-meta=\"0_291\"\u003e\u003cspan class=\"screen-only\"\u003eJan 2 2020, 7:02 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-02 07:02:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_296\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/sz5c2ymwsti7lllv37fb\/PHID-FILE-nw6x4whb5r5kwvduhbar\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Pginer-WMF\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5770166\" id=\"5770166\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_295\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Pginer-WMF\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_90\"\u003ePginer-WMF\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5770166\" data-sigil=\"has-tooltip\" data-meta=\"0_294\"\u003e\u003cspan class=\"screen-only\"\u003eJan 2 2020, 7:51 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-02 07:51:24 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_300\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/vkbdrif2qx4aoarbhmbr\/PHID-FILE-wgm76sunyarnnrruhqyb\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/alexhollender_WMF\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5770973\" id=\"5770973\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_298\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-medal-3 phui-timeline-token\" data-meta=\"0_299\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/alexhollender_WMF\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_91\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e alexhollender_WMF\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5770973\" data-sigil=\"has-tooltip\" data-meta=\"0_297\"\u003e\u003cspan class=\"screen-only\"\u003eJan 2 2020, 2:49 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-02 14:49:56 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_303\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/qg6iwggo535pagkoqbkr\/PHID-FILE-pj4bbpforckskr5bm42m\/alphanumeric_aleo-white_W.png-_ce9793-255%2C255%2C255%2C0.4.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/WMDE-leszek\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5777298\" id=\"5777298\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_302\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/WMDE-leszek\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_92\"\u003eWMDE-leszek\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5777298\" data-sigil=\"has-tooltip\" data-meta=\"0_301\"\u003e\u003cspan class=\"screen-only\"\u003eJan 6 2020, 9:16 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-06 09:16:57 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_306\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/l2cg2zimvt2uq6xna6zg\/PHID-FILE-it2g7whiwxxkzdfzans5\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Lucas_Werkmeister_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5778644\" id=\"5778644\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_305\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Lucas_Werkmeister_WMDE\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_93\"\u003eLucas_Werkmeister_WMDE\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5778644\" data-sigil=\"has-tooltip\" data-meta=\"0_304\"\u003e\u003cspan class=\"screen-only\"\u003eJan 6 2020, 6:11 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-06 18:11:15 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_311\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/2l7uv4x2vztmhfegadod\/PHID-FILE-jme7mgcgolydsjpf5clz\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/awight\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5780771\" id=\"5780771\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_308\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-wmf-1 phui-timeline-token\" data-meta=\"0_309\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/awight\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_94\"\u003eawight\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5780771\" data-sigil=\"has-tooltip\" data-meta=\"0_307\"\u003e\u003cspan class=\"screen-only\"\u003eJan 7 2020, 8:39 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-07 08:39:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_310\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/awight\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_95\"\u003eawight\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_315\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/4dvz3wjifcjxlo6c5nne\/PHID-FILE-xhjv3luiq35gjml3rsyv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/gabriel-wmde\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5782450\" id=\"5782450\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_313\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_314\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/gabriel-wmde\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_96\"\u003egabriel-wmde\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5782450\" data-sigil=\"has-tooltip\" data-meta=\"0_312\"\u003e\u003cspan class=\"screen-only\"\u003eJan 7 2020, 4:05 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-07 16:05:54 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_318\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/4dvz3wjifcjxlo6c5nne\/PHID-FILE-xhjv3luiq35gjml3rsyv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/gabriel-wmde\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5782472\" id=\"5782472\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_317\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/gabriel-wmde\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_97\"\u003egabriel-wmde\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5782472\" data-sigil=\"has-tooltip\" data-meta=\"0_316\"\u003e\u003cspan class=\"screen-only\"\u003eJan 7 2020, 4:09 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-07 16:09:53 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_321\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3b2u6t3rpqitrnep34og\/PHID-FILE-jphtzkuxubpx5bfnxwqv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Pablo-WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5783307\" id=\"5783307\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_320\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Pablo-WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_98\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Pablo-WMDE\u003c\/a\u003e mentioned this in \u003ca href=\"\/T199004\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_99\"\u003eT199004: RFC: Add a frontend build step to skins\/extensions to our deploy process\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5783307\" data-sigil=\"has-tooltip\" data-meta=\"0_319\"\u003e\u003cspan class=\"screen-only\"\u003eJan 7 2020, 6:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-07 18:52:02 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_332\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3ndsxtl44eofytwep42p\/PHID-FILE-4ybkrghfwjvx4ndzbgkv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/kchapman\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/21\/\" data-sigil=\"has-tooltip\" data-meta=\"0_330\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-users\" data-meta=\"0_331\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5789742\" id=\"5789742\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_329\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/kchapman\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_101\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e kchapman\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5789742\" data-sigil=\"has-tooltip\" data-meta=\"0_328\"\u003e\u003cspan class=\"screen-only\"\u003eJan 9 2020, 2:56 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-09 14:56:31 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_326\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_327\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_100\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003ca href=\"\/p\/egardner\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_2\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@egardner\u003c\/span\u003e\u003c\/a\u003e are you okay with this going on last call after the TechCom meeting next week?\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_343\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/bcjpua4r57wx43zxfghi\/PHID-FILE-he7vv2keyzoo67ipt2um\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/egardner\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/22\/\" data-sigil=\"has-tooltip\" data-meta=\"0_341\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_342\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5789763\" id=\"5789763\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_340\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/egardner\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_102\"\u003eegardner\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5789763\" data-sigil=\"has-tooltip\" data-meta=\"0_339\"\u003e\u003cspan class=\"screen-only\"\u003eJan 9 2020, 3:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-09 15:00:13 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_337\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_338\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_103\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003ca href=\"\/p\/kchapman\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_3\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@kchapman\u003c\/span\u003e\u003c\/a\u003e I assume that after Last Call, there is some kind of official vote on whether or not to adopt a given proposal \u2013\u00a0is this correct?\u003c\/p\u003e\n\n\u003cp\u003eI'm not seeing the kinds of questions or disagreements that would necessitate keeping this RFC in the discussion phase longer, so I'm fine to move things forward.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_352\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/myddkk65ayu6zrphr37o\/PHID-FILE-nmzwbv5k56wl4j7oqv5b\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Izno\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5790160\" id=\"5790160\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_351\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Izno\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_105\"\u003eIzno\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5790160\" data-sigil=\"has-tooltip\" data-meta=\"0_350\"\u003e\u003cspan class=\"screen-only\"\u003eJan 9 2020, 5:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-09 17:14:10 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_348\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_349\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_104\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eWhat discussion has been held regarding the fact we have multiple other Javascript libraries (some mentioned in the description) in use and\/or is this framework intended to deprecate those? If it, what has been discussed about the process? For example, Jquery.ui is still in use, while that was on-paper deprecated some long time ago.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_362\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ahnkehb5yzydqcgkmqra\/PHID-FILE-jwc6m4xc2qoc7jfj2v5y\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/stjn\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5797821\" id=\"5797821\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_361\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/stjn\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_107\"\u003estjn\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5797821\" data-sigil=\"has-tooltip\" data-meta=\"0_360\"\u003e\u003cspan class=\"screen-only\"\u003eJan 13 2020, 3:13 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-13 15:13:47 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_358\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_359\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_106\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eVue.js is great and, from what I\u2019ve heard, has a better community in comparison to others, but one can only hope that this means the adoption of it \u003cem\u003ein advanced interfaces that benefit from its features\u003c\/em\u003e, not in everything that requires some JS to work. The prospect of not being able to edit or read stuff, like you already can\u2019t with big Wikidata items, because of the increased costs of JavaScript execution won\u2019t be exactly welcoming to people from developing countries, for example.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_373\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ms665yc73j6nadjitytk\/PHID-FILE-mocohumlrcbe2lcuplml\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Anomie\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_371\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_372\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5798663\" id=\"5798663\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_370\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Anomie\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_109\"\u003eAnomie\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5798663\" data-sigil=\"has-tooltip\" data-meta=\"0_369\"\u003e\u003cspan class=\"screen-only\"\u003eJan 13 2020, 5:36 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-13 17:36:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_367\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_368\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_108\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote\u003e\u003cp\u003eAdditionally, Vue.js has been used successfully in production by Wikidata for several years; \u003ca href=\"https:\/\/wikitech.wikimedia.org\/wiki\/WMDE\/Wikidata\/SSR_Service\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eWMDE is currently experimenting with the use of server-side rendering\u003c\/a\u003e for a new feature.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI'm a bit concerned by the fact that this is experimental, and that it requires an external service to function. The service linked in that page there seems to be extremely bespoke, it's not clear it supports anything other than Wikibase's termbox.\u003c\/p\u003e\n\n\u003cp\u003eOne of the strengths of Wikipedia and MediaWiki is that they largely function when in-browser JavaScript is unavailable. This makes it seem like continuing that is not a priority, and will require complex setup for any wiki that wants to try to do so.\u003c\/p\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5797821\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_4\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5797821\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/stjn\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_5\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@stjn\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eVue.js is great and, from what I\u2019ve heard, has a better community in comparison to others, but one can only hope that this means the adoption of it \u003cem\u003ein advanced interfaces that benefit from its features\u003c\/em\u003e, not in everything that requires some JS to work. The prospect of not being able to edit or read stuff, like you already can\u2019t with big Wikidata items, because of the increased costs of JavaScript execution won\u2019t be exactly welcoming to people from developing countries, for example.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eThe wording here makes me suspect that everything that has been converted to OOUI (and everything where that was intended but not yet gotten around to) would be converted to this, even though most of it really doesn't need much JS fanciness. The best I hope for is that they'll take a "prerendering" approach (i.e. build-time generation of the server-side HTML) rather than "\u003ca href=\"https:\/\/www.reddit.com\/r\/webdev\/comments\/6gscso\/graceful_degradationprogressive_enhancement_and\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewe don't care about non-JS users anymore\u003c\/a\u003e" or a server-side rendering nodejs service.\u003c\/p\u003e\n\n\u003cp\u003eI'm struck by a quote I found when briefly researching the ability of vue.js generically to not cause this problem:\u003c\/p\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"https:\/\/github.com\/chrisvfritz\/prerender-spa-plugin\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/github.com\/chrisvfritz\/prerender-spa-plugin\u003c\/a\u003e, the author of that plugin wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eRecently, SSR (Server Side Rendering) has taken the JavaScript front-end world by storm. The fact that you can now render your sites and apps on the server before sending them to your clients is an absolutely revolutionary idea (and totally not what everyone was doing before JS client-side apps got popular in the first place...)\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_376\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5799020\" id=\"5799020\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_375\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_110\"\u003edbarratt\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5799020\" data-sigil=\"has-tooltip\" data-meta=\"0_374\"\u003e\u003cspan class=\"screen-only\"\u003eJan 13 2020, 7:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-13 19:06:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_382\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5799233\" id=\"5799233\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_378\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-medal-1 phui-timeline-token\" data-meta=\"0_379\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_111\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5799233\" data-sigil=\"has-tooltip\" data-meta=\"0_377\"\u003e\u003cspan class=\"screen-only\"\u003eJan 13 2020, 7:59 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-13 19:59:11 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_380\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-medal-1 phui-timeline-token strikethrough\" data-meta=\"0_381\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_112\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e rescinded a token.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_387\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5799303\" id=\"5799303\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_384\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-like-1 phui-timeline-token\" data-meta=\"0_385\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_113\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5799303\" data-sigil=\"has-tooltip\" data-meta=\"0_383\"\u003e\u003cspan class=\"screen-only\"\u003eJan 13 2020, 8:22 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-13 20:22:52 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_386\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_114\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_397\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5800440\" id=\"5800440\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_396\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_115\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5800440\" data-sigil=\"has-tooltip\" data-meta=\"0_395\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 2:27 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 02:27:38 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_393\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_394\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_116\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eOverall I think this is awesome. I think it's an overdue change. \ud83d\udc4f Thanks for all of your hard work. \ud83d\ude03\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eAfter much research and discussion, the working group believes that the open-source Vue.js framework is the best match for the Foundation\u2019s requirements right now as well as for the foreseeable future.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI think it's important to remember that Vue is \u003ca href=\"https:\/\/web.archive.org\/web\/20170603052649\/https:\/\/betweenthewires.org\/2016\/11\/03\/evan-you\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eeffectively a fork\u003c\/a\u003e of \u003ca href=\"https:\/\/angularjs.org\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eAngularJS\u003c\/a\u003e. In a way, it rejects all of the \u003ca href=\"http:\/\/blog.angularjs.org\/2014\/03\/angular-20.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ereasons\u003c\/a\u003e it was rewritten into \u003ca href=\"https:\/\/angular.io\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eAngular\u003c\/a\u003e. Not saying that's a good or bad thing, just that it's important to know the framework's philosophy.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eReact uses JSX files, while Vue.js uses single-file components. But Vue.js can also use templates provided as HTML strings (which can be provided \u003ca href=\"https:\/\/vuejsdevelopers.com\/2017\/03\/24\/vue-js-component-templates\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ein a variety of ways\u003c\/a\u003e). This allows us still define UI elements in a declarative way, one of our key requirements. \u003ca href=\"https:\/\/reactjs.org\/docs\/react-without-jsx.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact can also be used without a build tool\u003c\/a\u003e, but it falls back on its imperative CreateElement API which is not ideal for general use.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI must be missing something because from the \u003ca href=\"https:\/\/reactjs.org\/docs\/react-without-jsx.htm\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003edocumentation\u003c\/a\u003e, there isn't any difference between JSX and \u003ca href=\"https:\/\/reactjs.org\/docs\/react-api.html#createelement\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact.createElement()\u003c\/a\u003e. In fact, when JSX is compiled, it is compiled \u003cem\u003einto\u003c\/em\u003e \u003ca href=\"https:\/\/reactjs.org\/docs\/react-api.html#createelement\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact.createElement()\u003c\/a\u003e am I missing something? Obviously \u003ca href=\"https:\/\/reactjs.org\/docs\/react-dom.html#render\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReactDOM.render()\u003c\/a\u003e is imperative, but that is only used to mount the application into the DOM and is used with or without JSX. For instance, here's a Hello World example (from their \u003ca href=\"https:\/\/reactjs.org\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehomepage\u003c\/a\u003e) in JSX:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"javascript\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003cspan class=\"kd\"\u003efunction\u003c\/span\u003e \u003cspan class=\"nx\"\u003eHelloMessage\u003c\/span\u003e\u003cspan class=\"p\"\u003e(\u003c\/span\u003e\u003cspan class=\"nx\"\u003eprops\u003c\/span\u003e\u003cspan class=\"p\"\u003e)\u003c\/span\u003e \u003cspan class=\"p\"\u003e{\u003c\/span\u003e\n \u003cspan class=\"k\"\u003ereturn\u003c\/span\u003e \u003cspan class=\"p\"\u003e(\u003c\/span\u003e\n \u003cspan class=\"o\"\u003e<\u003c\/span\u003e\u003cspan class=\"nx\"\u003ediv\u003c\/span\u003e\u003cspan class=\"o\"\u003e>\u003c\/span\u003e\n \u003cspan class=\"nx\"\u003eHello\u003c\/span\u003e \u003cspan class=\"p\"\u003e{\u003c\/span\u003e\u003cspan class=\"nx\"\u003eprops\u003c\/span\u003e\u003cspan class=\"p\"\u003e.\u003c\/span\u003e\u003cspan class=\"nx\"\u003ename\u003c\/span\u003e\u003cspan class=\"p\"\u003e}\u003c\/span\u003e\n \u003cspan class=\"o\"\u003e<\u003c\/span\u003e\u003cspan class=\"err\"\u003e\/div>\u003c\/span\u003e\n \u003cspan class=\"p\"\u003e);\u003c\/span\u003e\n\u003cspan class=\"p\"\u003e}\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eand then without JSX:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"javascript\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003cspan class=\"kd\"\u003efunction\u003c\/span\u003e \u003cspan class=\"nx\"\u003eHelloMessage\u003c\/span\u003e\u003cspan class=\"p\"\u003e(\u003c\/span\u003e\u003cspan class=\"nx\"\u003eprops\u003c\/span\u003e\u003cspan class=\"p\"\u003e)\u003c\/span\u003e \u003cspan class=\"p\"\u003e{\u003c\/span\u003e\n \u003cspan class=\"k\"\u003ereturn\u003c\/span\u003e \u003cspan class=\"nx\"\u003eReact\u003c\/span\u003e\u003cspan class=\"p\"\u003e.\u003c\/span\u003e\u003cspan class=\"nx\"\u003ecreateElement\u003c\/span\u003e\u003cspan class=\"p\"\u003e(\u003c\/span\u003e\n \u003cspan class=\"s2\"\u003e"div"\u003c\/span\u003e\u003cspan class=\"p\"\u003e,\u003c\/span\u003e\n \u003cspan class=\"kc\"\u003enull\u003c\/span\u003e\u003cspan class=\"p\"\u003e,\u003c\/span\u003e\n \u003cspan class=\"s2\"\u003e"Hello "\u003c\/span\u003e\u003cspan class=\"p\"\u003e,\u003c\/span\u003e\n \u003cspan class=\"nx\"\u003eprops\u003c\/span\u003e\u003cspan class=\"p\"\u003e.\u003c\/span\u003e\u003cspan class=\"nx\"\u003ename\u003c\/span\u003e\n \u003cspan class=\"p\"\u003e);\u003c\/span\u003e\n\u003cspan class=\"p\"\u003e}\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003ewhich again, is what the JSX compiles to anyways... I'm not sure I understand how the former is declarative but the latter is imperative? Is \u003ca href=\"https:\/\/reactjs.org\/docs\/react-api.html#createelement\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact.createElement()\u003c\/a\u003e being confused with \u003ca href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\/createElement\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eDocument.createElement()\u003c\/a\u003e? Would you mind explaining that a bit more? Of course the syntax of \u003ca href=\"https:\/\/reactjs.org\/docs\/react-api.html#createelement\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact.createElement()\u003c\/a\u003e is a bit verbose, but we could wrap it in a simpler function for most use cases.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eFinally, key add-ons in the Vue.js ecosystem (router, state management, testing tools, etc.) tend to be maintained as officially-supported products by the core development team, while the equivalent tools in the React ecosystem tend to be community-driven, and support levels will vary.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI think it's important to note that as of \u003ca href=\"https:\/\/reactjs.org\/blog\/2019\/02\/06\/react-v16.8.0.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact 16.8\u003c\/a\u003e, state management has become a \u003ca href=\"https:\/\/reactjs.org\/docs\/hooks-reference.html#usereducer\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003efirst-class citizen\u003c\/a\u003e for React. It made sense for them to add this because so many people were using external state management tools. I appreciate the thoughtfulness by only adding what most people actually need, rather than what they \u003cem\u003ethink\u003c\/em\u003e most people will need.\u003c\/p\u003e\n\n\u003cp\u003eTesting is kind of a separate conversation anyways. React \u003ca href=\"https:\/\/reactjs.org\/docs\/testing.html#tools\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003erecommends\u003c\/a\u003e \u003ca href=\"https:\/\/jestjs.io\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eJest\u003c\/a\u003e which works well with React, Vue, and \u003ca href=\"https:\/\/jestjs.io\/docs\/en\/tutorial-jquery\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eeven jQuery\u003c\/a\u003e. It might be a good idea to use something like that regardless of the framework chosen. I think it might be best to evaluate the testing framework separately from the UI framework.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eIn contrast, React and its related tools have gone through a large amount of change over the same period of time. The recommended best-practices have changed considerably over the years. Keeping up with these changes would be quite difficult given the pace that WMF projects move at.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eAccording to the \u003ca href=\"https:\/\/github.com\/facebook\/react\/blob\/master\/CHANGELOG.md\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eCHANGELOG\u003c\/a\u003e, the last breaking change was when \u003ca href=\"https:\/\/github.com\/facebook\/react\/blob\/master\/CHANGELOG.md#1600-september-26-2017\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e16.0.0\u003c\/a\u003e was released on \u003ctt class=\"remarkup-monospaced\"\u003eSeptember 26, 2017\u003c\/tt\u003e and none of those changes required a major rewrite. Before that it was when \u003ca href=\"https:\/\/github.com\/facebook\/react\/blob\/master\/CHANGELOG.md#1500-april-7-2016\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e15.0.0\u003c\/a\u003e was released on \u003ctt class=\"remarkup-monospaced\"\u003eApril 7, 2016\u003c\/tt\u003e (which was the first major version) and none of those require major changes to our code base. I'm not sure I really get this argument. While React has continued to evolve and provide new and better ways to do things, they haven't gotten rid of the 4+ years old ways of doing things).\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eHowever, React is still developed primarily by Facebook and will likely continue to change in ways that serve Facebook's needs first and foremost. The WMF had to spend time and energy migrating away from another open-source FB project (HHVM) when Facebook decided that new versions would no longer remain fully compatible with PHP. Sudden changes in direction may be less likely in a project like Vue.js which does not rely on a single dominant corporate backer.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI think someone could use the exact same argument to reject using MediaWiki or WordPress. I realize there is some hurt from HHVM, but I don't think that should be used to stigmatize React. I believe the case of HHVM is a better reason to not use \u003cem\u003ePreact\u003c\/em\u003e than React proper. It's clear now, that the gains made in performance forks are (at some point in the future) folded back into the mainline project. You can see this with the performance gains gained in React which has closed the performance gap with Preact (just like PHP has closed the gap with HHVM).\u003c\/p\u003e\n\n\u003cp\u003eRegardless, the premise isn't even accurate in the first place. The \u003ca href=\"https:\/\/www.linkedin.com\/in\/evanyou\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ecreator of Vue\u003c\/a\u003e works for a company called "Vue Technology LLC" which is a registered for-profit company in New Jersey, United States (Entity ID: \u003ctt class=\"remarkup-monospaced\"\u003e0450081005\u003c\/tt\u003e). To be clear, Vue, like a lot of open source projects, absolutely relies on a "a single dominant corporate backer." Now how that corporate backer plans to make a profit, is beyond my scope of understanding as they are privately held and sharing their financial status is not compulsory in the United States. I hope, for our sake, that it is doing really well. It's entirely possible that it isn't doing well at all and could collapse tomorrow, we really have no way of knowing (nor are company executives obligated to be truthful to non-investors).\u003c\/p\u003e\n\n\u003cp\u003eTo be fair, I have no problem with a for-profit company. I think a positive, sustainable cash flow is way more important than your tax status and whether you have shareholders or not. As an example, I would much rather use an open-source product from a \u003ca href=\"https:\/\/bcorporation.net\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eCertified B Corporation\u003c\/a\u003e than a non-profit that does not have a sustainable business model (though, sadly, we do not have the luxury of either in this situation). My point is that the argument is a fallacy.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_406\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5800460\" id=\"5800460\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_405\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_117\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5800460\" data-sigil=\"has-tooltip\" data-meta=\"0_404\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 2:54 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 02:54:47 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_402\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_403\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_118\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI forgot to mention that both WordPress (as of \u003ca href=\"https:\/\/wordpress.org\/support\/wordpress-version\/version-5-0\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eversion 5.0\u003c\/a\u003e) and Drupal (\u003ca href=\"https:\/\/dri.es\/drupal-looking-to-adopt-react\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003efuture\u003c\/a\u003e) use React. I think it might be wise to consult with these two projects and see why they chose React over Vue.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_417\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3q7hvhyjfxqxvbtfnsai\/PHID-FILE-utm6nlssecqr4tn4exv4\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jdrewniak\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/18\/\" data-sigil=\"has-tooltip\" data-meta=\"0_415\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_416\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5801407\" id=\"5801407\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_414\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jdrewniak\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_120\"\u003eJdrewniak\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5801407\" data-sigil=\"has-tooltip\" data-meta=\"0_413\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 11:51 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 11:51:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_411\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_412\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_119\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI'm very excited about this proposal and eager to adopt a modern framework like Vue!\u003cbr \/\u003e\nI think there's still a lot of infrastructure that needs to be put in place to take advantage of single-file components, and I'm wondering what the developer experience is like without them.\u003c\/p\u003e\n\n\u003cp\u003eAs \u003ca href=\"https:\/\/vuejsdevelopers.com\/2017\/03\/24\/vue-js-component-templates\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethis article\u003c\/a\u003e in the description points out, there are many ways to define components in Vue. However, any method that requires setting the \u003ctt class=\"remarkup-monospaced\"\u003etemplate\u003c\/tt\u003e option requires shipping the Vue compiler to the client, as described in the docs (\u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/installation.html#Runtime-Compiler-vs-Runtime-only\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eRuntime + Compiler vs. Runtime-only\u003c\/a\u003e), which seems like a large payload cost. from a performance perspective, is that something we're willing to ship?\u003c\/p\u003e\n\n\u003cp\u003eWithout the compiler, we're really only left with \u003ctt class=\"remarkup-monospaced\"\u003edocument.createElement\u003c\/tt\u003e or the shorter \u003ctt class=\"remarkup-monospaced\"\u003eh()\u003c\/tt\u003e alias inside of a render function.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_426\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/qg6iwggo535pagkoqbkr\/PHID-FILE-pj4bbpforckskr5bm42m\/alphanumeric_aleo-white_W.png-_ce9793-255%2C255%2C255%2C0.4.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/WMDE-leszek\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5801495\" id=\"5801495\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_425\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/WMDE-leszek\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_121\"\u003eWMDE-leszek\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5801495\" data-sigil=\"has-tooltip\" data-meta=\"0_424\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 12:28 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 12:28:31 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_422\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_423\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_122\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5798663\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_6\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5798663\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Anomie\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_7\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Anomie\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eOne of the strengths of Wikipedia and MediaWiki is that they largely function when in-browser JavaScript is unavailable. This makes it seem like continuing that is not a priority, and will require complex setup for any wiki that wants to try to do so.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI didn't read this RFC like this. The server-side rendering ability has even been listed as a requirement for choosing the framework.\u003c\/p\u003e\n\n\u003cp\u003eHow I interpret the intention, the experience in non-JS-enabled browsers is not intended to change (degrade) significantly. It seems likely (thinking about WMDE experiences too) that the server-side rendering of UI might not be happening in PHP, but rather in node, but that shouldn't be making a difference for Wikipedia readers and editors.\u003cbr \/\u003e\nFor non-Wikimedia installations it might be that folks hosting those mediawiki installation would need to provide a node server, or require their users would need to have JS enabled in their browsers. I cannot say how much of a change that would be for non-Wikimedia MediaWiki installations.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_429\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/yhqlu46f2mwg3a36ko6l\/PHID-FILE-bt6k3djtpehl3zkk7zzg\/profile-merge.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Ricordisamoa\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5801917\" id=\"5801917\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_428\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Ricordisamoa\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_123\"\u003eRicordisamoa\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5801917\" data-sigil=\"has-tooltip\" data-meta=\"0_427\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 2:11 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 14:11:40 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_438\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/24kjulskdfpovj576ie3\/PHID-FILE-2oozvnh6ixmaiqbes6qz\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5802492\" id=\"5802492\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_437\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_124\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Tonina_Zhelyazkova_WMDE\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5802492\" data-sigil=\"has-tooltip\" data-meta=\"0_436\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 5:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 17:06:57 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_434\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_435\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_125\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5800440\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_8\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5800440\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_10\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eRegardless, the premise isn't even accurate in the first place. The \u003ca href=\"https:\/\/www.linkedin.com\/in\/evanyou\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ecreator of Vue\u003c\/a\u003e works for a company called "Vue Technology LLC" which is a registered for-profit company in New Jersey, United States (Entity ID: \u003ctt class=\"remarkup-monospaced\"\u003e0450081005\u003c\/tt\u003e).\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eThe VueJS project has a core team of around 10 people and none of them are employed at this "Vue Technology LLC". All of them work for different tech companies amongst which are GitLab and Netlify. Would you say VueJS is led by GitLab and Netlify?\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eTo be clear, Vue, like a lot of open source projects, absolutely relies on a "a single dominant corporate backer." Now how that corporate backer plans to make a profit, is beyond my scope of understanding as they are privately held and sharing their financial status is not compulsory in the United States. I hope, for our sake, that it is doing really well. It's entirely possible that it isn't doing well at all and could collapse tomorrow, we really have no way of knowing (nor are company executives obligated to be truthful to non-investors).\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eThere is no "single dominant corporate backer". Evan You is on \u003ca href=\"https:\/\/www.patreon.com\/evanyou\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ePatreon\u003c\/a\u003e and Vue is on \u003ca href=\"https:\/\/opencollective.com\/vuejs\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eOpen Collective\u003c\/a\u003e and all the corporate backers are listed on the \u003ca href=\"https:\/\/github.com\/vuejs\/vue\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eGitHub repo\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eTo be fair, I have no problem with a for-profit company. I think a positive, sustainable cash flow is way more important than your tax status and whether you have shareholders or not. As an example, I would much rather use an open-source product from a \u003ca href=\"https:\/\/bcorporation.net\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eCertified B Corporation\u003c\/a\u003e than a non-profit that does not have a sustainable business model (though, sadly, we do not have the luxury of either in this situation). My point is that the argument is a fallacy.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eSpeaking of an open source project being backed by a large corporation, most people probably know the story of Angular 1 and how it was completely rewritten, so all projects using Angular 1 had to be rewritten as well. Therefor having a big corp (in Angular's case Google) behind the framework does not guarantee a sustainable model.\u003c\/p\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5800460\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_9\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5800460\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_11\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI forgot to mention that both WordPress (as of \u003ca href=\"https:\/\/wordpress.org\/support\/wordpress-version\/version-5-0\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eversion 5.0\u003c\/a\u003e) and Drupal (\u003ca href=\"https:\/\/dri.es\/drupal-looking-to-adopt-react\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003efuture\u003c\/a\u003e) use React. I think it might be wise to consult with these two projects and see why they chose React over Vue.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eOne can have the opposite argument: Wouldn't it be wise to consult with big projects, which use Vue, as to \u003ca href=\"https:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewhy they chose it?\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_448\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5802585\" id=\"5802585\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_447\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_126\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5802585\" data-sigil=\"has-tooltip\" data-meta=\"0_446\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 5:20 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 17:20:37 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_444\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_445\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_127\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_12\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@Tonina_Zhelyazkova_WMDE\u003c\/span\u003e\u003c\/a\u003e my point is that it doesn't mitigate uncertainty, the \u003ca href=\"https:\/\/en.wikipedia.org\/wiki\/Benevolent_dictator_for_life\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eBDFL\u003c\/a\u003e could change the direction of Vue just as easily as a public corporation could (I would argue even \u003cem\u003eeasier\u003c\/em\u003e because he has little risk involved in changing, where Facebook has a lot of risk). The reality is, is that the point being made (about mitigating uncertainty) is a business decision, not a technical one, and I don't think it takes all of the factors into account.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eOne can have the opposite argument: Wouldn't it be wise to consult with big projects, which use Vue, as to \u003ca href=\"https:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewhy they chose it?\u003c\/a\u003e\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eWe could go back and forth on this all day. I chose the two projects that (I think?) are closer to us in relation and have bigger user bases with more contributors than we do. In other words, they had more to risk. More importantly perhaps, is why would Facebook's biggest competitor, Twitter, choose to use React?\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_451\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7in5i7j22jezecbaetth\/PHID-FILE-n36covhe4ti6wyqvrnsg\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Michael\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5802623\" id=\"5802623\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_450\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Michael\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_128\"\u003eMichael\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5802623\" data-sigil=\"has-tooltip\" data-meta=\"0_449\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 5:33 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 17:33:02 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_462\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/ms665yc73j6nadjitytk\/PHID-FILE-mocohumlrcbe2lcuplml\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Anomie\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_460\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_461\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5802985\" id=\"5802985\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_459\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Anomie\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_129\"\u003eAnomie\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5802985\" data-sigil=\"has-tooltip\" data-meta=\"0_458\"\u003e\u003cspan class=\"screen-only\"\u003eJan 14 2020, 7:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-14 19:06:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_456\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_457\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_130\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5801495\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_14\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5801495\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/WMDE-leszek\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_16\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@WMDE-leszek\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5798663\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_13\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5798663\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Anomie\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_15\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Anomie\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eOne of the strengths of Wikipedia and MediaWiki is that they largely function when in-browser JavaScript is unavailable. This makes it seem like continuing that is not a priority, and will require complex setup for any wiki that wants to try to do so.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI didn't read this RFC like this. The server-side rendering ability has even been listed as a requirement for choosing the framework.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eYou're right, I think I read it a bit too quickly. In particular I missed in the introductory section where it says it currently "would be limited to cases where server-rendered elements can be progressively enhanced within the user\u2019s browser".\u003c\/p\u003e\n\n\u003cp\u003eBut, the general tone still makes me not very hopeful...\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eFor non-Wikimedia installations it might be that folks hosting those mediawiki installation would need to provide a node server, or require their users would need to have JS enabled in their browsers. I cannot say how much of a change that would be for non-Wikimedia MediaWiki installations.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI was very happy when the Parsoid\/PHP project was begun to remove one of the major requirements for a bespoke nodejs service in the MediaWiki ecosystem, I'd really hate to have a new one added.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_471\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/24kjulskdfpovj576ie3\/PHID-FILE-2oozvnh6ixmaiqbes6qz\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5805149\" id=\"5805149\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_470\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_131\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Tonina_Zhelyazkova_WMDE\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5805149\" data-sigil=\"has-tooltip\" data-meta=\"0_469\"\u003e\u003cspan class=\"screen-only\"\u003eJan 15 2020, 1:48 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-15 13:48:04 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_467\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_468\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_132\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5802585\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_17\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5802585\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_18\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eWe could go back and forth on this all day. I chose the two projects that (I think?) are closer to us in relation and have bigger user bases with more contributors than we do. In other words, they had more to risk. More importantly perhaps, is why would Facebook's biggest competitor, Twitter, choose to use React?\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eIndeed, we can cite companies using either framework all day. I assume the underlying point of these examples is that React is more popular than Vue. And yes \u003ca href=\"https:\/\/vue-view.com\/resources\/top-javascript-frameworks-in-2019\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethis is a fact\u003c\/a\u003e. But is being most popular an argument in favor of choosing React for MW? If yes, why? What does the most popular framework has that Vue doesn't provide? Usually the benefit of the "most popular" is that you can find the most information and get the most help. But docs, guides and help is available for Vue too. And, in fact, Vue has a reputation of having the best docs and guides compared to other FE frameworks. \u003cbr \/\u003e\n\u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/comparison.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eHere's the Vue guide comparing Vue to other frameworks and underling key differences and benefits.\u003c\/a\u003e I couldn't find anything similar from the React team.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_474\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/biyialftej5zydh2v4t7\/PHID-FILE-hadstttxv543p5lf44xo\/profile-me.jpeg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Milimetric\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5805693\" id=\"5805693\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_473\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Milimetric\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_133\"\u003eMilimetric\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5805693\" data-sigil=\"has-tooltip\" data-meta=\"0_472\"\u003e\u003cspan class=\"screen-only\"\u003eJan 15 2020, 3:46 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-15 15:46:22 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_483\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3226j44b4ygmmdwjc64b\/PHID-FILE-h2ttujkqt45ga5n6dnoh\/profile-IMG_2065_edit.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jhernandez\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5807233\" id=\"5807233\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_482\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jhernandez\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_135\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Jhernandez\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5807233\" data-sigil=\"has-tooltip\" data-meta=\"0_481\"\u003e\u003cspan class=\"screen-only\"\u003eJan 15 2020, 8:31 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-15 20:31:14 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_479\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_480\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_134\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI'm glad a recommendation has been made, and that we can move things forward in other very important topics that maybe are more foundational than the framework, like build tools and processes, and developer workflows. Those decisions will directly affect how any library is used.\u003c\/p\u003e\n\n\u003cp\u003eThat said, respecting the frontend working group's recommendation, I'll join in the conversation.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cp\u003eA couple of data points regarding the bus factor mentioned, looking at the data:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/github.com\/facebook\/react\/graphs\/contributors\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/github.com\/facebook\/react\/graphs\/contributors\u003c\/a\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHas +10 contributors with more than 100 commits, you can see people coming in and out, with others taking their place\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/github.com\/vuejs\/vue\/graphs\/contributors\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/github.com\/vuejs\/vue\/graphs\/contributors\u003c\/a\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHas 1 person with +100 commits\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eI'm certain Evan is extremely smart and capable, but he is just one person. And that fact, is dangerous for the long term viability of the decision. I do hope the Vue core team actually step up in terms of the coding responsibilities, because the bus factor is huge.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5805149\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_19\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5805149\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_21\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@Tonina_Zhelyazkova_WMDE\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003e[...] But docs, guides and help is available for Vue too. And, in fact, Vue has a reputation of having the best docs and guides compared to other FE frameworks.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eJust for the sake of completeness, I'll add that the React docs are great, like the Vue ones are too. The React team \u003ca href=\"http:\/\/rachelnabors.com\/2019\/04\/01\/facebook\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehired last year a full time Documentation engineer\u003c\/a\u003e and has done a lot of great work, specifically with the getting started and beginner friendliness of the docs.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5801407\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_20\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5801407\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Jdrewniak\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_22\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Jdrewniak\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI think there's still a lot of infrastructure that needs to be put in place to take advantage of single-file components, and I'm wondering what the developer experience is like without them.\u003c\/p\u003e\n\n\u003cp\u003eAs \u003ca href=\"https:\/\/vuejsdevelopers.com\/2017\/03\/24\/vue-js-component-templates\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethis article\u003c\/a\u003e in the description points out, there are many ways to define components in Vue. However, any method that requires setting the \u003ctt class=\"remarkup-monospaced\"\u003etemplate\u003c\/tt\u003e option requires shipping the Vue compiler to the client, as described in the docs (\u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/installation.html#Runtime-Compiler-vs-Runtime-only\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eRuntime + Compiler vs. Runtime-only\u003c\/a\u003e), which seems like a large payload cost. from a performance perspective, is that something we're willing to ship?\u003c\/p\u003e\n\n\u003cp\u003eWithout the compiler, we're really only left with \u003ctt class=\"remarkup-monospaced\"\u003edocument.createElement\u003c\/tt\u003e or the shorter \u003ctt class=\"remarkup-monospaced\"\u003eh()\u003c\/tt\u003e alias inside of a render function.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003e+1. Any choice of framework is the tip of the iceberg in terms of improvements to the frontend development toolchain.\u003c\/p\u003e\n\n\u003cp\u003eWhatever happens, I hope for Wikimedia projects we don't end up sending compilers to all clients, given the amount of traffic we have it would be extremely inefficient and wasteful to do so.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cp\u003eFrom the RFC description:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eReact can also be used without a build tool, but it falls back on its imperative CreateElement API which is not ideal for general use.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eIt falls back to its \u003cstrong\u003eJS\u003c\/strong\u003e API, but it is not imperative. It is function calls like the ones you use in Vue with \u003ctt class=\"remarkup-monospaced\"\u003eh\u003c\/tt\u003e, like Jan mentioned above. It is the only option if you don't want to send compilers to the client's browsers, which is basically mandatory in any non-toy production website.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eIn contrast, React and its related tools have gone through a large amount of change over the same period of time. \u003cstrong\u003eThe recommended best-practices have changed considerably over the years. Keeping up with these changes would be quite difficult given the pace that WMF projects move at\u003c\/strong\u003e.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eEmphasis mine. This rationale is very much broken, as well as a very poor reason.\u003c\/p\u003e\n\n\u003cp\u003eFirst, if we move at glacial pace, we need to figure out how to be more agile and do better, not be complacent with it.\u003c\/p\u003e\n\n\u003cp\u003eSecond, React since release has been very stable, and when they have broken the public API, they have always provided tools in the form of libraries and codemods to migrate code automatically. The reason is that Facebook has ~60.000 components the last time they talked about it, and the people responsible for updating the frontend code of the whole thing is the React team. Yes, those 6 people. They are very careful to be backwards compatible, and when unavoidable, to provide easy and automated migration paths.\u003c\/p\u003e\n\n\u003cp\u003eThird, yes, the libraries evolve, and provide better practices, and both libraries are the same. React doesn't force you to rewrite your existing components, but it encourages you to build the new ones in some patterns they have found best. Vue is the same, and it is going to happen the same with v3, when they release the composition API. They are not deprecating the existing patterns for developing components, but they will provide a better one for you to adopt on new code or when revisiting old code.\u003c\/p\u003e\n\n\u003cp\u003eTheir current strategy and consequences are \u003cstrong\u003ethe same\u003c\/strong\u003e. Actually, it was not long ago when there was a lot of \u003ca href=\"https:\/\/news.ycombinator.com\/item?id=20237568\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue drama\u003c\/a\u003e because the community thought v3 would deprecate the v2 APIs. With the release of suspense and hooks the react community didn't freak out, because all changes to versions have been very much backwards compatible and with easy migration paths, so no-one expected differently.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue.js development is not led by a single corporation whose goals may diverge from those of the WMF\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eFinally, this has already been pointed out by David, which is not very true in reality, and seeing the links to the contribution graphs I posted above. Vue is led by one committer who worked for Google. I don't think this reasoning is very sound in comparison.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cp\u003eLike I said at the beginning, I'm happy there is a decision made, and we can move onto other important topics.\u003c\/p\u003e\n\n\u003cp\u003eI hope next decisions are better justified. Some times, the reason is not as rational or factual and trying to make it look like it is can be a mistake when others look at the justification. Maybe it would've been better to just state that it is personal preference and knowledge of the committee when comparing two good options, rather than digging for logic reasons where there may not have been that many.\u003c\/p\u003e\n\n\u003cp\u003eOnwards to LESS\/CSS\/SASS, Javascript\/Typescript\/Babel, Webpack\/Parcel\/ESM\/RL, the road is long and there is much to cover.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_486\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/v5wmnfiaelrd6nztxd3a\/PHID-FILE-s57znldbv3qchtewuryd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/daniel\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5807481\" id=\"5807481\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-columns phui-timeline-icon\" data-meta=\"0_485\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/daniel\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_136\"\u003edaniel\u003c\/a\u003e moved this task from \u003ca href=\"\/project\/board\/52\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_137\"\u003eP1: Define\u003c\/a\u003e to \u003ca href=\"\/project\/board\/52\/\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_138\"\u003eUnder discussion\u003c\/a\u003e on the \u003ca href=\"\/tag\/techcom-rfc\/\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_139\"\u003eTechCom-RFC\u003c\/a\u003e board.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5807481\" data-sigil=\"has-tooltip\" data-meta=\"0_484\"\u003e\u003cspan class=\"screen-only\"\u003eJan 15 2020, 9:38 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-15 21:38:39 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_499\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/de7rnuucgwsa2u5ow7bn\/PHID-FILE-towcvgcmdefffz27aphc\/profile-gravatar.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Catrope\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/18\/\" data-sigil=\"has-tooltip\" data-meta=\"0_495\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_496\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_497\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_498\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5807754\" id=\"5807754\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_494\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Catrope\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_140\"\u003eCatrope\u003c\/a\u003e added subscribers: \u003ca href=\"\/p\/Krinkle\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_141\"\u003eKrinkle\u003c\/a\u003e, \u003ca href=\"\/p\/Catrope\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_142\"\u003eCatrope\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5807754\" data-sigil=\"has-tooltip\" data-meta=\"0_493\"\u003e\u003cspan class=\"screen-only\"\u003eJan 15 2020, 11:17 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-15 23:17:55 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_491\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_492\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_143\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5801407\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_23\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5801407\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Jdrewniak\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_25\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Jdrewniak\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI'm very excited about this proposal and eager to adopt a modern framework like Vue!\u003cbr \/\u003e\nI think there's still a lot of infrastructure that needs to be put in place to take advantage of single-file components, and I'm wondering what the developer experience is like without them.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eSupporting single-file components wouldn't actually be that hard at all. With small modifications to our existing infrastructure, we could have ResourceLoader automatically remap SFCs to JS component definitions (with the template as a string), because this transformation is very simple. We wouldn't be able to support ES6 or scoped styles though (because those depend on preprocessing steps that use nodejs libraries).\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eAs \u003ca href=\"https:\/\/vuejsdevelopers.com\/2017\/03\/24\/vue-js-component-templates\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethis article\u003c\/a\u003e in the description points out, there are many ways to define components in Vue. However, any method that requires setting the \u003ctt class=\"remarkup-monospaced\"\u003etemplate\u003c\/tt\u003e option requires shipping the Vue compiler to the client, as described in the docs (\u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/installation.html#Runtime-Compiler-vs-Runtime-only\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eRuntime + Compiler vs. Runtime-only\u003c\/a\u003e), which seems like a large payload cost. from a performance perspective, is that something we're willing to ship?\u003c\/p\u003e\n\n\u003cp\u003eWithout the compiler, we're really only left with \u003ctt class=\"remarkup-monospaced\"\u003edocument.createElement\u003c\/tt\u003e or the shorter \u003ctt class=\"remarkup-monospaced\"\u003eh()\u003c\/tt\u003e alias inside of a render function.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eMy proposal above is basically to let developers write #7 (single file components) and transform them to #1 (template passed as a string to the \u003ctt class=\"remarkup-monospaced\"\u003etemplate\u003c\/tt\u003e option). This would keep things simple, but would also require shipping the compiler to the client, which as you point out is inefficient.\u003c\/p\u003e\n\n\u003cp\u003eThe only way to avoid shipping the compiler to the client is to compile templates on the server side. One way we could do this is have a build step and commit the compiled template files to the repository. This is what we already do for server-side Handlebars templates in Flow, and what MobileFrontend does for its Webpack bundles. Committing built files to the repo isn't great, but we haven't agreed on a better way to manage build steps yet (see \u003ca href=\"\/T199004\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_24\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT199004\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e). Another way would be to have ResourceLoader's SFC transformation step shell out to \u003ctt class=\"remarkup-monospaced\"\u003evue-cli\u003c\/tt\u003e and compile the template on the fly. This would be just like how we handle JS\/CSS minification, URL remapping\/embedding in CSS, CSSJanus and LESS compilation, except that those things are all implemented in PHP while this would require shelling out to a nodejs tool, which may be slow. (But would it be slower than LESS compilation?)\u003c\/p\u003e\n\n\u003cp\u003eIn summary, I think our options are:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eTransform SFCs on the fly using simple PHP code; compile templates client-side\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eRun build step that transforms SFCs and compiles templates; commit built files to repo\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eTransform SFCs and compile templates on the fly by shelling out to \u003ctt class=\"remarkup-monospaced\"\u003evue-cli\u003c\/tt\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eI'd also be very interested to hear thoughts on the above from \u003ca href=\"\/p\/Krinkle\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_26\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Krinkle\u003c\/span\u003e\u003c\/a\u003e and \u003ca href=\"\/p\/egardner\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_27\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@egardner\u003c\/span\u003e\u003c\/a\u003e especially.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_503\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/6n6ztqf7kwlq2m3tns3r\/PHID-FILE-sjs4kdocejuiiypnxqow\/profile-lake.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/chasemp\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5811122\" id=\"5811122\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_501\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/chasemp\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_144\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e chasemp\u003c\/a\u003e added a project: \u003ca href=\"\/tag\/security-team\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_145\"\u003eSecurity-Team\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5811122\" data-sigil=\"has-tooltip\" data-meta=\"0_500\"\u003e\u003cspan class=\"screen-only\"\u003eJan 16 2020, 9:44 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-16 21:44:48 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-columns phui-timeline-icon\" data-meta=\"0_502\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/chasemp\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_146\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e chasemp\u003c\/a\u003e moved this task from \u003ca href=\"\/project\/board\/1179\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_147\"\u003eIncoming\u003c\/a\u003e to \u003ca href=\"\/project\/board\/1179\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_148\"\u003eWatching\u003c\/a\u003e on the \u003ca href=\"\/tag\/security-team\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_149\"\u003eSecurity-Team\u003c\/a\u003e board.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_513\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5811930\" id=\"5811930\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_512\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_150\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5811930\" data-sigil=\"has-tooltip\" data-meta=\"0_511\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 4:37 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 04:37:52 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_509\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_510\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_151\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5805149\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_28\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5805149\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_30\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@Tonina_Zhelyazkova_WMDE\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eIndeed, we can cite companies using either framework all day. I assume the underlying point of these examples is that React is more popular than Vue. And yes \u003ca href=\"https:\/\/vue-view.com\/resources\/top-javascript-frameworks-in-2019\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethis is a fact\u003c\/a\u003e. But is being most popular an argument in favor of choosing React for MW? If yes, why? What does the most popular framework has that Vue doesn't provide?\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI think this might be conflating the \u003cem\u003etechnical\u003c\/em\u003e and the \u003cem\u003ebusiness\u003c\/em\u003e arguments.\u003c\/p\u003e\n\n\u003cp\u003eFrom a technical perspective, you're absolutely right, being the most popular, is absolutely \u003cstrong\u003enot\u003c\/strong\u003e a standard of excellence. From a business perspective, being popular can help mitigate uncertainty and risk.\u003c\/p\u003e\n\n\u003cp\u003eAs an analogy, an engineer might find a \u003ca href=\"https:\/\/www.koenigsegg.com\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eKoenigsegg\u003c\/a\u003e to be the best car in the world, but owning that car (even if we had the money) would carry an immense amount of risk (theft, repairs, insurance, company's solvency, etc.). On the other hand, buying a \u003ca href=\"https:\/\/www.toyota.com\/camry\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eToyota Camry\u003c\/a\u003e is clearly not technically superior, but carries very little risk in the way of ownership. Obviously this isn't a perfect analogy, but I hope it helps illustrate my point.\u003c\/p\u003e\n\n\u003cp\u003eIn 2019, there were \u003ctt class=\"remarkup-monospaced\"\u003e230\u003c\/tt\u003e (excluding \u003ca href=\"https:\/\/github.com\/vue-bot\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-bot\u003c\/a\u003e) commits to Vue, \u003ca href=\"https:\/\/github.com\/vuejs\/vue\/graphs\/contributors?from=2019-01-01&to=2019-12-30&type=c\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e153\u003c\/a\u003e (66.5%) were authored by a single individual. During the same time period, there were \u003ctt class=\"remarkup-monospaced\"\u003e2,135\u003c\/tt\u003e commits to React and \u003ca href=\"https:\/\/github.com\/facebook\/react\/graphs\/contributors?from=2019-01-01&to=2019-12-31&type=c\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e4 contributors\u003c\/a\u003e made more than 153 commits and the top individual could only account for 34.2% of commits. 2 contributors individually made more commits to React than the total number of commits to Vue.\u003c\/p\u003e\n\n\u003cp\u003eTo reiterate:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue.js development is not led by a single corporation whose goals may diverge from those of the WMF.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eis objectively false.\u003c\/p\u003e\n\n\u003cp\u003eFrom what I can tell, React mitigates this uncertainty much better than Vue does. It is hard for me to imagine a scenario in which Wikimedia chooses Vue, but does \u003cstrong\u003enot\u003c\/strong\u003e end up investing significantly in maintaining it.\u003c\/p\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5807754\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_29\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5807754\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Catrope\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_31\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Catrope\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eIn summary, I think our options are:\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eAnother option that I think should be considered is using React instead of Vue.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_526\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/m25d4sm73mzvfxk7efxx\/PHID-FILE-zigk2s47ziyr7hqvpw7v\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Ladsgroup\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/17\/\" data-sigil=\"has-tooltip\" data-meta=\"0_522\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_523\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-indigo \" href=\"\/badges\/view\/15\/\" data-sigil=\"has-tooltip\" data-meta=\"0_524\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-eye\" data-meta=\"0_525\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5812071\" id=\"5812071\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_521\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Ladsgroup\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_152\"\u003eLadsgroup\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812071\" data-sigil=\"has-tooltip\" data-meta=\"0_520\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 8:23 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 08:23:29 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_518\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_519\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_153\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5811930\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_32\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5811930\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_33\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eFrom a business perspective, being popular can help mitigate uncertainty and risk.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003e[citation needed]\u003c\/p\u003e\n\n\u003cp\u003e(An example, yahoo being the most popular search engine back in early days)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_537\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/lmqso2pdiuhzvrx7fltm\/PHID-FILE-g4ayg62xazjsnsxkgiqt\/alphanumeric_lato-dark_L.png-_48a3ba-0%2C0%2C0%2C0.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Legoktm\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/17\/\" data-sigil=\"has-tooltip\" data-meta=\"0_535\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_536\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5812101\" id=\"5812101\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_534\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Legoktm\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_155\"\u003eLegoktm\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812101\" data-sigil=\"has-tooltip\" data-meta=\"0_533\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 8:39 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 08:39:49 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_531\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_532\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_154\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eHere are a few more requirements that I think need to be considered with this proposal (being not familiar with React nor vue):\u003c\/p\u003e\n\n\u003cp\u003esecurity side:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHas a good track record of responding to security issues in a timely manner\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHas good defaults\/APIs that makes it hard to introduce XSS issues and makes it obvious in code review if someone is doing something potentially unsafe (see some examples Chris provided at \u003ca href=\"https:\/\/www.mediawiki.org\/wiki\/Requests_for_comment\/Template_engine\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mediawiki.org\/wiki\/Requests_for_comment\/Template_engine\u003c\/a\u003e)\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDoes not require me to \u003ctt class=\"remarkup-monospaced\"\u003enpm install\u003c\/tt\u003e stuff off the internet just to run client-side MW JavaScript (e.g. all PHP dependencies are audited\/manually reviewed and then checked into git in mediawiki\/vendor).\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003esoftware freedom\/redistributor side (with my Debian partially hat on):\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMediaWiki tarballs must ship the preferred form of modifying the JavaScript code, not a bunch of minified files ("Corresponding Source" in GPL lingo)\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis should not introduce dependencies upon things that aren't already included in most Linux distributions\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eAlso, what exactly is this going to replace\/obsolete if successfully adopted? Are we going to drop all of jQuery\/OOUI\/mustache\/etc. in favor of vue.js?\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_540\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/pftw7tn2jgpwaqdmxbtd\/PHID-FILE-4peudqvgp45hlsggbblo\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/TK-999\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5812165\" id=\"5812165\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_539\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/TK-999\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_156\"\u003eTK-999\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812165\" data-sigil=\"has-tooltip\" data-meta=\"0_538\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 9:22 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 09:22:42 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_544\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/d2jbgpbfrur5bcozllul\/PHID-FILE-qajhkccumyez26hhhmkl\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Jakob_WMDE\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5812200\" id=\"5812200\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_542\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-heart-1 phui-timeline-token\" data-meta=\"0_543\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Jakob_WMDE\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_157\"\u003eJakob_WMDE\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812200\" data-sigil=\"has-tooltip\" data-meta=\"0_541\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 9:42 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 09:42:31 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_549\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/mcdy6bokf2bfd6lhrj5x\/PHID-FILE-hvay22mxxy4ab7u76frl\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Addshore\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5812210\" id=\"5812210\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_546\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-emoji-2 phui-timeline-token\" data-meta=\"0_547\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Addshore\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_158\"\u003eAddshore\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812210\" data-sigil=\"has-tooltip\" data-meta=\"0_545\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 9:43 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 09:43:38 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_548\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Addshore\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_159\"\u003eAddshore\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_563\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/mcdy6bokf2bfd6lhrj5x\/PHID-FILE-hvay22mxxy4ab7u76frl\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Addshore\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-indigo \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_559\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-empire\" data-meta=\"0_560\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/8\/\" data-sigil=\"has-tooltip\" data-meta=\"0_561\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-life-ring\" data-meta=\"0_562\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5812363\" id=\"5812363\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_558\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Addshore\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_160\"\u003eAddshore\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5812363\" data-sigil=\"has-tooltip\" data-meta=\"0_557\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 10:39 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 10:39:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_555\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_556\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_161\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5811930\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_34\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5811930\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_36\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eAs an analogy, an engineer might find a \u003ca href=\"https:\/\/www.koenigsegg.com\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eKoenigsegg\u003c\/a\u003e to be the best car in the world\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI don't believe anyone has said any of these frameworks are the "best in the world", so this analogy probably doesn't make sense.\u003c\/p\u003e\n\n\u003cp\u003eI distinctly remember seeing:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eAfter much research and discussion, the working group believes that the open-source Vue.js framework is the \u003cstrong\u003ebest match for the Foundation\u2019s requirements\u003c\/strong\u003e right now as well as for the foreseeable future.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\n\n\u003cblockquote\u003e\u003cp\u003eIn 2019, there were \u003ctt class=\"remarkup-monospaced\"\u003e230\u003c\/tt\u003e (excluding \u003ca href=\"https:\/\/github.com\/vue-bot\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-bot\u003c\/a\u003e) commits to Vue, \u003ca href=\"https:\/\/github.com\/vuejs\/vue\/graphs\/contributors?from=2019-01-01&to=2019-12-30&type=c\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e153\u003c\/a\u003e (66.5%) were authored by a single individual. During the same time period, there were \u003ctt class=\"remarkup-monospaced\"\u003e2,135\u003c\/tt\u003e commits to React and \u003ca href=\"https:\/\/github.com\/facebook\/react\/graphs\/contributors?from=2019-01-01&to=2019-12-31&type=c\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e4 contributors\u003c\/a\u003e made more than 153 commits and the top individual could only account for 34.2% of commits. 2 contributors individually made more commits to React than the total number of commits to Vue.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eReact appears to be made up of one git repo and vue multiple.\u003cbr \/\u003e\nIf you count the vue repos that are linked in the readme you end up with 1105 commits (vue) vs 1830 (react) based on some bad maths by me....\u003cbr \/\u003e\nThis means vue probably has around 60% of the commits of react, which isnt as dramatic as the\u003c\/p\u003e\n\n\u003cp\u003e\u003cdiv class=\"phabricator-remarkup-embed-layout-left\"\u003e\u003ca href=\"https:\/\/phab.wmfusercontent.org\/file\/data\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png\" class=\"phabricator-remarkup-embed-image\" data-sigil=\"lightboxable\" data-meta=\"0_35\"\u003e\u003cimg src=\"https:\/\/phab.wmfusercontent.org\/file\/data\/nvwoyor2vkt5ksidq3gy\/PHID-FILE-ius5rcpagrnu5wsvjdbb\/preview-image.png\" width=\"220\" height=\"55\" alt=\"image.png (75\u00d7716 px, 7 KB)\" \/\u003e\u003c\/a\u003e\u003c\/div\u003e\u003c\/p\u003e\n\n\u003cp\u003eBroken down more to comment on it ...\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003ethere were \u003ctt class=\"remarkup-monospaced\"\u003e2,135\u003c\/tt\u003e commits to React\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI didn't get this number, but 1830 instead for react\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eIn 2019, there were \u003ctt class=\"remarkup-monospaced\"\u003e230\u003c\/tt\u003e (excluding \u003ca href=\"https:\/\/github.com\/vue-bot\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-bot\u003c\/a\u003e) commits to Vue\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI would include the bot..\u003cbr \/\u003e\nThe same changes probably happen in the react repo, just they are not automated.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003e2 contributors individually made more commits to React than the total number of commits to Vue.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eNot sure that is a good measure of much either\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eAnother option that I think should be considered is using React instead of Vue.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eIt was considered (see task description)\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWe believe that the only libraries which currently satisfy all of the requirements above are React and Vue.js.\u003c\/p\u003e\u003c\/blockquote\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_573\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5812722\" id=\"5812722\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_572\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_162\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5812722\" data-sigil=\"has-tooltip\" data-meta=\"0_571\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 12:55 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 12:55:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_569\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_570\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_163\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eWhen choosing a framework, the most important in my view is that the chosen framework be tailored to the specific needs of the project and the community's experience. I think this aspect should be explored in detail as well, so in the next 1 or 2 decades (until these frameworks are superseded and we have this discussion again), we get the best out of the chosen framework.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eCompared to React, Vue puts a bit more focus on approachability. Making sure people who know basics such as: HTML, JavaScript, and CSS can pick it up as fast as possible. \u003ca href=\"https:\/\/web.archive.org\/web\/20170603052649\/https:\/\/betweenthewires.org\/2016\/11\/03\/evan-you\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e(1)\u003c\/a\u003e\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eWikimedians are primarily not developers, we are familiar with document processing and templates. \u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/syntax.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eVue templates\u003c\/a\u003e are similar to wikitext templates, however much simpler and friendly.\u003cbr \/\u003e\nReact JSX however, is wrapped into javascript. This difference might be insignificant for an experienced developer, but it is added complexity for a non-developer who wants to get involved in design work.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue is excellent for creating interactive multi-page apps. It allows you to quickly import the core library and inject Vue into the existing pages. You don\u2019t even need to use components for simpler features.\u003cbr \/\u003e\n\u003cstrong\u003eAlthough Vue is well-suited for developing large SPAs, it wasn\u2019t created for this purpose. As your project grows, reusing HTML templates becomes a pain compared to JSX syntax.\u003c\/strong\u003e \u003ca href=\"https:\/\/www.mindk.com\/blog\/react-vs-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e(2)\u003c\/a\u003e\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eGenerally React is designed with webapps in mind, whereas Vue also favors simple use-cases. The differences are small but reflect a different focus. \u003cstrong\u003eIn my view, our purposes are better aligned with Vue's: MediaWiki is not an app and familiarity of the syntax means less barriers to entry.\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eThis choice is for our primary web presence where we work with articles. It affects the skins, navbar, notifications (Echo), search tool, history, logs, watchlist, editor: the tools that are part of a common frame (layout). These tools are focused on document-processing.\u003c\/p\u003e\n\n\u003cp\u003eMore technical and complicated tools - for ex. statistics - need not be constrained by this choice. If another framework is better equipped for those purposes, that should be used, independent of the framework used for presenting articles. For ex. I can imagine that the developer of a specific statistical tool would want or need to use a specific component only available in one framework. These tools don't need to be integrated with the primary interface, therefore the choice is up to the developer. Even if it would be integrated, using both frameworks is somewhat wasteful, but possible.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eWhatever the choice will be, the primary purpose of this RfC is the introduction of a modern, reactive framework and the actual choice is of secondary importance.\u003c\/strong\u003e\u003cbr \/\u003e\nThe choice is not as fundamental and binding as the choice of php7 vs. hhmv: that was a low-level change that influenced all projects. The choice of a UI framework has less impact.\u003c\/p\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eRegarding the future of these frameworks:\u003c\/h6\u003e\n\n\u003cp\u003eThe speed at which web frameworks and paradigms come and go, I expect both Vue and React to be superseded within 5 years (numbers are arbitrary) by a new, yet not as popular approach and deprecated within 10 years in favor of the new technology. In a decade I expect this discussion to happen again to choose the new technology of that time. When choosing a framework, we are choosing it for this timespan only.\u003c\/p\u003e\n\n\u003cp\u003eBoth frameworks have been around for 5+ years and have a notable community. If the creators of these frameworks would change their path in a problematic way, the communities would be able to keep alive and up-to-date these frameworks with current browsers, only the technology itself would stop advancing. That's all that Wikimedia needs: most of our web presence currently uses old technologies, that still works. 10 years from now that wouldn't be more an issue, than now.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_582\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3o3vze4ef5t3jqvz6jgg\/PHID-FILE-3ctxfqflh2mwdle6gexw\/alphanumeric_aleo-white_T.png-_146268-255%2C255%2C255%2C0.7.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Tarrow\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5812745\" id=\"5812745\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_581\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Tarrow\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_165\"\u003eTarrow\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5812745\" data-sigil=\"has-tooltip\" data-meta=\"0_580\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 12:57 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 12:57:29 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_578\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_579\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_164\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5812101\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_37\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5812101\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Legoktm\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_40\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Legoktm\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\n\n\u003cblockquote\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDoes not require me to \u003ctt class=\"remarkup-monospaced\"\u003enpm install\u003c\/tt\u003e stuff off the internet just to run client-side MW JavaScript (e.g. all PHP dependencies are audited\/manually reviewed and then checked into git in mediawiki\/vendor).\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI believe that either react or vue could be included in a php-vendor-like git repo we control. It could even be just checked in as a library to resources\/src\/. Similar to the way we currently ship jQuery.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003esoftware freedom\/redistributor side (with my Debian partially hat on):\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMediaWiki tarballs must ship the preferred form of modifying the JavaScript code, not a bunch of minified files ("Corresponding Source" in GPL lingo)\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eCould we ship either react or vue in the same way we do jQuery in the tarballs? I don't think this RFC is about running some build step so as far as I can tell no code would be transformed or minified before run time. There is (\u003ca href=\"\/T199004\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_38\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT199004\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e) where maybe this point would be important though?\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis should not introduce dependencies upon things that aren't already included in most Linux distributions\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI don't think this specifically introduces any extra dependencies. Perhaps this is also important in the (vaguely?) related build step ticket (\u003ca href=\"\/T199004\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_39\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT199004\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e).\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eAlso, what exactly is this going to replace\/obsolete if successfully adopted? Are we going to drop all of jQuery\/OOUI\/mustache\/etc. in favor of vue.js?\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eAs I read it I think the RFC isn't proposing that. In the description it mentions an initially limited scope.\u003c\/p\u003e\n\n\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eTask Description says:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003e[Adoption should] be limited to one or two case-study projects that fall within the upcoming Desktop Refresh project. These should be small-scale, discrete features which would rely on client-side interactivity regardless of how they were implemented.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI'm not sure I feel like I'm competent to discuss how effective the modern frameworks this RFC discusses are on the track record of security issues. Maybe someone from FAWG can comment?\u003c\/p\u003e\n\n\u003cp\u003eI'm also not really that confident about discussing how they encourage best practices re XSS etc. I found the vue docs to be fairly readable: \u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/security.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/vuejs.org\/v2\/guide\/security.html\u003c\/a\u003e which suggests to me that in most cases things are sanitised and the smell to look for is \u003ctt class=\"remarkup-monospaced\"\u003ev-html\u003c\/tt\u003e which is the way to shove un-escaped stuff in. Again maybe a FAWG person could add anything more they talked about on this.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_592\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5813806\" id=\"5813806\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_591\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_166\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5813806\" data-sigil=\"has-tooltip\" data-meta=\"0_590\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 9:25 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 21:25:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_588\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_589\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_167\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5802492\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_42\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5802492\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Tonina_Zhelyazkova_WMDE\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_44\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e\u003cspan class=\"phui-tag-dot phui-tag-color-grey\"\u003e\u003c\/span\u003e@Tonina_Zhelyazkova_WMDE\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5800460\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_41\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5800460\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_43\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI forgot to mention that both WordPress (as of \u003ca href=\"https:\/\/wordpress.org\/support\/wordpress-version\/version-5-0\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eversion 5.0\u003c\/a\u003e) and Drupal (\u003ca href=\"https:\/\/dri.es\/drupal-looking-to-adopt-react\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003efuture\u003c\/a\u003e) use React. I think it might be wise to consult with these two projects and see why they chose React over Vue.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eOne can have the opposite argument: Wouldn't it be wise to consult with big projects, which use Vue, as to \u003ca href=\"https:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewhy they chose it?\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eIt would be wise to explore a few projects why they chose either framework, but so far I've only found Gitlab's reasoning linked by Tonina.\u003cbr \/\u003e\nInstead, I'll pick some reasons from neutral comparisons, starting with the more concise, aiming to be neutral myself. Long post, summary at the end.\u003c\/p\u003e\n\n\u003ch5 class=\"remarkup-header\"\u003eComparison A: \u003ca href=\"https:\/\/www.mobileappdaily.com\/2018\/08\/20\/reactjs-vs-vuejs\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mobileappdaily.com\/2018\/08\/20\/reactjs-vs-vuejs\u003c\/a\u003e\u003c\/h5\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eWhen To Deploy React.js\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhile developing a complex app\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhen developing both Mobile and Web App\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eFor community support\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eWhy Use React.JS?\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eNo need to rewrite the code: When using React Native for building an interactive user interface, there is no need for the developer to write the code from the scratch and it saves all the extra effort while increasing the efficiency at the same time.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eComponents can be reused: The component-specific structure of React gives offers the facility to develop applications using an agile approach, which is simplified for the developer with the help of the reusable components.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReactJS is a single codebase: Developers often have to write app's code separately for different platforms like iOS and Android but with the React JavaScript framework this issue is resolved as it is a single codebase.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eCompatibility with third-party plugins: Another huge reason to use this JavaScript framework is that react.js provides great compatibility with third-party plugins without facing any speed or memory space issue.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eWhen To Deploy Vue.js\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhile developing a web app having templates\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhen developing a simple category app\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhen racing against time\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eWhy Use Vue.JS?\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReduced optimization efforts: The component's dependencies are automatically tracked in Vue.JS and during its render that's why the system is aware of when to re-render thus, reducing the optimization efforts.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eOfficial support: Although both React and Vue provide robust Routing Solutions, but when it comes to official support corners Vue.js leads react. In Vue native, the state management and routing libraries are officially backed up, unlike react.js updates.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eEase-of-use: As this uses the standard HTML-based templates, the revamping process of an already existing app becomes much easier. This ease-of-use has made Vue a popular framework with the reusable templates and effective structure.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eComparison B: \u003ca href=\"https:\/\/www.codeinwp.com\/blog\/angular-vs-vue-vs-react\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.codeinwp.com\/blog\/angular-vs-vue-vs-react\/\u003c\/a\u003e (December 11, 2019)\u003c\/h5\u003e\n\n\u003cblockquote\u003e\u003cp\u003eReact, interestingly, combines the UI and behavior of components. For instance, here is the code to create a hello world component in React. In React, the same part of the code is responsible for creating a UI element and dictating its behavior.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cem\u003e My note: \u003c\/em\u003e This is a benefit in highly interactive, complex UIs, where the DOM is strongly coupled with the functionality and often change together. The change can be made in one place.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue: Further, you can also use pre-processors in Vue rather than CSS, which is a great functionality. Vue is great when it comes to integration with other libraries, like Bootstrap.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cem\u003e My note: \u003c\/em\u003e MediaWiki style sheets are coded in LESS and pre-processed to generate CSS.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eComparison C: \u003ca href=\"https:\/\/www.mindk.com\/blog\/react-vs-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mindk.com\/blog\/react-vs-vue\/\u003c\/a\u003e (December, 2018)\u003c\/h5\u003e\n\n\u003cblockquote\u003e\u003ch6 class=\"remarkup-header\"\u003etemplating vs JSX\u003c\/h6\u003e\n\n\u003cp\u003eAny valid HTML can be a Vue template. You can add JS functionality with bindings and custom directives (attributes). \u003cstrong\u003eTemplates allow you to gradually migrate your project to Vue.\u003c\/strong\u003e The framework has a great degree of customization allowing you to:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eUse SCSS or CSS scoping instead of CSS;\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWrite your code in preprocessors like Pug;\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eJSX gives you the versatility of a full programming language with temporary variables, flow controls, and referencing JS values directly in scope. JSX also supports sophisticated IDE features like autocomplete, type checking, or linting.\u003c\/p\u003e\n\n\u003cp\u003eIn the end, the choice between JSX and templates comes down to personal preference. \u003cstrong\u003eJSX can feel more powerful and flexible\u003c\/strong\u003e while templates offer a clear separation of concerns preventing you from injecting too much logic into views. \u003cstrong\u003eFinally, designers and HTML developers are seldom used to JSX which makes collaboration a bit of a problem for UI\/UX-heavy teams.\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eDocumentation\u003c\/h6\u003e\n\n\u003cp\u003eVue has wonderful docs and its API references are one of the best in the industry. They\u2019re well-written, clear and accessible dealing with pretty much everything you need to know to create Vue applications.\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eUnlike React, \u003cstrong\u003e the docs are translated in several languages in addition to English. \u003c\/strong\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eFor better or worse, Vue is more opinionated than React with many issues having a clear answer in the docs.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eReact\u2019s documentation pales in comparison with Vue\u2019s. It goes through the basics of React development and includes some advanced concepts but the presentation isn\u2019t as accessible or well-structured. What\u2019s more, it doesn\u2019t include the detailed overview of React ecosystem like in Vue\u2019s docs.\u003c\/p\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eScalability\u003c\/h6\u003e\n\n\u003cp\u003eWith front-end frameworks, scalability comes in two flavors: expanding a single-page application (SPA) and adding more pages to a traditional MPA.\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eVue is excellent for creating interactive multi-page apps. It allows you to quickly import the core library and inject Vue into the existing pages. You don\u2019t even need to use components for simpler features.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAlthough Vue is well-suited for developing large SPAs, it wasn\u2019t created for this purpose. As your project grows, reusing HTML templates becomes a pain compared to JSX syntax.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/blockquote\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eComparison D: \u003ca href=\"https:\/\/www.dunebook.com\/react-vs-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.dunebook.com\/react-vs-vue\/\u003c\/a\u003e (December 5, 2019)\u003c\/h5\u003e\n\n\u003cblockquote\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eVue is simpler in terms of syntax. In React, all components express their UI within render functions using JSX, a declarative XML-like syntax that works within JavaScript.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReact has a CBA with pure JavaScript; a declarative style; and powerful, developer-friendly DOM abstractions.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReact provides outstanding performance thanks to its virtual DOM and smart-reconciliation algorithm, which, as a side benefit, lets you perform testing without spinning up (starting) a headless browser.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eVue is incrementally adaptable, with a core library focused on user interfaces that you can use in existing projects\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eVue is approachable\u2013the beginners can pick up the library easily, and the confirmed developers can be productive very quickly\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eVue is a little smaller & faster than react. It doesn\u2019t mean Vue is better than react.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIn a nutshell, if you need to build a lightweight or medium-sized application, or maybe even prototype an idea? Use Vue. Building a larger application? Use React\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/blockquote\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eGitLab - Vue: \u003ca href=\"https:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\u003c\/a\u003e\u003c\/h5\u003e\n\n\u003cblockquote\u003e\u003cp\u003eSimplicity and ease of use. Primarily what drew us to Vue.js is that it allows our team to easily write simple JavaScript. Getting started with Vue.js is extremely easy. Its source code is very readable, and the documentation is the only tutorial you'll ever need. You don't need external libraries.\u003cbr \/\u003e\n[...] what we love about Vue.js: it's an elegant combination of structure and simplicity.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eVue - official comparison: \u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/comparison.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/vuejs.org\/v2\/guide\/comparison.html\u003c\/a\u003e\u003c\/h5\u003e\n\n\u003cblockquote\u003e\u003cp\u003eIn React, everything is just JavaScript. Not only are HTML structures expressed via JSX, the recent trends also tend to put CSS management inside JavaScript as well. This approach has its own benefits, but also comes with various trade-offs that may not seem worthwhile for every developer. Vue embraces classic web technologies and builds on top of them. \u003cbr \/\u003e\n[...] as the default experience we offer templates as a simpler alternative [to JSX]. Any valid HTML is also a valid Vue template, and this leads to a few advantages of its own:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eFor many developers who have been working with HTML, templates feel more natural to read and write. The preference itself can be somewhat subjective, but if it makes the developer more productive then the benefit is objective.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHTML-based templates make it much easier to progressively migrate existing applications to take advantage of Vue\u2019s reactivity features.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIt also makes it much easier for designers and less experienced developers to parse and contribute to the codebase.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eYou can even use pre-processors such as Pug (formerly known as Jade) to author your Vue templates.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eVue has even taken [the state management] model a step further with Vuex, an Elm-inspired state management solution that integrates deeply into Vue that we think offers a superior development experience.\u003cbr \/\u003e\nAnother important difference between these offerings is that Vue\u2019s companion libraries for state management and routing (among other concerns) are all officially supported and kept up-to-date with the core library. React instead chooses to leave these concerns to the community, creating a more fragmented ecosystem. Being more popular though, React\u2019s ecosystem is considerably richer than Vue\u2019s.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eWordPress and Drupal\u003c\/h5\u003e\n\n\u003cp\u003eI haven't found the answer why WordPress uses React. Here are a few references that popped up while searching:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/ma.tt\/2017\/09\/on-react-and-wordpress\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/ma.tt\/2017\/09\/on-react-and-wordpress\/\u003c\/a\u003e On the 2017 patent clause debacle\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/techcrunch.com\/2017\/09\/15\/wordpress-to-ditch-react-library-over-facebook-patent-clause-risk\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/techcrunch.com\/2017\/09\/15\/wordpress-to-ditch-react-library-over-facebook-patent-clause-risk\/\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/www.drupal.org\/blog\/drupal-looking-to-adopt-react\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.drupal.org\/blog\/drupal-looking-to-adopt-react\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWhile a few people named alternative options, React was our preferred option, by far, \u003cstrong\u003edue to its high degree of adoption\u003c\/strong\u003e, component-based and \u003cstrong\u003eunopinionated nature\u003c\/strong\u003e, and its \u003cstrong\u003epotential to make Drupal developers' skills more future-proof\u003c\/strong\u003e.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003e\u003cem\u003e My note: \u003c\/em\u003e WordPress being the most popular CMS, the most likely reason for their choice - similar to Drupal's - is the adoption (popularity) of React.\u003c\/p\u003e\n\n\u003cp\u003eIt is worth to note that - if not for WordPress -, today we might not be considering React because of that license clause they tried to implement.\u003cbr \/\u003e\nRegardless of who's the backer of a project, unwanted turns can happen. It's only the balance between the community's and the backer's power that can prevent that from happening. In this sense the creators of Vue have less power to make a change to their project that would make Vue unsuitable for MediaWiki.\u003cbr \/\u003e\nAll in all I find it very unlikely that any of these projects would take a severe turn, that necessitates abandoning that project. If it might happen, it could happen to any of them (it almost happened to React).\u003c\/p\u003e\n\n\u003ch5 class=\"remarkup-header\"\u003eSources\u003c\/h5\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/www.mobileappdaily.com\/2018\/08\/20\/reactjs-vs-vuejs\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mobileappdaily.com\/2018\/08\/20\/reactjs-vs-vuejs\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/www.codeinwp.com\/blog\/angular-vs-vue-vs-react\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.codeinwp.com\/blog\/angular-vs-vue-vs-react\/\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/www.mindk.com\/blog\/react-vs-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mindk.com\/blog\/react-vs-vue\/\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/www.dunebook.com\/react-vs-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.dunebook.com\/react-vs-vue\/\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/about.gitlab.com\/blog\/2016\/10\/20\/why-we-chose-vue\/\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/vuejs.org\/v2\/guide\/comparison.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/vuejs.org\/v2\/guide\/comparison.html\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eNot cited:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"http:\/\/artjoker.net\/tpost\/t01e93ecgl-react-vs-vuejs-which-to-choose\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttp:\/\/artjoker.net\/tpost\/t01e93ecgl-react-vs-vuejs-which-to-choose\u003c\/a\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/medium.com\/javascript-in-plain-english\/i-created-the-exact-same-app-in-react-and-vue-here-are-the-differences-e9a1ae8077fd\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/medium.com\/javascript-in-plain-english\/i-created-the-exact-same-app-in-react-and-vue-here-are-the-differences-e9a1ae8077fd\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003ch5 class=\"remarkup-header\"\u003eSummary\u003c\/h5\u003e\n\n\u003cp\u003eVue and React has the same purpose, the same or very similar features (in the core or in popular plugins). These differ mostly in the details and implementation approach. I'm listing only those features that distingush these frameworks for MediaWiki's purpose.\u003c\/p\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eReact:\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eJSX (React's template functionality) has a more streamlined developer experience in highly complex applications with a lot of business logic written in javascript.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eCSS is part of the JSX code, closely coupled with the javascript and the html.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThe developer has to think about performance optimization (\u003ctt class=\"remarkup-monospaced\"\u003eshouldComponentUpdate\u003c\/tt\u003e property) \u2014 a common source of hard-to-debug, circumstantial bugs.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReact Native for mobile platforms is a mature product. Components can be shared between the webapp and the mobile app.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eVue:\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHTML templates have a more designer-friendly syntax\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eSupport for LESS, SCSS, Pug (compact html syntax) pre-processors.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThe developer does not have to think about when a component should be updated. There's built-in dependency tracking, which has a computational price that, but that cannot be observed in tests. Vue actually has a small performance advatage in many tests.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eEase-of-use, well organized documentation (some translated to multiple languages).\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ca href=\"https:\/\/vue-native.io\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eVue Native\u003c\/a\u003e exists. It has a small market share.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eBoth frameworks have:\u003c\/h6\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003ereactive DOM updates (data binding) -- core feature\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDOM generation from components (templates) -- core feature\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003erouter (URL parsing, browser history navigation) -- plugin for React, in core for Vue\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eserver-side rendering (for search engines and fast first-page loading time, old browsers and low-bandwidth connections) -- plugin for both\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\n\n\u003ch6 class=\"remarkup-header\"\u003eSummary summary\u003c\/h6\u003e\n\n\u003cp\u003eThe above cited comparisons seem to agree that React is better suited for complex, business-logic-heavy single-page applications. MediaWiki is neither of these. \u003cbr \/\u003e\nProjects that could benefit from React's focus on javascript-first design - like statistics and specialized batch management interfaces - are free to choose their own framework, or even combine the two, independently of the framework used for the primary document-viewer and editor interface.\u003c\/p\u003e\n\n\u003cp\u003eThe articles also seem to agree on that Vue - in comparison to React - is better equipped for the document-focused multi-page environment of MediaWiki,\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003efor designers and casual developers - who are of a much greater number in the Wikimedia Movement, than highly experienced developers,\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003efor progressively (incrementally) transitioning the existing MediaWiki code-base.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eI've only explored the developer experience with the citations above: in my view that's what predetermines how easily developers and volunteers can adapt to the new framework, which in turn determines how many contributors will get involved with the development.\u003cbr \/\u003e\nThe community and stability of these frameworks has been investigated above and I have no concerns about the availability of either framework in the next decade, after which presumably there will be another framework to adopt.\u003c\/p\u003e\n\n\u003ch6 class=\"remarkup-header\"\u003eConclusion\u003c\/h6\u003e\n\n\u003cp\u003eBased on this research I have the strong opinion that Vue offers an easier transition and easier adaptation for designers and volunteers. These benefits could result in more involvement from the community in development, resulting in more UI improvements and hopefully bridging the gap between developers and community members to some extent.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_601\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5813866\" id=\"5813866\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_600\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_168\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5813866\" data-sigil=\"has-tooltip\" data-meta=\"0_599\"\u003e\u003cspan class=\"screen-only\"\u003eJan 17 2020, 9:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-17 21:53:33 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_597\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_598\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_169\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThe Great Wall of Text above might be easier to read on-wiki: \u003ca href=\"https:\/\/www.mediawiki.org\/wiki\/User:Aron_Manning\/Which_web_framework_to_choose\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.mediawiki.org\/wiki\/User:Aron_Manning\/Which_web_framework_to_choose\u003c\/a\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_604\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/2gffy5bww6ck2ynuxnpz\/PHID-FILE-jyvkjrrdy7c4mbtu7gb3\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/RhinosF1\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5815182\" id=\"5815182\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_603\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/RhinosF1\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_170\"\u003eRhinosF1\u003c\/a\u003e subscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5815182\" data-sigil=\"has-tooltip\" data-meta=\"0_602\"\u003e\u003cspan class=\"screen-only\"\u003eJan 19 2020, 11:36 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-19 11:36:24 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_609\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/3iigldu33itwnv6qred6\/PHID-FILE-crux7ijupvjze2tyjdst\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Osnard\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5815791\" id=\"5815791\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-trophy phui-timeline-icon\" data-meta=\"0_606\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-emoji-2 phui-timeline-token\" data-meta=\"0_607\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Osnard\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_171\"\u003eOsnard\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5815791\" data-sigil=\"has-tooltip\" data-meta=\"0_605\"\u003e\u003cspan class=\"screen-only\"\u003eJan 20 2020, 7:37 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-20 07:37:27 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_608\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Osnard\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_172\"\u003eOsnard\u003c\/a\u003e subscribed.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_618\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5821419\" id=\"5821419\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_617\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_173\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5821419\" data-sigil=\"has-tooltip\" data-meta=\"0_616\"\u003e\u003cspan class=\"screen-only\"\u003eJan 21 2020, 10:29 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-21 22:29:07 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_614\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_615\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_174\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5812071\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_45\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5812071\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Ladsgroup\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_46\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Ladsgroup\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003e[citation needed]\u003c\/p\u003e\n\n\u003cp\u003e(An example, yahoo being the most popular search engine back in early days)\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI wasn't able to locate any research papers on the subject, perhaps because of my lack of proper search terms, or (more likely?) they are behind a paywall (or maybe the research hasn't been done).\u003c\/p\u003e\n\n\u003cp\u003eI was able to find an \u003ca href=\"https:\/\/www.cio.com\/article\/2925639\/18-enterprise-software-selection-risks.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003earticle\u003c\/a\u003e by \u003ca href=\"https:\/\/www.cio.com\/author\/Chris-Doig\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eChris Doig\u003c\/a\u003e where they list a lot of risks associated with choosing a software vendor (in our case, either \u003cem\u003eFacebook\u003c\/em\u003e or \u003cem\u003eVue Technology, LLC\u003c\/em\u003e) one of them being:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWhen you buy from companies like Microsoft, IBM, Oracle there is little risk of them going out of business. Unfortunately, larger vendors are seldom hotbeds of innovation. If you want more innovative software, you may need to consider smaller vendors or startups. Then there is the risk that these companies are not what they appear to be.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eNot only are newer business \u003ca href=\"https:\/\/www.bls.gov\/opub\/mlr\/2007\/09\/art1full.pdf\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eless likely to survive\u003c\/a\u003e (only 28% survive to their 6th year), but companies who fail to reach a positive balance sheet (whether for-profit or non-profit), cannot continue to operate.\u003c\/p\u003e\n\n\u003cp\u003eContinuing your example, if we were living in 1997, choosing Yahoo! as the search engine would be a wise choice. Between a publicly-traded company and a company that doesn't even exist yet (Google), of course Yahoo! is the better choice. Only by using \u003ca href=\"https:\/\/en.wikipedia.org\/wiki\/Hindsight_bias\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehindsight bias\u003c\/a\u003e can we realize that we should have waited a year and chosen a startup company that nobody had ever heard of. Without knowing the future, it's impossible to know what new technology is going to replace both Vue & React. However, choosing the less risky of the two is a way to mitigate business risk.\u003c\/p\u003e\n\n\u003cp\u003eTo be clear, it is perfectly fine to take on the increased risk of choosing Vue over React. Like the article mentions, there are other factors you would want to take into consideration (like how some in this thread have mentioned how quickly the projects respond to security concerns, etc.). However, it is important to acknowledge the risk we are taking on, and I think it's important to talk about how we plan to mitigate that risk.\u003c\/p\u003e\n\n\u003cp\u003eI think the greatest risk to Vue, is that \u003cem\u003eVue Technology, LLC\u003c\/em\u003e goes out of business and the foundation is forced to either start investing heavily in its maintenance or migrating to a different framework. If we want to take on that risk, that is \u003cem\u003etotally fine\u003c\/em\u003e, but can we call \u003ca href=\"https:\/\/en.wikipedia.org\/wiki\/Call_a_spade_a_spade\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ea spade a spade\u003c\/a\u003e and acknowledge the business risk associated with choosing Vue?\u003c\/p\u003e\n\n\u003cp\u003eIn a lot of ways, this reminds me of how WordPress and Drupal chose jQuery, and Joomla! chose \u003ca href=\"https:\/\/mootools.net\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eMooTools\u003c\/a\u003e. I have no idea which one is technically superior, but I don't want to be the Joomla of this story. Of course, none of us know the future, but if we're going to walk into this, I hope we can with our eyes wide open.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_629\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/bcjpua4r57wx43zxfghi\/PHID-FILE-he7vv2keyzoo67ipt2um\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/egardner\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/22\/\" data-sigil=\"has-tooltip\" data-meta=\"0_627\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_628\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5821811\" id=\"5821811\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_626\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/egardner\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_175\"\u003eegardner\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5821811\" data-sigil=\"has-tooltip\" data-meta=\"0_625\"\u003e\u003cspan class=\"screen-only\"\u003eJan 22 2020, 1:57 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-22 01:57:28 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_623\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_624\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_176\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI wanted to join in this discussion earlier, but I spent the last two weeks fighting off the flu. Thanks to everyone who has participated so far, it's great to see interest in this topic. I'd like to try and speak to a few points that have been raised so far. I'll paraphrase some of the questions I've seen upthread:\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003e1. Does this proposal change the way Mediawiki uses Javascript generally (i.e. by introducing new requirements in browser or on server)?\u003c\/strong\u003e\u003cbr \/\u003e\nI think the answer to this question is no\u00a0\u2013\u00a0at least not immediately. The focus of this RFC is to change the way we build the interactive, JS-heavy elements we are already shipping to users. For now, that means using a strategy of progressive enhancement, where server-rendered content would be replaced by more interactive, UI elements written in Vue.\u003c\/p\u003e\n\n\u003cp\u003eThere was a lot of interest within the FAWG in server-side rendering (SSR), so I think that's something that we will continue to explore. It may even be possible to get server-rendered Vue components \u003ca href=\"https:\/\/ssr.vuejs.org\/guide\/non-node.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewithout needing an external Node.js service\u003c\/a\u003e, by relying on something like PHP v8JS. Being able to define a single set of server-rendered UI components that would work for users with and without JS (as opposed to having to duplicate our UI in JS and PHP) would be a big step forward in terms of productivity.\u003c\/p\u003e\n\n\u003cp\u003eBut any change of this nature would be the subject of a new RFC; using a tool like Vue keeps these possibilities open in the future but doesn't force us into working this way until we decide that we want to.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003e2. Would Vue replace OOJS\/OOUI\/jQuery UI\/etc?\u003c\/strong\u003e\u003cbr \/\u003e\nIn the short term, no \u2013\u00a0we want to develop on or two test features to ensure that this is a good addition to our technology stack. See the discussion of pilot projects, etc. in the RFC.\u003c\/p\u003e\n\n\u003cp\u003eBut ultimately (assuming the initial projects are successful), probably so. A lot of work went in to OOJS and OOUI, but the unfortunate reality is that basically no one outside the Wiki-universe uses these tools or pays attention to them. The entire paradigm of how these tools work is increasingly out of sync with contemporary standards in web development (non-reactive, everything is mutable, heavy reliance on jQuery not just for DOM manipulation but for promises & object utilities, Java-style inheritance, etc). I think we would be better of if we were able to adopt some more commonly-used solutions instead of having to maintain our own separate ecosystem for everything.\u003c\/p\u003e\n\n\u003cp\u003eOf course this is easier said than done, so any migration away from something like OOUI would be a big process that would take some time. Porting over the tools that have been developed internally for accessibility and internationalization would be a top priority. But if we could pull this off, the rest of the web could benefit from the Foundation's work in these areas (OOUI has great accessibility but no one else is using it unfortunately).\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003e3. Vue vs React\u003c\/strong\u003e\u003cbr \/\u003e\nBoth Vue and React are great, and to some extent the choice between these two frameworks is always going to be a bit subjective. However, I think that there are some areas where Vue has advantages when it comes to our specific use-case.\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIt will be much easier to integrate Vue into the Mediawiki tech stack as it presently exists because it doesn't require a build step. Ultimately we \u003cem\u003eshould\u003c\/em\u003e adopt some kind of front-end build step, but I have no idea when that will happen. As \u003ca href=\"\/p\/Catrope\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_47\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Catrope\u003c\/span\u003e\u003c\/a\u003e mentioned upthread, we think support for single-file Vue components in ResourceLoader is doable in the near future\u00a0\u2013\u00a0provided the JS in those components is written in ES5 (Vue supports this just fine; components are not written using \u003ctt class=\"remarkup-monospaced\"\u003eClass\u003c\/tt\u003e declaractions, etc. as is common in React). It's a lot harder to experiment with a new framework if you're forced to choose between 1) re-wiring a lot of your infrastructure, even before your experiment is finished, or 2) using the tool in a very non-standard way (harder to evaluate). The downside is that we have to ship the Vue template compiler in production, but we can stop doing this once we have a better build system in place. Vue's full (runtime + compiler) build comes in to ~33KB gzipped, so I think this is a compromise we can live with for the time being.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHTML templates: Vue components are defined in HTML and CSS, the classic languages of the web. I think this will make it much easier for designers, less-experienced developers, and interested people generally to understand what is going on (\u003cspan class=\"phabricator-remarkup-mention-unknown\"\u003e@AronManning\u003c\/span\u003e mentioned this above and I'm in agreement). As a large open-source project, I think anything we can do in the interest of transparency \/ lowering barriers to contribution is worth considering.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDo more with fewer libraries: this was one of the points in the original RFC text above \u2013\u00a0if we need to explicitly whitelist, audit, and vendor a limited set of 3rd-party libraries (similar to how PHP dependencies are handled) then I think that using Vue means fewer things to keep track of.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eStability: I know that not everyone is in agreement here, but I still think Vue has some advantages in terms of stability vs. React. The React team seems to be sending very strong signals to the community that the Hooks API is the future (they are recommending people write new code based on Hooks instead of classical components, for example). Not long ago there was a similar big push to write as much as possible using stateless functional components. Even if the core React library itself has handled breaking changes pretty gracefully, the idea of what constitutes "best practices" seems to have gone through a lot of changes. This is all magnified once you enter the world of 3rd-party libraries: what's the currently-accepted "best" way to handle CSS in React components, for example? See the re-write\/breaking changes in React-router for another example. In contrast, Vue has been good about offering alternative ways of doing things while preserving a stable set of practices for basic use. Vue v3 will add support for something very similar to React's Hooks API but the idea is that it's not something that everyone will need to reach for. Similarly, you can write stateless functional components (and even use JSX) in Vue but it's only going to be useful to do so in particular edge cases.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eAgain, these are not reasons why "Vue is better than React" \u2013\u00a0but I do think that a case can be made that Vue is a better fit for the needs of the Foundation right now.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_639\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5822020\" id=\"5822020\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_638\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_177\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5822020\" data-sigil=\"has-tooltip\" data-meta=\"0_637\"\u003e\u003cspan class=\"screen-only\"\u003eJan 22 2020, 7:05 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-22 07:05:42 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_635\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_636\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_178\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5821419\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_48\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5821419\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_49\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI think the greatest risk to Vue, is that \u003cem\u003eVue Technology, LLC\u003c\/em\u003e goes out of business and the foundation is forced to either start investing heavily in its maintenance or migrating to a different framework. If we want to take on that risk, that is \u003cem\u003etotally fine\u003c\/em\u003e, but can we call \u003ca href=\"https:\/\/en.wikipedia.org\/wiki\/Call_a_spade_a_spade\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ea spade a spade\u003c\/a\u003e and acknowledge the business risk associated with choosing Vue?\u003c\/p\u003e\n\n\u003cp\u003eIn a lot of ways, this reminds me of how WordPress and Drupal chose jQuery, and Joomla! chose \u003ca href=\"https:\/\/mootools.net\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eMooTools\u003c\/a\u003e. I have no idea which one is technically superior, but I don't want to be the Joomla of this story. Of course, none of us know the future, but if we're going to walk into this, I hope we can with our eyes wide open.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eYes, we should understand the risks. I tried to measure the popularity with search trends:\u003cbr \/\u003e\nReact js as a search term is 1.5x times as popular as Vue js in the past year. (\u003ca href=\"https:\/\/trends.google.com\/trends\/explore?q=vue%20js,react%20js\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e1\u003c\/a\u003e).\u003cbr \/\u003e\nIn the last 5 years, it was 3x times as popular (\u003ca href=\"https:\/\/trends.google.com\/trends\/explore?date=2015-01-01%202020-01-22&q=vue%20js,react%20js\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e2015-2020\u003c\/a\u003e)\u003cbr \/\u003e\nJquery in its first 5 years was ca. 15x as popular as Mootools (\u003ca href=\"https:\/\/trends.google.com\/trends\/explore?date=2007-01-01%202012-01-01&q=jquery,mootools\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e2007-2012\u003c\/a\u003e)\u003cbr \/\u003e\njQuery vs MooTools can be hardly compared to React vs Vue, Mootools never really took off the ground (\u003ca href=\"https:\/\/trends.google.com\/trends\/explore?date=2006-01-01%202020-01-01&q=jquery,mootools\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003e2006-2020\u003c\/a\u003e).\u003c\/p\u003e\n\n\u003cp\u003eTo neutrally assess the risks, we have to consider Facebook's \u003ca href=\"https:\/\/techcrunch.com\/2017\/09\/15\/wordpress-to-ditch-react-library-over-facebook-patent-clause-risk\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eattempt to change the license of React\u003c\/a\u003e. Vue is not in a position where such an attempt could be made.\u003c\/p\u003e\n\n\u003cp\u003eVue now has a significant corporate user-base (\u003ca href=\"https:\/\/codersera.com\/blog\/vuejs-vs-reactjs-comparison\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003esource\u003c\/a\u003e), presumably thanks to the easy, progressive transitioning:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eFacebook, Netflix (also using React)\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdobe, Grammarly, Behance, Xiaomi, Alibaba, Codeship, Gitlab, Laracasts, ...\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eIf the backing of Vue would collapse, GitLab alone could take on the development: that would be cheaper than migrating to React.\u003cbr \/\u003e\nIt is very unlikely, that all these users would abandon Vue if the unexpected happens. Even if they do, the WMF is already developing and maintaining a UI framework on its own. Keeping alive Vue would not be much harder.\u003c\/p\u003e\n\n\u003cp\u003eI have the impression that Vue and React entail similar risks, as far as that can be measured. What's bigger risk - Vue's smaller backing, or Facebook's greed - cannot be objectively evaluated.\u003cbr \/\u003e\nWith both frameworks, it is very unlikely that their community would let go of it, should anything happen.\u003c\/p\u003e\n\n\u003cp\u003eUnderstanding these risks, I'm sure the technical benefits, which are a reality today, far outweigh a possible, but unlikely worst-case scenario in a theoretical future.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_648\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7in5i7j22jezecbaetth\/PHID-FILE-n36covhe4ti6wyqvrnsg\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Michael\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5822411\" id=\"5822411\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_647\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Michael\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_179\"\u003eMichael\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5822411\" data-sigil=\"has-tooltip\" data-meta=\"0_646\"\u003e\u003cspan class=\"screen-only\"\u003eJan 22 2020, 10:54 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-22 10:54:40 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_644\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_645\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_180\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5822020\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_50\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5822020\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003cspan class=\"phabricator-remarkup-mention-unknown\"\u003e@AronManning\u003c\/span\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eTo neutrally asses the risks, we have to consider Facebook's \u003ca href=\"https:\/\/techcrunch.com\/2017\/09\/15\/wordpress-to-ditch-react-library-over-facebook-patent-clause-risk\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eattempt to change the license of React\u003c\/a\u003e. Vue is not in a position where such an attempt could be made.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eWhile I agree with the overall decision, we shouldn't misrepresent what happened. Facebook \u003cstrong\u003e\u003ca href=\"https:\/\/github.com\/facebook\/react\/commits\/master\/LICENSE\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003edid\u003c\/a\u003e\u003c\/strong\u003e change the license of react in 2014 and nobody cared for years until it blew up in 2017. Also, their defensive patent clause only concerned people\/companies that own\/create software patents. And since we are writing GPL software, that should never affect us, right?\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_651\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/pdvgf6bwbegtkliymkn2\/PHID-FILE-xratrbg4u35mp2lcxckv\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Masumrezarock100\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"5822426\" id=\"5822426\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-times phui-timeline-icon\" data-meta=\"0_650\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Masumrezarock100\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_181\"\u003eMasumrezarock100\u003c\/a\u003e unsubscribed.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5822426\" data-sigil=\"has-tooltip\" data-meta=\"0_649\"\u003e\u003cspan class=\"screen-only\"\u003eJan 22 2020, 10:58 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-22 10:58:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_661\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/p5u77oqyov4ap3ps6cpc\/PHID-FILE-gjasyhyux3vagjtellif\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/Demian\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5823432\" id=\"5823432\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_660\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/Demian\/\" class=\"phui-handle handle-availability-disabled phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_182\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e Demian\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5823432\" data-sigil=\"has-tooltip\" data-meta=\"0_659\"\u003e\u003cspan class=\"screen-only\"\u003eJan 22 2020, 4:32 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-22 16:32:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_657\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_658\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_183\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5822411\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_52\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5822411\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Michael\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_53\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Michael\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5822020\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_51\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5822020\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003cspan class=\"phabricator-remarkup-mention-unknown\"\u003e@AronManning\u003c\/span\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eTo neutrally assess the risks, we have to consider Facebook's \u003ca href=\"https:\/\/techcrunch.com\/2017\/09\/15\/wordpress-to-ditch-react-library-over-facebook-patent-clause-risk\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eattempt to change the license of React\u003c\/a\u003e. Vue is not in a position where such an attempt could be made.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eWhile I agree with the overall decision, we shouldn't misrepresent what happened. Facebook \u003cstrong\u003e\u003ca href=\"https:\/\/github.com\/facebook\/react\/commits\/master\/LICENSE\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003edid\u003c\/a\u003e\u003c\/strong\u003e change the license of react in 2014 and nobody cared for years until it blew up in 2017. Also, their defensive patent clause only concerned people\/companies that own\/create software patents. And since we are writing GPL software, that should never affect us, right?\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eThanks for clarifying. The licensing question is of no interest (or concern) to me, thus I mentioned it superficially, as a drawback that can happen if the backer is \u003cem\u003etoo big\u003c\/em\u003e.\u003cbr \/\u003e\nAlso to clarify: I do not make a decision for the WMF, only for myself. I wish to present the reasons, instead.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_670\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5826886\" id=\"5826886\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_669\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_184\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5826886\" data-sigil=\"has-tooltip\" data-meta=\"0_668\"\u003e\u003cspan class=\"screen-only\"\u003eJan 23 2020, 2:32 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-23 14:32:55 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_666\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_667\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_185\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5812363\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_54\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5812363\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/Addshore\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_56\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@Addshore\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cp\u003eI don't believe anyone has said any of these frameworks are the "best in the world", so this analogy probably doesn't make sense.\u003c\/p\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI did say:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eObviously this isn't a perfect analogy, but I hope it helps illustrate my point.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eIf it doesn't help then please feel free to discard it.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eIf you count the vue repos that are linked in the readme you end up with 1105 commits (vue) vs 1830 (react) based on some bad maths by me....\u003cbr \/\u003e\nThis means vue probably has around 60% of the commits of react, which isnt as dramatic as the\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI may have not been clear. I'm not concerned with the \u003cem\u003enumber\u003c\/em\u003e of commits, as that would be difficult (if not impossible) to compare. I'm concerend with the \u003cem\u003edistribution\u003c\/em\u003e of those commits. If the claim is that:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue.js development is not led by a single corporation whose goals may diverge from those of the WMF.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003ethere doesn't seem to be any evidence to support that claim, and in fact, there appears to evidence to support the exact opposite. In fact, it is not only led by a single corporation (Vue Technology, LLC) it is led by a single individual whose goals may diverge from those of the WMF. (based on the distribution of commits, who owns the trademarks, domain names, etc.).\u003c\/p\u003e\n\n\u003cp\u003eI have been wondering over the past few days if it would be less risk for Wikimedia Foundation to simply purchase Vue Technology, LLC (and all of its assets). At least that would prevent the company from going out of business or being purchased by another company like Facebook.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003e\u003cdiv class=\"phabricator-remarkup-embed-layout-left\"\u003e\u003ca href=\"https:\/\/phab.wmfusercontent.org\/file\/data\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png\" class=\"phabricator-remarkup-embed-image\" data-sigil=\"lightboxable\" data-meta=\"0_55\"\u003e\u003cimg src=\"https:\/\/phab.wmfusercontent.org\/file\/data\/nvwoyor2vkt5ksidq3gy\/PHID-FILE-ius5rcpagrnu5wsvjdbb\/preview-image.png\" width=\"220\" height=\"55\" alt=\"image.png (75\u00d7716 px, 7 KB)\" \/\u003e\u003c\/a\u003e\u003c\/div\u003e\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI'm really confused by this. \u003ca href=\"https:\/\/github.com\/vuejs\/vue-router\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-router\u003c\/a\u003e, \u003ca href=\"https:\/\/github.com\/vuejs\/vue-cli\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-cli\u003c\/a\u003e, and \u003ca href=\"https:\/\/github.com\/vuejs\/vue-loader\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003evue-loader\u003c\/a\u003e are not libraries that React offers (though they are offered \u003ca href=\"https:\/\/github.com\/ReactTraining\/react-router\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eby\u003c\/a\u003e \u003ca href=\"https:\/\/github.com\/facebook\/create-react-app\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethe\u003c\/a\u003e \u003ca href=\"https:\/\/github.com\/babel\/babel\/tree\/master\/packages\/babel-preset-react\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ecommunity\u003c\/a\u003e). These aren't libraries that are part of the proposal. Are we considering adding these to MediaWiki as well? If so I can take a look at the comparable libraries from React. Again, I'm not concerned with the number of commits or even number of contributors, but if we're going to claim that Vue is a "better" choice because it isn't controlled by a single company (individual) then I think we should be able to backup that claim.\u003c\/p\u003e\n\n\u003cp\u003eI feel like the proposal bounces back and forth between something \u003cem\u003elightweight\u003c\/em\u003e and something that has "batteries included" as stated in:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eVue.js may enable us to rely on fewer libraries as dependencies\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eIf that is a goal, it might be beneficial to consider other frameworks like \u003ca href=\"https:\/\/nextjs.org\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eNext.js\u003c\/a\u003e, though I imagine that is out of scope for this RFC.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eI didn't get this number, but 1830 instead for react\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI may have used the wrong \u003ctt class=\"remarkup-monospaced\"\u003egit\u003c\/tt\u003e command. I did something \u003ca href=\"https:\/\/stackoverflow.com\/a\/36080228\/864374\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003elike this\u003c\/a\u003e, but that might be wrong. :)\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eI would include the bot..\u003cbr \/\u003e\nThe same changes probably happen in the react repo, just they are not automated.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eEven if I include the bot, it doesn't change the \u003cem\u003edistribution\u003c\/em\u003e of commits, which I assume is part of the methodology used to make the claim \u003cem\u003eagainst\u003c\/em\u003e React in the first place.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cblockquote\u003e\u003cp\u003eAnother option that I think should be considered is using React instead of Vue.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eIt was considered (see task description)\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eApologies, I meant "reconsider." Restated for clarity:\u003cbr \/\u003e\nAnother option might be to \u003cstrong\u003ereconsider\u003c\/strong\u003e using React instead of Vue.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_680\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/7lqct4xp34rumpqkxymb\/PHID-FILE-7yq2n2z3fpbyyfcqlhwu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/dbarratt\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5827132\" id=\"5827132\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_679\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_186\"\u003edbarratt\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003eEdited\u003cspan class=\"visual-only\" aria-hidden=\"true\"\u003e \u00b7 \u003c\/span\u003e\u003ca href=\"#5827132\" data-sigil=\"has-tooltip\" data-meta=\"0_678\"\u003e\u003cspan class=\"screen-only\"\u003eJan 23 2020, 4:07 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-23 16:07:27 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_676\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_677\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_187\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote class=\"remarkup-reply-block\"\u003e\n\u003cdiv class=\"remarkup-reply-head\"\u003eIn \u003ca href=\"\/T241180#5821811\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_57\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT241180#5821811\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/p\/egardner\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_58\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@egardner\u003c\/span\u003e\u003c\/a\u003e wrote:\u003c\/div\u003e\n\u003cdiv class=\"remarkup-reply-body\"\u003e\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIt will be much easier to integrate Vue into the Mediawiki tech stack as it presently exists because it doesn't require a build step.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eI haven't dived into the rest of this, but this really stood out to me.\u003c\/p\u003e\n\n\u003cp\u003eThe \u003ca href=\"https:\/\/reactjs.org\/docs\/add-react-to-a-website.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003eReact docs\u003c\/a\u003e are very explicit:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWith a few lines of code and \u003cstrong\u003eno build tooling\u003c\/strong\u003e, try React in a small part of your website. You can then either gradually expand its presence, or keep it contained to a few dynamic widgets.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eThe rest of \u003ca href=\"https:\/\/reactjs.org\/docs\/add-react-to-a-website.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ethat page\u003c\/a\u003e explains how to do just that. I would recommend reading it and trying it out. :)\u003c\/p\u003e\n\n\u003cp\u003eAlso, React can be used \u003ca href=\"https:\/\/reactjs.org\/docs\/react-without-es6.html\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ewithout ES6\u003c\/a\u003e (though it might be better to use \u003ca href=\"https:\/\/reactjs.org\/docs\/components-and-props.html#function-and-class-components\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003efunctional components\u003c\/a\u003e instead of \u003ctt class=\"remarkup-monospaced\"\u003ecreateReactClass()\u003c\/tt\u003e)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_691\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/phab.wmfusercontent.org\/file\/data\/bcjpua4r57wx43zxfghi\/PHID-FILE-he7vv2keyzoo67ipt2um\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/egardner\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/22\/\" data-sigil=\"has-tooltip\" data-meta=\"0_689\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_690\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"5827364\" id=\"5827364\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_688\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/egardner\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_188\"\u003eegardner\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#5827364\" data-sigil=\"has-tooltip\" data-meta=\"0_687\"\u003e\u003cspan class=\"screen-only\"\u003eJan 23 2020, 4:55 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2020-01-23 16:55:53 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_685\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_686\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_189\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003ca href=\"\/p\/dbarratt\/\" class=\"phui-tag-view phui-tag-type-person \" data-sigil=\"hovercard\" data-meta=\"0_59\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-person\"\u003e@dbarratt\u003c\/span\u003e\u003c\/a\u003e regarding need for a build step: there's some discussion of this in the original RFC; it's true that React can be used sans build-step with the CreateElement API.\u003c\/p\u003e\n\n\u003cp\u003eBut I think this is still a second-class experience of using the framework. Useful for edge cases but probably not the way we'd want to encourage for wide-scale adoption here. To get on the "happy path" with React you need JSX (and probably ES6) which means you need a transpiler like Babel. As I've mentioned upthread, I strongly believe that we should look into adopting a front-end build step that could include a tool like Babel, but this is a big change to our infrastructure and probably still at least 1 year away.\u003c\/p\u003e\n\n\u003cp\u003eVue has something very similar to React's CreateElement API (the \u003ctt class=\"remarkup-monospaced\"\u003eh()\u003c\/tt\u003e function, etc). But it's own happy path (single-file components, aka .vue files) is going to be easier for us to get to from where we are currently. This is because vue files are basically HTML files, so we can work with them using our existing infrastructure (ResourceLoader).\u003c\/p\u003e\n\n\u003cp\u003eThere will be some limitations to this approach:\u003c\/p\u003e\n\n\u003col class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003ewe'll rely on Vue's built-in template compiler for the time being, which means shipping a little bit of additional code in production;\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003ethe JS part of the components will need to be in ES5 for now;\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003ewe won't have the ability to write scoped styles for components (but we can still write normal CSS and keep things all in one file for clarity).\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cp\u003ePersonally I think these are limitations we can live with (plus they will hopefully be temporary). This is what I meant when I said it would be easier to integrate Vue into our tech stack. With a small amount of work we can get most of the advantages of using the framework in the intended way.\u003c\/p\u003e\n\n\u003cp\u003eSince React and Vue are ultimately very similar, I think that considerations of what the migration path looks like for us to use one or the other can helpfully inform our decision of which one to use.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e"},"javelin_metadata":[{"hovercardSpec":{"objectPHID":"PHID-USER-ilk3nopl66nufkd26tee"}},{"hovercardSpec":{"objectPHID":"PHID-USER-6tlavgtsosjuvizsej53","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-a3ndrbmqqq7sb7olfps4","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3ljmcrqixyljk2wy63jb","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uqcn2l4ng4murmyfnvyp","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uqcn2l4ng4murmyfnvyp","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kxyuujnpfeyuo2w2bw3s","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-t5vuh5cscqpo25f4rzkd","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-mkscnu5vrsd7rgzxbvwp"}},{"hovercardSpec":{"objectPHID":"PHID-USER-t5vuh5cscqpo25f4rzkd","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-sai77mtxmpqnm6pycyvz","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-fovtl67ew4l4cc3oeypc","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"phid":"PHID-FILE-p36yxqc3kajf4fexhdj6","uri":"https:\/\/phab.wmfusercontent.org\/file\/data\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png","dUri":"https:\/\/phab.wmfusercontent.org\/file\/download\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png","alt":"image.png (75\u00d7716 px, 7 KB)","viewable":true,"monogram":"F31515253"},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-mkscnu5vrsd7rgzxbvwp"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-mkscnu5vrsd7rgzxbvwp"}},{"hovercardSpec":{"objectPHID":"PHID-USER-v7vgzvvcw7v2umf737ri","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ctchvhisqfvk4rz7nt7d","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-fovtl67ew4l4cc3oeypc","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-6wbaay22g6ffupyt3pxo","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"phid":"PHID-FILE-p36yxqc3kajf4fexhdj6","uri":"https:\/\/phab.wmfusercontent.org\/file\/data\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png","dUri":"https:\/\/phab.wmfusercontent.org\/file\/download\/lkhi54byczcbzo2lzdun\/PHID-FILE-p36yxqc3kajf4fexhdj6\/image.png","alt":"image.png (75\u00d7716 px, 7 KB)","viewable":true,"monogram":"F31515253"},{"hovercardSpec":{"objectPHID":"PHID-USER-u7w6n5ecde66oujx33pe","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm","contextPHID":"PHID-TASK-o47oln57tv4tbvxqwo62"}},{"hovercardSpec":{"objectPHID":"PHID-USER-a6p24cvyblhfzc7we7nc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kms5nmb5gvqzcdep3cnl"}},{"hovercardSpec":{"objectPHID":"PHID-USER-74o4a5jmvheilvwbsvfd"}},{"hovercardSpec":{"objectPHID":"PHID-USER-zq6nzfwxwkyliljd4lfy"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-5dv7dcltvyvolwzbm2af"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ctchvhisqfvk4rz7nt7d"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ctchvhisqfvk4rz7nt7d"}},{"hovercardSpec":{"objectPHID":"PHID-USER-a3ndrbmqqq7sb7olfps4"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g7ljr7obhy5hgp4qpuiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-srhlj2447vmpmrfhqnfa"}},{"hovercardSpec":{"objectPHID":"PHID-USER-howgnelzsoau4shmq2h6"}},{"hovercardSpec":{"objectPHID":"PHID-USER-howgnelzsoau4shmq2h6"}},{"hovercardSpec":{"objectPHID":"PHID-USER-bvdzfpnbrlgku23njcs2"}},{"phid":"PHID-XACT-TASK-wobbrf4rscqbdbw"},{"hovercardSpec":{"objectPHID":"PHID-USER-bvdzfpnbrlgku23njcs2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-rtgzkfevqvroqtyyxkci"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yahbwrgfgw2shcqbrf2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yahbwrgfgw2shcqbrf2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-caadsxn4xg5gmxrpn6kz"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3qggseejscb6dtiy4uyx"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3qggseejscb6dtiy4uyx"}},{"phid":"PHID-XACT-TASK-gcxipavcytbxr6w"},{"hovercardSpec":{"objectPHID":"PHID-USER-3qggseejscb6dtiy4uyx"}},{"hovercardSpec":{"objectPHID":"PHID-USER-m2yck6646cdt5t6zkta4"}},{"hovercardSpec":{"objectPHID":"PHID-USER-sscimmfqgfuh4pe2kfyw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vifcrebzoy6r7apoo4kj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vifcrebzoy6r7apoo4kj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-abr5ge6gl2ovg7jokpst"}},{"hovercardSpec":{"objectPHID":"PHID-USER-c47vnc2yxmwfvvc4367q"}},{"hovercardSpec":{"objectPHID":"PHID-USER-cjbkqgaozso5gfp3xv2n"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kxyuujnpfeyuo2w2bw3s"}},{"hovercardSpec":{"objectPHID":"PHID-USER-hrcsuxxosiyjqpef64tc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-p6hvqn5njgnxuagekh4b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-p6hvqn5njgnxuagekh4b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ip3u7ffkd2nk5q3kdjg5"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ip3u7ffkd2nk5q3kdjg5"}},{"hovercardSpec":{"objectPHID":"PHID-USER-74o4a5jmvheilvwbsvfd"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-mkscnu5vrsd7rgzxbvwp"}},{"phid":"PHID-XACT-TASK-67m5ijwsjsu42mh"},{"hovercardSpec":{"objectPHID":"PHID-USER-a3ndrbmqqq7sb7olfps4"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4"}},{"phid":"PHID-XACT-TASK-hehx4dgi5sifmaw"},{"phid":"PHID-XACT-TASK-wzw634euuknpseo"},{"hovercardSpec":{"objectPHID":"PHID-USER-yawytiq5q7eduxmvnkid"}},{"phid":"PHID-XACT-TASK-h34pawl32ytysh5"},{"hovercardSpec":{"objectPHID":"PHID-USER-3ljmcrqixyljk2wy63jb"}},{"phid":"PHID-XACT-TASK-glndccbtsc2gknq"},{"hovercardSpec":{"objectPHID":"PHID-USER-uqcn2l4ng4murmyfnvyp"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-voqx4a3g5vsogfw"},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-c3t4ff3x57oseyq"},{"phid":"PHID-XACT-TASK-46xypjrwsbrvmee"},{"hovercardSpec":{"objectPHID":"PHID-USER-t5vuh5cscqpo25f4rzkd"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kxyuujnpfeyuo2w2bw3s"}},{"phid":"PHID-XACT-TASK-xyxmcf7cg6ie5ex"},{"hovercardSpec":{"objectPHID":"PHID-USER-je4a7kqdfgacwkyhtg4c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y"}},{"phid":"PHID-XACT-TASK-gs7pb7tm66xm3rx"},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-7fof4eg2idqzndh"},{"hovercardSpec":{"objectPHID":"PHID-USER-6wbaay22g6ffupyt3pxo"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uqcn2l4ng4murmyfnvyp"}},{"phid":"PHID-XACT-TASK-5prsr45wnzwkdyt"},{"hovercardSpec":{"objectPHID":"PHID-USER-vy4qeyrllb2jf245ys5y"}},{"phid":"PHID-XACT-TASK-367lcymbqi7tqn5"},{"hovercardSpec":{"objectPHID":"PHID-USER-vbyvvtbztxaeuaxelxx4"}},{"phid":"PHID-XACT-TASK-lyo36fe23sqswqu"},{"hovercardSpec":{"objectPHID":"PHID-USER-cjstd4vv3u3gq2sijr7d"}},{"hovercardSpec":{"objectPHID":"PHID-USER-5dqihbanu3caaj7pigif"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-gdnvii2tziibym5uf7pi"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-oa6xrkbjkdkxrcft3gwx"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-fc6tzpgo4uo33xqvhtdj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-fovtl67ew4l4cc3oeypc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-sai77mtxmpqnm6pycyvz"}},{"hovercardSpec":{"objectPHID":"PHID-USER-fovtl67ew4l4cc3oeypc"}},{"phid":"PHID-XACT-TASK-lm6kbrfyawu5ldw"},{"hovercardSpec":{"objectPHID":"PHID-USER-3neel27i7dyu62jbbx2l"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-pdw4jlcz543opbp2drhq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3neel27i7dyu62jbbx2l"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-vylp6qxkolgim3w3hdzc"}},{"hovercardSpec":{"objectPHID":"PHID-PCOL-4ze4hlrtc2ev52plnqaf"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-pdw4jlcz543opbp2drhq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-ab7geevp5wv4sgc"},{"hovercardSpec":{"objectPHID":"PHID-USER-ctchvhisqfvk4rz7nt7d"}},{"phid":"PHID-XACT-TASK-igqbxy7jga2f5at"},{"phid":"PHID-XACT-TASK-o3pfiybmwwetnxf"},{"hovercardSpec":{"objectPHID":"PHID-USER-v7vgzvvcw7v2umf737ri"}},{"hovercardSpec":{"objectPHID":"PHID-USER-c4xszutxtrvtj73h3rns"}},{"hovercardSpec":{"objectPHID":"PHID-USER-5dv7dcltvyvolwzbm2af"}},{"hovercardSpec":{"objectPHID":"PHID-USER-u7w6n5ecde66oujx33pe"}},{"hovercardSpec":{"objectPHID":"PHID-USER-u7w6n5ecde66oujx33pe"}},{"hovercardSpec":{"objectPHID":"PHID-USER-u7w6n5ecde66oujx33pe"}},{"phid":"PHID-XACT-TASK-x7fhjumbwowja5r"},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"phid":"PHID-XACT-TASK-ikitcmnutp4ce3p"},{"phid":"PHID-XACT-TASK-vy6mbe3wbre7jpv"},{"hovercardSpec":{"objectPHID":"PHID-USER-57yq4timbqfdkujzji3d"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"phid":"PHID-XACT-TASK-rlg7l7xmqnpgd6g"},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"phid":"PHID-XACT-TASK-nsdmaoumwkyw4zb"},{"hovercardSpec":{"objectPHID":"PHID-USER-2wquu5nwbdqcuzo5qiuf"}},{"hovercardSpec":{"objectPHID":"PHID-USER-khiuzivvgcimpgvedbzf"}},{"hovercardSpec":{"objectPHID":"PHID-USER-khiuzivvgcimpgvedbzf"}},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-7lhjz6cr5imt7q7"},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4"}},{"phid":"PHID-XACT-TASK-meeaz4gr6nuxzry"},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"phid":"PHID-XACT-TASK-xvcqtyhvrk6qmyr"},{"hovercardSpec":{"objectPHID":"PHID-USER-6wbaay22g6ffupyt3pxo"}},{"phid":"PHID-XACT-TASK-oed7epu4qioxv6p"},{"hovercardSpec":{"objectPHID":"PHID-USER-g7ljr7obhy5hgp4qpuiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-724ccjw2eq65o2te67qg"}},{"phid":"PHID-XACT-TASK-rzokpkvxevq2d3s"},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-2cqfnabhsrwufrp"},{"hovercardSpec":{"objectPHID":"PHID-USER-g5rqg2k7irztdonlursm"}},{"phid":"PHID-XACT-TASK-6wp4s6u3vtgd35q"},{"hovercardSpec":{"objectPHID":"PHID-USER-vlt742cfg2fzamtdvlr4"}},{"phid":"PHID-XACT-TASK-q7tcozhnp22lr2g"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-xwbn5bjm34pjlvk","anchor":"5755642"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-rpwbyiv3653iqzo","anchor":"5755655"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-yro5kbb4ihz5cox","anchor":"5756205"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-r2m3epcjvglzu2s","anchor":"5756335"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-6kzxdsmxwgqtgmg","anchor":"5756343"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ygd73pd37kfzwxr","anchor":"5756375"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-m5pc2n36plniywd","anchor":"5756376"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-sgtltxdiqgivhub","anchor":"5756415"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-emyl4m2wgspjgbg","anchor":"5756768"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-atbbz3v74mkbkm7","anchor":"5757159"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-ct6wi2hja74m4jo","anchor":"5757378"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-kjsv7ikxtpxtpm2","anchor":"5757467"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-632jxn7ftizqiqx","anchor":"5757598"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-6cdkvaryruhsvnf","anchor":"5757605"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-pvt6kaqzcqld67a","anchor":"5757733"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-wobbrf4rscqbdbw\/","ref":"T241180#5757784"},[],{"anchor":"5757784"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_1\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_242\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_243\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_3\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-wobbrf4rscqbdbw\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_244\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_245\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Web Perf Hero","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-wobbrf4rscqbdbw","anchor":"5757784"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-44rlsjlmlg3ppy7","anchor":"5758088"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-6up4vdaplcapx4s","anchor":"5758118"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-dfkmny56b7szj7j","anchor":"5759910"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-p25h5edcpknhbub","anchor":"5766523"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-gcxipavcytbxr6w\/","ref":"T241180#5766561"},[],{"anchor":"5766561"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_5\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_267\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_268\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_7\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-gcxipavcytbxr6w\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_269\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_270\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-gcxipavcytbxr6w","anchor":"5766561"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-4m5safio3nied5o","anchor":"5766563"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-tjle75t3bxzkdgz","anchor":"5766660"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-vi5un6ii2pcg577","anchor":"5767471"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-gbtn3uw3zvg32po","anchor":"5770100"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-y4vk2zm6hdhqfla","anchor":"5770102"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-pa6jvnlco4gjjle","anchor":"5770166"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-atdxvzvzsin24oa","anchor":"5770973"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-tzocaiptn65xn7w","anchor":"5777298"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-kowrkigdwyycg5w","anchor":"5778644"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-ams6btkznoueb4w","anchor":"5780771"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-nth3qbxzxumwxwh","anchor":"5782450"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-mtime7b3rwjrljx","anchor":"5782472"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-fpiu6mxrsu7p4oj","anchor":"5783307"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-67m5ijwsjsu42mh\/","ref":"T241180#5789742"},[],{"anchor":"5789742"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_9\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_322\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_323\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_11\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-67m5ijwsjsu42mh\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_324\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_325\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"W3C AC rep","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-67m5ijwsjsu42mh","anchor":"5789742"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-hehx4dgi5sifmaw\/","ref":"T241180#5789763"},[],{"anchor":"5789763"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_13\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_333\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_334\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_15\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-hehx4dgi5sifmaw\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_335\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_336\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Deployment Training Graduate","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-hehx4dgi5sifmaw","anchor":"5789763"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-wzw634euuknpseo\/","ref":"T241180#5790160"},[],{"anchor":"5790160"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_17\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_344\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_345\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_19\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-wzw634euuknpseo\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_346\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_347\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-wzw634euuknpseo","anchor":"5790160"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-h34pawl32ytysh5\/","ref":"T241180#5797821"},[],{"anchor":"5797821"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_21\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_353\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_354\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_23\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-h34pawl32ytysh5\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_355\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_356\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_25\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-h34pawl32ytysh5\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_357\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-h34pawl32ytysh5","anchor":"5797821"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-glndccbtsc2gknq\/","ref":"T241180#5798663"},[],{"anchor":"5798663"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_27\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_363\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_364\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_29\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-glndccbtsc2gknq\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_365\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_366\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Backport Deployer","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-glndccbtsc2gknq","anchor":"5798663"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-os6xdqklah237ml","anchor":"5799020"},{"tip":"Via Web"},[],[],[],[],{"phid":"PHID-XACT-TASK-ds2r3axmckgxisc","anchor":"5799233"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-ynbd7fxh3vi5rzg","anchor":"5799303"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-voqx4a3g5vsogfw\/","ref":"T241180#5800440"},[],{"anchor":"5800440"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_31\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_388\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_389\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_33\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-voqx4a3g5vsogfw\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_390\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_391\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_35\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-voqx4a3g5vsogfw\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_392\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-voqx4a3g5vsogfw","anchor":"5800440"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-c3t4ff3x57oseyq\/","ref":"T241180#5800460"},[],{"anchor":"5800460"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_37\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_398\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_399\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_39\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-c3t4ff3x57oseyq\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_400\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_401\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-c3t4ff3x57oseyq","anchor":"5800460"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-46xypjrwsbrvmee\/","ref":"T241180#5801407"},[],{"anchor":"5801407"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_41\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_407\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_408\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_43\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-46xypjrwsbrvmee\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_409\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_410\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Mentor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-46xypjrwsbrvmee","anchor":"5801407"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-xyxmcf7cg6ie5ex\/","ref":"T241180#5801495"},[],{"anchor":"5801495"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_45\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_418\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_419\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_47\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-xyxmcf7cg6ie5ex\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_420\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_421\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-xyxmcf7cg6ie5ex","anchor":"5801495"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-fi2lf56hhmv3jaq","anchor":"5801917"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-gs7pb7tm66xm3rx\/","ref":"T241180#5802492"},[],{"anchor":"5802492"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_49\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_430\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_431\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_51\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-gs7pb7tm66xm3rx\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_432\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_433\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-gs7pb7tm66xm3rx","anchor":"5802492"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-7fof4eg2idqzndh\/","ref":"T241180#5802585"},[],{"anchor":"5802585"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_53\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_439\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_440\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_55\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-7fof4eg2idqzndh\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_441\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_442\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_57\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-7fof4eg2idqzndh\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_443\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-7fof4eg2idqzndh","anchor":"5802585"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-e2jaexnnab5fhvv","anchor":"5802623"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-5prsr45wnzwkdyt\/","ref":"T241180#5802985"},[],{"anchor":"5802985"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_59\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_452\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_453\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_61\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-5prsr45wnzwkdyt\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_454\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_455\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Backport Deployer","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-5prsr45wnzwkdyt","anchor":"5802985"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-367lcymbqi7tqn5\/","ref":"T241180#5805149"},[],{"anchor":"5805149"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_63\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_463\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_464\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_65\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-367lcymbqi7tqn5\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_465\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_466\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-367lcymbqi7tqn5","anchor":"5805149"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-dwonsbnm4htzord","anchor":"5805693"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-lyo36fe23sqswqu\/","ref":"T241180#5807233"},[],{"anchor":"5807233"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_67\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_475\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_476\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_69\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-lyo36fe23sqswqu\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_477\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_478\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-lyo36fe23sqswqu","anchor":"5807233"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-fgbeof5zsxnwewx","anchor":"5807481"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-lm6kbrfyawu5ldw\/","ref":"T241180#5807754"},[],{"anchor":"5807754"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_71\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_487\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_488\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_73\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-lm6kbrfyawu5ldw\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_489\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_490\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Mentor","align":"E","size":300},[],{"tip":"Backport Deployer","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-pli45netxck74bz","anchor":"5807754"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-wvjzhiujfznz4ma","anchor":"5811122"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-ab7geevp5wv4sgc\/","ref":"T241180#5811930"},[],{"anchor":"5811930"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_75\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_504\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_505\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_77\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-ab7geevp5wv4sgc\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_506\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_507\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_79\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-ab7geevp5wv4sgc\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_508\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ab7geevp5wv4sgc","anchor":"5811930"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-igqbxy7jga2f5at\/","ref":"T241180#5812071"},[],{"anchor":"5812071"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_81\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_514\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_515\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_83\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-igqbxy7jga2f5at\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_516\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_517\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Web Perf Hero","align":"E","size":300},[],{"tip":"Rat Catcher","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-igqbxy7jga2f5at","anchor":"5812071"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-o3pfiybmwwetnxf\/","ref":"T241180#5812101"},[],{"anchor":"5812101"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_85\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_527\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_528\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_87\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-o3pfiybmwwetnxf\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_529\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_530\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Web Perf Hero","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-o3pfiybmwwetnxf","anchor":"5812101"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-uxddurynajqxpzm","anchor":"5812165"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-yxcqxnj4pt3mfyp","anchor":"5812200"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-knnmzggtbvix323","anchor":"5812210"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-x7fhjumbwowja5r\/","ref":"T241180#5812363"},[],{"anchor":"5812363"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_89\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_550\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_551\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_91\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-x7fhjumbwowja5r\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_552\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_553\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_93\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-x7fhjumbwowja5r\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_554\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Nerd Sniper","align":"E","size":300},[],{"tip":"Continuous Integrator","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-x7fhjumbwowja5r","anchor":"5812363"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-ikitcmnutp4ce3p\/","ref":"T241180#5812722"},[],{"anchor":"5812722"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_95\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_564\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_565\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_97\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-ikitcmnutp4ce3p\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_566\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_567\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_99\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-ikitcmnutp4ce3p\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_568\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ikitcmnutp4ce3p","anchor":"5812722"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-vy6mbe3wbre7jpv\/","ref":"T241180#5812745"},[],{"anchor":"5812745"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_101\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_574\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_575\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_103\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-vy6mbe3wbre7jpv\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_576\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_577\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-vy6mbe3wbre7jpv","anchor":"5812745"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-rlg7l7xmqnpgd6g\/","ref":"T241180#5813806"},[],{"anchor":"5813806"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_105\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_583\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_584\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_107\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-rlg7l7xmqnpgd6g\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_585\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_586\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_109\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-rlg7l7xmqnpgd6g\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_587\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-rlg7l7xmqnpgd6g","anchor":"5813806"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-nsdmaoumwkyw4zb\/","ref":"T241180#5813866"},[],{"anchor":"5813866"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_111\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_593\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_594\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_113\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-nsdmaoumwkyw4zb\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_595\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_596\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-nsdmaoumwkyw4zb","anchor":"5813866"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-yz7zuexdp77obuc","anchor":"5815182"},{"tip":"Via Web"},[],[],[],{"phid":"PHID-XACT-TASK-vmdjzkoycirjffa","anchor":"5815791"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-7lhjz6cr5imt7q7\/","ref":"T241180#5821419"},[],{"anchor":"5821419"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_115\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_610\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_611\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_117\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-7lhjz6cr5imt7q7\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_612\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_613\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-7lhjz6cr5imt7q7","anchor":"5821419"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-meeaz4gr6nuxzry\/","ref":"T241180#5821811"},[],{"anchor":"5821811"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_119\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_619\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_620\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_121\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-meeaz4gr6nuxzry\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_621\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_622\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Deployment Training Graduate","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-meeaz4gr6nuxzry","anchor":"5821811"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-xvcqtyhvrk6qmyr\/","ref":"T241180#5822020"},[],{"anchor":"5822020"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_123\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_630\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_631\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_125\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-xvcqtyhvrk6qmyr\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_632\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_633\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_127\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-xvcqtyhvrk6qmyr\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_634\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-xvcqtyhvrk6qmyr","anchor":"5822020"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-oed7epu4qioxv6p\/","ref":"T241180#5822411"},[],{"anchor":"5822411"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_129\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_640\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_641\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_131\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-oed7epu4qioxv6p\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_642\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_643\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-oed7epu4qioxv6p","anchor":"5822411"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ajmbpa2gtz4eiuh","anchor":"5822426"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-rzokpkvxevq2d3s\/","ref":"T241180#5823432"},[],{"anchor":"5823432"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_133\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_652\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_653\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_135\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-rzokpkvxevq2d3s\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_654\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_655\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_137\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-rzokpkvxevq2d3s\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_656\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-rzokpkvxevq2d3s","anchor":"5823432"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-2cqfnabhsrwufrp\/","ref":"T241180#5826886"},[],{"anchor":"5826886"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_139\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_662\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_663\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_141\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-2cqfnabhsrwufrp\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_664\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_665\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-2cqfnabhsrwufrp","anchor":"5826886"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-6wp4s6u3vtgd35q\/","ref":"T241180#5827132"},[],{"anchor":"5827132"},[],[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_143\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_671\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_672\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_145\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-6wp4s6u3vtgd35q\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_673\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_674\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_147\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-6wp4s6u3vtgd35q\/\" class=\"phabricator-action-view-item\" data-sigil=\"workflow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-list phabricator-action-view-icon\" data-meta=\"0_675\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Edit History\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-6wp4s6u3vtgd35q","anchor":"5827132"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-q7tcozhnp22lr2g\/","ref":"T241180#5827364"},[],{"anchor":"5827364"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_149\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_681\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_682\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_151\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-q7tcozhnp22lr2g\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_683\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_684\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Deployment Training Graduate","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-q7tcozhnp22lr2g","anchor":"5827364"}],"javelin_behaviors":{"phui-hovercards":[],"phabricator-watch-anchor":[],"phabricator-tooltips":[],"phui-dropdown-menu":[]},"javelin_resources":["https:\/\/phab.wmfusercontent.org\/res\/defaultX\/phabricator\/2eeda9e0\/core.pkg.js","https:\/\/phab.wmfusercontent.org\/res\/defaultX\/phabricator\/98e6504a\/rsrc\/externals\/javelin\/core\/init.js","https:\/\/phab.wmfusercontent.org\/res\/defaultX\/phabricator\/968d91ee\/core.pkg.css","https:\/\/phab.wmfusercontent.org\/res\/defaultX\/phabricator\/666e25ad\/rsrc\/css\/phui\/phui-badge.css"]}