# Cost Analysis of SCM
## Goal
The goal of this document is to estimate the cost, including the licensing, infrastructure and maintenance, and features of GitHub and Gitlab.
## Current Costs
| Service | Price / month |
|---------|-------|
| Circle CI | $150 |
| GitHub | $90 / month ($9 / user) |
| **Total** | **$240** |
## Estimated Costs
### Gitlab Starter Edition (Using Gitlab CI)
| Service | Price / month |
|---------|---------------|
| GitLab | $40 / month ($4 / user) |
| GitLab Cont. (Hosting) | 1 * t2.Large ($62) |
| **Total** | **$102** |
**Savings: ~$138 / month**
#### Feature Comparison
I tried to really only include features we use or might care about. A full feature comparison (although, from GitLab, so there is a bias) is found here: https://about.gitlab.com/devops-tools/github-vs-gitlab.html.
There might be some usability differences that aren't documented here.
#### Source Control
| Feature | GitLab | GitHub |
|---------|:------:|:---------------:|
| Audit Envents | ✔ | |
| Web IDE (Fix merge conflicts from site) | ✔ | |
| Sign in via Google (Oath2) | ✔ | |
| LDAP user management | ✔ | |
| Mark files as "reviewed" | | ✔ |
| npm package registry | ✔ | ✔ |
| docker container registry | ✔ | ✔ |
| Code reviewers | ✔ | ✔ |
| Code owners | ✔ | ✔ |
| Protected branches | ✔ | ✔ |
---
#### CI Features
| Feature | GitLab CI | Circle CI |
|---------|:------:|:---------------:|
| Review Apps (PR Environments) | ✔ | |
| Visual Reviews (Feedback from review app) | ✔ | |
| Show code coverage | ✔ | |
| Performance Monitoring via Prometheus | ✔ | |
| Run scripts in containers | ✔ | ✔ |
| Define pipeline stages | ✔ | ✔ |
| Use a different container per stage | ✔ | ✔ |
| Secrets | ✔ | ✔ |
| Report test results in Slack | ✔ | ✔ |
---
### Conclusion
GitLab has evolved from being just a source control management tool or Git UI into being a fully featured software project management, devops, and source control tool. Many developers familiar with GitHub might have a hard time adjusting to its more complex UI, however it does offer many more features for organizations of all sizes. GitLab includes a clear roadmap, and is rapidly evolving to encompass more and more of the software development lifecycle.
Its source control and user management tools are comparable to GitHub, especially for our usage. One feature that I think will be quite nice for our organization is being able to add users from our OAuth2 provider or LDAP server (Jumpcloud?).
As for continuous integration, GitLab is objectively more featureful. Their snyntax is similar & yaml based, though in my experience, GitLab is a little more straightforward. GitLab supports a lot more features, like per-PR installations (review apps). Assuming we were to host GitLab ourselves, it would be free, and would not have the same limitations of parallel jobs.
Transferring projects from GitHub to GitLab is a seamless, one-click process. The most difficult obstacle would be moving developers away from their favorite source control provider.