Skip to main content
  1. Articles/

Bitbucket versus the Competition

·
Ro'i Bandel
Author
Ro’i Bandel
Table of Contents

TIL that Bitbucket is the slowest of the major software forges according to Software Forge Performance Index.

forgeperf.org is maintained by SourceHut, who are not impartial. SourceHut just so happen to lead most of the performance results. I can believe that the benchmarks are accurate, though the benchmarks may have been designed in a way that favors SourceHut.

Even so, performance is not everything. SourceHut’s UI is noticeably basic, which might be good for performance but not necessarily the most pleasent to use. SH patchsets are sent over email, an antiquated workflow (even if it’s still how Linux kernel development works).

The reasons I dislike Bitbucket have little to do with its subpar performance. Bitbucket, like most of Atlassian’s suite, just feels aggressively average. I wouldn’t go as far as to say Bitbucket is bad, it functions fine as a git forge. It does the basics decently well and many enterprises successfully use it. However, when compared to its main competitors, Bitbucket feels objectively worse. It kind of sucks.

The Competition

I would consider the main competitors to be GitHub and GitLab. Both of these have many more features than Bitbucket. Bitbucket is falling behind and playing catch-up, slowly implementing features that the competitors had years ago. Here are several examples.

Artifact Registry

There was a recent announcement of Bitbucket Packages. This will be Bitbucket’s own solution for an artifact registry, starting with a container registry. GitHub and GitLab already had artifact registry solutions for years, for example GitHub launched GitHub Package Registry in 2019 and GitHub Container Registry in 2021. Even when Bitbucket Packages does launch it will be limited to containers only at first. I also noticed that Bitbucket is missing a Releases feature, which both GitHub and GitLab have.

CI/CD

Atlassian has had several different CI/CD solutions over the years. Bamboo used to be the main one, and many companies used (or still use) a Bitbucket+Jenkins combo. Nowadays, Bitbucket Pipelines is the main solution that Atlassian tries to push onto its customers. One of these customers is my current client. I came into the client having to deal with the hacky Bitbucket pipelines that the previous team left me. We are using self-hosted Bitbucket Runners running on EC2 instances, because the hosted Bitbucket Runners are underpowered. Overall, I got the pipeline working, although the entire time I wished I was using GitHub Actions instead. To be fair, it’s clear Bitbucket Pipelines is being actively developed and is getting new features. However, it’s also clear that it’s playing catch-up against others CI/CD solutions (including GHA and GitLab CI/CD). There are all sorts of weird limitations, some of which have been fixed and others which still haven’t. For example, until recently, Bitbucket Pipeline steps were limited to only 2 hours. This has thankfully been fixed, and now the max-time can be set up to 720 (12 hours), enough to most (but not all) jobs. Other limitations continue to exist. GitHub has the Actions Marketplace full of community actions that can be easily integrated into GHA workflows, often completely for free (many actions are FOSS). Bitbucket works with the Atlassian Marketplace and Bitbucket Pipes integrations | Bitbucket, but this is much more limited and harder to use with Pipelines, and the majority of Apps are paid.

SSH commit signature verification

I was excited about SSH commit signature verification this feature when I learned about it during my bootcamp in late 2022. GitHub was quick to implement it and GitLab not long after. I then started working with clients that used Bitbucket and was surprised to find this feature missing! Only in 2025 did Bitbucket Cloud release SSH commit signature verification, more than two years after both GitHub and GitLab.

Bitbucket CLI

Bitbucket has no official CLI tool in the style of GitHub CLI or GitLab CLI. Of course, the standarad Git CLI does work well with Bitbucket, but the gh and glab CLI tools go beyond that and allow to do many actions directly using commands. Bitbucket does have REST APIs (The Bitbucket Data Center REST API and The Bitbucket Cloud REST API) which do work, but are harder to use than an equivalent CLI tool would be.

Cloud Development Environments

GitHub has Codespaces and GitLab has Workspaces. Both are Cloud Development Environments based on VS Code. Microsoft maintains both GitHub and VS Code. VS Code itself remains open source under the MIT license. GitLab maintains their own VS Code fork.

Bitbucket offers to use Cloud IDE add-ons Bitbucket Integrations, but doesn’t have anything built-in.

Automatic Dependency Updates

Dependabot is built into GitHub. GitLab uses Renovate GitLab Bot. Renovatebot can work with Bitbucket, either self-hosted or supported by Mend, however there is nothing built-in to Bitbucket.

Fragmented Hosting Solutions

A major point of confusion for me when using Bitbucket has been the the differences between Bitbucket Data Center and Bitbucket Cloud. While both look like Bitbucket, they are essentially two different products with different features and development cycles. Every time I look up Bitbucket documentation, I have to make sure that I am following docs for the right product. There are even two different Bitbucket REST APIs.

In comparison, GitLab operates under a single codebase for Community and Enterprise editions and the same codebase is used to run GitLab.com:

Quote

The largest known GitLab instance is on GitLab.com, which is deployed using our official GitLab Helm chart and the official Linux package.

Bitbucket Kills Self-Hosting

Bitbucket Server reached end of support in 2024. My clients at the time were already using Bitbucket Data Center so they weren’t affected. However, Bitbucket recently announced that Data Center will reach end of life in 2029. The solution going forward will be only Bitbucket Cloud. While this solves the fragmentation problem, it does so at the expanse of any self-hosted solutions. I believe there are still organizations for whom self-hosting is non-negotiable. Atlassian is essentially giving up on these customers. Perhaps they’ve done their cold calculations and decided that continuing to develop and support Bitbucket Data Center is no longer worth it even if they do lose some customers.

Meanwhile, GitLab continues to to offer a self-hosted solution, that can even run for free with GitLab Community Edition. GitHub offers GitHub Enterprise Server.


Featured image by Courtney Moore on Unsplash.

Related

KYAML

·
Today I learned, in Kubernetes v1.34, kubectl will also support a new strict subset of YAML called KYAML.

uv is incredible

·
I have recently learned about uv and the uv workflow. Since then, I’ve been using uv a lot more, both for personal projects and at work!

Agentic CLI Tools Comparison

·
Comparison of Claude Code vs. Cursor CLI vs. Gemini CLI vs. Codex CLI