Some Friday afternoon thoughts... on the Camel DSL and Camel Workflow. The Camel DSL The Camel framework implements a lot of Enterprise Integration Patterns, Data Formats and Components. To make it easier to write integrations, the Camel DSL (Domain Specific Language) was invented. This DSL grew into several parts: - Routes - RoutesConfiguration - Templates - Endpoints - REST - Expressions (simple) There are currently several syntax options available to write the DSL (xml, spring xml, yaml, Java, Groovy and Kotlin). However to run these, you need to embed the DSL either in a runtime container (for example Karaf) or within code (for example Java). Could Camel be a language on its own? Now that the DSL is so extensive, I was wondering couldn't Camel be a programming language on its own? 1. By combining the DSL's into a consistent Language/Syntax. 2. Enhance the language, so developers can code all Camel tasks through the Camel language (Context, Routes, Endpoints and so on). 3. Run the language directly on JDK (converting it maybe first to Java?). Either one syntax could be used (for example Kotlin) or several syntax options could co-exist next to each other. Every option could have their own extension: clj (camel language java) clx (camel language xml) clk (camel language kotlin) cly (camel language yaml) clg (camel language groovy) For example, creating a project with only clk (or a mix with other syntax)
A developer workflow In addition to the Camel language, I was thinking about its workflow. Especially in regard to REPL's, notebooks and serverless functions. What could a modern workflow in Camel look like? Example 1) Create a project in VSC or Jupyter (locally or in the cloud). 2) Create a camel language file. 3) Program Camel in a text editor (with the help of Camel LSP) or graphically (with the help Karavan). 4) Test it a) locally with Jbang and push result into the cloud witht CamelK b) Test it directly in the cloud (CamelK) So no need to learn any other language beside Camel Language. Much like SQL XSLT or Gradle. So maybe no a full-blown programming language, but on a higher level than a DSL. Of course, it should be possible to extend the language through beans and other stuff. Is Camel a framework or a language? What are your thoughts on this topic? Raymond