Note: this is my personal recollection, and view on the matter at hand, not that of my employer.

14/04/2018 Update— Followup article can be found here: An Update on the #GitLab Situation

Roughly 18 months ago, we spent a chunk of time trying to figure out how we could setup a relatively easy continuous integration/continuous deployment (CICD) pipeline. This required spending a lot of time evaluating different version control systems along with the continuous integration platforms, to see what worked together well, and what would meet our needs for auditability and immutability.

As a company, we had (and to an extent still do — legacy never dies) a variety of different version control mechanisms, and one sprawling difficult to use build management system. Our attempt to unify all of the version control mechanisms ended up with us using GitHub, which worked wonderfully well. However, we still were using our internal build system, which would poll the repository for changes, much like a very old Jenkins system might. A few projects tested out alternates — Travis and CircleCI being two of the decent ones.

During our search, we realized that while we loved GitHub (cuz git), we weren’t so enamoured with the existing SaaS CI systems, simply due to our audit/security concerns. Eventually, we stumbled onto GitLab — it was love at first sight! While the UI was nowhere near as polished as that of GitHub, and it lacked a few other features (easy builds to validate pull/merge requests), the combination of SCM and CI was a great solution. The fact that the CI allowed for creating complex builds based on conditions with an easy visualization was a cherry on top.

There were still some rough patches that cast shadows on the initial procurement, however. The sales people were at times pushy, and at other times entirely unreachable, quotes sometimes seemed to be pulled out of thin air, and their pre-sale support team wasn’t entirely supportive. That said, our internal SRE team is pure gold, and we eventually got everything squared away — we purchased an Enterprise Edition (EE) Starter license for 100 users, and went to town.

Fast forward one year, and we got a notification that our license was expiring. “Easily fixed!” we thought, and contacted GitLab to renew our license. This is where things get super interesting — earlier this year (2018, if this post lives on), GitLab changed their licensing tiers. Gone were the simple Community Edition (i.e. OSS/free), and EE Starter/EE Premium split. Instead, they rebranded CE to Core, and then created three tiers of Enterprise: Starter, Premium, and Ultimate.

The tiers by themselves aren’t really a cause for concern — while some of the features we utilized are now part of Premium and no longer available with Starter, we could do some magic internally to mitigate them if we had to.

And mitigate them we would, because the new pricing model is flat out insanity!

You see, when we got the license in 2017, it was roughly $3.25/user/mo (billed annually, works out to be $39) — you can see their historic pricing page here. This year, if we wanted to stick with the feature set we wanted, it would be $19/user/mo (billed annually, works out to be $228) — a 585% increase! If we had been an EE Premium user, it would have jumped from $16.95/user/mo to $99, a similar 584% increase!

GRR ARGH

No part of me is okay with this — as an existing customer, relying on functionality, to have somebody move a bunch of functionality into a new tier, then basically hold you hostage to that change is a wonderful way to lose a customer. Worse yet — we wanted to lock in for three years at a fixed rate (i.e. $4/user/mo for the “new” EE Starter), we were told that each year the price would be going up!

If this is how GitLab behaves, it is impossible for me to sing their praises to anybody — I was formerly an advocate for their software, but now will be telling everybody I know to steer clear. There is NO way that GitHub would pull this; the one time they changed their pricing model, it was a switch from per-repository to per-user. Otherwise, pricing has remained stable, and the features you get for that price only increment.

Basically, given their poorly thought out and unilateral change, I have only negative feelings for them — all of the goodwill they had earned from providing a solid product has been burned. I’m sure that GitLab has sales folks internally saying “but it is still cheaper than GitHub EE,” and using that as a means to justify this decision, but that doesn’t cut it. The lack of communication about the change, the feature gating, and the general unctuousness is a relationship killer.

TL;DR — decent product being utterly destroyed by poor sales decisions.