On Wed, 12 Feb 2025 11:39:19 -0700, Arthur Naseef
<artnas...@apache.org> wrote:

| It would be great to have some attention on this project, if folks 
| are still using it in practice.

I'm sure there are more than a few, but the number is likely to
dwindle for lack of support.

| With that said, as with all opensource, there is no dedicated person
| assigned to activemq-cpp.  It really comes down to having folks 
| willing to contribute [...]

Yes, but where and how?  There is a JIRA list, associated with a
Github repo (a fairly normal setup), but the gatekeepers seem retired.
IOW, it's _pointless_ to open a JIRA, make a patch, and submit a pull
request, as it will simply be ignored.

Or worse.  Someone actually proposed a proper fix two years before I
joined this list (as I linked to, earlier), and this is what happened:

  https://issues.apache.org/jira/browse/AMQCPP-628

The conclusion is that nothing rates to be done without forking.  The
old setup is dead, with gatekeepers intent on keeping it that way.

| As far as the java-isms in the code, I understand your feeling.  The
| original code was a pretty straight-forward translation of the java 
| code into C++. 

I suspected as much, but this is the first positive confirmation I've
seen.  Thanks!  

| One advantage of this approach was that it made comparing the state 
| of the two projects straight-forward.

I have some sympathy for this idea, but not much.  There are vast
differences between Java and C++ that surface similarities in syntax
tend to obscure.  In general, C++ emulation of Java code is a very bad
idea.[*] (The better approach would be for both sub-projects to follow
a detailed spec, but that raises the spectre of good documentation,
the impatient programmer's favorite nightmare:-))

| With that said, having code that follows modern best-practices and 
| standards is welcome.
| 
| Are you interested in contributing?

TBH, I'm of two minds on this. I would very much _like_ to contribute,
mainly because I think ActivemQ (Classic) and the C++ client are well
tested software and thus valuable.  But I have serious reservations.

First, as alluded to above, I don't see anything at all happening
without a fork - in effect, starting afresh, albeit with an intact
code base.  I don't know what institutional and/or infrastructural
roadblocks would need to be hurdled for that.

Second, modernizing the codebase is a _huge_ ask. And I don't think
"just get it to compile under C++17" is necessarily the best place to
start.  Things like the APR library and decaf need to be replaced -
they are thoroughly obsolete blobs of code. Moreover, certain
prominent Javaisms need to go. E.g., emulations of Java's anemic
iterators and its 'synchronized' keyword, and the endemic use of heap
allocated locals.  These are all utterly gross.  

Third, the inheritance hierarchies are ridiculously deep. That may be
the "Java way of doing things" (I have my doubts on that score as
well), but it is certainly not the C++ way.  A lot of intermediate
"interface" classes strike me as useless baggage and clutter. (While
on that subject, Java's 'import' keyword seems to have inspired a
ridiculous profusion of '#include' directives.  Whatever happened to
forward declarations too?)

Fourth, the public facing interfaces (as well as some internal ones)
also need a re-think.  Not leveraging covariant return types is an
obvious deficiency. Worse is enforcing heap allocation with external
release (i.e. explicit creational methods only).

I guess we need a thorough spec for the things that need to be fixed
to get the ball rolling.

Arjun

[*] For a classic example of the pitfalls, see
https://stackoverflow.com/questions/31383751/log4cxx-segmentation-fault-in-apr-pool-create-ex/58805010#58805010

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@activemq.apache.org
For additional commands, e-mail: dev-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact


Reply via email to