Hi Cody,
SAv6 addresses all of my most important architectural concerns. Any remaining complaints
aren't things that really detract from the security by adding too much complexity.
That said, we won't be implementing this in opendnp3. This is the first time I've mentioned this on
the list, but we're developing our next gen protocol drivers in Rust with generated bindings
for C, C++, .NET, Java etc.
Opendnp3 3.0 will be the final release series for this project. Existing users here shouldn't panic tho. Here's
what we plan:
- The project will transition to "maintenance mode". We will continue fixing bugs or interop issues that may crop up over time
- We won't be adding any more features unless asked to do so by an existing commercial client
I know it's probably not what users want to hear, but it's necessary for us to take our work to the next level.
Our experience writing protocol implementations in Rust has been amazing. We have a DNP3 master working with more
feature support than opendnp3 already, and it's literally 1/4 of the lines of code and much simpler.
Writing asynchronous code in C++ that scales is *really* hard to get right. Rust makes it trivial with async/await.
We'll be a making these libraries publicly available under a non-commercial license, with traditional commercial
licenses available for purchase. So they'll be "open" and freely available for evaluation, but not technically "open source"
since OSS specifically has no commercial/non-commercial distinction.
So, we do plan to implement SAv6, but only in our commercial Rust implementation of DNP3. We hope to participate in
some interop events the UG has planned in Q3/Q4 this year wrt to SAv6.
-Adam