Analysis | 7 Open Source Ideas: What Does Open Source Really Rely On to Make You Big Success?

Author: wei_sir

Source: Weiyue Renhua

Editor's Note: The original title was "7 Ideas of Open Source"

Software is slowly engulfing the world, and open source is slowly engulfing the software industry.

Software is eating the world? Yes, for the age when software is needed for shopping, eating, fitness, and parking, and for the age when everyone spends 5 to 6 hours per day using mobile phone software, is there any reason not to believe that software is eating the world? .

Open source is eating the software industry? Yes, because in an age when software is getting richer (that is, software is no longer scarce), software that is not open source will eventually be unable to compete with open source software. For a simple example, if someone wants to choose one of many file encryption software, and when the function and price are similar, the open source or closed source? Of course, we must choose open source, because who knows if there is a backdoor in closed source software?

The degree of success of open source, or the degree of penetration of open source, can be seen from the widespread adoption of China's banking industry. As a very cautious and conservative industry in terms of IT, banks had a basic understanding of open source before 2012 (an approximate number of years). Disdain, basically using all commercial software (referred to here as proprietary software), they think that commercial software is more professional, higher quality, more reliable, more secure, and many of them regard open source software as Different, they are worried about their functions, performance, and security. Most importantly, they worry that after the open source software fails, they cannot find the "original" to solve the problem and "take responsibility."

However, after 2012, the banking industry has gradually increased the use of open source. There are many reasons for this. The most important reason is that after 20 years of Linux, many open source software has become a better presence than commercial software. As a result, when consultants, integrators, and developers provide solutions for banks, the best solutions they have come up with are based on open source solutions, and the bank (as Party A) has been unable to refuse. For example, when a bank wants to build its own cloud platform, after consulting and researching a large circle, he will almost certainly choose an openstack-based solution. If he wants to use container technology, he will almost certainly choose container orchestration software kubernetes. At this time, it is no longer possible to consider whether there is an "original factory" (in fact, there are still service providers), because there are not many better options.

Although banks are still using VMware, Oracle, Websphere, Weblogic, the penetration of KVM, Mysql, Apache, and nginx has become more and more serious. The number of Linux hosts in most banks has already exceeded that of Windows servers, because Linux has already become the mainstream of the entire world. Server operating systems, and commercial support like Redhat, why not use them?

According to the survey, the IT departments of various banks have had to face the "problems" brought by the "new things" of open source in the past 5 years, because the introduction, use, and operation and maintenance of open source are obviously closed from the past. The source software is obviously different. They started to write open source software usage management methods and designated a special office to be responsible for management.

And those foresighted companies (especially Internet companies) have already formed an open source office, already built their entire system on open source software, and have already invested a lot of money and personnel in the open source world. There is no doubt that they It has already obtained huge benefits from open source.

So, what exactly does open source rely on to make it a big success?

This article analyzes the 7 concepts of open source, which helps readers better understand the essential elements of open source. These concepts are "fully autonomous", "highly open", "spontaneous autonomy", "bottom-up", and "free competition" , "Win in reputation" and "community empowerment."

Completely autonomous

Open source is so popular because all programmers like source code.

This is the original motivation for open source.

Hackers want a world of complete autonomy and control, which is no different from others, but it is possible for hackers to achieve this in the field of computer software.

Can't control the world without source code? Yes, if an operating system is closed-source, hackers encounter bugs and cannot be modified when using the operating system, meet requirements and are not adopted, try to study without starting, and encounter monopoly, high prices, overlord clauses and helplessness. Where can I talk about controlling the world.

For another example, a hacker writes a program. He hopes to have an editor that he can control or can rest assured. Not only does the editor need to be good enough, but it is better not to have subsequent troubles, such as no license. Trouble, there will be no trouble for the vendor to stop service. Hackers want this editor to be in their hands. If they encounter a bug, they or someone can fix it, some desired features, or they can implement it, and best of all, how can they toss this software by themselves? Will not get into legal trouble.

In other words, hackers like to do what they like to do in an unfettered, free environment, how wonderful it is!

Hackers want an open source operating system, an open source editor, and an open source compiler, open source browser, open source database, open source web server, open source cloud environment, open source virtual machine software, and open source. Big data tools, open source artificial intelligence software. . . In short, if everything is open source, this is the environment where hackers feel most free and autonomous. This is the ideal of hackers.

If many people have such a demand, and someone can realize it, then this will inevitably happen.

Human society is very interesting. The needs of some people will become the motivation for others. When programmers desire source code, there will naturally be hackers offering their carefully crafted source code, whether they realize it or not, Behind the satisfaction of the needs, there are hidden rich returns.

