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

Go implementation of the protocol #65

Open
neuroscr opened this issue Nov 20, 2018 · 10 comments
Open

Go implementation of the protocol #65

neuroscr opened this issue Nov 20, 2018 · 10 comments
Labels
enhancement New feature or request help wanted Extra attention is needed low priority

Comments

@neuroscr
Copy link
Contributor

a clean room implementation of the protocol in golang to correct for correctness

@neuroscr neuroscr added enhancement New feature or request help wanted Extra attention is needed labels Dec 4, 2018
@liilac
Copy link
Contributor

liilac commented Dec 8, 2018

I'd be keen to do this. I have significant experience in Go and use it as a primary language.

@liilac
Copy link
Contributor

liilac commented Dec 9, 2018

Would appreciate feedback on how much interest this is of.

Has been mentioned to @Haafingar as a potential sponsored project, along with #62.

@neuroscr

@KeeJef
Copy link
Collaborator

KeeJef commented Dec 9, 2018

I am interested in this, but my view that we should aim to allocated the most resources initially to getting the protocol and network stable in the C++ implementation before moving to another language for which we are less tooled for.

@liilac
Copy link
Contributor

liilac commented Dec 9, 2018

This is a fair comment, though I feel it's worth adding that Go is very easy to pick up for developers experienced in other comparable languages such as C++.

As far as actual toolchains, Go is a lot simpler than C++ in that respect. go build handles the entirety of building, style auditing and such is handled by gofmt and such, etc.

I think it's also worth considering the potential for it to encourage contributions from a possibly broader audience than at present, Go being a lot more "interesting" language than C++ for many. While I question the methodology, see a relevant section of the Stack Overflow 2018 Developer Survey:

Go as one of the most loved langages
Go as one of the most loved languages

C++ as one of the most dreaded, similar to PHP
C++ as one of the most dreaded, similar to PHP

Thoughts @KeeJef ?

@liilac
Copy link
Contributor

liilac commented Dec 9, 2018

Note as well, my comments apply equally to a Rust implementation.

@KeeJef
Copy link
Collaborator

KeeJef commented Dec 9, 2018

Again i would be concerned about allocation of our time, right now i think the most important thing is to build a usable product for the general public. Once the protocol and first implementation is more stable i think an alternate implementation would be desirable, however right now the project is undergoing large changes on a week by week basis and reproducing these changes in an alternate implementation would probably not be super useful.

My view is that we should tackle this when version 1.0.0 of Lokinet comes out, that would be when Service Nodes and Lokinet are fully integrated. Past that point we will still be making changes but the we should start to see much more stability both in the network and implementations.

@majestrate
Copy link
Contributor

majestrate commented Dec 9, 2018 via email

@liilac
Copy link
Contributor

liilac commented Dec 9, 2018

for the record i don't think it's unreasonable to have a parallel implementation written by a neutral thrid party to test the correctnes of the reference implementation. i think the real question is if it should be funded or not.

The present implementation seems like a bit of a mess at present. As a contributor, it's difficult to reason about it, and the barrier to contribution is high. I think there's underestimated value in a parallel implementation even just for cleaner and more correct code, as @majestrate pointed out.

@majestrate
Copy link
Contributor

majestrate commented Dec 9, 2018 via email

@viencokhi
Copy link

It would be great to see Go implementation, at least for client.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed low priority
Projects
None yet
Development

No branches or pull requests

5 participants