< Back to Blogs
Apache Qpid Moves Forward by Sandy Gupta on September 29, 2009 06:15AM

Microsoft recently made a significant code drop to the Apache Qpid project. For those of you who don't know, Qpid is Apache's implementation of the Advanced Message Queuing Protocol (aka AMQP), which is an exciting new reliable messaging protocol developed by some of the world's biggest messaging users (think names like JPMorgan Chase).  

What we've done is a Windows Communication Foundation (WCF) Channel for AMQP. Our goal is to provide a first class AMQP experience for the .NET developer. And, since this is an Apache project we're talking about, all our code is obviously open source.

A couple of years ago the announcement of Microsoft making a major contribution to an open source project would have been sensational news, but things have moved on a little bit since then. Now it's just another day's work at Microsoft.

As the manager of this effort at Microsoft, I'd like to talk a little about what we bring to the open source table. We joined the Apache Qpid project, which was essentially focused on Linux, to help the community develop a port on Windows and integration with the .NET stack.

That was reflected both in the code itself and also in the build environment it used (autotools). One of the areas where we invested was the introduction of a cross-platform build and test environment (CMake), so as to smooth the way for cross-platform work.

We have continued to adopt our typical product development quality assurance mechanisms when working with open-source. These include team-based design and code reviews. We also use automated code-quality tools, such as StyleCop, to ensure consistent style and to detect common programming errors.

We developed the initial version of the WCF Channel on a private Subversion repository and used a private bug database for logging issues and work items. Now we have made the initial drop to the community, we intend to do all revisions in the Apache repository and switch to using the community Jira-based bug tracking system.

Today we have a group of 5 engineers working with Qpid, both vendors and full-time Microsoft employees. Over time, it's our goal for many of these folks to achieve committer status on the project.To date, we've worked on the following work items:

  • The port of the C++ broker and client library to Windows
  • Introduction of the CMake-based cross-platform build and test environment
  • Windows Communication Foundation (WCF) Channel to provide a first class AMQP experience for the .NET developer
  • Improved packaging for Windows, including adding DLL support and a Windows installer
  • In progress: Persistence provider for Windows leveraging SQL Server and the Common Log File System (CLFS)

Starting soon:

  • SSL support on for the Windows client library and broker

For me, leading AMQP initiative at Microsoft has been quite a learning experience. Our collaboration with the community has been strong and we have received full support from our executives.

Here at Microsoft we understand that AMQP can become the SMTP for Messaging. This means AMQP is going to have a huge beneficial impact on all kinds of users in the years to come, and we want to help make that happen.

Helping develop the open source AMQP reference implementation at Apache Qpid as part of a broad community effort is our way of moving the AMQP ball forward. I'll have a lot more news to report about our efforts in the months to come.

Comments RSS
  1. alexis said:

    Sandy,

    Congratulations on making this contribution to AMQP and open source!

    Please can I ask on behalf of the RabbitMQ user community:

    1. What is the URL of the WCF code have created?  

    2. Do you have plans to make this interoperate with RabbitMQ?

    It would be *great* for customers to be able to use your code and ours.  

    As background on that: We have quite a few people using our RabbitMQ .NET edition, both on Microsoft Windows/.NET and on Mono.  It has been fully ported to Windows and can run as an operating system service.  Clients include C# and WCF, plus there is some Visual Studio integration.  

    I am hoping that the open source community around AMQP can all get involved in this.

    Cheers,

    alexis

    posted at 11:29AM 10/01/2009
  2. Sergey said:

    First of all, Microsoft doesn't help and doesn't make "a significant code drop" to the Apache Qpid project. What it does is a simply port for open source project on its proprietary .NET framework. Secondly, regarding making this port open source - Microsoft doesn't have any other choice other than obey to Apache license because it uses this code. Your post looks like another rant for so called "open for open-source" Microsoft, which is actually not true. If Microsoft had a chance, it would close the source code and made it proprietary. But, as I said earlier, it just doesn't have any legal reasons to do so regarding their port for Apache Qpid project.

    posted at 02:56PM 10/01/2009
  3. Sergey,

    I’m the technical lead for this project at Microsoft. I’m sorry that you don’t see the value in our contributions to Qpid. Our first goal for this project is to give users a great experience with Qpid on Windows. The key value proposition of AMQP is to provide a wire-level interoperability standard for message-oriented middleware that allows users to connect applications running on heterogeneous platforms. I would argue that adding support for Windows is a requirement to deliver on that promise.

    Also, regarding your comment “If Microsoft had a chance, it would close the source code and made it proprietary” – of course, you’re entitled to your opinion but I can assure you that that’s not the case. In fact, if you read the Apache 2.0 license you’ll see that there’s no obligation to license any additions with the Apache license; we could, for example, have kept the channel code proprietary.

    Best regards,

    Dave.

    posted at 11:29AM 10/02/2009
  4. dingham said:

    Alexis,

    You asked a couple of questions:

    Q1. What is the URL of the WCF code have created?  

    If you're looking for the code then it's checked in to the trunk of the Apache Qpid project - see svn.apache.org/.../wcf

    Q2. Do you have plans to make this interoperate with RabbitMQ?

    Our work is currently focused on Apache Qpid but I would love this channel to work with all AMQP brokers, after all that's the promise of AMQP. This channel layers on top of the Qpid C++ client library which supports the latest (0-10) version of the protocol. My understanding is that Rabbit only supports 0-9 or 0-9-1 so things aren't going to work out of the box. Distributed transaction support is probably going to be the biggest stumbling block as this is missing from 0-9*. This is a key feature for our customers and we're just finishing up the updates to the channel to add this support.

    Best regards,

    Dave.

    posted at 04:58PM 10/06/2009
  5. It is great to see the work that started last year with the Eclipse Foundation at EclipseCon 2008 in

    posted at 10:59AM 10/28/2009
  6. This week marks the 10 th anniversary of the Apache Software Foundation, which is being celebrated at

    posted at 04:58PM 11/04/2009