When hackers wanted an open source operating system, Tanenbaum appeared with MINIX. When people wanted more features, Linus came up with Linux. When people needed a web server, NCSA came up with Apache. When I started to open source my own code, I didn't think too much, maybe I just wanted to say, "Brothers, look at what I wrote? How about you try it? Any questions, or any new ideas, welcome to I send an email! "Today, in the era of more and more companies dominating open source, this original motivation still exists. Some time ago, the main author of open source TDengine Tao Jianhui wrote in the article:

"If a programmer carefully studies our source code and sees how we do it, I will be very happy. If a programmer can learn from my method in the past, greatly cut his bloated system, and greatly improve performance Then, I will be more at ease. Yesterday someone told me in the WeChat group that the RPC module was written efficiently and concisely, and it was ready to be adopted, which really made me feel a little overwhelmed. "

"In more than two years, nearly 200,000 lines of code were put on GitHub. Many friends asked me with concern, how does open source make money? Aside from the open source business model, I think, as long as our open source code is truly created, For the value, some people use it, then the team and I are the biggest winners. If 30 years later, there are still people using TDengine, even if it is only one of the modules and one of the functions, that is the greatest affirmation for us to fight day and night for more than two years. Give me the biggest reward for this programmer. "

"If you find any problem, I will only be happy, and I want to solve it as soon as possible without sleeping. If you like it, you are more welcome to participate in our project. Within five years, more than 90% of the world's data will be physical The data collected on the Internet, if we together develop an extremely efficient data processing engine to process this data, and it is used by global developers, you are one of the contributors, how proud of it. "

In this way, under the driving force of demand and supply, open source starts from the underlying operating system and is filled with the entire development environment and middleware, all the way to the top-level applications. As long as it is what people want, hackers will implement them. There is one thing that has not been open source yet, it must not be something that hackers really want, or they don't think it needs to be open source (such as things that rely on money and survival, such as more customized things).

Therefore, we see that the operating system Linux, Android; editors Vim, Emacs, Atom, Brackets, VS code, version management systems SVN, Git; databases MySQL, MongoDB, Redis, Postgres; big data platforms Hadoop, Elasticsearch, Hbase, Spark; Web server Apache, Nginx, Node.js, Tomcat; DevOps tools Jenkins, Maven, Ansible, Chef; Virtualization software KVM, Xen, Docker, Kubernetes emerged as the times require, these are listed and not listed Open source software has formed a complete software ecosystem. Hackers have lived in a very happy era. He has almost everything he wants, and in almost all IT companies and large non-IT companies, you have You can see these open source software.

Seeing here, you may understand that open source is actually a gift from programmers.

Because the people who really need the source code are programmers, and the people who can really write the source code are also programmers.

Highly open

For software, the source code is open, what else can't be opened?

It depends on the situation, and the extent to which the software is open depends entirely on its license.

The most open situation is "anyone can hack anything", that is, nothing can prevent people from running the product, obtaining its source code, copying its source code, modifying its source code, and promoting its evolution in different directions. And claim to be the product.

This is so open that after getting the source code of others, there will be no legal pressure to "clone" or "copycat" a product. Why is open source being open to such a degree?

On the one hand, you can actually prevent others from cloning, modifying your code, and publishing it under another name, provided the source code is open. Although programmers usually don't do this, they are unwilling to have restrictions. In a generally loose environment, if you restrict too much, programmers are less likely to participate in your project.

On the other hand, this is a world that encourages full competition. If hackers disagree on the direction of the project and cannot reach an agreement, dissidents can fork out of their own. For example, EGCS is forked from GCC, OpenSSH is born from SSH before it was commercialized, and Veracrypt is derived from Truecrypt. Another example is the more famous event in recent years: some people did not agree with the direction of BTC, and forked out BCH, and then others did not BCH, forked BSV. Although there are many quarrels in the process, no one can stop these.

In order to better understand the high degree of openness given to users by open source, let's look at how free software defines the freedom it gives users: (Although open source software and free software are not the same thing, only a few open source software are not Free software, and almost all free software are open source software, so here we do not tangle the differences between free software and open source software, but think about FOSS (Free and Open Source Software) and understand the original intention behind it. )

If a piece of software is free software, then it must provide users with the following four basic freedoms: Degree of freedom 0: Users can run the software freely according to their own wishes, regardless of their purpose. Degree of freedom 1: Users can learn the software freely and modify the software according to their own wishes, so users must first get the source code. Degree of freedom 2: Users are free to distribute copies of the software so they can help others. Degree of freedom 3: Users can freely distribute modified copies of the software, whereby users can share their modifications to the entire community, benefiting others as well.

"Free software" is not the same as "non-commercial software". A free software must allow commercial users, commercial development, and commercial distribution. Commercial development of free software has long been commonplace. Such free software is very important. You may need to pay for free software, or you may get it for free. But no matter how you obtain your copy, as a user, your four freedoms are guaranteed, and you are free to run, modify, distribute, and even sell free software.

