collaborating on golsp
stamblerre opened this issue ยท 18 comments
Hi @saibing! I'm one of the people currently working on golang.org/x/tools/cmd/golsp. We recently noticed and were excited to see your work on bingo. Our plan for golsp is for it to become the official language server supported by the Go team, and the folks at Sourcegraph have agreed that they would eventually like to use our code once it is ready.
We noticed that a lot of the code in this repository is shared with golsp and with go-langserver, so we were wondering if you would be interested in collaborating with us on golsp. More information about golsp can be found through the various channels listed here. If you'd like to continue this conversation, I'm happy to talk on this issue or via email (rstambler@golang.org).
I am very happy to hear this news. I am also interested in collaborating with you on golsp. But I have some questions as follow:
-
How do I work with your team, and what can I do?
-
I am developing bingo in my spare time. usually on the weekend, so I can't invest full time on bingo or golsp, I don't know if it will affect the development progress of golsp.
-
I am a Chinese Gopher, I can't visit golang.org, go-review.googlesource.com at home.
my email is saibing@live.com, you can reply to me by email.
@stamblerre My suggestion is to move golsp to golang/lsp
or golang/golsp
. That repository golang/tools
is really annoying because:
- It's not possible to register new issues directly on tools repo.
- Source code is published to golang.org/x/tools/cmd/golsp. Why not just use github and
github.com/golang/golsp
url? - How do you tag new releases and do versioning? Separate repo for golsp would allow to have github release tags.
I really like how easy it is to test bingo and rise new issues directly on this repo. Feedback loop is super fast.
@saibing: Thanks for the quick response - I just sent you an email!
@anjmao: We will be sticking with the x/tools repo for the time being, as this is being worked on by members of the Go team. Issues can be surfaced on the https://github.com/golang/go repository. We will likely have to deal with versioning, but this is not yet a concern, since golsp is under active development and is not ready for release.
Hi guys,
I am so exciting seeing this conversation. My questions is if it's possible to merge to ONE REAL OFFICIAL LSP project? I was enjoying go-langserver
but it's deprecated, then I found bingo
, now golsp
. Go developers really need a stable and fast langserver, like other languages. Appreciate your contributions, and I'd like contribute if possible.
I will invest in the development of golsp in the near future, but at present I focus on solving some problems with bingo.
Our intention is for golsp to be the official Go language server implementation, supported by the Go tools team. Obviously other language servers may continue to exist, but once we officially release golsp, we will continue to actively maintain it.
Some things that I think different (Go) implementations might be benefit from:
- Shared integration test suite:
go-langserver
,bingo
andgopls
would then, in theory, not have to re-write custom integration tests. - Package for the protocol: Currently there is https://github.com/sourcegraph/go-lsp which
go-langserver
andbingo
both use, and there is https://github.com/golang/tools/tree/master/internal/lsp/protocol whichgopls
uses.
As an aside, and I don't mean this in a bad way, gopls
is hard to get started with. Where are the instructions for installing it?
Do you use golsp
to develop golsp
?
- We are definitely going to work on integration tests for gopls, which other server implementations are welcome to use. However, it's worth noting that gopls will ultimately replace go-langserver (as discussed with the Sourcegraph folks).
- A member of the Go team is actually currently working on automatically generating https://github.com/golang/tools/tree/master/internal/lsp/protocol from the LSP spec.
- When gopls is more usable, I will share instructions on how to get started with it. For now, the best way to set it up is through VSCode, by using the "go.alternateTools" setting. For example:
"go.alternateTools": {
"go-langserver": "$GOPATH/bin/gopls"
}
- I do use gopls when developing gopls, yes.
@stamblerre @stamblerre @imjustfly @anjmao @seagle0128
I have ported some features such as references, rename, workspace symbol, implementation of bingo to gopls.
If you want to use the enhanced version of gopls, try https://github.com/saibing/tools.
Now, Maybe I can do something for gopls. I hope that we will eventually have a unified language server: gopls.
Thanks for your work, @saibing! Looking forward to collaborating.
May I ask what's the best way for us in the community to follow along with the progress?
Shit show.
Now, you can try the enhanced version gopls: https://github.com/saibing/tools.
I will keep this gopls in sync with Google's official gopls until the official gopls become fully functional and stable.
To add to that, updates on gopls can be found here: https://github.com/golang/go/wiki/gopls.