Gitlab is a great product for self-hosting a GitHub-like service and I'm grateful for its existence. Having said that, I'm not a big fan of their bait and switch approach to feature creep. Every time I try to update our GL I end up in a world of hurt. No straight upgrade path when you skip major-ish releases. I end up wasting a day sifting through cryptic issues and docs from vague error messages. Suddenly can't comm…
We've put a lot of effort towards making the upgrades as painless as possible, with few surprises. One way we've achieved this is by requiring users to update to the last minor version, before making the jump to the next major version, as you note. The reason for doing this, is that we add a lot of validation to that last minor package which checks for any deprecated features/configuration.
This way if you try to upgrade with a configuration that would result in GitLab no longer functioning, we abort the upgrade and tell you exactly why, leaving you with a functional instance in the interim.