You (ie, software users) can redistribute the original or modified version of the software to other users. You can publish for free, or charge a fee (Note: In a market economy, others publish for free, you publish for a fee, you have to consider how to provide benefits to make people pay.) Software can be distributed to anyone, anywhere. The so-called "freedom" means that you do not need to ask anyone's permission in advance for these acts, and you don't have to pay any extra fees for this.

From the above definition of freedom, we can see that the original intention of FOSS is to allow people to better learn other people's code, reuse other people's code, improve other people's code, and distribute software to those who need it, so as to make as much as possible as possible People benefit from software and source code.

But will the free and open spirit of open source be restricted by the state? For example, under the control of the United States Export Administration Regulation (EAR)? This issue has become the focus of attention this year (May 2019). With reference to relevant experts' interpretation, here is a summary explanation.

According to the EAR, Americans, American companies exporting software outside the United States, or providing it to foreigners in the United States as a preparatory act for export, must apply for a license.

However, software that meets the definition of "Publicly available" is not covered by the EAR (EAR 734.7 (a)), which means that most open source software does not require a license for export.

However, EAR 734.7 (b) also states that although publicly available software does not require a license, if encryption and decryption technology is involved, a license must still be applied, unless the encryption and decryption technology itself is also publicly available, then EAR 742.15 ( b) Paragraph provides the source code or reveals the source of the source code to log in for reference.

The Apache Foundation (ASF) issued a statement through the official blog on May 22, 2019, stating:

Reclassified by the Bureau of Industry and Security (BIS) of the U.S. Department of Commerce (effective September 20, 2016), the open source publicly available encryption software source code is no longer publicly available and has been released Subject to EAR.

Open source projects involving encrypted software source code still need to send notifications of project URLs to BIS and NSA to meet the "publicly available" notification requirements in EAR 742.15 (b).

ASF continues to work with the Apache project and its community to ensure that their notifications are up to date and maintained in the future.

Therefore, whether open source software will be subject to US export control is basically not a concern, the source code is already in your hands, and the license has given you such a high degree of freedom. What else do you worry about, what you need to worry about most It might just be: Can you read the source code?

Spontaneous autonomy

The so-called open source community refers to the collection of all people who care, participate, support and help an open source project.

People in the community are spontaneously organized together. "90% of them are users. They are just hitchhiking or playing together. 9% of people are actively participating, submitting bugs, and answering questions. This is a 'contributor'. 1% of people guide and control the direction of the project and delegate tasks. And make decisions, which are 'maintainers', or simply put, they are leaders. "

Eric Raymond said in the famous "Cathedral and Bazaar" article: "Who can imagine that thousands of programmers scattered around the world can use their free time to create a world-class operation through the Internet alone. system?"

He continued: "For many years … I believe that most important software (operating system and really large tools such as Emacs editor) need to be built by a genius expert or several Experts carefully crafted … and Linus Torvalds commissioned everything that could be commissioned and opened to an almost chaotic level, which is really amazing. In the Linux community, there is no quietness and piety like building a cathedral, it is more like It's a messy market, full of different plans and methods. "

The question raised by Eric is that in a large project, we usually can't even meet each other. So how to organize people in the community, especially the hackers who write code? Can a "chaotic big market" really build a grand and exquisite software? The book does not give a clear answer.

In a traditional software company, "organization" is not a problem: identify projects, set up project teams, define roles and divisions of labor, clarify needs, goals, and plans, assign tasks to programmers, and find ways to mobilize their enthusiasm, allocate resources, Ensure progress and check quality. In a rational company, there are a lot of processes and systems doing these things. Even if an agile method is adopted in the development, it is carried out according to the established method under the command system.

