Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [lsp4j-dev] Evolving LSP4J API

Hey!

Sorry for being late here.

I am also in favor of keeping the lsp4j API as close to the spec as possible and not worry about backwards compatibility.
If additional helper methods and workarounds sum up over time, the API will look quite weird and those compatibility helpers might not even be possible for each and every change.

As a consumer of lsp4j I am happy to adapt to new versions with changed APIs.
What I don’t like that much are subtle changes that the compiler doesn’t catch.

This process might require consumers of lsp4j to define upper version bounds to avoid breaking things (in case of OSGi, for example, where you might get a newer version of lsp4j, but still have an older version of lsp4e around, for example).

Just a few thoughts
Martin


Am 22.05.2020 um 10:02 schrieb Miro Spönemann <miro.spoenemann@xxxxxxxxxx>:

Hi Jonah,

I’d go for a middle ground:

  • LSP / DAP data structures may be subject to breaking changes between minor versions. These changes are documented in the CHANGELOG.
  • All other API follows semantic versioning.

Workarounds for protocol changes could accumulate over time and lead to a weird API.

This is not a “strong” opinion — if you prefer another solution, I’m fine with that.

Regards
  Miro


On 20. May 2020, at 18:06, Jonah Graham <jonah@xxxxxxxxxxxxxxxx> wrote:

Hello fellow LSP4J-devs,

I am hoping that this is a topic that someone has already thought of and has a resolution on :-)

Keeping LSP4J up to date with the LSP spec presents some challenges with regards to traditional Java API contracts widely used within Eclipse.

Philip has submitted a fix for LSP4J based on a bug in the LSP spec. The change gives a perfect opportunity to decide how we are going to handle Java API vs LSP spec concerns.

I have made a couple of comments in my review, but I invite suggestions from the community on how we are going to handle this.

e.g. we could:

- Break API in the traditional sense and keep LSP4J as close to LSP spec as possible
- Have a fairly strict API breakage policy and changes like the above have to have special "fixes/workarounds" in LSP4J
- Have regular major new versions of LSP4J
- Something else?

Please share your thoughts - or previous decisions if this has been discussed in the past.

Thanks

Jonah

~~~
Jonah Graham
Kichwa Coders
www.kichwacoders.com
_______________________________________________
lsp4j-dev mailing list
lsp4j-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/lsp4j-dev

--
Dr. Miro Spönemann
Software engineer and consultant

TypeFox GmbH
Am Germaniahafen 1, 24143 Kiel

Tel.: +49 151 42679459

Sitz: Kiel, Registergericht: Amtsgericht Kiel, HRB 17385
Geschäftsführer: Sven Efftinge, Moritz Eysholdt, Dr. Jan Köhnlein

_______________________________________________
lsp4j-dev mailing list
lsp4j-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/lsp4j-dev


Back to the top