You’ve tried GitHub, but you just don’t like the way it’s working out. Maybe the UI bothers you, or maybe you don’t like having to context switch between your project management tools, source control tools, and your CI/CD pipelines just to deliver a successful feature.
After a bit of research for GitHub alternatives, you stumble upon Bitbucket and the greater suite of Atlassian tools at large.
You first notice that many plans come with various differences. A lot of the terminology is weird and hard to understand.
You’re overwhelmed by the choices and end up not knowing if you really need to pay at all. Is the free tier enough for you? Is Bitbucket free?
That’s where this guide comes in. Let’s go.
Comparing Plan Prices
Let’s take a look at what you get for each pricing tier. Some word choice for feature descriptions isn’t intuitive, so we’ll do our best to decipher for you.
Up to 5 users
1GB Git LFS
50 build mins/mo
5GB Git LFS
2500 build mins/mo
10GB Git LFS
3500 build mins/mo
More security options
Comparing Plan Features
Plan comparisons can be overwhelming. The advanced terminology, weird business naming conventions, and sometimes unclear documentation can make the process of choosing a paid plan more confusing than it needs to be. Let’s try to break it down where the differences matter.
|Users||Up to 5||Unlimited||Unlimited|
|Git LFS||1 GB||5 GB||10 GB|
|Enforced merge checks||X|
|Required 2-step auth||X|
Seems straightforward, right? But what’s up with some features with zero explanations or links to explanations? Let’s break it down.
What is a build minute?
Build minutes are minutes executing a pipeline on a runner, excluding time acquiring a runner. In other words, they’re the minutes when your pipeline status is “In progress”.— Atlassian
Let’s say you want to automate your code pipeline to include automated building, packaging, testing, and deploying. Any minutes spent performing these automation processes will count against the minutes limit of the plan.
You can ignore these minutes if you have no plans to use CI/CD features.
Jira is a web-based bug tracking, project management, and agile/scrum management tool.
In a typical Software Development Lifecycle (SDLC), requirements to build a feature or product are entered into Jira to be estimated, scheduled, and tracked. Developers then take those requirements and write code that (hopefully) meets the needs of wherever the requirement originated.
Once the code for the feature or fix is released into the wild, it becomes difficult to know the context of the code. That’s where linking between Jira and Bitbucket comes into play.
In short, Jira stores the requirements. Bitbucket stores the source code and its changes. The integration between the two allows you to link specific code changes to a Jira requirement.
This is key to large teams working on large products when you need to trace backward from a product release back to the commit, merge, or pull request, and eventually the originating requirements. Full traceability gives teams more confidence and efficiency toward the product’s success.
To drive the point further home, according to Bitbucket, “Teams that integrate Jira Software with Bitbucket release versions 14% more often than those who don’t.”
If you don’t need the advanced features, customization, and complex tooling offered by Jira, Trello can be an attractive alternative.
Some development teams prefer to work in a manner that involves developers pulling “tickets” from a list of items on demand. Project managers can keep the lists and tasks up to date and continuously flowing so that developers stay on point.
By integrating Trello and Bitbucket together, users can create code branches directly from Trello tasks. Additionally, users can see statuses of builds and pull requests originating from Bitbucket.
Automating the integration between the project management and source code tools eliminates the reliance on developers to keep their tasks up to date. Instead, the Bitbucket and its CI/CD tools automatically continuously push updates to Trello tasks.
Source control tools are critical when maintaining large projects and especially important when said projects span across many teams. These tools are undoubtedly great at tracking changes, differences, and allowing for smooth merges of text-based files.
What if we want to track changes to files that aren’t text-based? Imagine that our repository contains sound and image files. How do we track those? What are the implications of tracking changes to those files?
When Git tracks file changes, each revision to the file stores a complete copy of that file. For example, a file that has three revisions is stored three times in Git’s history. This is required to be able to have an accurate difference visualization between revisions. For text files, this isn’t an issue.
Can you see why this would be problematic for larger files like huge images? If we have a 1 MB file with 100 revisions, you’re looking at 100 MB of revisions just for one file! Scale this across an entire repository, and you’re looking at a lot of wasted space.
That space is wasted because there’s no ability to visualize differences across revisions of an image or a sound file.
When you enable Git LFS and start tracking your files specifically with the LFS feature, the revisions instead track a pointer to the file. The larger file is then stored somewhere other than the Git repository. Tracking pointers to revisions of files keeps your Git repository considerably smaller.
Bitbucket’s native integration with Git LFS makes it super easy to start tracking your larger files.
In a team-based environment with rapid changes flying around, it’s easy to let bad code through the code review and merge processes. This is especially true if your code review process is entirely manual.
Bitbucket’s merge check feature automates all the annoying and tedious aspects of the code review process. Does the code build? Have required reviewers approved? Have custom checks passed? If the answer is “yes” to all, allow the merge.
The Premium tier upgrades merge checks by allowing you to prevent all merging until checks are cleared and to reset the status of a merge check if the source is modified.
For large, distributed teams across the globe, performance with distributed Git repositories can be atrocious. Large repositories can sometimes take hours to clone and contribute to over distances beyond the oceans.
Bitbucket offers a cloud-hosted smart mirroring feature that acts much like a Content Delivery Network (CDN). When Smart Mirroring is enabled, your repository is copied and mirrored across the world in local clusters so that contributors from anywhere can use a repository closer to their geographic location.
Additionally, these mirrors can be used to process continuous integration tasks like automated builds. Instead of relying on a single instance to handle all build requests for your large projects, the build processes can be farmed out to the array of mirrors across the world.
This feature is only available with a Data Center license, so it’s not accessible to hobbyists. Fortunately, self-starters looking to build up their public profile shouldn’t care about mirroring because they don’t have a team large enough to justify the cost and overhead.
For those of you that need the best of the best, this is it. Enterprise-scale problems require enterprise-scale solutions.
While Atlassian Access isn’t necessarily a new product in its own right, it is a suite of solutions that enhance the functionality of other Atlassian products. Its features are most similar to those offered in GitHub’s Enterprise tier.
At a high level, the features are as follows:
- SAML single sign-on (SSO)
- Audit logging
- Required two-factor authentication (2FA)
- Enhanced user management
- Identity server integrations (Azure, etc)
- Enhanced API controls
- Premium Atlassian support features
According to Atlassian these features are enabled across the entire catalog of Atlassian products including Jira, Confluence, Bitbucket, and Trello.
The pricing structure is straightforward:
- Free for 30 days, then…
- First 10 – 250 users @ $3 / user / month
- Next 251 – 1000 users @ $2 / user / month
- Each user after 1000 @ $1 / user/ month
Conclusion? Yes, Bitbucket Can Be Free!
Depending on how you use Bitbucket, it can be entirely free. As a personal user or hobbyist, your needs are much less than that of a team or enterprise, so you can stick to the free plan for as long as its available.
When you need more flexible security features and are ready to take CI/CD more seriously, try to compare the pricing and features between Bitbucket and GitHub to find the best deal for your use case.
In conclusion, we suggest using the free tier of Bitbucket to build up your public profile. A good public profile can go a long way to showing your employers that you are genuinely interested in software development. Not only does this give you a leg up over the competition, but it also gives you much-needed practice and a backlog of information to reference during conversations.