Blogging from the Git Merge Conference at MACBA in Barcelona

Once again the contributors and major players in the Git ecosystem are gathered. Read along for news, announcements and stories from Git Merge 2018.

Last year Git Merge was in Brussels, this year we’re in Barcelona. It is a lovely city, and instantly I regretted not planning to have time to visit the city as a tourist.

As always the GitHub events team has found a great venue at MACBA. The rustic cathedral-like interior provides a stark contrast to the heavily tech-focused event going on inside.

Contributors Summit and Workshop

As usual Git Merge is a two-day event. Git is developed as a traditional Open Source project, following a model from before the term Pull Request was coined. The development is truly distributed. The one day each year that the minds behind the Git Core actually sit together, to discuss roadmaps and issues are at Git Merge. It is a 30-person invitation only session, and I am eagerly awaiting a recap of their discussions.

For the rest of us, the mere Git Mortals, the Git Merge crew has been kind enough to provide us with entertainment and inspiration. The day was filled with cool thoughts and tools, from visualizations to automating as much as possible.

GitHub School visualizing Git tool
@kuychoca presenting a visualization tool for Git teaching.

I even had the pleasure of presenting the work that @Figaw and I have made for simulating software development workflows. You can even try out running your own workflow simulations with the Game of Dev Life Repository or just look at the slides.

Atlassian was the kind host of “Beers with Bitbucket”, yet another excellent opportunity to talk to the awesome people building and using Git. The first of the conference ended for me with the speakers dinner, we had great local food by the Mediterranean sea with all you can eat discussions on teaching Git. What a day!

The actual conference day

Git Merge is a single track conference focusing on the all the stuff that goes on around Git. It is obvious from the schedule and the talks that Git is a mature technology.

Brett Smith of the Software Freedom Conservancy starts us off with a talk on the values of software. He has many other people started in software through computer games.

Brett Smith on how he got started with computing
Brett Smith telling us the stereotypical, computer games started my interest in programming.

We see the old game engine ZZT, from 1991. Already at that point allowing people to build their own games. Transparency and extensibility as first class citizens seems to have been values that allowed the ZZT community to outlast the tech that it used.

While you might not know ZZT the author Tim Sweeney went on to make the Unreal game engine.

After a session with Diane Hosfelt, basically about their workflow at Mozilla, we skip to a more technical section of the day.

Doing Ops in Git

Carlos Martin Nieto of GitHub introduces the challenges of doing near-realtime incremental backups, when you have more than 28 million users and 38 million repositories.

Asking the real question “Why do we do back ups” he takes us through the default cases: disaster recovery, corruption and such. He shares the secret with us. The most common use case for the backups at GitHub: restoring repositories that users accidentally deleted.

Even though they spend around a year developing their new backup solution they are certain: It was worth it, their backup is now 90% more efficient! Impressive numbers.

Following Carlos, is the OG of Git talks: Edward Thomson, currently working at Microsoft. He takes us through what keeps him up at night: Security issues in Git. Edward is the maintainer of libgit2. If you have ever used Git, you are dependent on this, even if you didn’t know it. libgit2 is at the heart of Github, Gitlab, Microsoft VSTS and Bitbucket.

Edward Thomson is on the watch for security issues in Git
Communities intersecting and cooperating on security releases.

We get a fascinating and technical tour through a specific vulnerability, that allowed for remote code execution. Again we see the power of the Git community and the Version Control community in general. This specific vulnerability was originally noticed in Mercurial, who then told Git “You might want to look into this”. And sure enough the error was also present there. I for one am very happy that the technologies that keep our most precious belongings safe are open, responsible and community-driven.

Another very interesting point that Edward brings up is that the demographic of the developers of Git are extremely different from that of the Git users. The vast majority of Git usage is on Windows clients, while the developers primarily sit on Linux. This leads to many challenges and assumptions. To paraphrase Ed, “The most dangerous part of software development is our assumptions”

After lunch we get a very interesting talk from Stephen Hathaway. His design team is using Git to version artifacts. It seems that them versioning their artifacts have changed the way they think. Stephen have truly but an unlikely crowd to working the right way. Afterwards I had lovely discussions with Stephen. I truly look forward to seeing him give another talk in a few years. It will probably be called something like “We finally did it, graphical designers solved their workflow”.

I can feel myself getting a little jaded from the conference track, and drift out in the halls. There I meet fellow Gitters, and talk about big and small things Git. When I go back into the conference hall, I see a familiar face and slide on the big screen. It’s Andrey, my former colleague at Praqma, who’s now traveling the world as an IT-consultant.

He still knows about how software should be made, and what better story to illustrate than our very own, Continuous Delivery Storyline.

Andrey Devyatkin on a familiar back drop
The best to tell the story of “Getting Git Right”.

The focus of the conference track is more about what to do when you are in Git, than technical deep-dives.

We are learning about the difficulty in showing useful information to the users, especially in an efficient matter. It is not just about lines of code, how can we track information across refactorings?

Grant Matthews of Atlassian, tells us about his endeavors in annotating diffs. Pablo Santos Luaces follows up with the concept of semantic merges.

What happens when we want to resolve more merges automatically, than is possibly with Git out-of-the-box. They’ve run a ton of test against public GitHub repositories and shown than a significant portion of merges could be automatically resolved by their tool. You can try it out on your own public repositories here: mergedroid.

Getting more automatic merges looks good
Automatic merges with the mergedroid.

The final talk of the day is “Making Git for Windows” with Derrick Stolee and Johannes Schindeling both from Microsoft. Johannes is the primary maintainer of Git for Windows. They face many challenges, including most of the developers of Git being on Linux. Even through those hurdles they manage to build Git for the platform where it has most users. One of the things that truly has helped them move faster, is automation (no surprise there!).

The cycle time from a new release of Git core to a new Git for windows release candidate is getting shorter and shorter. I wish for Johannes that the error reports that he receives will be well described.

Automation in Git for Windows
Git for windows - secret sauce

Derrick Stolee takes over from Johannes, and talks about performance in Git for Windows, as well as the challenges of having the entire Windows source code in a repository.

Derrick runs through some impressive performance gains that the Microsoft have contributed to the Git core. While I’ve always felt that performance improvements in Git, and even making a virtual filesystem just to be able to contain all their code in one repository is wrong, I’m getting to a new understand.

For huge codebases moving to Git, and making the monolith workable in Git, might be a necessary prerequisite to be able to even consider splitting up the architecture. I for one know that refactoring in ClearCase seems almost impossible.

Andrey and I go to grab a bite before the afterparty, and we meet Timea, another missed colleague of mine.

After getting some food we go to a craft brewery where GitLab is hosting a party. We get excellent beer, and end up having a very fruitful discussion with participants from both GitHub and GitLab. While Timea primarily envisioned the participants as their Mascots fighting I think this was yet another case of the Git community being fantastic! It does not matter if you are from GitLab, Microsoft, Atlassian, GitHub or Praqma, we are passionated about Git and that is all that matters. The Git community always surprises me by its genuine interest in how Git is used in different contexts and the challenges that follows it.

This year we did not get any large announcements at Git Merge. It felt a bit boring, but in retrospect it is a good thing. Git is a mature tool, and we are getting better and better at using it.

If you are not already on Git, and would like to get some assistance, reach out to us, we love helping people move to a modern version control system!

Published: Mar 8, 2018

Updated: Mar 26, 2024

DevOpsCI/CD