However, in an open source community that is completely based on interest (let's not consider the situation where the company hires people to do open source full time), you are facing free people, and you can only get it through his or her voluntary Cooperation, if he / she is willing, he / she can contribute code, unwilling, can not write any code at all (just use it), if he / she is capable, his / her code can be If adopted, his or her code will probably not be adopted if the ability is not sufficient.

This is entirely based on the will and ability of the individual. The leader of an open source project, all he needs to organize is to find capable volunteers and submit power to the corresponding code.

In a large community, there are usually several different roles:

1. Leader: For example, Linus Torvalds, as the founder of the kernel, is undoubtedly the highest leader of the project. In theory, he has the final say in any transaction of the Linux kernel. In other projects, one or more people may be jointly responsible. For example, the Node.js project uses the Core Technical Committee mechanism.

2. Maintainer: The leader directly delegates some decisions and modules to the maintainer, and the maintainer can also delegate some of its work to the maintainer at the next level. For example, Linus Torvalds has several kernel maintainers responsible for different modules.

3. Committer: Some open source projects will set up a group of people who can directly submit code to the trunk. They have proven themselves competent and reliable, and no longer need to submit to the maintainer for review. However, the submitter has no final decision on the code. If the maintainer or the project leader finds anything, they can type back the submitted content.

4. Contributor (Developer or Contributor): Contributors can do a lot of things, such as helping answer user questions, contributing code or documentation, participating in discussions on the mailing list, or submitting code committers. Compared with the previous role, the contributor has less power over the code.

5. User: Users provide goals for the project and help the project continue to evolve. As members of the community, their most valuable part is to raise requirements, report defects, and make suggestions.

Although Eric uses the term "bazaar" to describe the open source model, the programmers in the community are by no means a horde, and hackers will never let their code out of control. The code must always be clear, clean, concise and beautiful. Only programmers who can do this can be given the right to maintain the code. Therefore, this is a typical society with the power to bring power, or more straightforward, this is an elite-led society.

So, are there similarities between the bazaar mode and the cathedral mode?

Yes, the two are not completely opposed.

Before the first release of the Linux kernel, Linus's elaborate design (cathedral mode) must be condensed, although it was written from the bottom up, although it was only a summer work for college students, although it only had about 10,000 lines of code ( Linux 0.01).

Then, Linux went open source and attracted a large number of programmers to participate, and development entered a market mode. Today, more than 100 companies and nearly 4,000 developers have participated in the development of the Linux kernel. The number of kernel source files has reached 53,000 and the source code has reached 21 million lines. Linux adds 10,000 lines of code every day and deletes 5,000 lines of code. Modifying 1800 lines of code, Linux changes 8 times every hour. To outsiders, this is indeed like a mess market, but this does not mean that the project is out of control.

Linus is connected to more than ten core maintainers, each of whom has his own specific area and project content (for example, the network, wireless, USB driver, ext2 or vfat file system has the corresponding top person in charge), each time there is a new development During the mission, Linus will assign it to the corresponding person, and these more than ten core contributors have their own small teams of masters who are well known and trusted.

Linus will not and cannot personally review every design and change. Instead, following this hierarchical structure (Cathedral model?), Hundreds of maintainers are responsible for code review and integration. In Linus's view, everything is under orderly control (in order to better control the code, Linus also specially developed the code management tool git).

This is like a large group of skilled craftsmen (including some teams of construction companies). Regardless of their interests, for a common goal, they participate in the design and construction of a cathedral group from all over the world. Linux kernel is such a cathedral Group, each subsystem is a cathedral, each cathedral has a leader responsible for design and construction, there are hundreds of construction experts under them, they use consensus, rules, like git, gcc, Mailing lists, such as design, construction, and collaboration tools, use collective power (they will discuss and vote) to build these beautiful cathedrals. Linus, as the top leader, will not force them, let alone pay them. Everything is that these experts voluntarily bring their own dry food, whether they are individuals or companies.

The essential difference between the bazaar mode and the cathedral mode is that the former is autonomous and autonomous.

bottom up

Bottom-up is the most common law of nature. Open source as a thing developed from a grassroots society will inevitably follow this law.

In the open source world, this phenomenon can be observed from at least three levels: technology, ecology, and achievement.

From a technical point of view, throughout the history of open source, those very creative software were initially a less clear and hazy idea in the author's mind, and then cleared step by step based on the author's ability and experience. In the middle, after several structural adjustments, large and small, after two or three rewrites, it finally took shape. When the open source project first appeared, in most cases it was only initially operational, and then attracted more programmers' attention and contributions through its creative features and prospects.

At the beginning, Linus just wrote a terminal emulator for reading the Usenet newsgroup on the school network on Minix. He modified two processes that he had written to test the task switching ability. One process read information from the keyboard and sent it to Modem, another process reads data from the modem and sends it to the screen; in order to achieve these functions, he wrote down the keyboard and monitor drivers; in order to download files from the school network, he wrote the disk driver, and then He wrote a new file system based on the Minix file system; that is, he used Minix as a scaffolding and gradually built his own Linux. The summer vacation in Finnish schools is a bit long. The summer vacation in 1991 was put in from mid-May to mid-October. Linus devoted all his time to programming, 7 days a week, 10 hours a day, all writing code. In September 1991, version 0.01 of Linux was made little by little.

Ecologically, the relationship formed between open source software is also bottom-up. First, there is a language, compiler, and operating system, and then based on the various functions provided by the operating system (such as file system, memory system). , Hardware drivers, etc.), hackers made binutils, made shells, made code management tools, integrated development environments, made databases, Webservers, browsers, made virtual machines, Made javascript, package management tools, various application development frameworks and components, big data, cloud technologies, and various end-user-oriented applications. Hackers always make things at the bottom, and then make things at the top, and they always have practice before they have theory. They always have code before they have design patterns, architectures, and software engineering.

