Skip to content
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

Support cross language plugins #1225

Closed
devhawk opened this issue Nov 12, 2019 · 1 comment
Closed

Support cross language plugins #1225

devhawk opened this issue Nov 12, 2019 · 1 comment
Labels
discussion Initial issue state - proposed but not yet accepted

Comments

@devhawk
Copy link
Contributor

devhawk commented Nov 12, 2019

Summary
Today, you can only build plugins for the mainnet version of neo in C#. As part of Neo's general multi language strategy, it would be nice for developers to be able to build plugins in whatever language they choose.

Do you have any solution you want to propose?
VSCode has the exact same issue with their language servers and debuggers. VSCode is implemented in typescript, but it needs to support language servers and debuggers written in any language. Microsoft has defined a JSON-RPC style protocol debug adapters and language servers that communicates processes built in different languages over network sockets or standard IO.

I propose we do something similar for at least some of the Neo plugin types

Where in the software does this update applies to?

  • Core
@devhawk devhawk added the discussion Initial issue state - proposed but not yet accepted label Nov 12, 2019
@roman-khimov
Copy link
Contributor

This kind of technology would actually be nice for neo-go development too. Go's support for plugins is very limited, so at the moment we're bringing equivalents to many C# plugins right into our core codebase. For some plugins that's fine, because we may think that they should be core functionality anyway (because of the value they provide), but at the same time there are a lot of plugins that we wouldn't like to reimplement or bring into the main repository.

Having plugins interacting with the node via some kind of streaming interface would allow us to reuse C# plugins directly, if and when there is a need to. So it's not just about C# node using X-language plugins, it's also about X-language nodes (hey, there should be more node implementations in different languages!) reusing C# plugins.

And it shouldn't be that hard to do, we already have this APIs defined in the C# code, so it's just a question of specifying them in JSON-RPC (or gRPC, or...) and changing the node a little bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Initial issue state - proposed but not yet accepted
Projects
None yet
Development

No branches or pull requests

3 participants