Hi All, This is a review of the Boost.Multi library. I am not very familiar with the problem domain. My experience with multi-dimensional arrays is limited to writing `board[i * Width + j]`, which worked for my purposes. I spent maybe a week playing with the library, studying the documentation, conversing with Alfredo, and presenting the library in my workplace. I used the version available in Compiler Explorer, with no problems. Potential usefulness While I myself never needed this, I find the motivation presented in the docs convincing. Also, the existence of Boost.MultiArray is a proof of demand. It makes complex operations on sub-arrays really easy! Design The design is sound, clear, and adequate. I could very quickly grasp what components there are and what I can expect of them. From the first passages in the docs I could easily predict what components I will find in the library. The design seems natural to me. The design trade-offs are sound, well explained and convincing. I like the approach that this library offers blows and whistles from other comparable tools (NumPy), which users will use any way, but serves them in a manner that is compatible with C++'s strive for safety and clarity. I mean bitwise operations and broadcasting. I question some of the choices, like too many overloaded operators used for too many purposes. Implementation I didn't look deep into the documentation. I tested the library correctness via black box testing. My findings were reported via issues in GH. Documentation The tutorial part is very elaborate and gives a clear picture both as to the scope and to the look and feel of the library. Well done! Regarding the "Reference" part, it is in my opinion inadequate. I really expect and need a more detailed description of the details of the API. I describe this in detail in https://github.com/correaa/boost-multi/issues/130. Alfredo already addressed some of the items, but some still require addressing. Support Review managers never ask for this part, but I think it is equally important. How likely is it that the library will be well maintained after the adoption? After announcing this candidate library to the Boost Community Alfredo worked for a couple of years on improving and "socializing" it. Tickets are processed fast. Alfredo has been very responsive and entusiastic. We have the Compiler Explorer setup that enables online testing. I really appreciate this. This shows caring even for the reviewers. I recommend that the library be CONDITIONALLY ACCEPTED into Boost. The condition being improving the reference section of the documentation. I would like to thank Alfredo for writing, sharing and proposing the library for addition to Boost, and for all the work to make it easily accessible! Also, thanks to Matt for managing the review. Regards, &rzej;
Review managers never ask for this part, but I think it is equally important. How likely is it that the library will be well maintained after the adoption?
That is a good question, but I'm not sure where in the process that should go. Perhaps this is something potential review managers should consider before agreeing to manage the review of the library?
I recommend that the library be CONDITIONALLY ACCEPTED into Boost. The condition being improving the reference section of the documentation.
Thank you for your review; your acceptance condition is noted. I am not going to open a separate issue on the repo for this since it looks like it is already being handled in #130. Matt
participants (2)
-
Andrzej Krzemienski -
Matt Borland