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 (18)

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

More from Aurélien Pupier (13)

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

Recently uploaded (20)

PPTX
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
PPTX
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPTX
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Import Data Form Excel to Tally Services
Tally xperts
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
Ad

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