The PyPy project, which implements the Python language but runs around four times faster, has shifted its primary repository and issue tracker to Microsoft-owned GitHub, replacing Mercurial.
Core contributor Matti Picus says in a blog that “we still feel Mercurial is a better version control system. The named branch model and user interface are superior.” However he adds that “open source has become synonymous with GitHub, and we are too small to change that.”
The project has moved its repository before. In 2010 it put the code on Atlassian Bitbucket. Ten years later it moved to Mercurial hosted at Heptapod. A FAQ entry, referenced by Picus, remarks that Git has no equivalent to Mercurial’s named branches; and that moving to GitHub just because everyone else does is “an argument on thin grounds.”
This view has now changed. Explaining a move that will depress those who believe GitHub already has too much dominance, Picus says that “it turns out that not moving to GitHub is an impediment to contribution and issue reporting.”
Specifically, the Heptapod repository was not well indexed by the major search engines, Picus says, so people found it harder to search for issues. New issues being wrongly blocked as spam was another problem. The richness of the GitHub platform is also a factor, and Picus hopes that “we could add CI [continuous integration] jobs to replace some of our aging buildbot infrastructure.”
It will still be possible to use Mercurial, Picus says, but code will have to be pushed to GitHub using the same techniques he used to migrate the repository.
Some closing remarks give more clues concerning why the project has moved. Picus hopes for more visibility and asks developers to “star the repo, let others know how to find it.” He also invites potential contributors to “take advantage of the more familiar workflow to get involved in the project.”
The move will change the normal workflow somewhat. There will no longer be a “commit directly to main” workflow, and contributors will now use the normal git technique of forking the repository and submitting a pull request – whereas Heptapod did not allow personal forks.
PyPy’s migration has been received for the most part with a sense of inevitability and the hope that more contributors will follow, though a comment on X states “why not Gitlab.” A Reddit commenter said “you can’t just use hg when everyone you are working with uses git. Except [when] you are working alone.“