decentralized-identity / didcomm.org

https://didcomm.org/
Apache License 2.0
36 stars 25 forks source link

Need of a test suite to achieve interoperability #77

Open FabioPinheiro opened 1 year ago

FabioPinheiro commented 1 year ago

Interoperability refers to the ability of different systems or software to work together seamlessly. In order to achieve interoperability, it is necessary to ensure that each system or software component is capable of communicating with the others in a standardized way. One of the most effective ways to achieve this standardization is through the use of a test suite.

A test suite is a collection of tests designed to ensure that a system or software component meets a set of requirements or specifications. These tests can be used to verify that the system or software component is capable of communicating with other systems or components in the expected way.

I want to create my own implementation of DIDComm v2. To be type-safe and idiomatic for functional programming in Scala.

I'm assuming that they are not following the specification. But the point is I shouldn't have to look at and understand the code of other implementations. I should be able to test against a test suite.

How can we be talking about having interoperability between agents if we don't even test (or have a good way to test) interoperability at the DID Comm library level. Seems even a bit ironic.

Considering DID Comm specs a meta protocol this is even before starting to talk about the protocols. I don't know which libraries implement which version of DID Comm, what extensions they support, etc.

Don't take me wrong. I pretty much still believe in DID Comm. Otherwise, I wouldn't have spent most of my free time from the last 12 months. Doing an implementation of DID Comm for Scala/ScalaJS. If I didn't believe how well ScalaJs fits the development of Dapp for web3 and how communication is a crucial part of it.

They are also other problems that need to be addressed:

In summary, the need for a test suite is crucial to ensure interoperability between different systems or components by verifying their compliance with the same set of standards, protocols, and specifications.

rodolfomiranda commented 1 year ago

That's a great topic to also be discussed at the UG calls.

FabioPinheiro commented 1 year ago

Related with https://github.com/decentralized-identity/didcomm-messaging/issues/435