From the perspective of achievements, most hackers started from scratch and started from a humble program. There was no big idea. Linus only started to play by himself (Just For Fun). I didn't think about how to change the world, saying that "if I really knew the difficulty of building an operating system from scratch, I would definitely not have the courage to do it." In 1999, Linus mentioned in the article "The Linux Edge": "Linux now has millions of users, thousands of developers, and a growing market. Linux is used in embedded systems and in robotic systems. In the space shuttle, I want to say that I know these will happen, these are all part of the plan for world domination. "Although this may be just a witty expression .

Zuckerberg started out only as a program that allowed students to choose the best appearance in a bunch of photos (Facemash). He did this only because it was fun, and then he started to do a Harvard student exchange. Website: Facebook. With the growth of Facebook, after the acquisition of WhatsApp and Instagram, Zuckerberg ’s achievements and ambitions have gradually upgraded. In February 2017, Zuckerberg stated in a statement that “the past 10 years , Facebook has always focused on helping users connect with family and friends. The next step is to become a new social infrastructure to ensure the safety of the community, increase everyone's participation in social affairs, and increase social inclusion. ", 2019 6 In January, Facebook proposed the Libra plan to "recreate money, reshape the global economy, and make people around the world a better life." Who can imagine that a programmer, from bottom to top, has made such achievements.

By the way, the way that open source software enters the Fortune 500 is not the top-down approach advocated by Eric. Open source does not enter the enterprise because of the CEO and CTO's advocacy and orders. Open source is still in its usual way. Unhurried attitude, with its irresistible strength, pushed into the Fortune 500 from the bottom up.

Free competition

Open source is a world where strength speaks.

What is open source software competing for? Who competes for software, who has higher ratings, and, ultimately, who gains more market share.

"Talk is cheap, show me the code" is a classic interpretation of this. In January 1992, there was a famous debate. As the author of Minix, Tanenbaum posted a criticism of Linux as a large and monolithic operating system instead of the more advanced microkernel design that has already been proven. It ’s like stepping back to the 1970s, like taking a C program, rewriting it in Basic, and writing a monolithic operating system in 1991. It ’s too bad. ”Linus said,“ Linux beats Minix in most respects … If the microkernel is the sole criterion for judging the operating system kernel, then you may be right, but why don't you mention that Minix does not do a good job of the microkernel and is really There are still many problems with multitasking (kernel level)! ".

How could Linus have the confidence to fire on a computer professor who has studied operating systems for many years? That's because he really made a kernel that is easier to use and more practical than MINIX, and really got more welcome, so he can say that, in theory, Tanenbaum is about right, but in practice Linus won.

Competition abounds.

In 2004, in the era when Apache occupied the largest share of Web servers, the Russian Igor Sysoev released Nginx (and Engine X). A clear goal of Nginx is to exceed the performance of the Apache Web server. It uses asynchronous technology to successfully solve the C10K (Concurrency 10K, 10,000 concurrent) problem. It has amazing performance such as less memory consumption, strong concurrency, and flexible and simple configuration. Quickly adopted widely. As of June 2019, of the world's top 1 million websites, Nginx's share has risen from 3% 10 years ago to 27% today, while Apache's market share has fallen from 66% to 32%. Microsoft IIS fell from 19% to 9%. Among the top 10,000 websites with the highest traffic, Nginx usage has surpassed Apache (30% vs 29%).

In 2015, Google open-sourced Kubernetes. It is based on the cluster management tool Borg that Google has used internally since 2003. Soon, Microsoft, Red Hat, IBM, and Docker joined, and Google partnered with the Linux Foundation to form the CNCF Fund. (Cloud Native Computing Foundation), provides Kubernetes as a seed technology. Currently, Kubernetes has 380 companies and more than 2,500 developers participating in the development. In competition with similar projects Swarm and Mesos, Kubernetes quickly occupied the absolute leading position in the container scheduling orchestration field.

Software is competing, and individuals are competing.

The rules of personal competition are simple. If your contribution-of course, the code contribution-is recognized by your peers, you will gain reputation and power.

In June 2019, the ASF official blog announced the addition of 40 Apache members worldwide, and Zhang Huxing of Ali was fortunate to be one of them. At this time, there were 771 ASF members worldwide and only 13 in China (members have the right to elect boards, become board candidates, select other members, and propose to include a project in the ASF incubator). How did he do it? Zhang Huxing recorded the process. The following is an excerpt.

In 2014, I joined the Alibaba Middleware team and started to take over the maintenance of the Alibaba Group's application containers. At that time, the middleware team maintained a private branch of Tomcat. The biggest goal was to unify the application containers of all groups as Tomcat.

Since its first release in 1999, Tomcat has been a star project of the open source community and the Apache Foundation. It still maintains the top market share in the application container field. After 20 years of development, it remains unabated. After so many years of development, Tomcat has never appeared in China.

