SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Feedback from an Eclipse plugin developer
to provide support to a large set of IDE
based on Language Server Protocol
Aurélien Pupier
Principal Software Engineer
19th
November 2019
@apupier
Eclipse Tools Day Grenoble 2019
I’m an Eclipse Plugin developer.
I want to reach a larger audience for my Language.
Context
2
3
Which complexity?
IDE skills Language skills
Eclipse
Desktop IDE
VS Code
Emacs
...
N implementations
with high skill required in language and IDE extension
Write Code Editing capabilities once, run in all IDEs!
The Promise of Language Server Protocol
4
Write Code Editing capabilities once, run in all IDEs!
(after a setup for each IDE and for most features)
The (real) Promise of Language Server Protocol
5
- Autocomplete
- Hover
- Code Lens
- Goto Definition/References
- Formatting / Coloring
- Renaming
- Code actions
- Highlighting
- Folding
- Diagnostic
Code editing capabilities
6
7
Language Server
More coming...
N implementations with low skill for IDE
+ 1 implementations with high skill required in language only
8
Language Server
How to write the server?
9
LSP4J
How to write the server?
10
● LSP4J
● Fat jar for easy launch
● Restrict to a single-file scope (if possible)
● TextDocumentSyncKind.Full
● sysin/sysout
○ ⇒ No log on sysout!!
Server Implementation examples
11
● Very simple
○ https://github.com/apupier/language-server-template-java
● Good examples
○ https://github.com/camel-tooling/camel-language-server
○ https://github.com/angelozerr/lsp4xml
● A full blown headless Eclipse desktop
○ https://github.com/eclipse/eclipse.jdt.ls
● Search in Official site listing
○ https://microsoft.github.io/language-server-protocol/implementors/servers/
I have a first server iteration:
Now test with IDEs!
12
● Configuration more or less easy
● Too complex for real users!!
⇒ Need to provide a client per IDE starting the server!
⇒ in different languages!
⇒ in different communities!
With which IDE to start?
13
● Eclipse Desktop IDE
○ we know it!
● VS Code
○ De facto “reference implementation”
○ Trendy
○ Can be reused in Eclipse Che
● Listen to your existing community
Technical advice - IDE integration
Eclipse Desktop (1/2)
14
● LSP4E
● (Process)StreamConnectionProvider
● Content-type association
● Generic text editor only!
Technical advice - IDE integration
Eclipse Desktop (2/2)
15
● To help development:
○ Configure remote debug possibilities
○ Communication log
Technical advice - IDE integration
VS Code (1/2)
16
● How to launch Java from TypeScript?
○ Java LSP client example, now also Camel Client
● Writing a test is not trivial
● Not friendly with bad request
○ log on stdout → crash!
Technical advice - IDE integration
VS Code (2/2)
17
● To help development:
○ Logging
○ LSP inspector
Technical advice - IDE integration
Eclipse Che 7
18
● Reuse VS Code extension
● Web-based demo!
Technical advice - IDE integration
CodeMirror
19
● Embeddable web editor
● /! WebSocket
● Limited functionalities
In a nutshell
20
● LSP known only in Eclipse/Tooling world
● Key points:
○ List of potential supported IDEs
○ Demo in one desktop and one web-based IDE
○ Marketplace entries
● Few work weeks to have several IDEs supported
● Plan a bit of time to bootstrap for all wanted IDEs
Start writing your Language Server!
Aurélien Pupier
Principal Software Engineer
@apupier
Eclipse Tools Day Grenoble 2019
22
Technical advice - IDE integration
Atom
23
● Easy to publish to Marketplace
● Small codebase
● Hard to debug/setup dev env
Technical advice - IDE integration
Vim
24
● Lightweight
● Only readme provided
● Ecosystem is too complicated for newcomers
Time/resource management
25
● Half-day per week for 2 developers during 7
months
○ Regularly skipped…
○ But also several hours reading docs
● 1-2 days per week for 2 developers during 2
months
● Communities working on LSP are active
Architecture - multi-Language Server
26
● Several LS on same file?
● How to avoid redundancy?
○ Extension points in a LS?
○ Clients responsible to merge results?
○ Formatting?
What’s next?
27
● Cross-LS…
● Other protocols?
○ Debug Adapter Protocol
○ Graphical server protocol?
○ Creating new project?
● IDE client?
○ Docker
○ LS Marketplace?
○ Clients generator?

Contenu connexe

Tendances

What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? Shady Selim
 
scriptcs - scripted C#, REPL and script extensibility
scriptcs - scripted C#, REPL and script extensibilityscriptcs - scripted C#, REPL and script extensibility
scriptcs - scripted C#, REPL and script extensibilityFilip W
 
Flutter not yet another mobile cross-platform framework - i ox-kl19
Flutter   not yet another mobile cross-platform framework - i ox-kl19Flutter   not yet another mobile cross-platform framework - i ox-kl19
Flutter not yet another mobile cross-platform framework - i ox-kl19oradoe
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matterAhmed Abu Eldahab
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic conceptsKumaresh Chandra Baruri
 
Reactive declarative UI as code - DroidCon Vietnam 2019
Reactive declarative UI as code - DroidCon Vietnam 2019Reactive declarative UI as code - DroidCon Vietnam 2019
Reactive declarative UI as code - DroidCon Vietnam 2019oradoe
 
Swift Overview
Swift OverviewSwift Overview
Swift Overviewlanhuonga3
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessBartosz Kosarzycki
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to FlutterEason Pai
 
Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.Sunil Yadav
 
Flutter dart assignment help
Flutter dart assignment helpFlutter dart assignment help
Flutter dart assignment helpcalltutors
 

Tendances (19)

What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
scriptcs - scripted C#, REPL and script extensibility
scriptcs - scripted C#, REPL and script extensibilityscriptcs - scripted C#, REPL and script extensibility
scriptcs - scripted C#, REPL and script extensibility
 
Flutter not yet another mobile cross-platform framework - i ox-kl19
Flutter   not yet another mobile cross-platform framework - i ox-kl19Flutter   not yet another mobile cross-platform framework - i ox-kl19
Flutter not yet another mobile cross-platform framework - i ox-kl19
 
Swift @ IBM
Swift @ IBMSwift @ IBM
Swift @ IBM
 
C++ in our world
C++ in our worldC++ in our world
C++ in our world
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matter
 
Managed Code .NET
Managed Code .NETManaged Code .NET
Managed Code .NET
 
SynapseIndia dotnet development framework
SynapseIndia  dotnet development frameworkSynapseIndia  dotnet development framework
SynapseIndia dotnet development framework
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic concepts
 
Kotlin Multiplatform
Kotlin MultiplatformKotlin Multiplatform
Kotlin Multiplatform
 
Reactive declarative UI as code - DroidCon Vietnam 2019
Reactive declarative UI as code - DroidCon Vietnam 2019Reactive declarative UI as code - DroidCon Vietnam 2019
Reactive declarative UI as code - DroidCon Vietnam 2019
 
Swift Overview
Swift OverviewSwift Overview
Swift Overview
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for business
 
6 x1 flutter_talk
6 x1 flutter_talk6 x1 flutter_talk
6 x1 flutter_talk
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to Flutter
 
Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.
 
Flutter dart assignment help
Flutter dart assignment helpFlutter dart assignment help
Flutter dart assignment help
 
Why golang
Why golangWhy golang
Why golang
 
C compiler
C compilerC compiler
C compiler
 

Similaire à Feedback from an eclipse plugin developer to provide support to large set of ide based on language server protocol

[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in actionMickael Istria
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Mickael Istria
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Dmitry Kartsev
 
Green flag Wrap up Google Solution Challenge.pdf
Green flag Wrap up Google Solution Challenge.pdfGreen flag Wrap up Google Solution Challenge.pdf
Green flag Wrap up Google Solution Challenge.pdfGoogleDeveloperStude22
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonHaim Michael
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Metasepi team meeting #8': Haskell apps on Android NDK
Metasepi team meeting #8': Haskell apps on Android NDKMetasepi team meeting #8': Haskell apps on Android NDK
Metasepi team meeting #8': Haskell apps on Android NDKKiwamu Okabe
 
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...Charles Beyer
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...Mickael Istria
 
Cross platform development
Cross platform developmentCross platform development
Cross platform developmentEvolve
 
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...InfluxData
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll buildMark Stoodley
 
Advance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdfAdvance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdfpercivalfernandez2
 
Xamarin for (not only) Android developers
Xamarin for (not only) Android developersXamarin for (not only) Android developers
Xamarin for (not only) Android developersAleksander Piotrowski
 

Similaire à Feedback from an eclipse plugin developer to provide support to large set of ide based on language server protocol (20)

[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action[EclipseCon France 2017] Language Server Protocol in action
[EclipseCon France 2017] Language Server Protocol in action
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
 
Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK Red Hat OpenShift App Dev meetup - Operator SDK
Red Hat OpenShift App Dev meetup - Operator SDK
 
Green flag Wrap up Google Solution Challenge.pdf
Green flag Wrap up Google Solution Challenge.pdfGreen flag Wrap up Google Solution Challenge.pdf
Green flag Wrap up Google Solution Challenge.pdf
 
JetBrains MPS
JetBrains MPSJetBrains MPS
JetBrains MPS
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET Comparison
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Metasepi team meeting #8': Haskell apps on Android NDK
Metasepi team meeting #8': Haskell apps on Android NDKMetasepi team meeting #8': Haskell apps on Android NDK
Metasepi team meeting #8': Haskell apps on Android NDK
 
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...
Hyperion EPM APIs - Added value from HFM, Workspace, FDM, Smartview, and Shar...
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Opensource Software usability
Opensource Software usabilityOpensource Software usability
Opensource Software usability
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
Tim Hall [InfluxData] | InfluxDays Keynote: InfluxDB Roadmap | InfluxDays NA ...
 
FTC7 Michel Lefranc - Developing software based on the FSDL software library ...
FTC7 Michel Lefranc - Developing software based on the FSDL software library ...FTC7 Michel Lefranc - Developing software based on the FSDL software library ...
FTC7 Michel Lefranc - Developing software based on the FSDL software library ...
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll build
 
Advance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdfAdvance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdf
 
Xamarin for (not only) Android developers
Xamarin for (not only) Android developersXamarin for (not only) Android developers
Xamarin for (not only) Android developers
 

Plus de Aurélien Pupier

Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Aurélien Pupier
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingAurélien Pupier
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationAurélien Pupier
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsAurélien Pupier
 
Functional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersFunctional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersAurélien Pupier
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Aurélien Pupier
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to EclipseAurélien Pupier
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itAurélien Pupier
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationAurélien Pupier
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Aurélien Pupier
 

Plus de Aurélien Pupier (12)

Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...Why and how to leverage apache camel integration framework in your io t archi...
Why and how to leverage apache camel integration framework in your io t archi...
 
Master your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse toolingMaster your integration projects on premise and in the cloud with fuse tooling
Master your integration projects on premise and in the cloud with fuse tooling
 
Classic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integrationClassic middleware integration for your IoT Gateways integration
Classic middleware integration for your IoT Gateways integration
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse Plugins
 
Functional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and TestersFunctional Testing made easy with SWTBot for Developers and Testers
Functional Testing made easy with SWTBot for Developers and Testers
 
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.Committing IDE meta files: misconceptions, misunderstandings, and solutions.
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
 
How to contribute to Eclipse
How to contribute to EclipseHow to contribute to Eclipse
How to contribute to Eclipse
 
Time to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did itTime to build and test results 3x faster - how we did it
Time to build and test results 3x faster - how we did it
 
Take advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integrationTake advantage of memory analyzer tool inside your continuous integration
Take advantage of memory analyzer tool inside your continuous integration
 
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
 
What's new GMF for Juno?
What's new GMF for Juno?What's new GMF for Juno?
What's new GMF for Juno?
 
What's hot Juno?
What's hot Juno?What's hot Juno?
What's hot Juno?
 

Dernier

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Dernier (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Feedback from an eclipse plugin developer to provide support to large set of ide based on language server protocol

  • 1. Feedback from an Eclipse plugin developer to provide support to a large set of IDE based on Language Server Protocol Aurélien Pupier Principal Software Engineer 19th November 2019 @apupier Eclipse Tools Day Grenoble 2019
  • 2. I’m an Eclipse Plugin developer. I want to reach a larger audience for my Language. Context 2
  • 3. 3 Which complexity? IDE skills Language skills Eclipse Desktop IDE VS Code Emacs ... N implementations with high skill required in language and IDE extension
  • 4. Write Code Editing capabilities once, run in all IDEs! The Promise of Language Server Protocol 4
  • 5. Write Code Editing capabilities once, run in all IDEs! (after a setup for each IDE and for most features) The (real) Promise of Language Server Protocol 5
  • 6. - Autocomplete - Hover - Code Lens - Goto Definition/References - Formatting / Coloring - Renaming - Code actions - Highlighting - Folding - Diagnostic Code editing capabilities 6
  • 7. 7 Language Server More coming... N implementations with low skill for IDE + 1 implementations with high skill required in language only
  • 9. How to write the server? 9 LSP4J
  • 10. How to write the server? 10 ● LSP4J ● Fat jar for easy launch ● Restrict to a single-file scope (if possible) ● TextDocumentSyncKind.Full ● sysin/sysout ○ ⇒ No log on sysout!!
  • 11. Server Implementation examples 11 ● Very simple ○ https://github.com/apupier/language-server-template-java ● Good examples ○ https://github.com/camel-tooling/camel-language-server ○ https://github.com/angelozerr/lsp4xml ● A full blown headless Eclipse desktop ○ https://github.com/eclipse/eclipse.jdt.ls ● Search in Official site listing ○ https://microsoft.github.io/language-server-protocol/implementors/servers/
  • 12. I have a first server iteration: Now test with IDEs! 12 ● Configuration more or less easy ● Too complex for real users!! ⇒ Need to provide a client per IDE starting the server! ⇒ in different languages! ⇒ in different communities!
  • 13. With which IDE to start? 13 ● Eclipse Desktop IDE ○ we know it! ● VS Code ○ De facto “reference implementation” ○ Trendy ○ Can be reused in Eclipse Che ● Listen to your existing community
  • 14. Technical advice - IDE integration Eclipse Desktop (1/2) 14 ● LSP4E ● (Process)StreamConnectionProvider ● Content-type association ● Generic text editor only!
  • 15. Technical advice - IDE integration Eclipse Desktop (2/2) 15 ● To help development: ○ Configure remote debug possibilities ○ Communication log
  • 16. Technical advice - IDE integration VS Code (1/2) 16 ● How to launch Java from TypeScript? ○ Java LSP client example, now also Camel Client ● Writing a test is not trivial ● Not friendly with bad request ○ log on stdout → crash!
  • 17. Technical advice - IDE integration VS Code (2/2) 17 ● To help development: ○ Logging ○ LSP inspector
  • 18. Technical advice - IDE integration Eclipse Che 7 18 ● Reuse VS Code extension ● Web-based demo!
  • 19. Technical advice - IDE integration CodeMirror 19 ● Embeddable web editor ● /! WebSocket ● Limited functionalities
  • 20. In a nutshell 20 ● LSP known only in Eclipse/Tooling world ● Key points: ○ List of potential supported IDEs ○ Demo in one desktop and one web-based IDE ○ Marketplace entries ● Few work weeks to have several IDEs supported ● Plan a bit of time to bootstrap for all wanted IDEs
  • 21. Start writing your Language Server! Aurélien Pupier Principal Software Engineer @apupier Eclipse Tools Day Grenoble 2019
  • 22. 22
  • 23. Technical advice - IDE integration Atom 23 ● Easy to publish to Marketplace ● Small codebase ● Hard to debug/setup dev env
  • 24. Technical advice - IDE integration Vim 24 ● Lightweight ● Only readme provided ● Ecosystem is too complicated for newcomers
  • 25. Time/resource management 25 ● Half-day per week for 2 developers during 7 months ○ Regularly skipped… ○ But also several hours reading docs ● 1-2 days per week for 2 developers during 2 months ● Communities working on LSP are active
  • 26. Architecture - multi-Language Server 26 ● Several LS on same file? ● How to avoid redundancy? ○ Extension points in a LS? ○ Clients responsible to merge results? ○ Formatting?
  • 27. What’s next? 27 ● Cross-LS… ● Other protocols? ○ Debug Adapter Protocol ○ Graphical server protocol? ○ Creating new project? ● IDE client? ○ Docker ○ LS Marketplace? ○ Clients generator?