Hi Again,
just a heads up that the topic of moving Camel extensions away from the
Quarkus source tree and generally how such externally developed
extensions can live within the Quarkus ecosystem is discussed on
quarkus-dev mailing list:
https://groups.google.com/forum/#!topic/quarkus-dev/yeo0yvC48zA
Thanks,
-- Peter
On 05/06/2019 07:15, Tadayoshi Sato wrote:
Hi folks,
I like Peter's idea on having a separate repository for camel-quarkus.
In addition to his point, I would add that Quarkus is a newly born, cutting
edge technology, which itself should evolve fast and likely may not keep
how it works now for long as we see in, say, Node.js community. Having a
separate repository should let us experiment fast as well and catch up with
the rapid evolution in Quarkus without touching the main Camel codebase.
On Tue, Jun 4, 2019 at 8:07 PM Peter Palaga <ppal...@redhat.com> wrote:
Hi,
I am fully welcoming the initiative to donate the code of Camel Quarkus
extensions that currently live in Quarkus git repository [1] to Apache
Camel community. I believe that's where the code can attract much more
interested developers and users.
I recently ported a couple of Camel components to Quarkus [2][3] and I
plan to port more in the future.
I'd like to express my opinion on which git repository should be the
final home for that code.
As Luca mentioned, there are two options there:
(a) Apache Camel’s main git repository [4] or
(b) A new separate repository under Apache organization.
I am clearly in favor of (b) and my reasons for that revolve around the
fact that the Camel main repository currently has 824 Maven modules.
That size has a number of negative impacts on developers day-to-day life:
* It takes tens of minutes to build without tests and hours with tests.
* Full test suite cannot be run on each pull request and broken master
is a possible consequence
* I was told it is practically not viable to import that big source tree
into IntelliJ (I am not IntelliJ user). Given enough memory, Eclipse can
now import the whole source tree in a reasonable time [5]. Anyway,
working with it feels rather slow.
Adding more modules to support Quarkus would make the situation even worse.
Having a separate repo for the Camel Quarkus extensions would make the
life easier for both folks working on the Camel side (smaller source
tree) and on the camel-quarkus side (faster dev builds, faster CI, more
control over the supported Camel version).
I prepared a proof of concept how such a separate repository could look
like: https://github.com/ppalaga/camel-quarkus
For the bleeding edge development work the repo is using srcdeps [6][7]
to manage non-released dependencies of Apache Camel and Quarkus. srcdeps
allows for declaring dependencies in terms of git commit sha1s instead
of versions present in remote Maven repositories.
srcdeps is able to reduce the Maven module hierarchy of the dependency
project to only those modules required by the current repository. Thanks
to this, only 62 Camel modules need to be built to satisfy
camel-quarkus. Building those 62 Camel modules takes about two and a
half minutes on my laptop.
I am listing various build times of the camel-quarkus repo in the readme
[8]
[1] https://github.com/quarkusio/quarkus/tree/master/extensions/camel
[2] https://github.com/quarkusio/quarkus/pull/2542
[3] https://github.com/quarkusio/quarkus/pull/2361
[4] https://github.com/apache/camel
[5] https://bugs.eclipse.org/bugs/show_bug.cgi?id=515668
[6] https://github.com/srcdeps/srcdeps-maven
[7] http://ppalaga.github.io/presentations/181011-jcon-duesseldorf
[8] https://github.com/ppalaga/camel-quarkus#fast-build-times
Thanks,
Peter
--
Peter Palaga, Red Hat Fuse
On 04/06/2019 12:44, Andrea Cosentino wrote:
+1 for working with the Quarkus community.
I don't think this would be an incubator project btw, it should be a
subproject if it will go in a separate repo or it will be placed in the
main repo as a platform.
We can discuss this later by the way.
Il giorno mar 4 giu 2019 alle ore 12:34 Willem Jiang <
willem.ji...@gmail.com>
ha scritto:
+1 for working with Quarkus to make the Camel Application more light and
fast.
For the code donation part, we need to go through the IP clearance
process[1].
Please let me know if you have any questions about this.
[1]https://incubator.apache.org/ip-clearance/
Willem Jiang
Twitter: willemjiang
Weibo: 姜宁willem
On Tue, Jun 4, 2019 at 5:45 PM Luca Burgazzoli <lburgazz...@gmail.com>
wrote:
Hi,
In the past months some folks at Red Hat have been working on the
integration between Apache Camel and Quarkus. For those not familiar
with the topic, Quarkus is a new Apache 2 licensed Cloud Native Java
framework tailored for GraalVM and HotSpot that bring fast startup
and low memory footprint to Java based application by leverage clever
build time optimizations and AOT compilation through Substrate VM [1].
The result of the experimentation is available in the Quarkus
repository [2][3] and I’m also working on an experimental branch
on Camel K [4] to bring Quarkus on the K side based on my latest
blog “Adventures in GraalVM: polyglot Camel (k) native routes
with Quarkus” [5]
I do believe that both communities can benefit from a collaboration:
Apache Camel can benefit from Quarkus to become
a) Even more suitable for microservices
b) Suitable for serverless workloads as Quarkus among others enables
built-time warmup of the Camel Context, and elimination of
dead-code
(code that was only used during warmup) which is a key enabler for
very fast start-up and low memory footprint Apache Camel can be on
the innovative forefront with a cloud native Java stack for running
modern serverless workloads on Kubernetes/Knative with Camel K and
Camel Quarkus
So I’m proposing to officially support Quarkus in Apache Camel’s main
repository (or a dedicated one if it suits better) by creating a new
platform along with those we support as today (Spring Boot, Karaf).
Quarkus’ people is keen to donate the code related to Apache Camel
hosted in theirs repository to the Apache Software foundation.
There has been some other users in the community whom have tried
Quarkus and Camel together and written blogs [6] about their
experience,
and Claus also posted a quick gif animation of native compiled Camel
with Quarkus starting up in 7 milliseconds and taking up only 15mb
of memory [7].
Thoughts ?
Luca
[1] https://quarkus.io/
[2] https://github.com/quarkusio/quarkus/tree/master/extensions/camel
[3]
https://github.com/quarkusio/quarkus-quickstarts/tree/master/camel-java
[4]
https://github.com/lburgazzoli/apache-camel-k-runtime/tree/quarkus-runtime
[5] https://bit.ly/2HvOrh0
[6] https://bit.ly/2WDtCbW
[7]
https://www.linkedin.com/feed/update/urn:li:activity:6521869236153970688/
---
Luca Burgazzoli