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

PDF
Adopting language server for apache camel feedback from a java/Eclipse plugi...
PPTX
scriptcs - scripted C#, REPL and script extensibility
PDF
An introduction to go programming language
PDF
Livecode widget course
PDF
Scala can do this, too
PPTX
PPTX
Futuristic programing language
PDF
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Adopting language server for apache camel feedback from a java/Eclipse plugi...
scriptcs - scripted C#, REPL and script extensibility
An introduction to go programming language
Livecode widget course
Scala can do this, too
Futuristic programing language
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno

What's hot (18)

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

More from Aurélien Pupier (13)

PDF
Feedback from an eclipse plugin developer to provide support to large set of ...
PDF
Why and how to leverage apache camel integration framework in your io t archi...
PDF
Master your integration projects on premise and in the cloud with fuse tooling
ODP
Classic middleware integration for your IoT Gateways integration
PDF
Fast unit tests for Eclipse Plugins
PDF
Functional Testing made easy with SWTBot for Developers and Testers
PDF
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
PPTX
How to contribute to Eclipse
PDF
Time to build and test results 3x faster - how we did it
PDF
Take advantage of memory analyzer tool inside your continuous integration
PDF
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
PDF
What's new GMF for Juno?
PDF
What's hot Juno?
Feedback from an eclipse plugin developer to provide support to large set of ...
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
Classic middleware integration for your IoT Gateways integration
Fast unit tests for Eclipse Plugins
Functional Testing made easy with SWTBot for Developers and Testers
Committing IDE meta files: misconceptions, misunderstandings, and solutions.
How to contribute to Eclipse
Time to build and test results 3x faster - how we did it
Take advantage of memory analyzer tool inside your continuous integration
Tools and Methodologies to leverage GMF power (EclipseDay Delft 2012)
What's new GMF for Juno?
What's hot Juno?
Ad

Recently uploaded (20)

PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
ai tools demonstartion for schools and inter college
PDF
System and Network Administration Chapter 2
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
AI in Product Development-omnex systems
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
medical staffing services at VALiNTRY
PDF
Digital Strategies for Manufacturing Companies
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Essential Infomation Tech presentation.pptx
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Which alternative to Crystal Reports is best for small or large businesses.pdf
ai tools demonstartion for schools and inter college
System and Network Administration Chapter 2
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Softaken Excel to vCard Converter Software.pdf
PTS Company Brochure 2025 (1).pdf.......
Design an Analysis of Algorithms II-SECS-1021-03
AI in Product Development-omnex systems
Odoo Companies in India – Driving Business Transformation.pdf
L1 - Introduction to python Backend.pptx
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
medical staffing services at VALiNTRY
Digital Strategies for Manufacturing Companies
wealthsignaloriginal-com-DS-text-... (1).pdf
Essential Infomation Tech presentation.pptx

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