Homepage GitHub

UAVCAN survey 2019

If you are using UAVCAN or anything similar, this survey here is for you:


This post is a brief summary of the findings from the survey. Despite the survey still being in progress, certain major trends are already identifiable. At the time of this writing, we have collected 60 responses. UPDATE: the post has been updated with the final results from the survey (84 responses).

Almost one-third of the adopters is involved with long-life systems whose lifespan approaches or exceeds 10 years. This value sets the lower boundary for the design lifespan of UAVCAN v1.0. Consequently, our goal is to ensure that the standard goes on far beyond 2035 without any breaking or non-incremental changes to the ecosystem. This new information underlines the importance of our commitment to make UAVCAN v1.0 a long-term stable solution that the industry needs.

The next question is "What is important to you in adopting a high-level protocol like UAVCAN?" The answers indicate how our core values align with the expectations and demands of the adopters. The top voted-for items, ordered from most popular to least popular, are the following:

Item Votes How addressed in UAVCAN
Open-source, open standard 68% This is a core value of the UAVCAN project.
High-quality embedded software libraries 67% Provision of high-quality implementations is one of the core objectives of the project.
Long-term stability and compatibility guarantees 65% Addressed in UAVCAN v1.0 – the first stable release.
Application notes, examples, best practices 49% We could really benefit from a better user/integrator documentation. At this point, the core team is still mostly involved with the specification and implementer’s documentation.
Low entry barriers 47% Simplicity is a core design principle. It is expressed in the name, too: the first letter U stands for “uncomplicated”.
User GUI software (represented in the survey by two separate categories) 44% avg Development of the high-quality GUI suite is on the 2019-2020 roadmap; contributions needed.

A tightly related question is "Adoption growth obstacles as perceived by your company." The leading responses are as follows:

  1. Low awareness in the industry (47%). We rely on our adopters here heavily. Please help us spread the word about UAVCAN.
  2. Lack of maturity (43%). This is still a very new technology.
  3. Learning curve (34%). Perhaps this should be attributed either to the lack of sufficient documentation or to the malfunctioning public relations. UAVCAN is designed to be simple.
  4. Low documentation coverage (29%). See above.
  5. Lack of stability guarantees (22%). This is addressed in UAVCAN v1.0.

Overall I perceive a very good alignment between our current vector and the expectations of the industry. We should put more work into the user/integrator documentation, perhaps, but the current lack of coverage in this area is not out of our ignorance of its importance but rather out of the lack of resources. We need help, please contribute.

Speaking of contributions, the next question is "Would you consider contributing to the project?" The three answers were chosen as follows:

  1. Direct contribution (34 responses)
  2. Marketing and awareness (25 responses)
  3. Money (8 responses)

There seems to be a little mismatch between the respondents who are ready to contribute directly and the actual contributors. This could be explained by the lack of a clear contribution guide, so let me provide one right here.

First, identify the area you can help with. If it’s software, find the appropriate software repository on GitHub; if it’s the architecture of the protocol, join the discussion forum; if it’s the specification, its source (in LaTeX) is also hosted on GitHub. If you are helping with software, just open the GitHub issues and see what you can help with. The issues that are easy to start with for a new contributor are usually labeled as help-wanted; for example https://github.com/UAVCAN/pyuavcan/labels/help%20wanted. If you are not sure about something, ask us! Virtually all of our communications are public, so getting involved is easy.

On the side of marketing and awareness, there is a lot to be done. Due to the extremely open and free nature of the project, applications and deployments of UAVCAN are hard to keep track of even for us, maintainers. Nowadays, UAVCAN is being used in very different advanced vehicular applications, involving manned VTOLs, low Earth orbit satellites, and race cars. You can’t tell that by looking at the UAVCAN website or by Googling it around because our adopters are reluctant to disclose the fact that they leverage this technology, thus making the magnitude of the project harder to assess for an outsider. I urge our adopters to help us here by making the world know that you are using UAVCAN:

  • State it in your materials, white papers, websites, press releases, etc. Feel free to use the UAVCAN logo there. Consider this to be written permission to do so; if you want it official, please send me a PM on this forum.
  • Give us permission to put your logo on the UAVCAN front page.

Awareness is super important for us.

The last item is money. Most of the respondents who chose that option did not provide any contact information, so it’s not exactly clear how do we follow up. We are currently preparing a formal sponsorship proposal that is to be circulated among our major corporate users; if you are interested, please PM me. Other ideas are welcome.

The above was mostly concerning the administrative side of the project. Let’s look at the technological side now.

UAVCAN users that are involved with safety-critical and mission-critical systems will certainly benefit from the built-in support for redundant interfaces and other functional safety measures incorporated into the standard:

Several respondents indicated that their systems would benefit from deploying UAVCAN with other transports:

  1. Switched Ethernet (40 responses)
  2. RS-485/422 or other serial protocols (35 responses)
  3. Wireless IEEE 802.15.4 (19 responses)

The topic of alternative transports is explored in detail in Alternative transport protocols.

The following piece of statistics shows that our implementations in C++11, Python, and C address the majority of the demand:

It is very pleasing to see Rust grow like that, and also it’s a little surprising to see Ada being so unpopular. We have an experimental Rust effort that was bootstrapped by an enthusiast contributor in late 2017 (hi Kjetil!), but right now it is looking for a new maintainer. Please help us here.

Overall, the survey seems to have validated the correctness of our assumptions about the state of the industry and the soundness of our long-term plans.