-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Joystream Javascript SDK vision #4596
Comments
What do you think? |
I actually still have permissions to create a repo, so I can take care of that. I think for now only I will hold write access, but I would say that GitHub access is not that important, it's mostly the NPM access. Even if somebody would push malicious code, it only gets to consumer apps if:
Obviously we need to be careful here. Will it be possible to grant me write access to specific NPM packages in our org? I wouldn't want to rely on JSG for every release.
I'm not sure what you mean exactly by "including" it. We already have the
Some parts of the SDK will probably need data from QN. I'm not yet sure what the approach should be, but my initial thinking was to make relevant parts work in one of 2 modes:
I think both approaches should be available to make sure you can get started easily, but remain flexible enough so you can tailor it to your needs.
I think the general goal should be to support any product, but we should start with needs of consumer apps and expand later.
Yep, separate packages would have different focus, but we will see how exactly that shapes up.
Will be definitely doing that.
I will try to document anything that SDK does in-code, including the API, but I think some examples of putting it all together will come once we have at least some part of the SDK actually done |
Will check.
I guess putting all of these together in a way that makes it easy to do what people actually want. Example, in stead of having to compose 2 or 3 such messages together in the right way, perhaps do signing on some part with an app-backend, you can just do one call which does all of it end to end, including publish appropriaet extrinsic on chain. Just a thought, and obviously low level control is something that also should be possible. |
Intro
I think it's quite clear some sort of Joystream SDK is badly needed. As it is today, to write even simple application on top of Joystream, you need to have solid understanding of a lot of the system characteristic, ways to interact with it, etc. Even integrating with our storage system is troublesome and would be a challenge for a newcomer. If we want people to experiment with Joystream and build new applications, some sort of SDK is a must. Having a set of solid, tested and reusable libraries should make not only development of new applications much easier and welcoming, it can also help by improving our current applications. For example, the storage integration layer in Atlas could be improved in a lot of ways and storage SDK could be a way to do that.
Proposal
I propose we develop a set of libraries to interact with different pieces of the system. Ones that immediately come to mind, in order of execution, as I imagine:
I propose we use the Polkadot.js naming scheme and use npm package names like
@joystream/utils
,@joystream/storage
etc. I think all of those should also be kept in a single repository (ideally underJoystream
GitHub org) as a monorepo, with each package having its own proper versioning. @bedeho will it be possible to give AWG access to Github repo and npm organization? If that's an issue, as an alternative, those could be published under@joystreamjs
org.For storage and extrinsics libraries, proper RFC with proposed API will be created in advance so the community can discuss how the libraries should shape up.
I think our ultimate goal should be to integrate those libraries into Pioneer and Atlas, once mature enough. When discussing the libraries, we should keep all the possible Pioneer/Atlas usecases in mind, to make sure our SDKs are robust enough to support our apps.
The text was updated successfully, but these errors were encountered: