SlideShare a Scribd company logo
How to contribute
textual tooling for Apache Camel
in several IDEs
Aurélien Pupier
@apupier
Principal Software Engineer in Red Hat Integration Tooling team
ApacheCon @Home 2020
1
Textual tooling for Camel?
2
● Route DSLs
○ Xml
○ Java
○ Yaml
○ (Groovy, JavaScript, Kotlin)
● Properties
○ Camel main
○ Camel Kafka connector
Textual tooling for Camel
3
Several IDEs?
4
● Eclipse Desktop Fuse Tooling
○ Textual and graphical tooling
○ Non-reusable code
● IntelliJ
○ Textual tooling
○ Non-reusable code
● What about other IDEs?
Existing tooling 3 years ago
5
6
Providing tooling for several IDEs...
Complexity
Eclipse Desktop IDE
VS Code
Emacs
...
For Camel, N implementations
with high skill required in Camel AND IDE extension
Language Server Protocol
7
Write Code Editing capabilities once, run in all IDEs!
The Promise of the Language Server Protocol
8
9
Language Server
More (unofficial) coming...
N implementations with low skill for IDE
+ 1 implementations with high skill required in language only
Write limited set of Code Editing capabilities once, run in all
most IDEs with a little setup
The (real) Promise of the Language Server Protocol
10
● Autocomplete
● Hover
● Code Lens
● Goto Definition/References
● Formatting / Coloring
● Renaming
● Code actions
● Highlighting
● Folding
● Diagnostic
● Document symbols
Language Server Protocol Code Editing Capabilities
11
Current state of Language Server
for Apache Camel
12
13
Language Server
Marketplaces clients Examples/readmes
● Autocomplete
● Hover
● Code Lens
● Goto Definition/References
● Formatting / Coloring
● Renaming
● Code actions
● Highlighting
● Folding
● Diagnostic
● Document symbols
LSP Code Editing Capabilities
14
Level of feature
Some figures
15
# of installations
Eclipse Desktop 4500 (estimated)
VS Code 8900
Atom 95
Che / CodeReady Workspaces
/ Sublime text / Theia / Vim
/CodeMirror
No metrics :-(
Demo
16
How to contribute
Code Editing capabilities
17
● Demo with Eclipse Desktop
○ Nice support of Language Server writing
○ Powerful Java support
● VS Code good too
● Any others IDE for Java. It will require manual configuration to
test in an editor.
Development Environment setup
18
https://github.com/camel-tooling/camel-language-server/blo
b/master/Contributing.md
Environment setup - Eclipse Desktop example
19
How to contribute a new IDE client
20
● Specific to each IDE
● One-time effort
● If I knew it,
○ it would have been done
○ there would be no more need to do it
You are on your own!
21
● Standalone Jar to launch
● Connection through stdio or websocket
● File associations
Not completely on your own :-)
22
Contribution ideas to Camel LSP
23
● Implement Code Editing capabilities
● Create the client for your preferred IDE
● Provide new feature ideas!
● Help review Pull requests
● ...
Ways of contributing
24
● Autocomplete
● Hover
● Code Lens
● Goto Definition/References
● Formatting / Coloring
● Renaming
● Code actions
● Highlighting
● Folding
● Diagnostic
● Document symbols
LSP Code Editing Capabilities
25
Level of feature
● Renaming of direct/seda ids
● Folding of choice for Java
● Support of placeholder
● Autocomplete proposing some patterns
● Autocomplete in connected mode
● Support incremental mode
● Support Templated routes
● Provide icons for Document symbols
● Provide link to online documentation on hover
● Native version of the Language Server (Quarkus?)
● ...
Language Server feature ideas
26
Create readmes
Provide specific client in Marketplaces
Improve readmes
Provide specific client in Marketplaces
Maintenance
https://github.com/camel-tooling/
27
camel-tooling/camel-langua
ge-server
new features / maintenance
Your beloved IDE
● Cross-Language Server for a tighter integration:
○ Jdt LS (Java)
○ Lemminx (xml)
● Other similar protocols:
○ Debug Adapter Protocol
○ Graphical Language Server Protocol
Going further...
28
● Spread the idea
● Migration
● Maintenance and governance
Make it an Apache Camel subproject?
29
Go enhance the Language Server for Camel!
Aurélien Pupier
Principal Software Engineer
@apupier
ApacheCon @Home 2020
30

More Related Content

What's hot

[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
RubyMine @undev 08/2013
RubyMine @undev 08/2013RubyMine @undev 08/2013
RubyMine @undev 08/2013
boogie_cat
 
Intuitive CLIs for gRPC - GoSV Jan '19
Intuitive CLIs for gRPC - GoSV Jan '19Intuitive CLIs for gRPC - GoSV Jan '19
Intuitive CLIs for gRPC - GoSV Jan '19
Noah Dietz
 
C compilers
C compilersC compilers
C compilers
Mohammad Danish
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)
Slide_N
 
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11Chauvin Mariot
 
hexMachina WWX 2016
hexMachina WWX 2016hexMachina WWX 2016
hexMachina WWX 2016
Francis Bourre
 
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx USEclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
melbats
 
IBus Chinese input methods for HongKongers - Problem, Solution, Future.
IBus Chinese input methods for HongKongers - Problem, Solution, Future.IBus Chinese input methods for HongKongers - Problem, Solution, Future.
IBus Chinese input methods for HongKongers - Problem, Solution, Future.Sammy Fung
 
Swift language - A fast overview of some features
Swift language - A fast overview of some featuresSwift language - A fast overview of some features
Swift language - A fast overview of some features
Weverton Timoteo
 
Groovy in IntelliJ IDEA
Groovy in IntelliJ IDEAGroovy in IntelliJ IDEA
Groovy in IntelliJ IDEA
Vaclav Pech
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Session#1 csharp MTCS
Session#1 csharp MTCSSession#1 csharp MTCS
Session#1 csharp MTCS
Ahmad Ehab
 
C#
C#C#
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
Oliver N
 
Scaling applications with go
Scaling applications with goScaling applications with go
Scaling applications with go
Vimlesh Sharma
 
Managed Code .NET
Managed Code .NETManaged Code .NET
Managed Code .NET
Mert Akcakaya
 
Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Daker Fernandes
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
André Mayer
 

What's hot (19)

[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 
RubyMine @undev 08/2013
RubyMine @undev 08/2013RubyMine @undev 08/2013
RubyMine @undev 08/2013
 
Intuitive CLIs for gRPC - GoSV Jan '19
Intuitive CLIs for gRPC - GoSV Jan '19Intuitive CLIs for gRPC - GoSV Jan '19
Intuitive CLIs for gRPC - GoSV Jan '19
 
C compilers
C compilersC compilers
C compilers
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)
 
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11EEF : Sexy Properties, Wizards and Views - EclipseCon 11
EEF : Sexy Properties, Wizards and Views - EclipseCon 11
 
hexMachina WWX 2016
hexMachina WWX 2016hexMachina WWX 2016
hexMachina WWX 2016
 
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx USEclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
Eclipse Democamp Nantes 2017 - Back to the Future: EclipseConverge & Devoxx US
 
IBus Chinese input methods for HongKongers - Problem, Solution, Future.
IBus Chinese input methods for HongKongers - Problem, Solution, Future.IBus Chinese input methods for HongKongers - Problem, Solution, Future.
IBus Chinese input methods for HongKongers - Problem, Solution, Future.
 
Swift language - A fast overview of some features
Swift language - A fast overview of some featuresSwift language - A fast overview of some features
Swift language - A fast overview of some features
 
Groovy in IntelliJ IDEA
Groovy in IntelliJ IDEAGroovy in IntelliJ IDEA
Groovy in IntelliJ IDEA
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
 
Session#1 csharp MTCS
Session#1 csharp MTCSSession#1 csharp MTCS
Session#1 csharp MTCS
 
C#
C#C#
C#
 
Golang #5: To Go or not to Go
Golang #5: To Go or not to GoGolang #5: To Go or not to Go
Golang #5: To Go or not to Go
 
Scaling applications with go
Scaling applications with goScaling applications with go
Scaling applications with go
 
Managed Code .NET
Managed Code .NETManaged Code .NET
Managed Code .NET
 
Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
 

Similar to How to contribute textual tooling for apache camel in several id es

Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...
Aurélien Pupier
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
Shady Selim
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
David Voyles
 
.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn
Piotr Benetkiewicz
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov
 
Taskfile - makefiles are fun again
Taskfile - makefiles are fun againTaskfile - makefiles are fun again
Taskfile - makefiles are fun again
Bertold Kolics
 
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
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
Evolve
 
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
Manuel Carrasco Moñino
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Samsul Ma'arif
 
Programming In Linux Presentation
Programming In Linux PresentationProgramming In Linux Presentation
Programming In Linux Presentation
danyal.khashabi
 
Programming a CI/CD pipeline with Go: hands-on Dagger SDK
Programming a CI/CD pipeline with Go: hands-on Dagger SDKProgramming a CI/CD pipeline with Go: hands-on Dagger SDK
Programming a CI/CD pipeline with Go: hands-on Dagger SDK
Sergio Matone
 
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
 
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
 
Dmytro Dziubenko "Developer's toolchain"
Dmytro Dziubenko "Developer's toolchain"Dmytro Dziubenko "Developer's toolchain"
Dmytro Dziubenko "Developer's toolchain"
Fwdays
 
C++ on the Web: Run your big 3D game in the browser
C++ on the Web: Run your big 3D game in the browserC++ on the Web: Run your big 3D game in the browser
C++ on the Web: Run your big 3D game in the browser
Andre Weissflog
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
corehard_by
 
Desarrollo multiplataforma con kotlin | UPV 2018
Desarrollo multiplataforma con kotlin  | UPV 2018Desarrollo multiplataforma con kotlin  | UPV 2018
Desarrollo multiplataforma con kotlin | UPV 2018
Víctor Bolinches
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 
C++ in our world
C++ in our worldC++ in our world
C++ in our world
Juraj Michálek
 

Similar to How to contribute textual tooling for apache camel in several id es (20)

Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
 
.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn.NET compiler platform codename Roslyn
.NET compiler platform codename Roslyn
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Taskfile - makefiles are fun again
Taskfile - makefiles are fun againTaskfile - makefiles are fun again
Taskfile - makefiles are fun again
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
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
 
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
Deploy Multinode GitLab Runner in openSUSE 15.1 Instances with Ansible Automa...
 
Programming In Linux Presentation
Programming In Linux PresentationProgramming In Linux Presentation
Programming In Linux Presentation
 
Programming a CI/CD pipeline with Go: hands-on Dagger SDK
Programming a CI/CD pipeline with Go: hands-on Dagger SDKProgramming a CI/CD pipeline with Go: hands-on Dagger SDK
Programming a CI/CD pipeline with Go: hands-on Dagger SDK
 
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...
 
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...
 
Dmytro Dziubenko "Developer's toolchain"
Dmytro Dziubenko "Developer's toolchain"Dmytro Dziubenko "Developer's toolchain"
Dmytro Dziubenko "Developer's toolchain"
 
C++ on the Web: Run your big 3D game in the browser
C++ on the Web: Run your big 3D game in the browserC++ on the Web: Run your big 3D game in the browser
C++ on the Web: Run your big 3D game in the browser
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Desarrollo multiplataforma con kotlin | UPV 2018
Desarrollo multiplataforma con kotlin  | UPV 2018Desarrollo multiplataforma con kotlin  | UPV 2018
Desarrollo multiplataforma con kotlin | UPV 2018
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
C++ in our world
C++ in our worldC++ in our world
C++ in our world
 

More from 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 tooling
Auré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 integration
Aurélien Pupier
 
Fast unit tests for Eclipse Plugins
Fast unit tests for Eclipse PluginsFast unit tests for Eclipse Plugins
Fast unit tests for Eclipse Plugins
Auré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 Testers
Auré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 Eclipse
Auré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 it
Auré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 integration
Auré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
 

More from 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?
 

Recently uploaded

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 

Recently uploaded (20)

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 

How to contribute textual tooling for apache camel in several id es

  • 1. How to contribute textual tooling for Apache Camel in several IDEs Aurélien Pupier @apupier Principal Software Engineer in Red Hat Integration Tooling team ApacheCon @Home 2020 1
  • 3. ● Route DSLs ○ Xml ○ Java ○ Yaml ○ (Groovy, JavaScript, Kotlin) ● Properties ○ Camel main ○ Camel Kafka connector Textual tooling for Camel 3
  • 5. ● Eclipse Desktop Fuse Tooling ○ Textual and graphical tooling ○ Non-reusable code ● IntelliJ ○ Textual tooling ○ Non-reusable code ● What about other IDEs? Existing tooling 3 years ago 5
  • 6. 6 Providing tooling for several IDEs... Complexity Eclipse Desktop IDE VS Code Emacs ... For Camel, N implementations with high skill required in Camel AND IDE extension
  • 8. Write Code Editing capabilities once, run in all IDEs! The Promise of the Language Server Protocol 8
  • 9. 9 Language Server More (unofficial) coming... N implementations with low skill for IDE + 1 implementations with high skill required in language only
  • 10. Write limited set of Code Editing capabilities once, run in all most IDEs with a little setup The (real) Promise of the Language Server Protocol 10
  • 11. ● Autocomplete ● Hover ● Code Lens ● Goto Definition/References ● Formatting / Coloring ● Renaming ● Code actions ● Highlighting ● Folding ● Diagnostic ● Document symbols Language Server Protocol Code Editing Capabilities 11
  • 12. Current state of Language Server for Apache Camel 12
  • 14. ● Autocomplete ● Hover ● Code Lens ● Goto Definition/References ● Formatting / Coloring ● Renaming ● Code actions ● Highlighting ● Folding ● Diagnostic ● Document symbols LSP Code Editing Capabilities 14 Level of feature
  • 15. Some figures 15 # of installations Eclipse Desktop 4500 (estimated) VS Code 8900 Atom 95 Che / CodeReady Workspaces / Sublime text / Theia / Vim /CodeMirror No metrics :-(
  • 17. How to contribute Code Editing capabilities 17
  • 18. ● Demo with Eclipse Desktop ○ Nice support of Language Server writing ○ Powerful Java support ● VS Code good too ● Any others IDE for Java. It will require manual configuration to test in an editor. Development Environment setup 18
  • 20. How to contribute a new IDE client 20
  • 21. ● Specific to each IDE ● One-time effort ● If I knew it, ○ it would have been done ○ there would be no more need to do it You are on your own! 21
  • 22. ● Standalone Jar to launch ● Connection through stdio or websocket ● File associations Not completely on your own :-) 22
  • 23. Contribution ideas to Camel LSP 23
  • 24. ● Implement Code Editing capabilities ● Create the client for your preferred IDE ● Provide new feature ideas! ● Help review Pull requests ● ... Ways of contributing 24
  • 25. ● Autocomplete ● Hover ● Code Lens ● Goto Definition/References ● Formatting / Coloring ● Renaming ● Code actions ● Highlighting ● Folding ● Diagnostic ● Document symbols LSP Code Editing Capabilities 25 Level of feature
  • 26. ● Renaming of direct/seda ids ● Folding of choice for Java ● Support of placeholder ● Autocomplete proposing some patterns ● Autocomplete in connected mode ● Support incremental mode ● Support Templated routes ● Provide icons for Document symbols ● Provide link to online documentation on hover ● Native version of the Language Server (Quarkus?) ● ... Language Server feature ideas 26
  • 27. Create readmes Provide specific client in Marketplaces Improve readmes Provide specific client in Marketplaces Maintenance https://github.com/camel-tooling/ 27 camel-tooling/camel-langua ge-server new features / maintenance Your beloved IDE
  • 28. ● Cross-Language Server for a tighter integration: ○ Jdt LS (Java) ○ Lemminx (xml) ● Other similar protocols: ○ Debug Adapter Protocol ○ Graphical Language Server Protocol Going further... 28
  • 29. ● Spread the idea ● Migration ● Maintenance and governance Make it an Apache Camel subproject? 29
  • 30. Go enhance the Language Server for Camel! Aurélien Pupier Principal Software Engineer @apupier ApacheCon @Home 2020 30