I started by fixing bugs. The first patch is to fix a Websocket test case failure. Fixing this problem involves some refactoring of the code. I still remember that I was very cautious before submitting, and I discussed it with the leader many times, and finally formed a more satisfactory plan. Immediately after submitting to the Tomcat community, the community responded and merged the patches I submitted. I am very happy to see my name appear in the Tomcat release note.

After tasting the sweetness of contribution, the team's goals also adjusted. The structure of the internal version of Tomcat and the open source version must be completely consistent: it is very easy to merge the open source Apache Tomcat; the internal enhancements are also more convenient to merge into the community.

Subsequent contributions to the community mainly come from three aspects: First: Alibaba uses Tomcat to fix problems encountered in large-scale and high-concurrency scenarios. It is more typical that the wireless gateway application at that time adopted the Tomcat NIO + AsyncServlet architecture. As an entry application, there was a relatively large failure due to the abnormality of Tomcat under high concurrency. Later, it took a lot of energy to troubleshoot this problem. , Which finally completely fixed the problem. Second, Tomcat fixed a large problem when it was rolled out in Ali. For example, we found some behavior that does not conform to the Servlet specification. Third, actively participate in the open source community and fix some existing problems.

On the morning of a normal working day on August 23, 2016, I opened my mailbox and saw a letter from Mark Thomas, the core developer of the Tomcat community, a member of the Java EE specification expert group, and a member of the Apache Foundation board at the time, inviting me Become a Tomcat Committer. The moment I opened the email, I felt like my heart was shaking, and I was a little excited.

In 2017, Ali restarted Dubbo's open source maintenance work and decided to donate Dubbo to the Apache Software Foundation. I have been involved in the Apache community for several years, and naturally took on the job of helping Dubbo enter the Apache Foundation incubation. From contacting the mentor to revising the proposal, Dubbo finally passed the community voting of the Apache incubator and officially started incubation.

The first release was an important milestone in the incubation process. In my opinion, the significance of release is far greater than the work at the code level. It also includes accurate licenses and copyright notices, code and dependencies that conform to specifications, and accurate and consistent signatures. Dubbo spent a lot of time preparing and fully documenting the entire process. During the incubation process, 7 different Release Mangers took turns to ensure that different people can complete the release.

On the eve of Dubbo's graduating, suddenly one day, I opened the mailbox as usual, and suddenly found that I had an Invitation to join The Apache Software Foundation Membership. There was a surprise in my mind. After opening it, I found out that it was an email inviting me to become an ASF Member, which made me very unexpected.

In the ASF Foundation, a new member was nominated and elected by other existing members. Zhang Huxing gained such a status by relying on his ability, contribution, and recognition of his peers.

Win in reputation

What do hackers get by contributing their own code?

In addition to project development, capacity growth, giving back to society, and self-realization, the biggest benefit is reputation.

This is also the original intention of many hackers to contribute code. Tao Jianhui, the author of TDengine, said this directly:

"No matter how much money, it is difficult for people to leave traces in history, but a good work can be passed down and let future generations have a good taste. I hope that the TDengine that I led and developed will become a legacy, Leave a dent in the world ! "

Reputation brings direct benefits: once someone establishes his reputation in the open source community, basically he will no longer worry about his career, they will be very sought-after, although they are often distributed around the world, this does not hinder the business Scramble to hire them.

As Autodesk Martin, Director of Opening, said: "If you plan to hire a maintainer or want to hire a strong contributor, keep in mind that these people are staring at a lot of companies and they are the world doing enough People who work flexibly mean that although they change from one company to another, they work on the same project, and the only thing that changes is the name of the company that signs the salary. "

Reputation brings more intangible benefits: someone will listen to what you say, there will be support for what you want to do, and there will be more people willing to cooperate with you.

Now, the mainstream force of open source contributions has been transformed into companies. Various large enterprises, especially Internet companies, have begun to publish their own open source projects in various ways. Why do companies open source their projects?

The reason is the same. If the law is obtained, the company will not only gain reputation, but also gain more benefits.

37signals is a very small company with few employees, but it is very well known in the industry. Its fame is largely due to the revolutionary design concept of Ruby on Rails, a revolutionary web rapid development framework written in Ruby by employee David Heiner Hansen during his work. , Greatly improving the development efficiency of WEB websites. 37signals chose to release this project in an open source manner, which caused a sensation in the industry. In the best-selling book "Rework" published by 37signals, there is a paragraph: The best chefs are willing to teach their own cooking skills on public channels. This not only does not harm the commercial interests of the chefs, but greatly increases the chef's This is a great move for chefs.

What are the benefits?

First, the project will grow due to open source

