The reviews have begun

published at 10.08.2017 15:40 by Jens Weller

A few weeks ago I announced a C++ review community, which since then has grown to 250+ members on reddit. There has been great feedback and discussions since then, so that the idea is now ready to be tested. With August, the first review period has started, but first have a look at the idea of a review community again:

What is r/cpp_review?

reddit already hosts a large and active C++ community, so instead of setting up some page it self, I chose to use the reddit interface. Its nearly perfect for this, as its mainly evolved to discuss a single topic per thread. To make things easier, there is one thread for people to post reviews in a short and informative format, and all other threads are open for discussion the various technical details of the library.

My motivation to start this is that with these reviews a community focused on quality in modern C++ could grow, where people are able to learn by example on various libraries. So while more experienced C++ users might be able to give better feedback on the overall design of a library, less expierenced folks are still able particitpate to every review. Feedback on the documentation, measuring code quality with tools like CppCheck, there is so much of things that are easy to do and are a great contribution to a review.

Also I see a great value in the aim of having a list of reviewed libraries available to the general C++ community, which currently is a long time goal. With 2 libraries reviewed every month, it will take some time to compile an interesting list of libraries.

The reviews

Every review runs for about a month, so that thre is enough time for you to participate. The first two libraries which are in review are Bulk and DynaMix. Each review thread is open for discussion, and any questions occuring to you when you start with your review, should be posted there. Maybe some are already answered. When you have made your decision if you tend towards either accept or not accept, post a short comment into the Review Thread, with your decision and an optional list of things you liked/disliked. If you choose to conditionally accept, then also what changes you'd like to see (e.g. your condition/s).

... aims at providing better APIs for MPI or users of the BSPlib. It offers easy access to world and processor objects, improves over BSPlib by using RAII, where previously calls to begin/end, reg/unreg was necessary. Currently bulk offers two back ends: MPI and Thread, which is based on std::thread. Bulk aims at C++17 as the required standard, which makes it not that easy in adoption for possible users. But those from the MPI/scientific community which also can use cutting edge compilers, Bulk is worth a look. Its a promising library for users of MPI or BSPlib.

While Bulk is realtively new, and aiming at the newest standard, DynaMix actually has gathered some industry experience, its used in a few games. DynaMix is providing an API for mixing objects at runtime. You can add or remove various functionality/behavior from your objects. This is a popular concept in Game Dev, DynaMix provides a C++11 implementation of such a Entity Composition System. As an example, a game character could use this to level up or gain totally new traits. The Trait it self would only be a single implementation, while different game entities could make use of it.

Future reviews

Currently, there are already 3 other libraries waiting for a review. I also know about a few others which aim at later review dates, as documentation and such might not be optimal currently. It makes sense to review popular libraries over unpopular ones, so up voting your favorites in the submission thread has some effect.

Also, every review adds to the whole sum, so that even small contributions can have a meaning full effect. Its also often a good idea to think if there is any low hanging fruit you could go for like using static analysers or fuzzers, like I was learning how to use libFuzzer and fuzzing beast. For the current reviews, you'd have to some digging, to find fuzzable interfaces, but maybe there is some serialization in the library?

So join the C++ review community on reddit!

Join the Meeting C++ patreon community!

This and other posts on Meeting C++ are enabled by my supporters on patreon!