saibing/bingo

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).

@stamblerre

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:

  1. It's not possible to register new issues directly on tools repo.
  2. Source code is published to golang.org/x/tools/cmd/golsp. Why not just use github and github.com/golang/golsp url?
  3. 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.

@seagle0128

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.

mbana commented

@stamblerre @saibing

Some things that I think different (Go) implementations might be benefit from:

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.

@jan-xyz

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.

Really looking forward to the collaboration, right now gopls (and the fork) does not provide useful interaction with lsp-mode for me.

For example, compare the lsp-ui hover when usingbingo:
Screen Shot 2019-04-10 at 13 18 30

With how gopls looks:
Screen Shot 2019-04-10 at 13 20 29

@webframp

The fork gopls has fixed it

Thanks @saibing!

yzliu commented

Thanks @saibing!