Investigating .NET bindings and bindings generator for C#
Motivation/Context:
- As mentioned in #192 (closed), the technical steps for integrating the Matrix Rust SDK with the web client, iOS app and FIT-Connect SDKs needs to be clarified.
- To this end, this spike aims to investigate whether the fact that the .NET bindings don't support external types is a blocker (see comment here).
- Therefore, we need to investigate whether the unify bindings generator for C# can be used to create bindings usable by the FIT-Connect .NET SDK.
- Moreover, Rust SDK in theory uses external types by definition of UniFFI, but it's unclear if that's true. We need to test it.
Scope:
- This ticket will provide evidence for confirming the logical approach in #33
Time box:
Result/ACs:
-
Provide documentation explaining whether the lack of support for external types in .NET bindings is a blocker. -
Provide documentation explaining whether the C# bindings generator works. -
Document the results in this ticket. -
Document decision-making process in this ticket. -
Provide documentation what the next steps are and how to overcome the blocker, in case there is a blocker.
Notes/Hints/Ideas:
- In order to improve the generation of the bindings, we need someone with C# knowledge (Milton is happy to try it, bur probably we'll need support here).
- Swift / Kotlin bindings are generated from a single
matrix-sdk-fficrate which seems to define and export its own types, some based in existing Ruma and Rust SDK types. - UniFFI bindings: https://github.com/NordSecurity/uniffi-bindgen-cs/issues/40
- Requirements uIDs: OZG_14; Zapuk_28
Who needs to be involved / informed:
- reviewer:
- involved: Milton, Marcel, Josephine, Marco
- informed: Milton
Edited by Robert Gerbauld