This Week in Programming: Bitbucket Bids Adieu to Mercurial to Focus on Git

Atlassian, announced this week that it would be sunsetting Bitbucket’s Mercurial support. Mercurial, in case you weren’t aware, is an alternate version control repository to the open source Git, which has served as the basis for the code-hosting repositories GitHub, GitLab, and Bitbucket itself. Bitbucket, however, started out in 2008 with support only for Mercurial, in contrast to GitHub, which also started in 2008, but with Git instead.
Git adoption has grown over the years to become the default system and that “as we surpass 10 million registered users on the platform, we’re at a point in our growth where we are conducting a deeper evaluation of the market and how we can best support our users going forward,” Atlassian noted in a statement. The decision the company made was to remove Mercurial support from Bitbucket Cloud and its API, with all Mercurial features and repositories to be officially removed on June 1, 2020.
How much has Git won? The platform that was created to be a GitHub but for Mercurial has not only adopted Git, it has actually now even removed Mercurial support.
— Marek, lost in Twıtter (@leonidasfromxiv) August 20, 2019
With any product sunset, you’re likely to find some unhappy users out there and this is no exception. While confusion and anger are common reactions, others see it as a decision based simply on common business sense. After all, Bitbucket cites a Stack Overflow Developer Survey showing 90% of developers using Git as compared to 3% for Mercurial. Atlassian says Bitbucket’s own Mercurial use has “fallen to less than 1%.”
Not sure I get why people are so mad at @Bitbucket for shutting down mercurial. I imagine most users aren't commercial users and they are trying to improve upon their valuable free service by narrowing their focus. Kudos, in fact. #jirastillsucks
— Ben Widawsky (@widawsky) August 21, 2019
The real problem for many, it seems, is not Bitbucket’s removal of support, but rather the fact that as of June 1, 2020, “all Mercurial repositories will be removed.”
Oh awesome, Mercurial support isn't the reason that literally all my repos are on Bitbucket or anything
And not just put into read-only mode or anything, all repos REMOVED lmao, wave goodbye all code without maintainers pic.twitter.com/o2TLbzeF1q
— CHz (@CHz16) August 20, 2019
Of course, Atlassian can see the writing on the wall, with both GitHub and GitLab focusing ever more on everything to do with managing the entire software development lifecycle — building out CI/CD tooling, for example — and the company states that “this deprecation will enable us to focus on building the best possible experience for our users.” Some feel, however, that forcing Mercurial users to completely migrate their repositories will be the death knell for their Bitbucket accounts:
"I chose @BitBucket for Mercurial support. If I'm going to be forced to switch to the "industry standard" of Git and Atlassian is offering no method to smoothly make that transition, why shouldn't I also switch to the industry standard of GitHub?"https://t.co/Qw0EGU7yek
— Anna-Jayne Metcalfe 🏳️⚧️🏳️🌈 (@annajayne) August 22, 2019
The announcement offers a number of recommendations for how its users can migrate their existing Mercurial repos to Git using hg-fast-export and hg-git mercurial plugin, also pointing to a number of free and paid Mercurial hosting services. GitLab—ever slow to jump on a situation such as this to lure users its way—quickly commented that Heptapod offers a “community-driven effort to bring Mercurial support to GitLab” in what is considered a friendly fork of GitLab Community Edition. Buyer beware, however, as Heptapod itself notes that “though not a mere prototype anymore, Heptapod is still quite experimental.” SourceForge also wants those unhappy Bitbucket users to know that they can find a home there as well.
For many, Bitbucket’s sunsetting of Mercurial will be a hassle, but not too much more. For others, however, it looks like Mercurial’s end with Bitbucket serves as a symbol of the true ethereal nature of the cloud — c’est la vie.
It’s called the cloud because your data evaporates.https://t.co/7kcPuYZxpx
— palenbae (@palendae) August 20, 2019
This Week in Programming
- Kotlin 1.3.5 Improves Java Conversion: Android devs, Kotlin 1.3.50 has been released and it brings with it a new Duration and Time Measurement API, which is now available for preview, as well as a plugin for debugging Kotlin/Native code, Java compilation support in multi-platform projects, and an improved Java-to-Kotlin converter. On that last point, the team says that it wants to “minimize the amount of ‘red code’ one has to fix manually after the conversion” by better inferring nullability based on the Java type usages in the code. For the complete list of changes, check out the change log.
- Project Marble Culminates with Android Studio 3.5: Dubbed Project Marble, Android Studio has been in a phase of non-flashy feature development, during which the team developing the IDE has taken “a step back from large feature work for eight months and instead focused on product quality […] making the fundamental features and flows of Android Studio & Emulator rock-solid by looking at three core areas: system health, feature polish, and bugs.” Well, their work has reached a stopping point (because, does work on bugs and stability ever really end?) enough to release Android Studio 3.5 into stable. More specifically, the team says it has fixed more than 600 bugs, 50 memory leaks, and 20 IDE hangs, as well as “polishing and fixing core user-facing feature areas.” And, of course, there were some run-of-the-mill bugs to tackle too. For a deeper dive, check out the video.
- Git 2.23 Adds Switch & Restore: GitHub offers an overview of the highlights from Git 2.23, which “brings a new pair of experimental commands to the suite of existing ones: git switch and git restore” two features that are “meant to eventually provide a better interface for the well-known git checkout.” According to JAXEnter, the two new commands intend to “clearly define the responsibilities of git checkout into two categories: git switch takes care of operations that change branches and git restore takes care of operations that change files.” There’s much more, but you’ll have to click through for the rest.
- GitHub Ups Its Token Game: Last year, GitHub started offering token scanning, a feature that would scan any pushed commits to make sure that you didn’t accidentally share any credentials. A year later, the company has signed on five more partners — Atlassian, Dropbox, Discord, Proctorio, and Pulumi — who join Alibaba Cloud, AWS, Azure, Google Cloud, Mailgun, npm, Slack, Stripe, and Twilio. When credentials for one of these partners is detected, they are revoked before anyone can use them maliciously and you are notified. GitHub says it sees almost 9 million commits pushed to GitHub daily and has dealt with more than a billion potential token leaks in the last year. Meanwhile, the company implores other cloud and API service providers who use tokens to learn more about becoming a GitHub token scanning partner.
Remember the LAMP stack? Life was so much simpler back then, it was all most people needed, and I bet the same is true today.
— Kelsey Hightower (@kelseyhightower) August 22, 2019
- GitHub Student Developer Pack Continues with 21 New Partners: If it’s starting to feel like the only thing we’re learning about this week is version control systems, then… I’m with you. Of course, these things are so much more than that now, right? GitHub, for example, is bringing back its GitHub Student Developer Pack, which has thus far “provided over 1.5 million students the best real-world developer tools and training for free since its introduction six years ago” and will continue to offer GitHub Pro at no charge to students while in school. TechCrunch’s Frederic Lardinois also notes that “more than 1.5 million students have now signed up for the program, with about 750,000 being currently active” and GitHub now “doubling the number of partners in the Student Developer Pack program by adding an additional 21 companies to the list.” Lardinois also remarks that “over the summer, GitHub’s new owner, Microsoft also added its Azure cloud computing services to the Student Pac,” emphasizing that “it’s part of the company’s promise to remain open, even after having been acquired by Microsoft.”
- …And Then There’s GitHub Enterprise Server 2.18: Last one, I swear. GitHub has released GitHub Enterprise Server 2.18, which offers updates to project management tools, security features, and the developer experience. Under the project management header, updates include repository templates, assignable commenters and milestones on project cards, while security brings support for yarn.lock files in the dependency graph and access to audit log data, while developers will automatically watch user-owned repositories they create, receive notifications for new conversations occurring on gists, and see commenters full names… if they so choose.
I think companies don't understand that when you hire "less experienced" engineers, your entire team improves.
— Erin Fox (@erinfoox) August 20, 2019
- Why Aren’t You Down with the OOP? We gotta leave you off on a better note than all the GitHub news in the world, so we can’t more highly recommend heading on over to David Cassel’s article here on The New Stack investigating why so many developers are hating on object-oriented programming. The gist, as with most anything, is that “some developers love it — but some hate it” with a primary example of those who hate it coming in the form of Ilya Suzdalnitski, “a senior full-stack engineer who last month posted a 6,000-word essay dubbing OOP a ‘trillion-dollar disaster.’” Love or hate OOP, Cassel offers a thorough tour through the ambivalent feelings toward both OOP and functional programming, though you might quickly guess which side Suzdalnitski comes out punching for.
https://twitter.com/ThatEricAlper/status/1164182929687363584
GitLab is a sponsor of The New Stack.
Feature image by Mantas Hesthaven on Unsplash.