Thoughts of Hiram Chirino

Wednesday, June 21, 2006

AMQP - An Interesting Start

A few days ago the AMQP spec was announced on TSS. I quickly downloaded the spec and I have some initial impressions.

#1: I think it's unfortunate that the "AMQP" sounds too much like it has something to do with ActiveMQ which most folks abbreviate to AMQ, as in, "Have you downloaded AMQ 4?". This along with the fact that AMQ and AMQP are both related technologies, the first is a mom provider and the second is a wire protocol for mom providers.

#2: This is nice spec. I like the client specified "binding" concepts introduced in this spec. Perhaps these concepts can be introduced in higher level APIs like JMS one day.

#3: It seems that one of the goals of the spec is for vendors to be able to interoperate with each other. I have got a feeling that specs like WS-Notification or STOMP have a better chance at accomplishing this. Binary wire protocols are hard to implement and I doubt there will be many implementations of it. If a good open source reference implementation becomes available then this would become more plausible.

#4: It does not go into details of how the content of the messages should be encoded. This effectively means that JMS implementations will not be able to interoperate using AMQP since different implementations would encodes the content of a JMS Message differently. Even for simple things like TextMessage, would they use UTF-8 or ASCII? And it gets even more complex for messages lke StreamMessage and MapMessage.


#5: I may be wrong, but it seems like messages are always sent asynchronously. In some cases the JMS spec requires messages to be sent synchronously. Perhaps transactions can be used to simulate a synchronous send, but wouldn't that add substantial of overhead?

Saturday, June 17, 2006

Problems with Geronimo and RTC

The Apache Geronimo project has recently changed it's commit policy to a Review then Commit (RTC) policy. Which means no one can commit to the Geronimo project unless you submit a patch and then get 3 other Geronimo committers to review, apply, test, and then give you 3 +1s.

In theory, this is supposed to increase the communication between the developers. In practice, it's looking a little scary. For example, I just wanted to move some ActiveMQ integration modules from living in the ActiveMQ project to live in the Geronimo project. Now, before I submitted the patch, everyone agreed that it was good idea. I submitted the patch and now I have been waiting 12 days to get enough +1s.

Why is it taking so long? I think it's because the Geronimo project is bigger than what anybody knows. But we are lucky to have a large developer base that is specialized in different areas of the server. This specialization is what allows us to produced a server with high quality parts that in turn give us a high quality server. I don't go wasting time figuring how what's the best way to implement a Transaction Manager or Deployment system, because I trust the guys that are already working on those pieces.

With the RTC policy, if I we want to get Transaction Manager patch in, folks that might not know ANYTHING about Transaction Manager are going to be looking at those patch and pretending they understand what's going on and then giving the +/- 1's. The same thing goes for the developer tooling, JMS Messaging, etc. etc.

I guess in the long run, it may be good that folks get to know other Geronimo systems besides what they specialize in, but in short term, your going to slow down your development model by at least a factor of 10 (I've already been waiting over 10 days to do something that used to take me 10 seconds). Furthermore, since Geronimo is playing feature catch up, most developers already have enough on their plates, I doubt they also want to review and test other folks patches x3 if the previous development pace is to be sustained.

Wednesday, June 14, 2006

Getting Involved with Open Source

I have a younger brother-in-law that also went in to software development field, and he thinks that I'm the luckiest guy in the world since my day job is basically working on open source projects. Every once in a while he asks me, "How can I get more involved with open source?".

I always say, just find a project that you like and start contributing to it. So far, not much has happened... So Jason, screw that "find a project" stuff.. How about you pick up this issue, and implement it? It's a small little feature that lots of folks would find handy!