@Open source people about "code", the second issue of the smart contract library reward code is coming, welcome to build a smart contract library together
https://mp.weixin.qq.com/s/bYRJsWTd_B373LxxP8dFcA
When we decided to open source many years ago, we were very excited: as typical coders, "using" open source is daily, and devoting all our energy to "doing" open source is the first time for most of us.
We also naively thought: how difficult can "open source" be? ! Isn't it just putting the code out, everyone can use it together, and write it together.
But is "open source" really like this? Let’s take a look at some soul torture first:
What is the current development stage of the open source community in the blockchain field?
Are the participants in the open source community mainly "users" or "contributors"?
How important is the number of stars and contributors of a project?
Over the past few years, many community partners have open sourced many projects around FISCO BCOS, covering the whole field of blockchain core technology, application development, and operation and maintenance governance. The community has gathered more than 40,000 developers and followers, more than 2,000 institutions, hundreds of applications have been running stably in the production environment, and the community and industrial ecological activity have also won many praises in the circle.
In March 2021, the national "14th Five-Year Plan" was released, and "open source" was included for the first time. It pointed out that it is necessary to support the development of innovative consortia such as digital technology open source communities, improve open source intellectual property rights and legal systems, and encourage enterprises to open software source code. , hardware design and application services.
In June of this year, the "Guiding Opinions on Accelerating the Promotion of Blockchain Technology Application and Industrial Development" jointly issued by the Ministry of Industry and Information Technology and the Office of the Central Network Security and Information Technology Committee further encouraged open source and pointed out that it is necessary to establish an open source ecosystem and speed up construction. The blockchain open source community cultivates a number of high-quality open source projects around the underlying platform, application development framework, and testing tools.
We are deeply encouraged. Looking back on the past, we have made many explorations in creating a new ecosystem of open source communities with positive interactions. The ups and downs of this are still vivid in our minds.
face the problem
For a few years now, the first thing I do when I wake up in the morning is to pick up my phone and see what's wrong with the tech group. I watch it during work breaks, during meetings, and on the road... An active community group, sometimes the news is like swiping the screen.
There are various problems, from basic concepts, installation and deployment to code analysis, to finding cases from the industry level, or talking about blockchain and open source software, as well as open source commercialization... In the field of cutting-edge technology, different individuals are at different stages. There are always new problems.
I actually enjoy being a "customer service" in the community. In my long career, I have been in technical forums, and I have also worked in the customer service system of Internet companies. The open source community has brought me back the feeling of dealing with netizens - cordial, interesting, and everyone is doing interesting things.
We also have some reflections on why there are so many problems in the community. Is it because the blockchain field is too new and the concepts are too obscure, resulting in a higher learning threshold for developers to overcome? Or is our product not well done, the document is not clearly written, it is really difficult to understand and difficult to use, and there are still many bugs?
There is one thing to say, the initial version of open source at the end of 2017, there are more than a dozen steps to build a chain network. Every step may "kneel down" due to environmental and network differences, as well as the imperfect fault tolerance of the software itself.
At that time, it was quite laborious to build the chain, and occasionally there would be a "coredump" (process crash) during operation. When the user sent the core file (system exception stack) to us for detailed analysis, he looked at the exception stack, Our hearts are actually a little bitter.
Some industry experts once complained in person: "Your code style is average". They originally wanted to introduce it, but after looking at the code style, they thought it would be better to wait. The taste of it, we understand.
At that time, there was almost no industrial-grade blockchain underlying platform available in the entire industry. The first version we made from 0 to 1, "usable" is a small flag, and some applications have indeed been implemented, but the whole is far from excellent and open source. The differences between the projects are quite obvious.
As for documentation, we all know that programmers write code very high, and writing comments is an obligation, but writing documentation is more difficult than rushing ducks to the shelves. I have written a very long document, but the related concepts, principles and exception handling methods are not comprehensive, and the writing skills and experience are lacking, and it seems very "hard".
In terms of talents, a few years ago, there was an unverifiable statement in the circle, "In China, there will be no more than 200 people who can create a chain with their bare hands." At the same time, looking at the open source field in China, the overall scale of developers who are deeply involved in open source projects is not large.
When the upsurge of the blockchain industry started, community developers were very enthusiastic, actively participated in open source projects, actively learned technologies and developed applications. Many of them are students and academic researchers, as well as developers with some experience in enterprise-level or Internet software development, as well as people from a non-technical perspective. In general, hard-core blockchain developers who are proficient in blockchain principles, read through the source code of blockchain projects, and are skilled in developing blockchain applications are rare.
In any case, we can't expect a large number of developers to come down from the sky and build a community by stepping on auspicious clouds from the beginning.
We did not deliberately compare the status and experience of other blockchain projects at home and abroad. Others' models are not fully applicable. After all, the open source content, environment and culture are different, development stages and development models are different, and there is little experience that can be used for reference.
In general, the domestic blockchain open source community was in the "starting" stage at that time.
Simplify
During that time, the open source working group had a lot of in-depth discussions: whether the direction was right, how to prioritize versions, whether it could satisfy both the internal and external upstream and downstream... Everyone was very anxious and often discussed until one or two in the morning.
If nothing is decided, we should go back to the original point: "If you want to satisfy others, you must first satisfy yourself." We keep asking ourselves: what should a good open source project look like?
Think about mature open source software such as Linux/Apache/Mysql/PHP (together they are the famous LAMP), can they be installed when they are down? Install and run? With these software, if you encounter problems, you can read the official documents to learn the principles and details; if not, you can always find answers and cases by asking on forums, searching online, or buying books.
There is an architect in the team, known as "Brother Nan", who ended the entanglement with one sentence, "If a software user can't use it for 15 minutes, they will definitely abandon you!"
As a result, coders are choking seconds and counting the command line to write code: How long does it take to download the code and software? Is it possible to build a chain with a single command? Is it easy to misuse the configuration file with json, and is it easier to use the ini/toml format?
"Multiple processes, multiple ghosts, multiple steps, multiple ghosts." This is our mantra. The ultimate simplification, turning the "metaphysics" in the code into certainty. "It's OK to use it" is definitely not enough, it must be easy to use and durable! Based on previous experience, we adapt to various operating systems and software and hardware environments, and preset the default networking mode and certificate files, so that users have no chance to "step on the pit" in the whole process. If there is still an error, there will be highlighted prompts, FAQs, automatic detection and recovery with a variety of strategies, everything.
The chain is set up, and then the console and browser are polished so that the blockchain can be seen and touched. Once the user sees the picture, he will know more. Then, there are built-in application templates and even stress test samples, so that developers can build applications with one click. Going a step further, the blockchain can be deployed to the cloud, and the cloud resource allocation, deployment and delivery, and operation and maintenance can be done in one stop.
If developers are interested in continuing to study the details, we also have detailed manuals and technical documents. It has a scale of one million words, and I have caught up with a few books. You can read it slowly, and you can also search for direct knowledge points.
In addition, the core capabilities of the software have not fallen. Everyone is familiar with "wheat", which has technical cleanliness and quality obsessive-compulsive disorder. It does not compromise on technical research, architectural rationality, code style and version timeline. The code must be cross-reviewed by several people (including himself), and Unit test coverage is high enough to commit.
It is gratifying that from 2017 to 2018, the open source working group has successively joined many old drivers and fresh graduates. They are very vigorous, greatly enriching the development force, and growing together with the project. This is also the profound meaning of hard-core technological innovation: "In the 21st century, talents are the most valuable." With everyone's investment, performance, security, and stability indicators have reached high levels. At the same time, various core capabilities such as privacy protection, cross-chain, new virtual machines, and chain governance have been gradually improved.
Looking back, the FISCO BCOS 2.0 version jointly polished with the community in early 2019 can be said to be a milestone. It is simple and fast to use, complete with tools and documentation, and reliable core capabilities. What a "cool" word. The effect is immediate. The number of developers who can quickly run and use the blockchain has increased rapidly, the community retention rate has increased significantly, and at the same time, the community submitted ISSUE, code and document updates have also increased.
Before that, friends in the community may politely praise: "Open source is a kind of spirit", "Open source is already quite courageous"... At this moment, I can finally hear someone sincerely say: "Cow! Useful!".
Now we try to answer the second soul torture: if open source software has no users, then there is a high probability that there will be no contributors.
For software to attract "users", it must at least be stable and usable, and the threshold for use should be low. It is best to use it out of the box. The interaction should be as smooth as silk, and the code and interface should be clear and elegant. Only in this way, users will not be alarmed at every step, or even step on pits everywhere, and will not get lost in complicated configuration files, heavenly logs and error messages.
As we all know, Internet products pursue "Don't make me think". The same is true for open source projects. If you can have a little more geek temperament, it will be even better!
teach a man to fish
After addressing the usage thresholds, we observed community issues changing.
First of all, the usability problems of "simple, unusable, and running wrong" have been significantly reduced.
Problems such as deployment and construction have increased. We analyzed that this is because more people are actually operating the chain. During the construction process, there are inevitably some small bumps, or encounter some conceptual and experiential problems, which need to be consulted and exchanged. Of course, this also shows that there is still room for improvement in the software usage process and documentation.
The substantial increase in functional problems proves that our technology and components are indeed being used more widely. Many people are planning network topology, writing contract interface, assigning permissions, analyzing data, or exploring more blockchain capabilities in different application scenarios.
The most gratifying thing is that everyone has more and deeper discussions on the principles, architecture and algorithms of blockchain. From time to time, sparks burst out in the exchange, triggering inspiration. This has a very good reference value for clarifying the subsequent optimization direction, planning versions, adding features, and co-construction.
The community is like a mirror, all kinds of changes are clearly visible, reflecting the improvement of technology and witnessing the growth of the community.
For this stage, we also have some thoughts:
1. Don’t expect chat groups to solve all problems
We have a "community answering question" schedule. If the students on duty encounter a problem that cannot be answered, they will ask the group think tank to analyze it. In short, our requirement is to answer and solve the problem as soon as possible, "the problem of the day will be completed on the same day"; problems, to be followed up with priority.
I once spent a night looking at the group records of several months, and counted the number of questions that each of our open source team has followed up, and the volume is still relatively large (the following is one of the pages). What is even more commendable is that the attitude and enthusiasm of the team members are very good. They are very happy every time they solve the problem in time and find the optimization point.
The inexhaustible and smooth communication and the community Q&A system focusing on solving pain points have indeed established a very good reputation for us in the industry.
The advantage of chat groups is that the communication is extremely convenient, but its shortcomings are also obvious. Group chats will attract a lot of attention, and chat records are difficult to be checked by others, which is not conducive to accumulation and reuse. With the continuous addition of new people, the repetition rate of many common problems is extremely high. Technical forums should be a nice complement. Of course, the construction and maintenance of the technical forum also requires investment.
With the explosive expansion of community numbers and field coverage, is it the best solution to rely solely on open source working groups to answer questions online? After thinking about it, we think that this can be regarded as "the trouble of happiness".
2. Don’t expect documentation to solve all problems
After the software quality is basically stable, whenever I see a problem, my first reaction is often, "Is the document not clearly written?!"
Open source project documents include manuals, development tutorials, terms and concepts, architectural principles, FAQs, etc. Fortunately, online documents support keyword retrieval, and basically all knowledge points that can be thought of can be retrieved.
At the same time, on the official account and cooperative media, we have also published articles from multiple perspectives, trying to jump out of technical details to clarify blockchain thinking, popularize blockchain learning methods, and pass on experience and lessons. We sincerely hope that these articles can inspire readers at different stages, starting from the "first principles" of technology, drawing inferences from one case, and reaching the core of blockchain knowledge.
But we found that there is a gap between ideal and reality: no matter how the document is written, there will be 10,000 leaks; the user's operation path and thinking mode are different from what we expected; and the environment is different, the problems will be different...
In addition, due to the influence of communication channels, exposure rate and many other reasons, the document is not spread to all users; or because the document directory structure is too deep, users do not see specific knowledge points; even if they see the document, they face millions of The vastness of the words, many people will say: "nice, first collect and read slowly"... Various factors may cause the effective reading and absorption rate of the document to be not optimistic.
In fact, the user doesn't really want to read a long story at all, he just wants to quickly solve the problem at hand.
Overall, the documentation must be there, and even better. But documents are like treasures, suitable for digging slowly, and difficult to solve.
3. Don’t expect yourself to solve all problems
After Sun Gong died, if you encounter a problem and solve a problem, will everything be fine?
User questions are really the best direction indicator. If a question appears more than twice in a week, and it is asked by different users, then it is definitely a problem that needs to be solved first.
There are different solutions to different problems: you can iterate new versions to fix the problem and make it no longer appear; you can also revise the document and give a prominent document entry for reference; you can even chat with users and align them Concepts and ideas, and some problems are resolved. There are many solutions, but the key is to be fast, accurate, and closed-loop.
Practice has also proved that it is impossible for the open source working group to do everything. For example, the needs of some users are more scenario-based and are not suitable for the main version. It is more reasonable for developers to pull branches for customized development. Some questions are related to different environments and different business areas. In fact, the open source working group is not an expert in many fields. It can only communicate and discuss with you from a technical perspective based on its own understanding, hoping to inspire each other.
In essence, if only the open source working group is doing one-way output, and the users are the silent majority, such a community will inevitably become dull, boring, and will soon encounter a ceiling. The ideal model is to form a positive cycle of development in the entire community: veterans help newbies, newbies become veterans, veterans directly write code, distributed problem solving and satisfying needs. In the whole process, everyone contributes, innovates, accumulates and improves.
We sometimes wonder, is the Open Source Working Group going to take a small step back? We are doing more of the role of service and evangelism, focusing on popular science guidance, stimulating and encouraging, and giving the community a bigger stage. Is this the effect is better? Therefore, in addition to writing code, we also write documents and teaching materials, participate in the compilation of national talent standards, and organize online and offline salons, trainings, and hackathons.
In the climbing period of industry development, we hope to help more people learn, use it, and increase talents. Once users who have passed the technical threshold become skilled developers, bugs will be corrected as soon as they appear, different needs can be quickly met, and the software itself will become more and more excellent.
At present, the community has spontaneously formed many SIGs (Special Interesting Groups). The team members actively join from the community, and carry out distributed cooperation according to the technologies and application topics that they are interested in and strong at. The picture below is a page of one of the group leaders (group nickname: Li Dagou) in the group introduction. I think the keywords "fun, pragmatic, motivating, contributing" sum up very well!
Open source working groups, community SIGs and emerging developer groups constitute a three-dimensional community technical force.
We continue to focus on software quality and experience improvement, reduce repeated problems, and guide and promote the community to go to the self-service stage, division of labor and cooperation, which is conducive to focusing on identifying more forward-looking features and taking on more challenging problems. space is also growing.
sailing
The gradually mature community will show a "network effect", a good reputation is "tap water", more and more industry professionals will gather, and ecological and business models will naturally grow.
When it was first open source, we flew all over the country to preach ideas and technologies, and invited everyone to pay attention to our community. The earliest community groups were "pulled" one by one.
A friend of mine has been silently following the open source community, integrating blockchain into their industry products, and didn't tell me until the product was successfully launched.
I asked him: "Do you need support at all?"
He said: "Open source software is easy to use. Our own technical team implements business logic and can go online after doing operation and maintenance configuration."
Now they are "community certified partners" and continue to use blockchain technology to implement applications, and their achievements are also returned to the community in the form of codes, tools, and cases.
There are many more such community partners. They have profound attainments in their respective vertical industries, which complement the open source community. In terms of blockchain, they only need to introduce open source technology instead of reinventing the wheel, which greatly increases efficiency and reduces costs. At the same time, in their industry practice, they have continued to discover many very grounded needs and contributed a lot of technical achievements. The practice of their implementation is a verification of the value of blockchain technology. Their cases have become benchmarks on the industry map. .
More meaningfully, we found that many companies found and recruited the talents they needed in the community; some encountered industrial partners with complementary industry chains or technology stacks and similar concepts in the community, and then happily established cooperative relationships. In short, the community builds a bridge across industries and regions, is a platform to achieve both spiritual and material harvests, and spontaneously forms an open alliance of like-minded, win-win cooperation.
It must be introduced here that the FISCO BCOS Open Source Working Group was initiated by the "FISCO Golden Chain Alliance". The Golden Chain Alliance has gathered more than 150 institutions from finance, securities, local exchanges, technology companies, scientific research institutions, etc. As an open technology community, more than 2,000 companies have gathered, covering a wide range of industries such as industry, agriculture, and copyright.
It is worth mentioning that several training institutions have become "Training Cooperation Certification Partners" of the community. Everyone co-authored popular science materials, and worked with national authoritative institutions such as the Talent Exchange Center of the Ministry of Industry and Information Technology to write several sets of blockchain textbooks for use by colleges and universities and training institutions across the country. Training and evangelism work is a long way to go. A single tree is difficult to form a forest, and people water it. In the future, the world will be filled with peaches and plums.
In the midst of digitalization, companies in various fields are like ships, opening up channels one after another. Open source technology is like a sail, which can help companies adapt to the wind and bring huge motivation to explore the larger world. Whether the open source code itself is commercialized is not so important. The industrialization model of open source is more about integrating services, expanding boundaries, and promoting application implementation. It is conceivable that if a large number of ships set sail, the real economy will be active, and the entire ecology will flourish, and everyone will definitely benefit.
Hello everyone, it's really good. I think this is the true meaning of open source and open source.
Tolerance is a virtue
Having experienced the excitement, anxiety, and joy of open source, we are now much calmer.
The daily work is still very fulfilling. Once, the friends who just joined the team thought that they were here to write code, but they found that it was not the case, not only to be "customer service", but also to be "writers", and from time to time to go out to be "net celebrities" live broadcast "bring goods" to analyze open source Technology, or to be a "teacher", stand on the podium and speak for hours.
Switching between different roles is really a challenge to time management and attention distribution, and it may feel a little "split" when you are not used to it. In particular, for the code farmers who are generally a bit "socially terrified", the psychological pressure of all kinds of "showing up" is a bit high. But from another perspective, from the perspective of long-term career development, after taking turns in eighteen martial arts, the technical writing level, communication and presentation ability, and the breadth and depth of vision can be exercised; most importantly, the code written by oneself can be exercised. , someone will use it immediately, someone will learn from it, and their technical ability and sense of achievement will also be improved. So, both public and private, will undoubtedly benefit a lot.
Beside the technical team, our operation team also has professional "community assistants" who are active in online and offline salons, exhibitions, organize courses, push hot content in real time, and interact with community developers to help developers embark on open source development. road. Threading needles and leads in industrial cooperation is like a small bee shuttle among flowers. Of course, if someone in the group advertises and disrupts the technical atmosphere, they will soon be invited out by the assistant.
The little assistant also overturned the car. I remember that there was a community event a few years ago. For the community partners who have given star support to the project on github, the assistant will send a small souvenir. It was originally well-intentioned, but it was mistaken by some developers as exchanging gifts for stars, and gave frank feedback in the group. We humbly accepted and rectified it. After that, we consciously avoided suspicion and never did star-related activities again. We understand very well that star is the jewel in the crown, and it is definitely not for "exchange". It should be voluntarily and voluntarily by developers who sincerely support and love the project.
Correspondingly, the community will also thank those developers who have contributed to open source projects, and encourage more developers to continue to build and share. We will publish the list of project contributors and the quarterly contributor list. They'll get chic community souvenirs worthy of posting on their Moments. This is mainly for mental stimulation, let's create an atmosphere. We believe that walking hand in hand with a grateful heart can make us go further.
On the road to open source, it is normal to encounter some small twists and turns, misunderstandings and challenges. Just like between people, there is a process of trust building in itself. The open source community teaches us to "think in a different position" and to have "user thinking", because we are no longer doing things by ourselves; we must always remain humble, because any progress comes from the joint efforts of the community; more importantly, we must remain open And transparency, whether it is code or operation, will be reviewed, judged and optimized by the community. After all, "talk is cheap, show me the code" (Note: code has the meaning of "code" and "code of conduct").
From this perspective, the "star" of an open source project is important, but what is more important is the reason why everyone hits the star, and whether there are people who continue to star. The ideal state is that everyone is the developer of the community, and then the stars that everyone points are for themselves and the common community!
bow in
Let’s revisit the three questions we started with:
What is the current development stage of the open source community in the blockchain field?
Are open source community participants mainly "users" or "contributors"?
How important is the number of stars and contributors of the project?
I give my personal answer, just for reference.
First of all, I think the open source community for blockchain is still in its infancy. This has an inevitable connection with development time, technological maturity, talent gradient, and the breadth and depth of applications.
Second, we cannot ignore the laws of nature and encourage growth. We must first enter the game, and make the technology and experience well, so that everyone can "use it" first. At the same time, gather more talents to learn and progress together. With a solid foundation and more co-constructors, contributors will naturally emerge in the user group.
Third, the philosophy of the open source community is to "teach a man to fish" rather than "to fish out of the water". In terms of harvest, whether it is the star of the project or the commercialization, I think it is a matter of nature and a matter of course. We have seen that many partners who have participated in the community have gradually blossomed in the industry.
Thanks for being here. After several years of ups and downs, we have seen the future chapter of open source slowly unfolding. Because we see, we believe; we believe and build together, we will work together to be extraordinary.
For more dry goods, please pay attention to the FISCO BCOS open source community public account, visit the FISCO BCOS code repository to download all the source code of the project: https://github.com/FISCO-BCOS/FISCO-BCOS , please click the star collection in the upper right corner of the page , to get the latest version .
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。