A C++ review community

published at 13.07.2017 14:47 by Jens Weller

I've been thinking about this for quite a while, and now its time to give it a try. And in its current state, there are still some unsolved questions, so for now consider this a beta version. It will take one or two month to get this fully started, and I do see this as kind of an open end experiment.

Within the last year, there were 2 large motivators that pushed me into pursuing this. First, there was this tweet from Eric Niebler:

Does the C++ community have a crowd-sourced code review resource? Would be pretty cool. #cpp

— Eric Niebler (@ericniebler) October 24, 2016

Well, if even Eric Niebler thinks that this is a great idea, I can't be totally wrong. And then, this spring, on one day I decided to push my luck for C++Now and submit a second talk, on communities. A talk that would lead me to study the boost and Qt communities, and to think what they and the overall C++ community could learn from them. This also got me thinking which are the voids or current needs of the C++ community, not boost or Qt. Of course both could try to serve these needs, but that is a different story.

Long story short, lots of thinking has brought me to give the idea of a C++ review community a try. Hence r/cpp_review and Meeting C++ certified libraries are now a thing to be. The listing will be part of the new website, and as this requires libraries to be reviewed and accepted, this will take a little bit.

Meeting C++ certified library

Somewhere there needs to be an overview on the successful libraries, thats where the idea of certification comes in. If the review is successful, an author might promote his library as "Meeting C++ certified" library. Also all reviews will be promoted through Meeting C++. The overview at Meeting C++ will list a link to the library, documentation and review, plus the external dependencies and license. Over time a list of well reviewed libraries to use will be available to the C++ Community. This is currently missing, a listing of libraries which are of a certain quality and reviewed. boost is a similar idea, but its much more demanding on the libraries with build systems, documentation, ...

Also, each certified library will be able to show its certification with this logo:../../files/mcpp/meetingcppcertifiedlibrarylogo.png

With this, libraries in C++ have the option to become part of an open listing. For the start I'd like to exclude large frameworks and libraries. As boost already has their own high quality reviews, Qt is driven by code reviews too. Some other libraries might be to big to be reviewed at the beginning.

r/cpp_review community

First why reddit, some might ask. Well, r/cpp has a friendly community, and is proof that such a thing can exist on reddit. Plus that with this, this new community already has base of possible members. Its very important to me, that r/cpp_review is a welcoming and positive focused community. I see this also as a place where people can learn by example how to improve code and have a take away for their own code bases.

Also, reddit provides the infrastructure which is needed for this. Threads can be voted on, the main thread is a small forum in it self, with each discussion forming a nice tree. For the start things are tied down very much, once things are running, some might become relaxed.

Getting started

I mentioned that this is currently in beta, because I do want to exchange thoughts on various topics related to this with the community. So feel free to contact me on this issue. The first reviews will start at the beginning of August, I think its a good idea to have each review last a month before it is decided if a library is certified or not. If a library gets submitted is up to the author, as the overall review only makes sense if the author is willing to participate and also makes the needed changes to the library. Thats why also, a reviewer has to point out how to change an implementation. "Raw pointers are bad" is a bad review, unless you add the alternatives that in regards to the library should be used (optional? references? unique/shared_ptr?). In order to separate the discussion threads from the actutal accepted/declined reviews, there is a review thread, where all discussions are banned from.

Also I'd like to have the focus on documentation, C++ and the code itself. A library should have a consistent coding style, this can be explained in the documentation. I don't want reviews to get stuck in bike sheds such as snake_case vs. CamelCase. Thats up to the library author to decide. As LoNg As ItS n0t UnReAdAbLe...

More ideas and filling todays void

While preparing my talk, I studied boost and Qt communities, often focusing on what they are succeeding with, and what ideas would be useful to the other and maybe the general C++ community. On the other hand, I've been also thinking on the over all situation with ISO C++ and Standardization. ISO has its advantages, but also its disadvantages. As a C++ community, we should try to build around ISO C++, but also think on how to integrate ISO C++ into a bigger picture. C++ needs a better core infrastructure, but standardization it self is not always the right answer. Like in a certain field, several solutions (e.g. libraries) exist, which all have their own good reasons to choose their way of implementation. There is lots of fields where standardization is away for years, and existing implementations might need a way to be visible to the community. This is one of the goals behind the idea of providing a way to library certification through Meeting C++ and r/cpp_review.

boost is a similar idea, but much more far reaching into what (and how) a library should provide. r/cpp_review and Meeting C++ certified libraries aims at the vast amount of libraries which for various reasons don't want to join boost. Also, once this is a very active community, boost is welcome to also host part of their reviews on r/cpp_review. In the recent years there has been a lot of thoughts and talk on boost 2.0, replacing boost or similar things, this isn't the aim of this community.