[this post is available online at https://s.apache.org/c358 ]
by Von Gosling, member of the Apache RocketMQ Project Management Committee
Last year, I wrote a blog about how communities from a non-English-speaking
country understand and use Apache way for open innovation. In that article, I
mainly expressed the desire to be open as a developer, to be good at using
mailing lists, listening to community voices and making decisions. In addition,
project communities can also organize more programming activities like Google
Summer of Code ("GSoC"; applications are now open for the 2019 program) to help
developers learn how to become involved in the community-led development
process as well as provide greater help and encouragement for developers to
join the community. After that, I have been thinking about sharing some Apache
RocketMQ community building and collaborative innovation stories through some
real-life examples. It is my great honor to share some stories with community
at the upcoming ASF anniversary celebration. IMO, The Apache Way has greatly
helped Apache RocketMQ to grow its community since entering the Apache
Incubator in 2016.
Apache RocketMQ was originally created and used as a distributed messaging
engine for online e-commerce transaction processing. It could undertake
billions, even trillions of message transmissions in many companies’
production environments. RocketMQ has been proven to be suitable for
high-throughput, low-latency messaging systems in the large-scale distributed
scenarios. A standard OpenMessaging project on the Linux Foundation provides a
common benchmarking platform[1] for distributed messaging systems in the cloud
including Apache RocketMQ. Of course, as a widely used messaging engine, the
functional level, RocketMQ provides both pull and push models, supporting
scheduled message, ordered message, batch message, broadcast message, message
filtering, dead-letter queue and so on, almost sustaining all classic event
driven or streaming scenarios. Even so, there are still a few core features not
included from an enterprise perspective. Last year, the RocketMQ community
announced three attractive features: transactional message, message tracing,
authentication and authorization. The transactional message implements the
transaction consistency guarantee between the sender and the local business
operation. This feature is a very valuable feature which was initiated and
contributed by several individuals from the financial industry. While based on
transactional messages, we could build a full-stack distributed transaction
platform, which is suitable for long-running microservice.
In the enterprise application for messaging, there has always been a troubling
problem. Where did my message send to? How can I find message accumulation if
the consumer has failed or not? That’s a very difficult task especially when we
are providing cloud pub/sub service, because messaging is an asynchronous
decoupling process, the natural upstream and downstream are not aware of each
other. Fortunately, some guys from the China Mobile Research Institute found
some of the pmc members at Apache RocketMQ Meetup and mentioned their troubles.
So, we showed them the latest RIP[2] plan from the community, which is a very
challenging optimization and improvement for Apache RocketMQ intra code. Under
the help of a Project Management Committee (PMC) member, RIP were proposed,
discussed and accepted. After the necessary time planning, we started to
design, coding and discuss, exchange code implementation details, which
includes several meetups to gather together to discuss and review the code
until the later online verification and released. More interesting, in the
following review process, another cloud vendor from the community has joined.
After simple video communication, the original implementation was optimized to
be compatible with its implementation. Finally, in the community, we are happy
to see that the new version has been verified in production by two cloud
vendors. The ACL feature is also a process in which the PMC and the community
continue to collaborate, and the final version of the RIP is finally published.
Through the meetup we collected the requirements, through open discussion,
coupled with the video communication using Zoom, the RocketMQ community
completed the several important releases in the last year. At the same time, in
order to better promote ecological flourishing, several projects residing under
the Apache RocketMQ external repository were reorganized (80% above projects
contributed by community during incubation). In addition to setting milestones,
this time we added similar incubations and graduation mechanism further reduces
the difficulty of community participation while better guarantee product
quality. Today, several different language sdk projects that have graduated are
from a large number of users in use and maintenance. The enthusiasm of the
community completely surpasses thoughts. It also verifies that the future cloud
architecture is language-independent, even serverless. Under this general
trend, the community's guys actively participated in the RocketMQ
multi-language ecological construction. RocketMQ now supports java, cpp,
python, go, nodejs and other languages are planning and on the way. Even, the
current CPP client can support up to 8 platforms, like CentOS, MacOS, Ubuntu
and Windows.
Not only that, more and more community enthusiasts are also spontaneously
self-organizing: they are also actively planning similar activities in the city
station, but also need to give some attention and encouragement by PMCs. At the
same time, this also provoked us to think about whether the Apache community
should have a developer-oriented role like release manager, such as
developer-relationship maintainer, project manager, to let more users
understand, and become more involved in the product. The community development
in recent years has also brought many new signs to the RocketMQ community.
There are more and more active developers in the community. In roughly three
months, nearly 2,000 emails were sent from the dev email list. Research has
shown that 70% of top banks in China use Apache RocketMQ on the core business
link, approximately 60% of Internet finance and insurance customers use
RocketMQ in their production environments, and 75% of top 20 Internet companies
in China widely use classic pub/sub scenarios.
Recently, the RocketMQ community has been discussing the development of the
next-generation messaging platform. We hope it is a unified messaging engine
with lightweight data processing platform, and welcome everyone to become
involved and tell the PMC what features you are most looking forward to seeing
in future versions of RocketMQ.
Many thanks to The Apache Software Foundation for its open and inclusive
community culture that helps RocketMQ build a broader community. It will soon
be 20th anniversary. I am pleased to represent the RocketMQ community in
wishing the ASF a happy 20th anniversary, hoping for many more and continuing
to thrive.
[1] https://github.com/openmessaging/openmessaging-benchmark
[2] https://github.com/apache/rocketmq/wiki/RocketMQ-Improvement-Proposal
# # #
Part of the "Success at Apache" series, Project Perspectives chronicles how
projects and their communities have benefited from The Apache Way.
= = =
NOTE: you are receiving this message because you are subscribed to the
[email protected] distribution list. To unsubscribe, send email from the
recipient account to [email protected] with the word
"Unsubscribe" in the subject line.