Many software companies or research institutions in China are only enthusiastic about open source for free code, and rarely deeply participate in open source community activities. We always use more and contribute less to open source. If there are any influential open source projects initiated in China, they are probably very few. We are so stingy that even for open source projects we are using, we are not willing to “waste” any development and testing resources. I was fortunate to listen to the speech of Richard Stallman, a spiritual leader of free software, twice. He especially emphasized “Free is not free”, which means freedom is not free. Similarly, open source is free (Free), not free (Free). Perhaps, when everyone is unscrupulously enjoying the free feast of open source, they completely forget that the real power of open source is freedom, not free.

What is Open Source?
Simply put, open source includes three aspects of connotation:
First, open source is a project. As a project, in order to attract more interested and enthusiastic technical and non-technical people to participate, open source often has its unique and flexible project organization methods and development processes, which is completely different from companies. Of course, generally speaking, an open source project is often led by one or several companies, but it will never exclude the participation of any other organizations, companies, and independent developers. The management team of open source projects is mostly produced through democratic methods.
Second, open source is a community. As a community, open source provides a communication platform composed of mailing lists, forums, IRC and various meetings for developers, testers, donors, and users. The “Open” in Open Source is not only open code, but also an open communication platform. As long as the principle of mutual respect is followed, almost all issues related to technology, development, testing, use, and management can be discussed. Everyone comes up with ideas and solutions together, contributing to open source from all aspects.
Finally, open source is a product. Many times, the products released by open source are difficult to meet the needs of users. Therefore, without violating relevant licenses, some companies customize them and transform them into their own products or solutions. Of course, some companies will also give back to the development of open source. This is a win-win virtuous cycle. Almost all open source projects have related product releases. There are countless such examples. The productization of Linux is the most classic example. It can be said that without the productization of Linux, there would be no flourishing of Linux open source. Other examples include various derivative products of Eclipse. The split and decline of OpenOffice.org may be due to insufficient productization. In our magical country, it is said that there is an extremely smart academician who took a foreign open source project to the extreme level and won the first prize of the National Natural Science Award, which is amazing and convincing.
Importantly, open source is a free world. People can freely join or leave the community, freely discuss various issues, and express various suggestions. Developers can freely learn open source code and technology, and users can freely use open source products. With open code, you can freely rewrite, delete, and add functions of open source products without violating the licenses of open source code and products. Companies and organizations can also freely use open source code and technology, and freely sell open source products. As mentioned above, open source encourages companies to participate in productization. Everyone for me, I for everyone, this may be the true meaning of open source freedom, but this is really too beautiful, so beautiful that it is almost unbelievable. Returning to reality, no matter how desirable the vision of freedom is, the success or failure of an open source project/community ultimately depends on people’s morale. If the power of freedom still cannot arouse people’s enthusiasm to participate, then the reason and value of this open source community/project are greatly questionable.
On the other hand, more importantly, some theorists believe that open source itself is a free business model, which is true. This is just like the free business model that is being enacted by Internet companies in full swing. For example, although we do not pay for each Google search, our search behavior will eventually be converted into Google’s advertising revenue as part of big data. Having enough users is the key to the success of this business model. Similarly, the source code and final products of open source projects are free, open, and can be used freely but not arbitrarily. Open source business models include fundraising through foundations, charging fees for providing technical support services to users, and many companies directly contributing development and testing resources to open source while productizing open source projects, which is actually a kind of sponsorship. Of course, as mentioned above, with the support of a large number of free users, this open source business model can achieve success.
Benefits of Enterprise Participation in Open Source
Only seeing the benefits of open source being free and ignoring the power of open source freedom is definitely a short-sighted behavior even from a purely utilitarian perspective. For companies that are using open source, active participation in open source community construction can benefit from at least the following two aspects:
First, the more contributions to open source, the greater the influence, thereby generating good advertising effects. Through open source, you can better showcase your technology, products and solutions, and win users’ trust.
Second, if you are strong enough to lead the development direction of open source projects, you can better gather resources from the open source community to improve your products, which naturally brings obvious benefits to the company. For programmers, the biggest benefit of participating in open source is the sense of achievement from contributions. When I worked at IBM, the product line I was in, Symphony, was an office suite based on OpenOffice.org. At that time, I developed a rollback font fast matching algorithm. When the font specified by the user for the text does not exist in the system, this algorithm can quickly find the most suitable alternative font from the system, which can greatly improve the text rendering speed and improve the text display quality. I successfully submitted this algorithm to OpenOffice.org. I clearly know that every time a user opens and edits a document using OpenOffice.org, this algorithm may be run, and this sense of achievement arises spontaneously. Of course, it is regrettable that OpenOffice.org split. But libreoffice.org still exists.
In fact, an important reason that prevents domestic programmers from participating in open source is not the limitation of technical ability, but the limitation of English level. After learning English for so many years, even if you get CET-4 and CET-6 certificates, you will find that the dumb English you learned is basically useless. The communication barrier caused by language barrier is a difficult difficulty, but it is far smaller than the obstacle of lazy thinking caused by fear of the unknown world and uncontrollable changes in the heart. I have no intention of discussing how to improve personal English level here, just want to emphasize that where there is a will, there is a way. If a promising programmer has an open mind and is full of curiosity and yearning for unknown fields, English is by no means an insurmountable fortress. Moreover, what domestic programmers are most worried about is listening and speaking, and most of the time, open source communities communicate through written emails.
How to Participate in Open Source
Finally, the following points are for reference only for friends who are interested in open source:
First, almost every open source community provides a Getting Started Guide for newcomers. Careful reading can avoid unnecessary detours.
Second, interact boldly with the community. If you don’t understand any problem, don’t think hard by yourself, just ask boldly. No matter how simple it is, there will always be enthusiastic people to answer, and no one will laugh at you. Of course, when communicating, you must respect each other. Emails should include basic politeness, and you should thank others for their help. At the same time, don’t forget to help others.
Third, open source development is somewhat free and casual, with no too strict plans. Therefore, sometimes, you may feel that your requirements are not quickly responded to and met. It should be noted that not all BUGs you submit will be recognized, and not all code you submit will be accepted. In this case, you should make it clear, not be emotional.
Fourth, the code quality of some open source projects is really not commendable, which may be due to the uneven quality of participating programmers and lax supervision, but not all. I still remember often joking that some functions in OpenOffice.org code are so long that you can’t see the other end from this end. Gödel’s incompleteness theorem points out that any formal system of number theory similar to that given by Russell and Whitehead in “Principia Mathematica”, no matter how strong, is incomplete. There is always a well-formed G proposition that can neither be proved true nor false. Therefore, no formal system can completely describe all the properties of number theory and even mathematics. This is of course not a perfect conclusion, but on the other hand, it means that the discovery of mathematical truth still depends on the creative intelligence of mathematicians, which can be said to lose at sunrise and gain at sunset. Broadly speaking, life always has too many regrets, sufferings, absurdities, separations, troubles, vanities, sorrows, hesitations, sadness, broken love, mediocrity, ambitious but incompetent, talented but unrecognized, the illusion of white, rich and beautiful, the pain of short, ugly and poor, etc. On the contrary, it is this bad side that contrasts the good side more worthy of cherishing. Only those imperfections achieve perfection. This is a philosophical speculation circle. How can open source computer programs developed by the efforts of many people be different? Therefore, we need to be more patient with everything and cherish it as we go.
Fifth, theoretically, to implement a software function, as long as it is within the computable range of Church-Turing thesis, it can be expressed in computer programming language. In this regard, no matter how clever the algorithm and program are, there is no insurmountable technical gap. It can be said that technology is always simple. What you can do, others can do the same, and vice versa. But art is infinite. If you want to reach Escher’s painting level or Bach’s music level, you can’t do it. Of course, computer programming can also be regarded as art, such as the techniques presented in Donald Ervin Knuth’s famous book “The Art of Computer Programming”. Therefore, there are indeed differences in the quality of programs and the performance of algorithms. In short, there is no need for companies and individuals to treat everything as a treasure, and carefully hide and protect it like an ancestral martial arts secret or a traditional Chinese medicine secret recipe, thinking that in this way, I can have what others cannot have. That would be a big mistake. Therefore, in many cases, contributing to open source will not damage the company’s competitiveness, but will strengthen it.
Sixth, contrary to the fifth point, as an independent programmer, you should also fully understand your company’s intellectual property policies, and never submit code with the company’s proprietary intellectual property to the open source community.
(Note: This article has paragraph division adjustments)
Reprinted with permission: Developer Relations »