Lessons Learned from Packaging 10,000+ C++ Projects - Bret Brown & Daniel Ruoso - CppCon 2021

preview_player
Показать описание
---
At Bloomberg, we maintain a system that coherently builds and integrates more than 10,000 C++ packages that are maintained independently by thousands of software engineers on hundreds of teams across our Engineering department. In this talk, we will go over the lessons we have learned about maintaining these packages, as well as how package management should interact with third-party libraries, third-party tools, build systems, IDEs, static analysis tools, and refactoring automation. We hope this will start a conversation around the potential requirements for a more complete package management solution in the C++ ecosystem.

---
Bret Brown
Software engineer currently focusing on improving C and C++ ergonomics, correctness, and productivity for Bloomberg's Developer Experience department.

Bret likes making authoring and maintaining C++ codebases simpler and more intuitive by treating projects more like cattle and less like pets. He is especially interested in the software development lifecycle, development automation, modern build systems, packaging, code transformation, software governance, and code analysis.
Bret worked in embedded C++ and safety critical C++ for previous employers.

Currently lead of Bloomberg's Build Tools team, responsible for tools such as CMake, pkg-config, and compilation toolchains.

Daniel Ruoso
Currently working as the lead for Code Governance at Bloomberg, where we focus on driving large scale Static Analysis and Automated Refactoring. Daniel has been working over the past 20+ years with a persistent lens on how to help engineers be more effective with build, deployment and analysis tooling on various different environments and languages.

---

Рекомендации по теме
Комментарии
Автор

One of the best talks I've watched so far! "It is impractical to try to do semantic versioning in C++ at scale", truer words have never been said.

simfoo
Автор

Finally!! I think the build approach used inside Bloomberg is a very good middle balance between the advantages and disadvantages of a mono repo vs multi repos, and I never found a reference to point people to that explained how it worked.
It's a great model that should be advertised more, because I think companies are not using this because they haven't heard about it!

MakersF
Автор

Great talk and really important topic for our C++ community! Huge thanks to both Bret and Daniel for bringing it up.

mtz
Автор

Undoubtedly, one of the best talks I've watched so far in Cppcon, 21.Compiling at a scale for any programming language is a challenge.C++ is more so.

saipan
Автор

Excellent talk! It's ironic I was listening to you guys on cppcast earlier, and then I saw this talk. I have a feeling that this presentation will be referred to for years to come.

TheChemicalBassist
Автор

I don't say this often about a major participant in the financial industry, but my perception of Bloomberg as a company improved today.

justusranvier
Автор

They literally described all of the behaviors of the nix package manager.

jonringer
Автор

feels like Gentoo portage has solved all of the issues listed in this talk, and some of the otgers that were not (like slots system for multiple versions of same package)

alexpyattaev
Автор

It seems like they don't allow having 2 copies of the same package (under different versions), judging by the "one include path" rule, and concerns around name conflicts. I'm wondering how that works if e.g. one package 'foo' upgrades from 1.0 to 2.0, and 99 packages that depend on 'foo' just work on 2.0, but there's 1 package 'bar' that breaks (and it turns out 'bar' is third party and no longer maintained). Is the whole world just stuck using 'foo' 1.0?

TheMohawk
Автор

Now I want a video that compares their package system vs Conan. Because the second one has lots of the same benefits.

vldbch
Автор

Right at the start of the talk.. Is this the sort of package management people want? Something similar to linux? I thought something like what vcpkg does is pretty good (and similar to what other programming languages have as well). Using their manifesto file you can specify what packages your project uses and their versions, sure you then still have to deal with cmake but there are limits to what can be done I guess.
If this is something that install a package globally that is not really something I want, I really enjoy the ability to install things per project (something that vcpkg now does if I understand it correctly)

antoniocs
Автор

I’m contributing to conan and faced to same issues / ideas. Is it tools from the video available public?

nbes
Автор

Hmmm, i couldn't get anything out of this. It just seems to be an appeal to downstream library writers to please write more simple and reasonable build systems. So it was the same as the vcpkg talks the last 4 years.

llothar
Автор

After +30 years, c++ doesn't have a proper homogenous solution for package management and build system, maybe we should just admit that it is just impossible :D
The cost for C++ build engineering can be very high for some teams/projects, then an alternative to c++ could be a solution even it affect the execution performances. At least you business can move on.

videojeroki
Автор

Sounds like a really nice system if you live exclusively in Linux-land.
Too bad most of the world also needs to support Windows. ☹

JohnDoe