<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Ben,<div class=""><br class=""></div><div class="">Thanks a lot for the summary of the situation.</div><div class=""><br class=""></div><div class="">As you know, I do dislike Phabricator for the many reasons that you are listing, and it would be nice to finally move to a better system. In particular, it is worth emphasising the fact highlighted by the survey, namely that "Phabricator was the most common complaint by a fair margin, both in case of respondents who have contributed patches and those who have not. On the whole, past contributors and potential future contributors alike have strongly indicated that they want a more Git-like experience.”</div><div class=""><br class=""></div><div class="">One the one hand, we want broader participation in GHC development; on the other hand, we constantly ignore the single largest source of frustration for contributors. That just doesn’t make a lot of sense to me, even if it can be explained by the inertia of some existing developers.</div><div class=""><br class=""></div><div class="">Unfortunately, if I am not mistaken, GitLab also has a big problem. It requires the use of GitLab CI — i.e., we cannot use CircleCI and Appveyor with it. (At least, that is my current understanding. Please correct me if I am wrong.)</div><div class=""><br class=""></div><div class="">Given that large organisations work with large code bases on GitHub, I am still puzzled why GHC somehow cannot do that. (I do understand that the dev process that has been established within GHC is naturally focused around Phabricator and its tools. However, that doesn’t mean it couldn’t be changed to work as well as before, but with another tool.)</div><div class=""><br class=""></div><div class="">In any case, I think, you didn’t mention one of the options we did discuss previously, namely to use GitHub together with a service that adds more sophisticated code review functionality, such as</div><div class=""><br class=""></div><div class="">  <a href="https://reviewable.io" class="">https://reviewable.io</a></div><div class=""><br class=""></div><div class="">This would solve the CI issues without further ado.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Manuel<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Am 30.10.2018 um 05:54 schrieb Ben Gamari <<a href="mailto:ben@well-typed.com" class="">ben@well-typed.com</a>>:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class="">TL;DR. For several reasons I think we should consider alternatives to<br class="">       Phabricator. My view is that GitLab seems like the best option.<br class=""><br class=""><br class="">Hello everyone,<br class=""><br class="">Over the past year I have been growing increasingly weary of our<br class="">continued dependence on Phabricator. Without a doubt, its code review<br class="">interface is the best I have used. However, for a myriad of reasons I<br class="">am recently questioning whether it is still the best tool for GHC's<br class="">needs.<br class=""><br class=""><br class=""># The problem<br class=""><br class="">There are a number of reasons why I am currently uncertain about<br class="">Phabricator.<br class=""><br class="">For one, at this point we have no options for support in the event that<br class="">something goes wrong as the company responsible for Phabricator,<br class="">Phacility, has closed their support channels to non-paying customers.<br class="">Furthermore, in the past year or two Phacility has been placing their<br class="">development resources in the parts their customers pay them for, which<br class="">appear to be much different that the parts that we actively use. For<br class="">this reason, some parts that we rely on seem oddly half-finished.<br class=""><br class="">This concern was recently underscored by some rather unfortunate<br class="">misfeatures in Harbormaster which resulted in broken CI after the<br class="">Hadrian merge and now apparent bugs which have made it difficult to<br class="">migrate to the CircleCI integration we previously prepared.<br class=""><br class="">Perhaps most importantly, in our recent development priorities survey<br class="">our use of Phabricator was the most common complaint by a fair margin,<br class="">both in case of respondents who have contributed patches and those who<br class="">have not. On the whole, past contributors and potential future<br class="">contributors alike have strongly indicated that they want a more<br class="">Git-like experience. Of course, this wasn't terribly surprising; this<br class="">is just the most recent case where contributors have made this<br class="">preference known.<br class=""><br class="">Frankly, in a sense it is hard to blame them. The fact that users need<br class="">to install a PHP tool, Arcanist, to contribute anything but<br class="">documentation patches has always seemed like unnecessary friction to me<br class="">and I would be quite happy to be rid of it. Indeed we have had a quite<br class="">healthy number of GitHub documentation patches since we started<br class="">accepting them. This makes me thing that there may indeed be potential<br class="">contributoes that we are leaving on the table.<br class=""><br class=""><br class=""># What to do<br class=""><br class="">With Rackspace support ending at the end of year, now may be a good<br class="">time to consider whether we really want to continue on this road.<br class="">Phabricator is great at code review but I am less and less certain that<br class="">it is worth the maintenance uncertainty and potential lost contributors<br class="">that it costs.<br class=""><br class="">Moreover, good alternatives seem closer at-hand than they were when we<br class="">deployed Phabricator.<br class=""><br class=""><br class="">## Move to GitHub<br class=""><br class="">When people complain about our infrastructure, they often use GitHub as<br class="">the example of what they would like to see. However, realistically I<br class="">have a hard time seeing GitHub as a viable option. Its feature set is simply<br class="">insufficient enough to handle the needs of a larger project like GHC<br class="">without significant external tooling (as seen in the case of Rust-lang).<br class=""><br class="">The concrete reasons have been well-documented in previous discussions<br class="">but, to summarize,<br class=""><br class=""> * its review functionality is extremely painful to use with larger<br class="">   patches<br class=""><br class=""> * rebased patches lead to extreme confusion and lost review comments<br class=""><br class=""> * it lacks support for pre-receive hooks, which serve as a last line of<br class="">   defense to prevent unintended submodule changes<br class=""><br class=""> * its inability to deal with external tickets is problematic<br class=""><br class=""> * there is essentially no possibility that we could eventually migrate<br class="">   GHC's tickets to GitHub's ticket tracker without considerable data<br class="">   loss (much less manage the ticket load that would result), meaning<br class="">   that we would forever be stuck with maintaining Trac.<br class=""><br class=""> * on a personal note, its search functionality has often left me<br class="">   empty-handed<br class=""><br class="">On the whole, these issues seem pretty hard to surmount.<br class=""><br class=""><br class="">## Move to GitLab<br class=""><br class="">In using GitLab for another project over the past months I have been<br class="">positively surprised by its quality. It handles rebased merge requests<br class="">far better than GitHub, has functional search, and quite a usable review<br class="">interface. Furthermore, upstream has been extremely responsive to<br class="">suggestions for improvement [1]. Even out-of-the-box it seems to be<br class="">flexible enough to accommodate our needs, supporting integration with<br class="">external issue trackers, having reasonable release management features,<br class="">and support for code owners to automate review triaging (replacing much<br class="">of the functionality of Phabricator's Herald).<br class=""><br class="">Finally, other FOSS projects' [3] recent migrations from Phabrictor to<br class="">GitLab have shown that GitLab-the-company is quite willing to offer help<br class="">when needed. I took some time this weekend to try setting up a quick GHC<br class="">instance [2] to play around with. Even after just a few hours of playing<br class="">around I think the result is surprisingly usable.<br class=""><br class="">Out of curiosity I also played around with importing some tickets from<br class="">Trac (building on Matt Pickering's Trac-to-Maniphest migration tool).<br class="">With relatively little effort I was even able to get nearly all of our<br class="">tickets (as of 9 months ago) imported while preserving ticket numbers<br class="">(although there are naturally a few wrinkles that would need to be<br class="">worked out). Naturally, I think we should treat the question of ticket<br class="">tracker migration as an orthogonal one to code review, but it is good to<br class="">know that this is possible.<br class=""><br class=""><br class="">## Continue with Phabricator<br class=""><br class="">Continuing with Phabricator is of course an option. Its review<br class="">functionality is great and it has served us reasonably well. However,<br class="">compared to GitLab and even GitHub of today its features seem less<br class="">distinguished than they once did. Moreover, the prospect of having to<br class="">maintain a largely stagnant product with no support strikes me as a<br class="">slightly dangerous game to play. Working around the issues we have<br class="">recently encountered has already cost a non-negligible amount of time.<br class=""><br class=""><br class=""># The bottom line<br class=""><br class="">If it wasn't clear already, I think that we should strongly consider a<br class="">move to GitLab. At this point it seems clear that it isn't going to<br class="">vanish, has a steady pace of development, is featureful, and available.<br class=""><br class="">However, these are just my thoughts. What do you think?<br class=""><br class="">Cheers,<br class=""><br class="">- Ben<br class=""><br class=""><br class="">[1] 11.4 will ship with a file tree view in the code review interface,<br class="">    which I reported<br class="">    (<a href="https://gitlab.com/gitlab-org/gitlab-ce/issues/46474" class="">https://gitlab.com/gitlab-org/gitlab-ce/issues/46474</a>) as being is<br class="">    one of the Phabricator features I missed the most during review<br class=""><br class="">[2] <a href="https://gitlab.home.smart-cactus.org/ghc/ghc/issues/14641" class="">https://gitlab.home.smart-cactus.org/ghc/ghc/issues/14641</a><br class=""><br class="">[3] The GNOME and <a href="http://freedesktop.org" class="">freedesktop.org</a> projects have recently migrated, the<br class="">    former from a hodge-podge of self-hosted services and the latter<br class="">    from Phabricator<br class=""><br class="">_______________________________________________<br class="">Ghc-devops-group mailing list<br class=""><a href="mailto:Ghc-devops-group@haskell.org" class="">Ghc-devops-group@haskell.org</a><br class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devops-group<br class=""></div></div></blockquote></div><br class=""></div></body></html>