Dear All,
First off I’d like to thank all of you for the feedback and the contributions provided thus far. We have made treasure of the comments received and these are the next steps we are considering:
zenoh protocol review/update. There are a few things in the protocol that needs some normalisation and some other features to introduce to further the reduction in resource utilisation.
- Normalise the way in which queries are issued and responses are propagated back. - Generalise the Resource Key in order to allow for mixed numerical ID and postfix strings - Unify the data messages
Rust based zenoh infrastructure. The first generation zenoh infrastructure was written in OCaml. We had selected OCaml as we wanted to have the benefits of a high-level, secure and performant programming language. Whilst we are very happy in general with OCaml, a few points have lead us to consider a Rust rewrite:
- In spite of OCaml beauty and effectiveness, there are few programmers that are proficient. This limits somehow the contribution.
- Some of our end-users have raised concerns with respect to their ability to maintain an OCaml based code base.
When considering to re-write zenoh in a different programming language, one of the things that we wanted to ensure was the ability to use high-level abstractions and as much as possible a languages that helps in writing secure and safe software. Additionally, if we really had to move away from our beloved OCaml, we wanted to get as many advantages as possible from a system programming language with respect to raw performance, foot-print and ability to run on embedded targets.
The zenoh core team has had extensive discussions on the matter and the programming languages considered were (in alphabetical order):
- C/C++ - Go - Rust
Whilst Go is very popular, in the eyes of an OCamler it looks as a very verbose language with very little abstractions capabilities. Additionally Go has a garbage collector and when considering a rewrite one of the objective was minimising the runtime.
C/C++ are the mainstream system programming languages, yet they provide limited support for safe programming. As zenoh is a network service, security is extremely important and we did not feel that C/C++ were the right languages for this task.
Rust, was introduced as a system programming language that promised zero-cost abstractions. It runs with a C-equivalent runtime but provides some very nice abstractions. Additionally Rust integrates quite nicely with the C/C++ ecosystem. Thus for us Rust is the right language for the next generation of zenoh.
The zenoh core team is all for it. Anybody has any additional suggestion/recommendations?
Take Care, Angelo
“Simplicity is the ultimate sophistication." ~ Leonardo da Vinci
|