Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [che-dev] language server protocol

On 7/7/2016 7:11 PM, Tyler Jewell wrote:
Max is showing an example of a language server.  That repo does not have the language bindings to the protocol.

The Java bindings to the protocol were developed by type fox and now inside of Che on a branch.  The language server wiki should have the links to these bindings for you to use but I don't have easy access to that wiki just this moment or an easy way to give you a github commit id to show you where the bindings are within the code base as I am pecking this email out on a cell phone right now.

I do know that typefox original bindings are here but I think that they have evolved a tiny bit as we have been rolling them into Che.  If you can be patient I need some time to sort through it all so you are not on a wasteful goose chase.

I would appreciate any further pointers...thanks much.



Also, we (Codenvy) are continuing to look for help on the registry for language servers.  All of this stuff will be pointless of we cannot get a shared public registry where language servers are saved and made available to any IDE that wants to use it.  Microsoft is not participating in that exercise right now and Codenvy has a single engineer working on a first version that is tested for Che, but needs to be validated for the broader scenario.

Btw, thanks for that tech description of what you are trying to do.  I didn't quite understand it as I do not come from that world so cannot immediately derive the benefit to either ISVs or user developers.  Could someone help me understand the overall value prop that Scott is seeking?  It sounds like he has a scenario where language servers can be applied to other enterprise use cases other than languages?

Yes.   Sorry in advance if this is too much:

In addition to bundles/modules, OSGi frameworks all have a service registry [1]...a service instance is essentially a pojo that is registered and accessed via by the name of the service interface (java interface class(es) and a set of arbitrary service properties.   The OSGi service registry has proven a very useful thing for (e.g.) micro services, service dynamics, injection, service dependencies, service versioning, etc both for Eclipse (many parts of Eclipse are exposed as OSGi services underneath) and for commercial and other servers (Websphere, Karaf, others).

Remote Services extends (by spec) OSGi services across processes and 'deals with' many of the associated complications of rpc distribution (e.g. service dynamics, service discovery over network, proxy creation, sync vs. async access, serialization, meta-data standardization, etc).   ECF has an impl of Remote Services that supports pluggable distribution providers (i.e. protocols + serialization ...i.e. the underlying rpc).  And we have jsonrpc as one of our new distribution providers among quite a few others.   Note that for your language servers registry work you might want to look at the discovery part of remote services.

What this means/allows is that LSP can/could be easily implemented as a set of OSGi services...and with ECF's jsonrpc provider these services could be accessed as an OSGi service without any direct coding to the LSP protocol and jsonrcp.   One use case of all this would be with Eclipse as a client for an LSP language server(s) as OSGi services (there's lots of machinery already in Eclipse to make that easy, dynamic, versionable, etc.).   Another would be an Orion server as LSP client...which could likely use much of the same codebase as Eclipse since it's also based upon OSGi.   Another would be other web servers that could integrate or aggregate multiple LSP servers with other tools or existing services (e.g. deployment, CI/build) and expose them as their own set of services.   Of course also possible is LSP servers implemented as OSGi remote services, making it easier to implement or extend an LSP server or it's services (e.g with custom authentication or authorization).

One of the other things we are doing is extending Remote Services to Java-only (no OSGi framework...just Java) and Python runtimes.

In any event, the initial use case I thought of was creating micro services for an Eclipse and/or Orion LSP client, but I do think that there's also lots of other use cases around extending LSP servers, aggregating multiple LSPs, integrating with developer services.

Scott

[1] https://www.osgi.org/developer/architecture/


-Tyler

_____________________________
From: Max Rydahl Andersen <manderse@xxxxxxxxxx>
Sent: Thursday, July 7, 2016 11:30 PM
Subject: Re: [che-dev] language server protocol
To: che developer discussions <che-dev@xxxxxxxxxxx>


On 7 Jul 2016, at 22:53, Scott Lewis wrote:

> Hi Max,
>
> First, thanks for the pointer. I briefly checked out gorkem's github
> site. I can find the LPS server implementation (in
> server/org.jboss.tools.* plugins), but when I look in the client area
> I only find .ts files (no java client impl of LPS?). Did I
> misunderstand...or perhaps I'm not looking in right place?

the client here is the wiring into vscode which itself have the editor
host side of LSP built-in.

This repo have the server side of the language server protocol
implemented.

/max

>
> Thanks,
>
> Scott
>
> On 7/7/2016 12:59 PM, Max Rydahl Andersen wrote:
>> On 7 Jul 2016, at 21:47, Scott Lewis wrote:
>>
>>> On 7/7/2016 12:30 PM, Tyler Jewell wrote:
>>>> Sorry I may have misunderstood. Are you asking about programming
>>>> languages that implement the protocol or language bindings for ides
>>>> to consume the protocol? There are examples of both right now.
>>>
>>> I'm mostly interested in the lang bindings for ides to consume the
>>> protocol right now, but I'm also interested in prog languages that
>>> implement the protocol.
>>
>> see https://github.com/gorkem/java-language-server thats our (Red
>> Hat's) current prototype around a LPS protocol server implemented in
>> java and made available to VSCode.
>>
>> /max
>> http://about.me/maxandersen
>> _______________________________________________
>> che-dev mailing list
>> che-dev@xxxxxxxxxxx
>> To change your delivery options, retrieve your password, or
>> unsubscribe from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/che-dev
>
> _______________________________________________
> che-dev mailing list
> che-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or
> unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/che-dev


/max
http://about.me/maxandersen
_______________________________________________
che-dev mailing list
che-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/che-dev




_______________________________________________
che-dev mailing list
che-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/che-dev



Back to the top