Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.
A long overdue first release for Cyclone, on request from the (small) community.
Cyclone DDS supports Linux, macOS and Windows as first-tier platforms. The code builds cleanly on all of them and all tests consistently pass. The occasional build failures in the continuous integration builds are related to infrastructure issues where downloading prequisites (such as maven) sometimes fails. Use of static analysis tools is so far limited to Clang's static analyzer (clean there, too), and we're working on getting it checked by Coverity Scan for a more thorough analysis.
The initial contribution was a combination of sources of various ages and with various different naming philosophies and programming styles. This needs addressing for two reasons in particular: firstly, it is well known that such discrepancies can easily hide bugs, and secondly, this is a barrier to new contributors. Eliminating these discrepancies is an ongoing process.
Fortunately, there is evidence that the negative impact is minor: the number of known issues in the code is very small, it generally exhibits excellent performance and no nasty misbehaviours (based on our own observations and issues raised by the community). Secondly, although there are very few direct contributions from people in the community, they have suggested a number of improvements and some have also indicated that they have put in additional features they required. (We've invited them to contribute their fixes or enhancements, but so far no pull requests have come.)
Another area of ongoing improvement is that of modularisation of various internal components and making them pluggable. The aim here is to make it easier to alter the behaviour or provide optimised implementations for specific uses. These components cover such things as message representations, implementation of data storage on behalf of the application and networking interfaces. These changes will turn Cyclone DDS from a dedicated DDS implementation into a more general platform that can then be optimised for specific applications. Needless to say, anyone who simply wishes to use DDS will always be able to do so without being required to do such specialisation.
Cyclone has does not rely on any of the projects listed in the Bug List. There are no known vulnerabilities in Cyclone itself at this time, but the overwhelming likelihood is that there are plenty but that no serious effort has yet been spent on finding them.
Documentation is included in the sources and currently primarily aimed at generating a manual in PDF format. The generated PDF is hosted on GitHub and referenced from the project's top-level README. While this document is limited, it does include an API reference section, a "getting started" chapter and a guide to configuring Cyclone. Furthermore, a tool for editing the XML configuration file is included as well, which is relevant especially because it provides reference documentation for each of the settings.
The documentation and examples appear to be adequate for new users to get started, as the questions asked on GitHub were all concerning rather more advanced problems. That said, as is often the case, the documentation and examples are in need of improvement. One area in particular has our current attention, and that is converting from a PDF format to a more convenient, web-hosted format. This will make it much more accessible in practice.
There is no end-user tooling.
OMG DDS 1.4 (Minimum Profile with some of the Content Filtered Profile), but with an alternative API.
OMG DDSI-RTPS 2.2
Presentation at Eclipse IoT Asia; and otherwise a number of questions, comments and bugs on GitHub. The number of individuals is small, but the quality of the questions and comments has increased tremendously, showing that these people have really invested time in studying the code. Some small contributions have been made, but unfortunately as suggestions rather than as pull requests, despite inviting them to do a pull request.