Obstacles I hit when trying to send a patch to a C++ project, as an experienced C++ dev who's been doing mostly Rust for a few years:
- Figuring out their custom build system (because Make, CMake, Ninja, et al are build system _kits,_ not build systems, and different in each project)
- Figuring out their implicit style rules (most don't use clang-format or equivalent and want you to do it by hand)
- Working out which C++ standard is being targeted (it's often not stated explicitly and sometimes varies across platforms)
- Discovering which subset of APIs available in that C++ standard are fine to use, and which will cause a violent immune reaction (this is rarely stated anywhere, but the "UNDER THIS ROOF WE DON'T USE {x}" reaction, where x is usually exceptions or errno or iostream or printf or initializer lists or templates or multiple inheritance or ... is strong)
This is before we even get to "working out the lifetimes of pointers." And let's not talk about adding a library dependency.
(Before anyone gets smug about C, don't make me write the C equivalent, it's just as bad.)