Google's decision to open source its artificial intelligence system TensorFlow is based on this consideration. Google Chief Scientist Jeff Dean pointed out that traditional software development is too slow, usually a programmer spends months writing code, Then discuss it at the meeting, and then make corresponding modifications based on other people's opinions. In contrast, if open source collaborative development is adopted, Google developers can collaborate with the outside world in real time, and people outside of Google can also participate in the preparation and improvement of TensorFlow, and the development progress of TensorFlow will be greatly accelerated.

Taosi also experienced repeated discussions and reflections before the core part of TDengine was open sourced. After careful consideration, it finally decided to open source. Its official website wrote: "Taosi Data will do its best to build a developer community and maintain this. Open source business model, I believe that without the most core code open source, any software will not win the market. Taosi Data hopes that through open source, quickly obtain market feedback, improve products, improve the ecology, and attract more developers to join this Project. ", If you go to github and take a look, you will find that in just two weeks of open source, TDengine has received more than a dozen suggestions for changes (PRs), many of which include repairing memory leaks and preventing high segment errors Quality patch.

Secondly, open source products may be used by a large number of users, occupy a share advantage, and then make money through other methods

In 2007, Google open-sourced the Android that it bought for hundreds of millions of dollars, hoping to compete directly with Apple, Nokia, and BlackBerry. Prior to this, the Symbian system once occupied the top spot of mobile phone operating systems, and Apple's iOS system was also gaining momentum. However, after the emergence of Android, it took only a short time to win the top spot in the mobile phone operating system market. According to data released by Gartner, Android's share of smartphone systems reached 85.9% in 2018, the second-ranked iOS system accounted for 14%, and the market share of various other systems together accounted for only 0.1%. Google does not charge any fees for andriod, but for the various applications such as Google Search, Google Maps, etc., the system can be charged for profit. This is similar to how Internet companies win users for free and then charge membership fees.

Kafka was open sourced by LinkedIn in 2011 and graduated from the ASF incubator at the end of 2012, officially becoming the top project of ASF. In 2014, the three main Kafka developers came out of LinkedIn to start a company called Confluent. Confluent's products are based on Kafka, of which Conflunt open source is an enhanced version of Kafka, which is still open source and free, but the enterprise version of Confluent Enterprise is charged. It mainly adds a non-open source Confluent Control Center to implement management and Control, can monitor the performance of various producers and consumers in Kafka.

Due to open source, Kafka has been deployed as a key component in many enterprises, but the community version of kafaka itself does not come with a performance monitoring platform. Although some companies have developed such systems themselves, no doubt what Confluent developed should be the most reliable. After all, no one knows their product better than the developers of Kafka. Today, Confluent has more than $ 100 million in annual bookings17, and the reason it can be sold is that Kafka is widely used.

This is a commercial profit model adopted by many open source startups (such as Cloudera, Elastic, etc.) since the establishment of Redhat: open source the "community version" and then sell the "enterprise version" of the product (the enterprise version contains more features, Or it is exactly the same as the community version, except that the GPL license is converted to a non-GPL license, such as the practice of MiniGUI), the cloud service version is sold, and the product support and services are sold. Therefore, it is not impossible for companies to open source their own projects. As long as they can accumulate a large number of users, they can attract users to spend more on more advanced products through more attractive features. Moreover, open source startups can also "original" Identity, provide technical services for enterprises, and solve worries for enterprises.

Attracting talent

Open source products, if it can build a good reputation, open source developers will be interested in the company, and the company can select talents from open source contributors, which provides an opportunity to find each other, recruiting such talents is Very cost-effective, because the programmer's ability has already been tested in the project's contribution, and after entering the job, he can directly start working without running in.

Looking back now, what can a company get from open source? There are at least these points: gain reputation, get cooperation, get users, get customers, get employees. Of course, the company won't get so much at the same time, and the company may not want so much.

Despite so many benefits, companies still need to think twice before making an open source project. They must weigh the pros and cons before making a decision. In recent years, Microsoft has vigorously embraced open source with practical actions. It has also open sourced many projects, but it will obviously not open source the latest versions of Windows and Office.

Community empowerment

Apache has a maxim called "community over code" and it emphasizes that a healthy community is far more important than good code. If the code disappears, a strong community can rewrite it; however, if a community is unhealthy, the code will eventually fail.

The logic behind is obvious, and people are the most important compared to code. The life of open source software comes from people. A piece of software is alive, which means that it is still running and being maintained. If no one pays attention and maintains it, the software will come to an end.

"Everyone collects firewood and the flame is high." The stronger the community, the more likely the project will flourish. In recent years, as a powerful community force (according to the 25th anniversary version of the Linux Kernel development report, the proportion of code contributed by individual volunteers has been reduced to 7.7%, and most of the code is contributed by enterprises), not only open source their own projects It will also contribute to the upstream (that is, this open source project) community while using other people's open source projects.

