+++
title = "Exploration and expansion of the community"
weight = 5
chapter = true
+++

## Exploration and expansion of the Apache ShardingSphere community 

Apache ShardingSphere community was invited to attend the Apache Event-join Apache open source community held by at Tsinghua University on November 9th. As an honored speaker, Liang Zhang, the PPMC, gave a talk named exploring and expanding the Apache ShardingSphere community. The main points of this topic are as follows.

### 01 Why open source?

For individuals, you can gain a better career and find enjoyment.

#### A better career

1. More career opportunities. Industries can establish the cloud platform and provide business services through open-source projects. Besides, by contributing to the open-source community, industries can enhance their technical influence. Since industries can benefit from open source, many of them are hungry for open-source talents. The open-source job is always technique-related and community-based, which relatively makes your schedule listen to yourself.

2. Better capability. By contributing to the open-source community, you can improve not only technical skills but also soft skills like Language skills, social skills, and marketing skills. In addition, you will achieve innovation ability as well,  if you have a chance to create a brand new open-source project.

3. Great personal relationship. You will not only focus on your job, salary, KPI, e.t. Those industry-related activities, such as attending a seminar,  tech sharing, writing blogs, even tech investing, will attract your attention. Besides, you can also communicate and make friends with foreign people worldwide in the international open-source community. As this phrase said, engage your body familiar with job skills; engage your mind closed to the world. The open-source experience will bring you more potential opportunities.

4. Earned public recognition. The effort of open-source work you did is totally open to anyone at any time, which means you can gradually receive public recognition. In contrast, the effort of in-company work is supposed to be judged by your leaders themselves, not the public, which means an inadequate evaluation is likely to give.

#### An enjoyable career

1. Self-growth. If you enjoy doing one work, you will grow up with pleasure. As a software engineer, you should learn to enjoy your work and be a self-driven person, which is the real shortcut to success.

2. Accomplishment sense. When your work is recognized by others, when your work made the project better and better, when you got new skills, you will strongly feel the sense of accomplishment and the pleasure of your career.

### 02 What is the Apache software foundation?

The Apache Software Foundation is a non-profit organization, many of whose projects have played essential roles in the internet industry since 1999.  Besides, those Apache projects have been the first choice for developers to create their projects. Therefore, if you knew little about Apache projects, such as Apache Tomcat, Apache Commons, Apache Maven, Apache Hadoop, etc., you could not receive a better offer as a Java Developer or a Big Data engineer.

Recently, more and more Chinese projects entered the Apache foundation. There are 9 Top-Level projects and 10 incubator projects from China until now, which is a piece of good news for those Chinese newcomers since it is challenging for them to involve a wholly foreign open source community at the beginning. Whether it is a Chinese project, it must be under the Apache regulations and follow its policy. However, it is still more accessible for people to start with an Apache project coming from their country. The reason is that they have more chances to communicate with each other in their first language so as to dive into an Apache community quickly. 

### 03 What is Apache ShardingSphere?

Apache ShardingSphere (TLP) is an open-source ecosystem consisted of a set of distributed database middleware solutions. From the GitHub data, its community is active and growing up fast, which benefits from its stable micro-core and scalable architecture.

### 04 Apache ShardingSphere Community Statistics

Since the community is as important as the project itself for an open-source project, ShardingSphere takes more effort to build its community. Thanks to everyone's contribution, the community has fast growth, and the following statistics give us clear evidence. 

1. Mail list
Looking at the data from dev@, we found 38 emails about 20 topics from 14 participants in May 2019, but with four months of effort, the data rose to 148 emails concerning 34 issues from 37 participants. Besides, we moved the GitBox emails to notification@ to avoid including notification emails and display the pure email data.

2. GitHub 
The commits graph of GitHub was almost effected by my commits before June 2018, which means its development only depends on one person and is full of the risk. To turn this situation around, we did a lot of works. Finally, we got 33 contributors, 100 merged PRs, 167 handled issues, 591 modified files, and 4K new stars, which marks it has become an active and open community.

3. Contributors
There were only 11 initial committers during an extended period. This situation was turned around until two or three months ago. And presently, we have 15 PMCs, 10 committers, and 90+ contributors. However, we are still ongoing, so we believe more and more PMCs, committers and contributors will dive into our community in the future.

### 05 The core ideas of the Apache ShardingSphere community

1. Community is over code.  This is one of the essential principles of Apache Software Foundation, and exactly what we believe. Although a project itself is necessary, the more important point is to build an active and open community, only by which this project can evolve and develop continuously. 

2. Believe contributors. Anyone willing to join an open-source community is generally full of enthusiasm and wants to make the project better through their contribution. Therefore, the community is supposed to respect and welcome them and provide the needed help. However, one point needed note is that committers and contributors are different. We would like to grant more privileges to a committer and trust them more since they have become familiar with this project and built faith with others.

3. Automated Testing. More contributors, more Pull requests. In this situation, it is hard to guarantee the effectiveness and efficiency of the project by manual. Therefore, we decide to rely on automated testing to evaluate each Pull request, which helps contributors and reviewers merely focus on their work.

4. Self-service first. More questions get increased with more and more users. How to handle these questions efficiently? Our solution is to build user self-service channels firstly and provide other communication ways. In general, users can solve some of the common issues with documents and FAQ pages by themselves. If that does not work, users can raise their special issues on GitHub or discuss them by email. 

5. Public and online working mode. Public work means the issue only discussed in public is valid—otherwise, invalid and no chance to be solved. Online work means most of the discussions are online and asynchronous, requiring participants to provide information as detailed as possible.

6. Architecture refactoring.  Through SPI, we made each of the modules relatively independent, which means when you make some changes to one module,  it will have little effect on another module. For instance, ShardingSphere parser can parse many dialects of different databases out. If a contributor modifies MySQL's grammar, he or she does not need to take care of other grammar definitions of other databases. Consequently, many contributors work on different modules of this project, mostly without significant conflicts.

7. Extensive guidance. A lot of documents are given to help users and contributors to learn more about this project and community quickly and easily. No matter it is about how to build, or how to contribute to this community,  you can find these questions or topics on our website easily. In other words, extensive guidance helps users get started quickly and saves the community's effort to answer repetitive questions.

8. Coding standard. Standardized coding style makes contributors easy to understand and values their work. Once one project begins to rot, it will get out of control quickly. Because of that, we provide check style file and coding standard requirement to help the project go ahead continuously and gracefully.

9. Sorting requirements. The community always requests bugs, new features, or function enhancement. However, as the core committers, we need to make a schedule for these requirements. That is, we need to decide which issue is supposed to include in the next release, what the deadline is, and which contributor is willing and qualified for this issue. As a result, a release discussion will collect the suggestions and opinions from different ones and decides the content and DateTime of the next release.

10. Multiple channels for communication. Different talking channels are fit for various discussions. For example, all the important notification and discussion will take place in email threads; Questions and code commits are raised in GitHub  (which also help archive); The detailed or wordy discussion is welcomed in the WeChat group or slack since people can give or receive replies promptly.

There are many ways to join in an open-source community, like coding, sharing,  discussing, translating, or answering questions. We welcome everyone on board to light up your mind, work on your favorite parts, and improve yourselves!
