This repository has been archived by the owner on Nov 18, 2024. It is now read-only.
Language & Architectural Choices #23
decentralgabe
started this conversation in
General
Replies: 1 comment 1 reply
-
@decentralgabe I don't want to pause Hub work, as that doesn't have any existing implementations, and given we know we want it in Web and server, it is logical to leverage JS/TS for the wealth of cross-plat packages that enable it to seamlessly run in either env. As for the other aspects of the system:
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Part of our ambition is to support, contribute to, and build upon standards-based work in an open manner. The standards field has a number of existing implementations of different libraries and components with varying degrees of openness. By openness, I mean whether the solution is tightly-coupled to a specific technology, company, or ecosystem, or more agnostic -- barebones implementations of standards that can be applied to a variety of use cases.
For example, let's consider a library for SSI primitives.
There a few public and open implementations across languages:
Because the standards in the space are often moving targets, with much room for interpretation, It's hard to tell which implementations are compliant. It's even harder to determine the support these libraries have within and outside of their respective ecosystems, which makes it tough to estimate the longevity and robustness we can anticipate for each library. Some have pretty good external contribution, others none. If we wanted to, how could we contribute back? Do we have to form company-to-company partnerships? Individually sign CLAs? What if our changes aren't accepted, or our missions in development aren't aligned? Do we fork an implementation? Will their license allow that? What will our lawyers advise? What makes the most technical sense?
For our code we've gone down the path of not taking a stance, or coupling ourselves to specific use cases as much as possible. The DID SDK is a strong example of this: neutral implementations of standards. It has similar ambitions to the Transmute, Hyperledger, and Spruce libraries, with perhaps a wider focus on remaining neutral and fostering community-driven development and support. Most importantly, we are interested in building a foundation from which we can stand tall -- prove conformance and compliance with standards at different points in time -- and roll out software that is able to serve a variety of use cases.
Already, we've adopted a few different languages and toolkits. Go for the DID SDK and VC Service. Java for the tbDEX Protocol. Javascript and Typescript for the Hub SDK.
On one hand, a diverse set of implementations across languages and toolkits is important. It bolsters our offering, and demonstrates interoperability, and affirms a commitment to a wide range of support. This lowers the barrier to entry for anyone in our prospective ecosystem and should absolutely be a goal we strive towards! On the other hand, if we have a library, a sensitive library filled with cryptographic primitives and tricky signature suites with wide variation, and little demonstrated interoperability (if any), why would we focus first on re-implementing that across our young ecosystem? Why make our jobs more difficult and time consuming from the get-go?
Why not instead build up trust in our own ecosystem using our own tooling? The simplest, safest, and most straightforward option is for us to use shared tooling until we reach a certain proven point of stability and interoperability -- we're not there yet, and I'd estimate we're 3+ months away from that point. After that, we can consider using our own ecosystem (did-sdk, and other sdks we build) in other languages and ecosystems. Whether this is through compiling our library in other languages, or through compatible re-writes of our core tooling that we ourselves maintain. I recommend we pause, evaluate, and come to some form of consensus before we continue further on our path.
What do you think?
Beta Was this translation helpful? Give feedback.
All reactions