Some people may ask, if it is profitable for companies to open source their projects, then what is the benefit of hiring full-time employees to participate in upstream development? Why do we have to contribute to the upstream, isn't it possible for the fork code to come directly and do it yourself?

This sentence is worth thinking about: "If an open source project plays a very fatal role in your company's products, and your company has only one person contributing to the upstream, you are at the risk of a single point of failure, and you There must be a continuity plan, and you need more than a dozen people to do it. "

The company downloads the open source code and then does it itself, of course, but this is a way to stay away from the community. Over time, the cost of trying to introduce bug fixes or new features from the next version of the community will increase. Big. Therefore, the easiest way is to let your employees spend time or even full time to participate in open source projects. It is worth the money. The example of Ali's contribution to Tomcat described earlier clearly illustrates this problem.

Domestic enterprises such as Ali, Tencent, Baidu, Huawei, China Mobile, and China Merchants Bank have adopted open source as a strategic act in recent years. They have continued to open source their projects and actively participate in upstream projects. Through their contributions, they have been adopted by the Apache Foundation and Linux respectively. Foundations, OpenStack communities, MariaDB foundations, etc. are accepted as platinum, gold or silver members, which means that Chinese companies begin to have more say and influence in the open source community.

Finally, it is necessary to introduce the foundation a little, why does it exist, and what role does it play?

First look at the community of pure programmers, what might be wrong.

1. Possibly lack of management. A healthy community needs to deal with issues and PRs in a timely manner, it needs healthy discussions, and it needs to have a normal release frequency, so that it can gather popularity and attract more attention and contributions. Hackers are almost entirely driven by interest. Sometimes they also become lazy, projects sometimes fall asleep, some user-pleasing functions will be delayed, and projects will lose their required activity.

2. May be lacking in operations. In order to promote the better development of the project, some non-coding tasks are necessary, such as brand building, promotion, operation, donation acquisition, legal proceedings, training, certification, etc., but for technology-hungry hackers, they even realize the importance Sex, even if you have the ability, may lack the initiative to do these things. These things need special people to do it, and they also need special funds. Linus once said: "If you are an engineer, chances are that you only want to deal with technical issues that interest you, and you want to transfer everything else to others … fortunately you don't need to worry about business and management The problem, as long as you can get the salary without worrying about raising your child to school. "

3. There may be a lack of governance. Open source projects have reached a certain level. After donations and contributions from multiple companies, how can conflicts between enterprises, and between enterprises and communities be handled and reconciled? This is a problem at the governance level, and it is also a headache, and hackers may not like it.

Therefore, the foundation came into being. On the premise of non-profit and good wishes, these things were slightly uninteresting to hackers.

The Apache Software Foundation (ASF), founded in 1999, is the world's largest open source software foundation. In the past 20 years, it has developed and incubated more than 350 open source projects, such as Apache HTTP server, Ant, Hadoop, Kafka, Maven, Struts, Tomcat, Zookeeper, etc., all of which are its projects. ASF was established in accordance with US Non-Profit Organization Regulation 501 (c) (3), and its purpose is to "create free software for the public good." The foundation is governed by a board of directors, which currently consists of nine members and is elected annually by all ASF members.

The Linux Foundation is also a non-profit organization whose mission is: "Promote, protect and regulate Linux, create a sustainable open source ecosystem around open source projects, and promote technological development and commercial adoption." Linux, Hyperledger, Jenkins, Let's Encrypt, Node.js, Kubernetes, Opendaylight, Xen are all projects of the Linux Foundation. Unlike ASF, usually top corporate members have the opportunity to enter the board of directors or various technical decision-making committees ( TSC), whose seats are mainly elected by corporate members. The Linux Foundation made it clear that the funds received by the foundation are mainly used for infrastructure and people engaged in open source development, including Linus Torvalds.

postscript

That's it for the seven concepts. If you want to study in detail, you can actually put out a few more, such as what is "happy to share", "focus on users", "consensus-driven", "highly transparent", "elite-led "," Collaboration and efficiency "and so on, but I think that having these seven can basically explain the problem, and all these concepts are interrelated. The key is to understand the dynamic structure behind open source and its irresistible advantages. .

In general, in terms of demand, people need source code to achieve a high degree of autonomy and security and controllability. In terms of supply, providing source code is conducive to winning more attention, reputation, users, and the market; open source is highly open and free. Human wisdom has been better shared and developed, reducing learning costs, reuse costs, improving costs, and breaking the technology blockade; open source provides more free competition opportunities to make those who are capable and software stand out; open source, and ultimately benefit The entire software industry and society.

Today, more than 80% of smart phones use open source, 90% of public cloud loads use open source, 60% of embedded systems use open source, and even Microsoft has embedded Linux in Windows 10. So, why not believe it, Is open source devouring the world slowly?