for (;;);{"error":null,"payload":{"timeline":"\u003cdiv class=\"phui-timeline-shell phui-timeline-yellow\" data-sigil=\"transaction anchor-container\" data-meta=\"0_121\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/poofib6warbqyc4eh2cb\/PHID-FILE-bquyqdemag5g3rrlouwb\/github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/champo\/\" 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=\"58906\" id=\"58906\" 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-pencil phui-timeline-icon\" data-meta=\"0_116\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_0\"\u003echampo\u003c\/a\u003e created this task.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#58906\" data-sigil=\"has-tooltip\" data-meta=\"0_115\"\u003e\u003cspan class=\"screen-only\"\u003eMay 14 2014, 6:59 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-14 18: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 fill-has-color phui-timeline-icon-fill-yellow\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-arrow-up phui-timeline-icon\" data-meta=\"0_117\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_5\"\u003echampo\u003c\/a\u003e raised the priority of this task from \u003cspan class=\"phui-timeline-value\"\u003e\u003c\/span\u003e to \u003cspan class=\"phui-timeline-value\"\u003eNeeds Triage\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-pencil phui-timeline-icon\" data-meta=\"0_118\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_6\"\u003echampo\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-jrdschmp7lyvdc5\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\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-link phui-timeline-icon\" data-meta=\"0_119\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_7\"\u003echampo\u003c\/a\u003e added a project: \u003ca href=\"\/tag\/arcanist\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_8\"\u003eArcanist\u003c\/a\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_120\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_9\"\u003echampo\u003c\/a\u003e added subscribers: \u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_10\"\u003echampo\u003c\/a\u003e, \u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_11\"\u003eepriestley\u003c\/a\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_124\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/wwv6lfqf2r6dil3t2iso\/PHID-FILE-2vlsth57pxjmncskaih7\/profile-0965951.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/qgil\/\" 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=\"58912\" id=\"58912\" 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_123\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/qgil\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_12\"\u003eqgil\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/qgil\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_13\"\u003eqgil\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#58912\" data-sigil=\"has-tooltip\" data-meta=\"0_122\"\u003e\u003cspan class=\"screen-only\"\u003eMay 14 2014, 7:03 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-14 19:03:13 (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_133\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/poofib6warbqyc4eh2cb\/PHID-FILE-bquyqdemag5g3rrlouwb\/github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/champo\/\" 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=\"58920\" id=\"58920\" 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_132\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_14\"\u003echampo\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/hach-que\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_15\"\u003ehach-que\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#58920\" data-sigil=\"has-tooltip\" data-meta=\"0_131\"\u003e\u003cspan class=\"screen-only\"\u003eMay 14 2014, 9:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-14 21:00: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_129\"\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_130\" 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_16\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eRegarding the discussion, I agree with \u003ca href=\"\/p\/hach-que\/\" 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@hach-que\u003c\/span\u003e\u003c\/a\u003e that a solution for most cases doesn't need to be fancy. Just a way to download a library from somewhere is light years ahead of the current way of using libraries and would be a great a improvement.\u003c\/p\u003e\n\n\u003cp\u003ePersonally, I don't need any dependency handling and I don't think I would be needing it.\u003c\/p\u003e\n\n\u003cp\u003e\u003ca href=\"\/p\/epriestley\/\" 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@epriestley\u003c\/span\u003e\u003c\/a\u003e if the solution is simple, we could have one of our devs give you a hand. We're looking into creating a lot of linters and test engines, and distribution is a pain.\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_136\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/poofib6warbqyc4eh2cb\/PHID-FILE-bquyqdemag5g3rrlouwb\/github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/champo\/\" 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=\"58923\" id=\"58923\" 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_135\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_17\"\u003echampo\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/jsotuyod\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_18\"\u003ejsotuyod\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#58923\" data-sigil=\"has-tooltip\" data-meta=\"0_134\"\u003e\u003cspan class=\"screen-only\"\u003eMay 14 2014, 9:16 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-14 21:16:08 (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 phui-timeline-green\" data-sigil=\"transaction anchor-container\" data-meta=\"0_149\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_145\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_146\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_147\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_148\" 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=\"59002\" id=\"59002\" 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 fill-has-color phui-timeline-icon-fill-green\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-arrow-right phui-timeline-icon\" data-meta=\"0_144\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_19\"\u003eepriestley\u003c\/a\u003e triaged this task as \u003cspan class=\"phui-timeline-value\"\u003eWishlist\u003c\/span\u003e priority.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#59002\" data-sigil=\"has-tooltip\" data-meta=\"0_143\"\u003e\u003cspan class=\"screen-only\"\u003eMay 15 2014, 4:56 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-15 04:56: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_141\"\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_142\" 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_20\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eSee also some discussion in \u003ca href=\"\/D9124\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_3\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eD9124\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003cp\u003eIn the very long term (2-3 years) the solution to this class of problems is \u003cem\u003eprobably\u003c\/em\u003e a real package management system which allows you to install applications into Phabricator, modules into Arcanist, etc.\u003c\/p\u003e\n\n\u003cp\u003eI think the major concerns that will arise in the long term are:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cstrong\u003eOrganization\u003c\/strong\u003e: Dumping directories next to things won't last very long and will run into issues with everything else here, as well as making it hard for us to do things like "list all the stuff that is installed". We would quickly need to have better rules about where stuff goes.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cstrong\u003eVersioning\u003c\/strong\u003e: How do we know something needs to be updated? How do we organize, store, and include multiple versions of a package?\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cstrong\u003eDependencies\u003c\/strong\u003e: How do we manage dependencies? How do we deal with cases like "diamond dependencies", where A depends on B and C, and B and C depend on different versions of D?\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003cstrong\u003eSecurity\u003c\/strong\u003e: How do we make sure that compromised user accounts don't lead to remote code execution on all users' machines? Code signing is probably the solution here, but it's complicated.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eWe are very unlikely to build a quick-and-dirty version of this which just clones a bunch of stuff next to \u003ctt class=\"remarkup-monospaced\"\u003earcanist\/\u003c\/tt\u003e since it will break for a lot of users almost immediately and we'll be stuck moving it toward a real system, but burdened with a bunch of backward compatibility issues.\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_158\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/poofib6warbqyc4eh2cb\/PHID-FILE-bquyqdemag5g3rrlouwb\/github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/champo\/\" 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=\"59029\" id=\"59029\" 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_157\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_21\"\u003echampo\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#59029\" data-sigil=\"has-tooltip\" data-meta=\"0_156\"\u003e\u003cspan class=\"screen-only\"\u003eMay 15 2014, 11:42 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-15 11:42:26 (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_154\"\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_155\" 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_22\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eAs for it breaking for a lot of users fast, I don't imagine why it would. What do you picture here?\u003c\/p\u003e\n\n\u003cp\u003eI agree on the backwards compatibility front somewhat. But I think that something as simple as having it print a warning that this feature will be erased completely and replaced with a proper implementation eventually is totally acceptable. I really don't mind having to update my projects when that day comes. It's a minor cost compared to distribution now.\u003c\/p\u003e\n\n\u003cp\u003eWe avoided creating any libs until now because of distribution pain, waiting till we had the time to tackle the problem somehow. That feels broken to me. The moment we started having devs on OS X we lost any chance of doing it on our side.\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_171\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_167\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_168\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_169\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_170\" 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=\"59031\" id=\"59031\" 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_166\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_23\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#59031\" data-sigil=\"has-tooltip\" data-meta=\"0_165\"\u003e\u003cspan class=\"screen-only\"\u003eMay 15 2014, 12:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-15 12:06: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_163\"\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_164\" 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_24\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote\u003e\u003cp\u003eAs for it breaking for a lot of users fast, I don't imagine why it would. What do you picture here?\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI have no idea. Here are a few things I can come up with offhand.\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eArc is installed on a read-only NFS drive, so none of these commands work.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eArc is installed on a read\/write NFS drive, so these commands affect all users of \u003ctt class=\"remarkup-monospaced\"\u003earc\u003c\/tt\u003e and engineers are stepping all over each other.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis is good, but we need a way to manage dependencies.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis is good, but we need a way to manage versions.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThere's no way for users to know when to upgrade, so this hasn't actually fixed the problem.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eI don't understand what it's doing \/ can't troubleshoot \/ etc.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eI don't want it to put files there.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eI want it to put files <somewhere else specific>.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe have a corporate VPN so this package has an internal and an external URL, it should try both.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe want it to clone over git.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe want it to clone over Mercurial.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe want it to clone over SVN.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe want it to download over HTTP.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe want it to download over HTTP, but it's a tarball and it has to work on Windows.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eActually we just want it to download and run an executable, it should do one thing on Windows and a different thing on other systems.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eOkay we put them both in the same download, but it should run a different one.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eOne of our guys has PHP 5.3 but our extension uses PHP 5.5 features and it just crashes instantly for him.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWe need a way to manage external dependencies for our node.js thing, this should also just do npm too.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis is really complex now, why did you write your own package management system? It should just use composer \/ npm \/ apt-get.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cblockquote\u003e\u003cp\u003eBut I think that something as simple as having it print a warning that this feature will be erased completely and replaced with a proper implementation eventually is totally acceptable.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eWe did this in some cases for Facebook and it pretty consistently bit us later. Even though \u003cem\u003eyou\u003c\/em\u003e may be completely OK with accepting these tradeoffs, people at other companies will ignore the warning and then be frustrated and upset when things break. By the time we break them you might not be working on this stuff anymore at your company, and the guy after you might be upset. These kinds of warnings can help manage expectations, but they don't seem to solve the problem, no matter how severe we make them.\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_181\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/poofib6warbqyc4eh2cb\/PHID-FILE-bquyqdemag5g3rrlouwb\/github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/champo\/\" 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=\"59049\" id=\"59049\" 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_180\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/champo\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_25\"\u003echampo\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=\"#59049\" data-sigil=\"has-tooltip\" data-meta=\"0_179\"\u003e\u003cspan class=\"screen-only\"\u003eMay 15 2014, 1:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-05-15 13:21:03 (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_177\"\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_178\" 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_26\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eFair enough. When you feel like starting this we'll be willing to give you a hand.\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_184\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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=\"81697\" id=\"81697\" 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_183\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_27\"\u003eavivey\u003c\/a\u003e mentioned this in \u003ca href=\"\/w\/community_resources\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_28\"\u003eCommunity Resources\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#81697\" data-sigil=\"has-tooltip\" data-meta=\"0_182\"\u003e\u003cspan class=\"screen-only\"\u003eOct 31 2014, 9:24 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-10-31 21:24: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_187\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"88743\" id=\"88743\" 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_186\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_29\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T6797\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_30\"\u003eT6797: Phabricator user group\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#88743\" data-sigil=\"has-tooltip\" data-meta=\"0_185\"\u003e\u003cspan class=\"screen-only\"\u003eDec 28 2014, 7:17 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2014-12-28 19:17:50 (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_190\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"112458\" id=\"112458\" 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_189\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_31\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T8115\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_32\"\u003eT8115: arcanist plugin system\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#112458\" data-sigil=\"has-tooltip\" data-meta=\"0_188\"\u003e\u003cspan class=\"screen-only\"\u003eMay 7 2015, 5:42 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-05-07 17:42: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_193\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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=\"112462\" id=\"112462\" 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_192\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_33\"\u003eavivey\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_34\"\u003eavivey\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#112462\" data-sigil=\"has-tooltip\" data-meta=\"0_191\"\u003e\u003cspan class=\"screen-only\"\u003eMay 7 2015, 5:42 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-05-07 17:42: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_196\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"112471\" id=\"112471\" 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_195\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_35\"\u003eepriestley\u003c\/a\u003e added a parent task: \u003ca href=\"\/T8115\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_36\"\u003eT8115: arcanist plugin system\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#112471\" data-sigil=\"has-tooltip\" data-meta=\"0_194\"\u003e\u003cspan class=\"screen-only\"\u003eMay 7 2015, 5:57 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-05-07 17:57: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_199\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/w6c374kcuazotx3eqxz6\/PHID-FILE-xgqpdkurs5xkf3vn5c2k\/profile-facebook-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/eadler\/\" 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=\"117964\" id=\"117964\" 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_198\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/eadler\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_37\"\u003eeadler\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/eadler\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_38\"\u003eeadler\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#117964\" data-sigil=\"has-tooltip\" data-meta=\"0_197\"\u003e\u003cspan class=\"screen-only\"\u003eJun 3 2015, 3:26 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-06-03 03:26:52 (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 phui-timeline-orange\" data-sigil=\"transaction anchor-container\" data-meta=\"0_203\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"124491\" id=\"124491\" 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 fill-has-color phui-timeline-icon-fill-orange\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-compress phui-timeline-icon\" data-meta=\"0_201\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_39\"\u003eepriestley\u003c\/a\u003e merged a task: \u003cspan class=\"\"\u003e\u003ca href=\"\/T8738\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_40\"\u003eT8738: Allow server administrators to require a minimum version of Arcanist\u003c\/a\u003e\u003c\/span\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#124491\" data-sigil=\"has-tooltip\" data-meta=\"0_200\"\u003e\u003cspan class=\"screen-only\"\u003eJul 3 2015, 3:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-03 15:52:43 (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_202\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_41\"\u003eepriestley\u003c\/a\u003e added subscribers: \u003ca href=\"\/p\/shrinidhirao\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_42\"\u003eshrinidhirao\u003c\/a\u003e, \u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_43\"\u003ejoshuaspence\u003c\/a\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_206\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"124494\" id=\"124494\" 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_205\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_44\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T8738\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_45\"\u003eT8738: Allow server administrators to require a minimum version of Arcanist\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#124494\" data-sigil=\"has-tooltip\" data-meta=\"0_204\"\u003e\u003cspan class=\"screen-only\"\u003eJul 3 2015, 3:55 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-03 15:55:27 (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-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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-green \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_215\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_216\" 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-blue \" href=\"\/badges\/view\/3\/\" data-sigil=\"has-tooltip\" data-meta=\"0_217\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_218\" 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=\"128837\" id=\"128837\" 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-pencil phui-timeline-icon\" data-meta=\"0_214\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_46\"\u003eavivey\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-2sbzbnrghpqo5k4\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#128837\" data-sigil=\"has-tooltip\" data-meta=\"0_213\"\u003e\u003cspan class=\"screen-only\"\u003eJul 29 2015, 1:06 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-29 13:06:39 (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_211\"\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_212\" 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_47\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI've collected a bunch of talk about it into a list of requirements; I don't have a clear vision yet, but I do have some thoughts.\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_222\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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=\"128839\" id=\"128839\" 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-pencil phui-timeline-icon\" data-meta=\"0_221\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_48\"\u003eavivey\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-po25mebuzlzguzw\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#128839\" data-sigil=\"has-tooltip\" data-meta=\"0_220\"\u003e\u003cspan class=\"screen-only\"\u003eJul 29 2015, 1:10 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-29 13:10:06 (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_225\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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=\"128840\" id=\"128840\" 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-pencil phui-timeline-icon\" data-meta=\"0_224\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_49\"\u003eavivey\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-km5bbfjvow2uan5\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#128840\" data-sigil=\"has-tooltip\" data-meta=\"0_223\"\u003e\u003cspan class=\"screen-only\"\u003eJul 29 2015, 2:34 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-29 14:34:26 (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_238\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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-green \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_234\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_235\" 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-blue \" href=\"\/badges\/view\/3\/\" data-sigil=\"has-tooltip\" data-meta=\"0_236\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_237\" 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=\"128843\" id=\"128843\" 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_233\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_50\"\u003eavivey\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#128843\" data-sigil=\"has-tooltip\" data-meta=\"0_232\"\u003e\u003cspan class=\"screen-only\"\u003eJul 29 2015, 3:11 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-07-29 15:11: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_230\"\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_231\" 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_51\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eFirst off, I would throw \u003cstrong\u003edependencies\u003c\/strong\u003e out the window. After spending too long with maven, gradle, npm, gems and what-not, I now believe cascading dependencies in package managers to be a poor idea. These dependencies creep in, are hard to remove, and lead to conflicts. As an anecdote, a simple Java project, without any code other than the "standard" imports via mvn, would start at 80mb of classes and download maybe 500 mb, and not one member of the team knows what's in there.\u003cbr \/\u003e\nSo I would argue against taking in dependencies, and leave each site manager to explicitly require the packages they want\/need.\u003cbr \/\u003e\nThis also answers all the issues with conflicts.\u003c\/p\u003e\n\n\u003cp\u003eThe issue of \u003cstrong\u003etrust\u003c\/strong\u003e and \u003cstrong\u003esignatures\u003c\/strong\u003e: I'd like to put a caveat on that item, that it assumes my users clone arc and libphutil from a location that isn't compromised (e.g. a fork in my internal network, that I update from the upstream while auditing the changes). That's because a compromised upstream can remove signature verification code.\u003c\/p\u003e\n\n\u003cp\u003eOf the tools I know (apt-get, maven, ruby gems), I believe none actually uses code signing; mvn asks you to explicitly trust a repository, although I suspect it can refer to packages on a specific repository (In which case, no trust?), and controls what goes in there. apt uses the same model, and is much more strictly controlled. I think the rubygems works by specifying a repository and commit hash in rubygems.org, or in a specified gem repository.\u003cbr \/\u003e\nMS Windows has a security model that is based on code signing (Although when it decides to apply it is a mystery) - the system is pre-loaded with a set of root keys, and executables needs to be signed with a key-chain that chains to one of those root keys. I suspect Mac OS X uses the same logic. Android has a short list of permissible keys, and each apk must be signed by one of them.\u003c\/p\u003e\n\n\u003cp\u003eExcept for ruby gems, all of these are used to distribute compiled packages mostly (maven) or only (everything else). \u003cbr \/\u003e\nOur packages will be in source code form, and probably almost all would be hosted in git repos somewhere, which makes it very similar to ruby gems.\u003c\/p\u003e\n\n\u003cp\u003eThe argument against signing is complexity: A release process is now more complicated than "git push"; Code needs to be written to perform the verification; And means of establishing trust need to be defined.\u003cbr \/\u003e\nSSL and SSH provide the tools to define trust and identity of a source, but they do not provide guard against a compromised source.\u003c\/p\u003e\n\n\u003cp\u003eOTOH, code-signing is a well-established pattern, and it's reasonable to require 3rd party packages to be signed. For internal packages, we might want to allow a package to be unsigned, under some set of warnings.\u003c\/p\u003e\n\n\u003cp\u003eFor stuff like \u003cstrong\u003eexternal programs\u003c\/strong\u003e, I'd leave it completely outside of the scope of this. The sheer size of something like \u003ctt class=\"remarkup-monospaced\"\u003earc install-tool pyflakes\u003c\/tt\u003e - we'll need to pick from pip, easy-install, apt-get, yum, brew, port, and a few more, possibly with sudo, not to mention Windows, is enough to suggest that maybe we shouldn't ever implement it.\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_251\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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-green \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_247\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_248\" 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-blue \" href=\"\/badges\/view\/3\/\" data-sigil=\"has-tooltip\" data-meta=\"0_249\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_250\" 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=\"130324\" id=\"130324\" 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_246\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_52\"\u003eavivey\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130324\" data-sigil=\"has-tooltip\" data-meta=\"0_245\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 12:29 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 12:29:51 (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_243\"\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_244\" 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_53\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThoughts about implementation:\u003c\/p\u003e\n\n\u003cp\u003eThe underlying mechanism for distribution and versioning is \u003cstrong\u003egit\u003c\/strong\u003e, for all the obvious reasons. If some sites don't want to have git installed, they should already have some alternate way to install and update arc, and can probably reuse that for extensions.\u003c\/p\u003e\n\n\u003cp\u003eThe working copy of each extension would be managed by arc, as we might need to checkout a different version when invoking arc in different context (project).\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eSinging\u003c\/strong\u003e: I'm thinking of something like this to sign an extension:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"text\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003egit ls-tree -r HEAD | grep -v ' arc-signature^' | do-signature > arc-signature\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003ei.e., specify a file named \u003ctt class=\"remarkup-monospaced\"\u003earc-signature\u003c\/tt\u003e in the root of the extension, and sign the hash code + filename of all files in the extension. \u003cbr \/\u003e\nThe user (Or system) will have a list of "trusted keys" in .arcrc or \/etc\/arcrc (Maybe .arcconfig too?), and we'll verify the signature against this list and against the content.\u003cbr \/\u003e\nNaturally, this would be warped in arc workflows.\u003c\/p\u003e\n\n\u003cp\u003eThe question of when to verify the signature is mostly a matter of how long it takes - if it's fast enough, we can do it every time we run arc; We can degrade this to caching git commits that have been verified, or to verify whenever arc makes changes to an extension directory.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eNaming\u003c\/strong\u003e: When specifying an extension, we should use a git uri; That makes a central name resolving redundant. Using a short commit hash as a version is a little extreme, but it makes most operations easier. There's no good way of using "x.y" version style with no central server.\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eOrganization\u003c\/strong\u003e: Simplest approach is to store everything in arc dir, in \u003ctt class=\"remarkup-monospaced\"\u003e\/extensions\/<extension>\/\u003c\/tt\u003e, but this leaves the issue of extension name (uri) -> dir name translation. Libphutil libraries already have names (In \u003ctt class=\"remarkup-monospaced\"\u003esrc\/__phutil_library_init__.php\u003c\/tt\u003e), but these are not known ahead of time (And may have conflicts?). We can use some simple means of translating URI to a directory name (Convert all bad characters to \u003ctt class=\"remarkup-monospaced\"\u003e_\u003c\/tt\u003e or something).\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_264\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_260\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_261\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_262\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_263\" 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=\"130327\" id=\"130327\" 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_259\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_54\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130327\" data-sigil=\"has-tooltip\" data-meta=\"0_258\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 1:32 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 13:32:51 (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_256\"\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_257\" 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_55\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI think we can just take the tree hash (\u003ctt class=\"remarkup-monospaced\"\u003egit show -s --format=%T\u003c\/tt\u003e) and sign that [1].\u003c\/p\u003e\n\n\u003cp\u003eI wouldn't expect to commit signatures to the repository, and don't think it's desirable. Generally, I think this should be possible:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIf Alice trusts Bob, Bob should be able to vouch for repository X even if he can't commit to it.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eI think the way Composer approaches trust is almost totally broken: it requires repository coordination (which it doesn't need to) but then doesn't actually establish that there's a chain of trust between the package author and the repository: it requires a \u003ctt class=\"remarkup-monospaced\"\u003ecomposer.json\u003c\/tt\u003e file to exist in the repository, but as soon as it does anyone can take control of the package. This isn't obvious and doesn't establish an actual chain of trust. Particularly, my predecessor for xhprof accepted a pull request to add a "composer.json" file by a user who wanted to take create and control the package:\u003c\/p\u003e\n\n\u003cp\u003e\u003ca href=\"https:\/\/github.com\/phacility\/xhprof\/pull\/8\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/github.com\/phacility\/xhprof\/pull\/8\u003c\/a\u003e\u003c\/p\u003e\n\n\u003cp\u003eThis wasn't clearly communicated, and the system didn't make any attempt to make sure the repository understood the implications of accepting this request.\u003c\/p\u003e\n\n\u003cp\u003eBasically, Composer does not allow Bob to vouch for a third-party repository, and \u003cem\u003ealso\u003c\/em\u003e does not very that a package owner is actually someone you trust. I think this is the worst set of tradeoffs you could choose.\u003c\/p\u003e\n\n\u003cp\u003eI think we only need to verify signatures when upgrading. If you make local changes we can't verify without running \u003ctt class=\"remarkup-monospaced\"\u003egit status\u003c\/tt\u003e or some equivalent, which hits every file on disk, and it seems generally fine\/expected that if you make changes locally you trust them. (If an attacker is able to make local changes, they can presumably just change the code which checks for local changes anyway.)\u003c\/p\u003e\n\n\u003cp\u003eSpecifically, I'd imagine a workflow something like this from the publisher, in the most low-level \/ general case:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"console\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003edinosaurs\/ \u003cspan class=\"gp\"\u003e$ arc publish --key \/path\/to\/private.key --to https:\/\/phacility.com\/packages\/dinosaurs\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ePublish HEAD commit "abcd" (with tree hash "defg") to phacility.com\/packages\/dinosaurs\/? [y\/N]\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ey\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eThe package has been updated. Review details at:\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e https:\/\/phacility.com\/packages\/dinosaurs\/version\/93\/\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eFrom the user, it would look like this:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"console\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan class=\"gp\"\u003e$ arc install dinosaurs\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eNo package "dinosaurs" found on any known package server. Use "arc add-package-server" to add a server.\u003c\/span\u003e\n\u003cspan class=\"gp\"\u003e$ arc add-package-server https:\/\/secure.phabricator.com\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eAdded secure.phabricator.com as a package server.\u003c\/span\u003e\n\u003cspan class=\"gp\"\u003e$ arc add-package-server https:\/\/phacility.com\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eAdded phacility.com as a package server.\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003e(Since the level of trust in add-package-server is relatively low, we'd probably add these by default.)\u003c\/p\u003e\n\n\u003cp\u003eThen:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"console\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan class=\"gp\"\u003e$ arc install dinosaurs\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eFound this matching package:\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Dinosaurs\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e https:\/\/secure.phabricator.com\/packages\/phacility\/dinosaurs\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eIs this the package you want? [y\/N]\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ey\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eThis package is signed by a publisher you do not currently trust:\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Name: Phacility, Inc\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Key Fingerprint: a823bf23lf2n3\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Details: https:\/\/phacility.com\/packages\/phacility\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ePackage server "secure.phacility.com" claims this publisher has verified control of these resources:\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Domain: https:\/\/phacility.com (Aug 5, 2015)\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Keybase.io: https:\/\/keybase.io\/phacility (Jun 23, 2015)\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Phabricator: https:\/\/meta.phacility.com\/ (Dec 2014)\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e GitHub: https:\/\/github.com\/phacility (Jan 2015)\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Twitter: @phacility (Apr 2015)\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eThis publisher is trusted by 13 (100%) of the other publishers you trust.\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eDo you want to trust this publisher? [yes, no, always]\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ealways\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ePermanently added "Phacility, Inc (a823bf23lf2n3)" as a trusted publisher.\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eInstalling "dinosaurs"...\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eObviously this is not a v0 output and we don't need to completely rebuild keybase.io in the first iteration, but I want to:\u003c\/p\u003e\n\n\u003col class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003ePut an indirection layer between assertions that code is good an control over that code: Bob should be able to say X is good, for any X.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMake it extremely clear who you are trusting when you install a package: it should be obvious you are trusting Bob, not X, Inc., if Bob is the one vouching for the package.\u003c\/li\u003e\n\u003c\/ol\u003e\n\n\u003cp\u003eThis gives us a great deal of flexibility in building an effective chain of trust which makes actual sense to users, without getting in the way of making software available. For example, publishers can sign other publishers and other publishers' packages without needing to be able to commit to their repositories. This would allow us users to trust a small number of publishers and still have access to a large library of software with an unbroken chain of trust.\u003c\/p\u003e\n\n\u003chr class=\"remarkup-hr\" \/\u003e\n\n\u003cp\u003e[1] Tree hashes are sort-of-broken as soon as a SHA-1 collision is discovered (suppose "abc" and "def" collide), even if sha1 retains strong preimage resistance, since you can write code like this:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"text\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003eif (Filesystem::readFile('collision.txt') == 'abc') { \n do_safe_thing();\n} else {\n do_evil_thing();\n}\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eYou can then make two commits, one with "abc" in 'collision.txt' and one with "def" in 'collision.txt'. These commits will have the same tree hash but different content and different behavior.\u003c\/p\u003e\n\n\u003cp\u003eHowever, someone still needs to sign the code which contains the \u003ctt class=\"remarkup-monospaced\"\u003edo_evil_thing()\u003c\/tt\u003e branch so this doesn't seem worth worrying about too much to me. We should support multiple signature types anyway so we have space to accommodate alternate mechanisms in the future (e.g., signing tarballs) and so we can migrate to a different signature mechanism if, e.g., someone develops a viable preimage attack against sha1.\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_277\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" 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-green \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_273\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_274\" 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-blue \" href=\"\/badges\/view\/3\/\" data-sigil=\"has-tooltip\" data-meta=\"0_275\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_276\" 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=\"130345\" id=\"130345\" 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_272\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_56\"\u003eavivey\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130345\" data-sigil=\"has-tooltip\" data-meta=\"0_271\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 2:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 14:52: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_269\"\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_270\" 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_57\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eSo, Bob would run something like:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"console\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003edinosaurs\/ \u003cspan class=\"gp\"\u003e$ arc vouch-for --key \/path\/to\/private.key --to https:\/\/phacility.com\/packages\/dinosaurs\/\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003eAnd Alice would get:\u003c\/p\u003e\n\n\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"console\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan class=\"gp\"\u003e$ arc install dinosaurs\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eFound this matching package:\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e Dinosaurs\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e https:\/\/secure.phabricator.com\/packages\/phacility\/dinosaurs\/\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eIs this the package you want? [y\/N]\u003c\/span\u003e\n\u003cspan class=\"go\"\u003ey\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eThis package is published by Phacility, Inc (a823bf23lf2n3), which you don't currently trust; However, Bob (43f1a07230), who you trust, has vouched for it.\u003c\/span\u003e\n\u003cspan class=\"go\"\u003e\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eDownloading...\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eVerifying...\u003c\/span\u003e\n\u003cspan class=\"go\"\u003eInstalling...\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003e?\u003cbr \/\u003e\nThat sounds good to me.\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_290\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_286\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_287\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_288\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_289\" 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=\"130358\" id=\"130358\" 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_285\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_58\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130358\" data-sigil=\"has-tooltip\" data-meta=\"0_284\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 3:19 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 15:19: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_282\"\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_283\" 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_59\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eYeah, that's exactly what I'm imagining (I mean, maybe not exactly that command, but that workflow). Then I can sign your packages as Phacility and users can see that they're trusting your claim about the package, but that Phacility also supports your claims about who you are and your claims about the package.\u003c\/p\u003e\n\n\u003cp\u003eIn most cases I'm sure users will just "Y" through all the prompts, but I think we can reasonably come up with a system that is only slightly harder for publishers (who I'm fine placing a moderate burden on), and makes it clear and explicit who you're trusting when you run commands, and makes it almost as easy to verify things properly as it is to just blindly trust everyone -- and is also flexible, supports a continuum of trust, and doesn't rely on a single central authority (so you can trust MyCompany and \u003cem\u003enot\u003c\/em\u003e trust Phacility if you want).\u003c\/p\u003e\n\n\u003cp\u003e(And v0 can skip most of this, it's just the set of capabilities and behaviors I'd like to build toward.)\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_303\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_299\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_300\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_301\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_302\" 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=\"130382\" id=\"130382\" 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_298\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_60\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130382\" data-sigil=\"has-tooltip\" data-meta=\"0_297\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 5:02 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 17:02: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_295\"\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_296\" 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_61\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eOn these things:\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eWhen specifying an extension, we should use a git uri; That makes a central name resolving redundant. Using a short commit hash as a version is a little extreme, but it makes most operations easier. There's no good way of using "x.y" version style with no central server.\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI'd imagine this being a package URI ("\u003ca href=\"https:\/\/secure.phabricator.com\/packages\/phacility\/dinosaur\/"\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/secure.phabricator.com\/packages\/phacility\/dinosaur\/"\u003c\/a\u003e) instead per above, which anyone can create (even if they don't have access to the underlying Git repository) but which is published under their claims\/trust. So I can package someone else's stuff, but it's clear that I'm the one making claims about it.\u003c\/p\u003e\n\n\u003cp\u003eVisiting this URI in the browser would show package change history, trust information, install instructions, links to docs, etc.\u003c\/p\u003e\n\n\u003cp\u003eThis is a little more flexible, and supports tarball packages or other non-git things in the future, and lets repositories move if they need to. And a private package source can use standard \u003ctt class=\"remarkup-monospaced\"\u003earc\u003c\/tt\u003e credentials, and so on.\u003c\/p\u003e\n\n\u003cblockquote\u003e\u003cp\u003eOrganization: Simplest approach is to store everything in arc dir, in \/extensions\/<extension>\/, but this leaves the issue of extension name (uri) -> dir name translation. Libphutil libraries already have names (In src\/__phutil_library_init__.php), but these are not known ahead of time (And may have conflicts?). We can use some simple means of translating URI to a directory name (Convert all bad characters to _ or something).\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eYeah, I think \u003ctt class=\"remarkup-monospaced\"\u003eextensions\/phacility.com\/phacility\/dinosaur\/1028fh10\/\u003c\/tt\u003e is probably a reasonable place to start with, with the last component being a version? And that short hashes are good, although we should eventually support other versioning schemes. There would be a package metadata source, just not necessarily a central server, so it should be easy enough to let you \u003ctt class=\"remarkup-monospaced\"\u003earc publish --key ... --to ... --verison 1.2.3b\u003c\/tt\u003e or whatever in the 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_316\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_312\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_313\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_314\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_315\" 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=\"130385\" id=\"130385\" 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_311\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_62\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#130385\" data-sigil=\"has-tooltip\" data-meta=\"0_310\"\u003e\u003cspan class=\"screen-only\"\u003eAug 6 2015, 5:17 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-06 17:17: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_308\"\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_309\" 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_63\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eAnd I generally agree about dependencies and externals getting ignored for now, but I'd like to assume we'll eventually support both and plan around that.\u003c\/p\u003e\n\n\u003cp\u003eSo I think v0 is basically a web app with Publisher and Package objects which serve as thin wrappers around a pointer to a git commit in some repository, and maybe some other helper objects (Version, Signature, Key?).\u003c\/p\u003e\n\n\u003cp\u003eStuff is all downloaded with \u003ctt class=\"remarkup-monospaced\"\u003egit clone\u003c\/tt\u003e (but might be more flexible in the future).\u003c\/p\u003e\n\n\u003cp\u003eStuff is all verified by checking signatures on tree hashes (but might be more flexible in the future).\u003c\/p\u003e\n\n\u003cp\u003eMost of the stronger-chain-of-trust stuff doesn't need to be built yet, but we should leave room for it.\u003c\/p\u003e\n\n\u003cp\u003eNo need for dependencies, binaries, etc., for now, but maybe some day.\u003c\/p\u003e\n\n\u003cp\u003eUser has some local store of:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eknown package sources;\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003etrusted publishers;\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003ewhat stuff is installed, and which versions are active.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eAnd then APIs for querying and updating packages, and CLI tools for \u003ctt class=\"remarkup-monospaced\"\u003epublish\u003c\/tt\u003e and \u003ctt class=\"remarkup-monospaced\"\u003evouch-for\u003c\/tt\u003e and \u003ctt class=\"remarkup-monospaced\"\u003einstall\u003c\/tt\u003e \/ \u003ctt class=\"remarkup-monospaced\"\u003eupgrade\u003c\/tt\u003e \/ etc.\u003c\/p\u003e\n\n\u003cp\u003eAnd I guess at least some placeholder for distinguishing between "install an extension in the current working copy" (e.g., install an application in Phabricator) vs "install an extension onto arcanist". Maybe this is "arc extend" vs "arc install" or something? This doesn't need to be too sophisticated but if you're in \u003ctt class=\"remarkup-monospaced\"\u003ephabricator\/\u003c\/tt\u003e I'd like you to some day be able to \u003ctt class=\"remarkup-monospaced\"\u003earc install some-third-party-application\u003c\/tt\u003e and have it work, versus \u003ctt class=\"remarkup-monospaced\"\u003earc add-a-linter-to-arc blahblah\u003c\/tt\u003e.\u003c\/p\u003e\n\n\u003cp\u003eDefinitely not trivial but doesn't seem too overwhelming.\u003c\/p\u003e\n\n\u003cp\u003eOh, we actually shouldn't put this stuff in \u003ctt class=\"remarkup-monospaced\"\u003esrc\/extensions\/\u003c\/tt\u003e since that's already used and I think it's confusing to conflate random source files with actual packaged releases. Maybe \u003ctt class=\"remarkup-monospaced\"\u003esrc\/packages\/\u003c\/tt\u003e or \u003ctt class=\"remarkup-monospaced\"\u003esrc\/third-party\/\u003c\/tt\u003e or something.\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_329\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_325\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_326\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_327\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_328\" 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=\"132107\" id=\"132107\" 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_324\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_64\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#132107\" data-sigil=\"has-tooltip\" data-meta=\"0_323\"\u003e\u003cspan class=\"screen-only\"\u003eAug 14 2015, 11:37 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-14 11:37:25 (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_321\"\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_322\" 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_65\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eA couple other things we could use soon in the upstream, although not requirements for v0:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003ePackage Phabricator itself, with all the same rules as everything else (signing, etc).\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eFormalize security updates (e.g., version X contains a known vulnerability, upgrade to version Y). In Phabricator, we'd expose this via the web UI.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eHaving binary packages for \u003ctt class=\"remarkup-monospaced\"\u003exhpast\u003c\/tt\u003e would be useful in the relatively short term, particularly for Windows.\u003c\/li\u003e\n\u003c\/ul\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_332\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/mexm6qvp4c5pmr4z32tq\/PHID-FILE-p5feq3fqrhuvfy5reqfr\/profile-github_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/devurandom\/\" 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=\"132108\" id=\"132108\" 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_331\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/devurandom\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_66\"\u003edevurandom\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/devurandom\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_67\"\u003edevurandom\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#132108\" data-sigil=\"has-tooltip\" data-meta=\"0_330\"\u003e\u003cspan class=\"screen-only\"\u003eAug 14 2015, 12:04 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-14 12:04: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_336\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/nqci63nw44qxk2hsg6yh\/PHID-FILE-c2wegbhhpan7dxipmo7d\/profile-github_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/joshuaspence\/\" 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=\"132125\" id=\"132125\" 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_334\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view sprite-tokens tokens-coin-4 phui-timeline-token\" data-meta=\"0_335\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_68\"\u003ejoshuaspence\u003c\/a\u003e awarded a token.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#132125\" data-sigil=\"has-tooltip\" data-meta=\"0_333\"\u003e\u003cspan class=\"screen-only\"\u003eAug 14 2015, 1:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-14 13:00:29 (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_349\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_345\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_346\" 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\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_347\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_348\" 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=\"132849\" id=\"132849\" 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_344\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_69\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#132849\" data-sigil=\"has-tooltip\" data-meta=\"0_343\"\u003e\u003cspan class=\"screen-only\"\u003eAug 18 2015, 7:50 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-18 19:50:50 (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_341\"\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_342\" 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_70\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eFrom \u003ca href=\"\/T8117\" 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\"\u003eT8117\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, I think we can just call this "Packages", and rename the Owners objects (perhaps to "Claims") if there's confusion.\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-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"133134\" id=\"133134\" 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_351\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_71\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T9223\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_72\"\u003eT9223: Allow `arc diff` to run a build step like `gradle` first, then read lint and unit messages from the output\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#133134\" data-sigil=\"has-tooltip\" data-meta=\"0_350\"\u003e\u003cspan class=\"screen-only\"\u003eAug 20 2015, 11:37 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-20 11:37: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_355\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/hn4wye3vkcunkq36ebhr\/PHID-FILE-5ivp3c34dxwev5lkxuxr\/profile-google_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/tycho.tatitscheff\/\" 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=\"133869\" id=\"133869\" 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_354\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/tycho.tatitscheff\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_73\"\u003etycho.tatitscheff\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/tycho.tatitscheff\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_74\"\u003etycho.tatitscheff\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#133869\" data-sigil=\"has-tooltip\" data-meta=\"0_353\"\u003e\u003cspan class=\"screen-only\"\u003eAug 25 2015, 6:10 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-08-25 18:10:41 (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_358\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"136564\" id=\"136564\" 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_357\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_75\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/D14034\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_76\"\u003eD14034: Prevent caching of workflows\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#136564\" data-sigil=\"has-tooltip\" data-meta=\"0_356\"\u003e\u003cspan class=\"screen-only\"\u003eSep 11 2015, 4:24 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-09-11 04:24:19 (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_361\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"136875\" id=\"136875\" 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_360\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_77\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/Q129#A155\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_78\"\u003eQ129: Why are dependencies vendored into the externals directory? (Answer 155)\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#136875\" data-sigil=\"has-tooltip\" data-meta=\"0_359\"\u003e\u003cspan class=\"screen-only\"\u003eSep 13 2015, 8:51 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-09-13 20:51:13 (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_364\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"137461\" id=\"137461\" 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_363\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_79\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T1273\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_80\"\u003eT1273: There should be a way to specify phutil library dependencies\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#137461\" data-sigil=\"has-tooltip\" data-meta=\"0_362\"\u003e\u003cspan class=\"screen-only\"\u003eSep 18 2015, 9:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-09-18 21:14: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_367\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"139788\" id=\"139788\" 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_366\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_81\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T9543\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_82\"\u003eT9543: In "arc land", recursively resolve tracking branches until we reach one in a remote\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#139788\" data-sigil=\"has-tooltip\" data-meta=\"0_365\"\u003e\u003cspan class=\"screen-only\"\u003eOct 9 2015, 5:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-10-09 17:53: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_370\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/hn4wye3vkcunkq36ebhr\/PHID-FILE-5ivp3c34dxwev5lkxuxr\/profile-google_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/tycho.tatitscheff\/\" 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=\"140770\" id=\"140770\" 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_369\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/tycho.tatitscheff\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_83\"\u003etycho.tatitscheff\u003c\/a\u003e mentioned this in \u003ca href=\"\/w\/starmap\/\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_84\"\u003eStarmap\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#140770\" data-sigil=\"has-tooltip\" data-meta=\"0_368\"\u003e\u003cspan class=\"screen-only\"\u003eOct 17 2015, 9:39 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-10-17 09:39:41 (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_373\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"140932\" id=\"140932\" 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_372\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_85\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/D14298\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_86\"\u003eD14298: External linters can now specify a version requirement.\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#140932\" data-sigil=\"has-tooltip\" data-meta=\"0_371\"\u003e\u003cspan class=\"screen-only\"\u003eOct 18 2015, 1:11 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-10-18 13: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_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:\/\/p.phcdn.net\/file\/data\/@secure\/62dcgwn3lkf3qsk2v576\/PHID-FILE-yabqijwzhfi6r4hcqvyz\/profile-github-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/benstiglitz\/\" 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=\"142496\" id=\"142496\" 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\/benstiglitz\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_87\"\u003ebenstiglitz\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/benstiglitz\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_88\"\u003ebenstiglitz\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#142496\" data-sigil=\"has-tooltip\" data-meta=\"0_374\"\u003e\u003cspan class=\"screen-only\"\u003eOct 30 2015, 1:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-10-30 13:00: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_379\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/vb47l2plkxwwe3kisqmz\/PHID-FILE-mujeppmzvypijgfihete\/profile-github_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/pcostesi\/\" 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=\"143715\" id=\"143715\" 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_378\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/pcostesi\/\" class=\"phui-handle handle-availability-no-email phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_89\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e pcostesi\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/pcostesi\/\" class=\"phui-handle handle-availability-no-email phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_90\"\u003e\u003cspan class=\"perfect-circle\"\u003e\u2022\u003c\/span\u003e pcostesi\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#143715\" data-sigil=\"has-tooltip\" data-meta=\"0_377\"\u003e\u003cspan class=\"screen-only\"\u003eNov 9 2015, 2:36 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-11-09 14:36:36 (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:\/\/p.phcdn.net\/file\/data\/@secure\/dvyhf733bznrl5a3rjgf\/PHID-FILE-5z6ru2ua6yaemvpcx5zm\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/DheerendraRathor\/\" 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=\"144594\" id=\"144594\" 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_381\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/DheerendraRathor\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_91\"\u003eDheerendraRathor\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/DheerendraRathor\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_92\"\u003eDheerendraRathor\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#144594\" data-sigil=\"has-tooltip\" data-meta=\"0_380\"\u003e\u003cspan class=\"screen-only\"\u003eNov 15 2015, 8:19 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-11-15 08:19:12 (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_385\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"145289\" id=\"145289\" 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_384\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_93\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T9827\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_94\"\u003eT9827: Provide a more structured way of interfacing with external linters\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#145289\" data-sigil=\"has-tooltip\" data-meta=\"0_383\"\u003e\u003cspan class=\"screen-only\"\u003eNov 22 2015, 10:47 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-11-22 22:47: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_388\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"145290\" id=\"145290\" 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_387\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_95\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/D14535\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_96\"\u003eD14535: Add external-json linter\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#145290\" data-sigil=\"has-tooltip\" data-meta=\"0_386\"\u003e\u003cspan class=\"screen-only\"\u003eNov 22 2015, 10:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-11-22 22:53:51 (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_391\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"146474\" id=\"146474\" 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_390\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_97\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T9876\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_98\"\u003eT9876: Arcanist filename linter's regex should be configurable\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#146474\" data-sigil=\"has-tooltip\" data-meta=\"0_389\"\u003e\u003cspan class=\"screen-only\"\u003eDec 2 2015, 4:23 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-12-02 16:23:19 (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_394\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"146628\" id=\"146628\" 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_393\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_99\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T9893\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_100\"\u003eT9893: Support ElasticSearch 2.0 - 5.1\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#146628\" data-sigil=\"has-tooltip\" data-meta=\"0_392\"\u003e\u003cspan class=\"screen-only\"\u003eDec 3 2015, 2:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-12-03 14:21: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_397\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"150549\" id=\"150549\" 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_396\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_101\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T10038\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_102\"\u003eT10038: Plan the mid-term pathway for unit-test\/linter bindings\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#150549\" data-sigil=\"has-tooltip\" data-meta=\"0_395\"\u003e\u003cspan class=\"screen-only\"\u003eDec 22 2015, 12:44 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-12-22 12:44: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_400\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/l7e7jfwh7mm5tt6owwji\/PHID-FILE-2wipl36e6v4au7aoxuga\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/cburroughs\/\" 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=\"150636\" id=\"150636\" 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_399\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/cburroughs\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_103\"\u003ecburroughs\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/cburroughs\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_104\"\u003ecburroughs\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#150636\" data-sigil=\"has-tooltip\" data-meta=\"0_398\"\u003e\u003cspan class=\"screen-only\"\u003eDec 22 2015, 1:34 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-12-22 13:34: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_403\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/usouxifgkmcs7begblq4\/PHID-FILE-k6yyvz6isym4dxt4mqhh\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/michaeljs1990\/\" 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=\"150774\" id=\"150774\" 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_402\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/michaeljs1990\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_105\"\u003emichaeljs1990\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/michaeljs1990\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_106\"\u003emichaeljs1990\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#150774\" data-sigil=\"has-tooltip\" data-meta=\"0_401\"\u003e\u003cspan class=\"screen-only\"\u003eDec 23 2015, 6:42 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2015-12-23 06:42: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_406\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"151782\" id=\"151782\" 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_405\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_107\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T10050\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_108\"\u003eT10050: Differential-to-Asana integration, like with JIRA\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#151782\" data-sigil=\"has-tooltip\" data-meta=\"0_404\"\u003e\u003cspan class=\"screen-only\"\u003eJan 2 2016, 12:12 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2016-01-02 00:12:45 (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_409\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/p7uv3crrins5ughlgf2n\/PHID-FILE-flpy5lcsmyrvv2jw4bku\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/hach-que\/\" 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=\"154696\" id=\"154696\" 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_408\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/hach-que\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_109\"\u003ehach-que\u003c\/a\u003e mentioned this in \u003ca href=\"\/T10179\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_110\"\u003eT10179: Support specifying a log parser or some such construct for Harbormaster build logs\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#154696\" data-sigil=\"has-tooltip\" data-meta=\"0_407\"\u003e\u003cspan class=\"screen-only\"\u003eJan 19 2016, 11:36 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2016-01-19 23:36: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_412\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/idoprvrq4wd3ldqboeru\/PHID-FILE-oz3sl72od33d3wv2ltwq\/profile-facebook_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/joshma\/\" 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=\"156838\" id=\"156838\" 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_411\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/joshma\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_111\"\u003ejoshma\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/joshma\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_112\"\u003ejoshma\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#156838\" data-sigil=\"has-tooltip\" data-meta=\"0_410\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 3 2016, 1:45 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2016-02-03 01:45:59 (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_415\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" 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=\"158562\" id=\"158562\" 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_414\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_113\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/T10329\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_114\"\u003eT10329: Implement internal workflows \/ a build engine in Arcanist\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#158562\" data-sigil=\"has-tooltip\" data-meta=\"0_413\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 11 2016, 6:33 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2016-02-11 18:33: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"},"javelin_metadata":[{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3ajrc5seiwxsdbiu63m4","contextPHID":"PHID-TASK-dmeeva3zgletbyvnjr2l"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb","contextPHID":"PHID-TASK-dmeeva3zgletbyvnjr2l"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-nrepyng6hu3vc6ykna6j"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-4h3y5ebjzsxqv6biwkej"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-69c04afe1fb836349ccc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-p2axfzcmoluit7llpzt2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-p2axfzcmoluit7llpzt2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3ajrc5seiwxsdbiu63m4"}},{"phid":"PHID-XACT-TASK-ge3pimoq5y4r5g5"},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jrjebomad75gohldgqui"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-bbmnblorb2guugz"},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"phid":"PHID-XACT-TASK-i5xjznc5dqfxrzx"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-gjq7w5b2ekh4j5a"},{"hovercardSpec":{"objectPHID":"PHID-USER-vb5iwqaere64bnrt5z3j"}},{"phid":"PHID-XACT-TASK-bozdn34tdd2lvto"},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-WIKI-evw6mlaitwpkiyjgdtmg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-mx4pvif2y2micelmui2c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-z3byirhl44go2rhxlsic"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-z3byirhl44go2rhxlsic"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jmvolb7vo5qolixkccuq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jmvolb7vo5qolixkccuq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-t4v7bi66pmfliqdxsfre"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uvks5vmfi5woe6uafayk"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-t4v7bi66pmfliqdxsfre"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"phid":"PHID-XACT-TASK-7scsrjebfgmzvvm"},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"phid":"PHID-XACT-TASK-f5nxzylvbpeiedc"},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"phid":"PHID-XACT-TASK-yizri4jlvjl4y3s"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-ln7bpcdluxyq6ux"},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"phid":"PHID-XACT-TASK-5qx4yd5wh52uwgn"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-r67iyn7voxvodgo"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-4aqtsdojath4tyq"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-7bhridkyjabkdzn"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-jl35wb5d5syguve"},{"hovercardSpec":{"objectPHID":"PHID-USER-ees56kwwguslhqwe254y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ees56kwwguslhqwe254y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-4o6axd5pyqknkgu"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-aj6z4xit3yr4k7yhorbq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-7k37pmi3jffv46mzs5te"}},{"hovercardSpec":{"objectPHID":"PHID-USER-7k37pmi3jffv46mzs5te"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-2wzdzkzzjlbmjw5af7p5"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-ANSW-ubz7ydwydeecuuraikhm"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-t2znqiivtsp5i6rji52h"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-2ubpekx26bpeofjxnecl"}},{"hovercardSpec":{"objectPHID":"PHID-USER-7k37pmi3jffv46mzs5te"}},{"hovercardSpec":{"objectPHID":"PHID-WIKI-ifsr5yqnwpledqmcdynb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-lecbla3nfhku6izlj3gn"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uff63klumbpqonipm3kb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-uff63klumbpqonipm3kb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ptm7c2ilajkoanldje3z"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ptm7c2ilajkoanldje3z"}},{"hovercardSpec":{"objectPHID":"PHID-USER-s3iavyt2ns53crfwkvwj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-s3iavyt2ns53crfwkvwj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-w45bsikjfq6zwbihxaaw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-vpmvaml7qnwzdya4jnft"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-fmyqhnx2b5wuz7bi2vgb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-v5mmpiqxuor5lpedzakt"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-t4wdru42apuidkgga6rk"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jtzqmxzqel3bvt4flxen"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jtzqmxzqel3bvt4flxen"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kihtoeg4ufpnktqnhdzt"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kihtoeg4ufpnktqnhdzt"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-rhbwro6ngn36weq5rjap"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3ajrc5seiwxsdbiu63m4"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-bth4zwprwypglwy3qqgh"}},{"hovercardSpec":{"objectPHID":"PHID-USER-mbkkuqmabebbd52klsho"}},{"hovercardSpec":{"objectPHID":"PHID-USER-mbkkuqmabebbd52klsho"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-ocrjxcn2e7ijlhjztxyk"}},{"tip":"Via Web"},[],[],[],[],[],{"phid":"PHID-XACT-TASK-swmgqrgc6c6r23h","anchor":"58906"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-kpotkx64m7vvacc","anchor":"58912"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-ge3pimoq5y4r5g5\/","ref":"T5055#58920"},[],{"anchor":"58920"},[],{"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_125\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_126\" 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-ge3pimoq5y4r5g5\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_127\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_128\" 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-lg4p636yapaojrb","anchor":"58920"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-nf7iv3hxnnanqg3","anchor":"58923"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-bbmnblorb2guugz\/","ref":"T5055#59002"},[],{"anchor":"59002"},[],{"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_137\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_138\" 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-bbmnblorb2guugz\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_139\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_140\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-cwqgdwbt5qp6vhd","anchor":"59002"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-i5xjznc5dqfxrzx\/","ref":"T5055#59029"},[],{"anchor":"59029"},[],{"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_150\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_151\" 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-i5xjznc5dqfxrzx\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_152\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_153\" 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-i5xjznc5dqfxrzx","anchor":"59029"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-gjq7w5b2ekh4j5a\/","ref":"T5055#59031"},[],{"anchor":"59031"},[],{"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_159\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_160\" 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-gjq7w5b2ekh4j5a\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_161\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_162\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-gjq7w5b2ekh4j5a","anchor":"59031"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-bozdn34tdd2lvto\/","ref":"T5055#59049"},[],{"anchor":"59049"},[],[],{"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_172\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_173\" 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-bozdn34tdd2lvto\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_174\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_175\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_21\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/history\/PHID-XACT-TASK-bozdn34tdd2lvto\/\" 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_176\" 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-bozdn34tdd2lvto","anchor":"59049"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ywbc43do4fnax47","anchor":"81697"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ssh5g3isafe77bh","anchor":"88743"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-5bhcasik6jyg7lr","anchor":"112458"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-6o5mm4mnhzlhtmq","anchor":"112462"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-7pgdjmwk4guo3yz","anchor":"112471"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-h2yfb7hlq467bht","anchor":"117964"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-iqsftcgycn3iwm4","anchor":"124491"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-hob3t54vruv63r2","anchor":"124494"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-7scsrjebfgmzvvm\/","ref":"T5055#128837"},[],{"anchor":"128837"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_23\" 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_207\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_208\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\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\/raw\/PHID-XACT-TASK-7scsrjebfgmzvvm\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_209\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_210\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Professor","align":"E","size":300},[],{"tip":"Elite Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-2sbzbnrghpqo5k4","anchor":"128837"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-po25mebuzlzguzw","anchor":"128839"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-km5bbfjvow2uan5","anchor":"128840"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-f5nxzylvbpeiedc\/","ref":"T5055#128843"},[],{"anchor":"128843"},[],{"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_226\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_227\" 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-f5nxzylvbpeiedc\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_228\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_229\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Professor","align":"E","size":300},[],{"tip":"Elite Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-f5nxzylvbpeiedc","anchor":"128843"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-yizri4jlvjl4y3s\/","ref":"T5055#130324"},[],{"anchor":"130324"},[],{"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_239\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_240\" 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-yizri4jlvjl4y3s\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_241\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_242\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Professor","align":"E","size":300},[],{"tip":"Elite Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-yizri4jlvjl4y3s","anchor":"130324"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-ln7bpcdluxyq6ux\/","ref":"T5055#130327"},[],{"anchor":"130327"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_35\" 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_252\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_253\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_37\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-ln7bpcdluxyq6ux\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_254\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_255\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-ln7bpcdluxyq6ux","anchor":"130327"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-5qx4yd5wh52uwgn\/","ref":"T5055#130345"},[],{"anchor":"130345"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_39\" 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_265\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_266\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_41\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-5qx4yd5wh52uwgn\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_267\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_268\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Professor","align":"E","size":300},[],{"tip":"Elite Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-5qx4yd5wh52uwgn","anchor":"130345"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-r67iyn7voxvodgo\/","ref":"T5055#130358"},[],{"anchor":"130358"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_43\" 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_278\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_279\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_45\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-r67iyn7voxvodgo\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_280\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_281\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-r67iyn7voxvodgo","anchor":"130358"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-4aqtsdojath4tyq\/","ref":"T5055#130382"},[],{"anchor":"130382"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_47\" 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_291\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_292\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_49\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-4aqtsdojath4tyq\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_293\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_294\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-4aqtsdojath4tyq","anchor":"130382"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-7bhridkyjabkdzn\/","ref":"T5055#130385"},[],{"anchor":"130385"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_51\" 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_304\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_305\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_53\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-7bhridkyjabkdzn\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_306\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_307\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-7bhridkyjabkdzn","anchor":"130385"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-jl35wb5d5syguve\/","ref":"T5055#132107"},[],{"anchor":"132107"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_55\" 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_317\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_318\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\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\/raw\/PHID-XACT-TASK-jl35wb5d5syguve\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_319\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_320\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-jl35wb5d5syguve","anchor":"132107"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-lyuavescwlwhhk6","anchor":"132108"},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-4l5qxw4werdi27v","anchor":"132125"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-4o6axd5pyqknkgu\/","ref":"T5055#132849"},[],{"anchor":"132849"},[],{"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_337\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_338\" 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-4o6axd5pyqknkgu\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_339\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_340\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-4o6axd5pyqknkgu","anchor":"132849"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-erfily4kjr5oqgk","anchor":"133134"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-to74yrgzduf77vv","anchor":"133869"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-5iiouxj64lq5irn","anchor":"136564"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-3oipjp4xu4illje","anchor":"136875"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-xwjokvaicbpyn4e","anchor":"137461"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-zkz4ellvnepzapx","anchor":"139788"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-7n7sgqvdnj2pktm","anchor":"140770"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-vxex562zevvhszt","anchor":"140932"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-z5gscoypvyvfh7f","anchor":"142496"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-zhncndqdmma4ws6","anchor":"143715"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-slseu6brotvvga2","anchor":"144594"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-pwc5b63gu7725kd","anchor":"145289"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-n3sz36eo6msvozq","anchor":"145290"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-skjmvyqylc4kcco","anchor":"146474"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-si7mns3t6kxuu5l","anchor":"146628"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-mfr6dqp64dxu2md","anchor":"150549"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-lctnaey5u2ycwfy","anchor":"150636"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-sqzfjftnkur5m7z","anchor":"150774"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-hcu4uovdgeedog4","anchor":"151782"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-oz5fchwg4wqfad3","anchor":"154696"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-nz2zo422nok4j6j","anchor":"156838"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-bd3r4ndlqth7sxo","anchor":"158562"}],"javelin_behaviors":{"phui-hovercards":[],"phabricator-watch-anchor":[],"phabricator-tooltips":[],"phui-dropdown-menu":[]},"javelin_resources":["https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/d2de90d9\/core.pkg.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/98e6504a\/rsrc\/externals\/javelin\/core\/init.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/b816811e\/core.pkg.css","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/666e25ad\/rsrc\/css\/phui\/phui-badge.css"]}