It is not about X vs Y. It is about evolution

GitLab Fan
GitLab Fan Club
Published in
3 min readJan 26, 2017

--

I’ve just realized that it is not about GitHub vs GitLab. It is not about who has more features. It is just about different concepts. It is about shifting your mindset and switching to the next-generation way of Software Development.

Why should you spend enormous amounts of time to glue together independent tools when there’s universal open source tool which handles all the aspects of modern software development?

What aspects? Well, let’s list them:

  • version control
  • branching + pull requests
  • code reviews
  • automated testing + code coverage tracking
  • continuous integration
  • continuous deployment
  • continuous QA review(review apps)
  • project management:
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 issues
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 milestones
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 priorities
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 kanban board
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 time tracking
  • monitoring
  • container schedulers support
  • knowledge/documentation management:
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 wiki
  • 𐄁 𐄁 𐄁 𐄁 𐄁 𐄁 static sites generation and hosting

The only missing thing I see is built-in chat. I hope one day GitLab integrates Mattermost or no-matter-what, so there will be no need to keep a separate thing for work-related chatting.

A very natural question usually arises here: Why having such a bloated monster? For sure, separate tools will handle its responsibilities better than one tool trying to be good at everything!

I agree, it sounds very counterintuitive. And it is against Single Responsibility Principle, which all developers believe in. But here’s the trick: Software Development is a complicated thing, and if you handle its aspects independently, it makes you less efficient.

If you use many tools for Software Development, you lose a lot of energy on boundaries between tools. If you can do everything in one place, it saves you a lot of time by the lack of configuration, and it gives you a bunch of synergy effects.

Have you ever tried to integrate something with Slack, for example? It is a pain in the ass! Take this key from here, put it there, make sure to specify special URL in some third place. We even had to have special terminology for all this integration stuff. But it has no direct impact on our effectiveness. We had to spend our time, and energy just to tie two tools together. It is ugly! And you had to integrate not only two tools. I bet you have at least a dozen.

Imagine something like Slack built in into GitLab! Automatic channel creation for every project, seamless switch between comments and chatting, out-of-the-box chat bots for CI/CD/code reviews, same permissions system and so on and so on.

The irony is that you don’t have a lot of choice :) If you prefer not to evolve and stay with your legacy toolset, then you’ll be beaten by more agile competitors.

--

--