How to select an open-source project

Source: Internet
Author: User

Open-source projects have become increasingly popular in recent years, and many commercial software have gradually introduced open-source projects. My product line has adopted many open-source projects (mainly C ++, Java, and Python ).
You will often encounter the issue of selecting open-source projects (from several open-source software projects with similar functions ). Today, I will talk about some of my views for your reference.

License)
License is a problem that many people easily ignore. So let's talk about it first. Because the software developed in the company is basically commercial software, according to the degree of conflict between open-source protocols and business, there are three types of software: very friendly, unfriendly, and very hostile. The following sections describe:
Let's talk about the "very hostile" Protocol: GPL (For details, refer to "here ").
GPL and commercial software are in serious conflict. In general, if a software product uses a library based on the GPL protocol, the product must also be published using the GPL protocol (this is the famous GPL "contagious "). Therefore, once an open-source project is found to comply with the GPL protocol, even if the function is more powerful and easy to use, it will have to endure. I would like to remind everyone that,ChimoI am lucky to secretly use it. Once it is discovered by the eyes of the people who see it, the company's name Festival will not be guaranteed.
Since GPL is too unfriendly to commercial software, it is estimated that many authors complained about it in the past. The GNU Organization developed a compromise lgpl protocol to ease the conflict (For details, refer to "here "). This Protocol is more loose than GPL: commercial softwareDo not modifyThe lgpl open source library can be used in the product on the premise of code. Therefore, lgpl is a commercial "unfriendly" protocol.
Finally, let's take a look at the "very friendly" protocols, which are well-known: BSD, MPL (Mozilla), Apache, and MIT. These protocols allow project users not only to use open-source libraries, but also to modify and re-distribute open-source libraries. Therefore, it is extremely easy to use. There are some minor differences in the details of these protocols. You can check them on their official website.
In addition, some open-source software uses public domain authorization (For details, refer to "here "). Simply put, software users can do whatever they want.
The Protocols mentioned above are all well-known protocols. There are also a few open-source projects that do not use well-known protocols, but have their own set of protocols. If you encounter this situation, you have to read the foreign documents on the protocol carefully to see what restrictions it imposes on users.

Technical factors
The technical considerations are closely related to the software you have developed. Therefore, the judgment bases vary widely. I can only pick a few general examples.
If you are developing a cross-platform project, you must consider which platforms (operating systems, databases, etc.) it supports when you select an open-source project ). If the platform you want to support is not supported, find another one.
Sometimes compiler support is also one of the considerations. For example, the old-fashioned compiler problems I mentioned in "C ++ portability and cross-platform development. For example, if I have implemented a Java project, the user's environment is JDK 1.4. Some open-source libraries that use the new Java 1.5 syntax cannot be used.
If the software you develop is performance sensitive, you should test the performance indicators of several candidate projects during the selection.
Security problems are becoming more and more serious. If you are concerned about security, you have to check whether there are security issues in the candidate projects (such as buffer overflow bugs, such as cross-site scripting injection ).

Popularity (User popularity)
The popularity of open-source projects refers to the user shares of open-source projects. Of course, everyone is not engaged in market research, and it is unrealistic to spend money on market research companies. The simple method is to use a search engine to search for a wide range of candidate projects.
Another way to determine the degree of popularization is to check whether an open-source project is adopted by well-known software or companies. For example, Firefox (a well-known software) uses SQLite to store page cache, which at least reflects the level of excellence of the SQLite project.
For a number of candidate projects, it is clear that those with high popularity should be given priority. Because a project is highly popular, it must at least (but not absolutely) be mature, stable, and secure. When there are too many users, there will be more relevant documents, and it is easy to find people to consult when encountering problems.

Activity level (Development popularity)
"Active" refers to the development layer. In general, the more active a project is, the faster the new function is launched, and the faster the response to the submitted bug is. Some projects, because developers no longer continue to develop (maybe developers get tired, maybe developers are too busy), resulting in low activity.
But there are also exceptions. Some projects are very well-developed, so they are very low in activity. I think Bzip2 has rarely been updated in recent years.

Other risks
Finally, let's talk about some other risks. Generally, other risks are considered only when there are similar factors.
Some projects rely too much on personal heroism and rely on one or two Daniel to complete the entire project. Once an accident occurs, the entire project is seriously affected. A typical example is Hans Reiser, the founder of the reiserfs file system. The man was convicted of the murder of his wife and was sentenced to 15 years in prison (for those interested in it gossip, refer to "here "). The reiserfs project is seriously affected.
 
Some open-source projects, after being acquired by commercial companies, are adversely affected due to various reasons (such as business, management, and politics. For example, we heard that Michael
Widenius (co-founder of MySQL) and Marten mickos (former CEO of MySQL) left sun. In addition, David, who fell out in last October
Axmark (co-founder of MySQL ). It is estimated that the impact on MySQL is not small.

The higher the weight, the higher the preceding considerations. You need to consider these factors comprehensively during the selection.

Http://program-think.blogspot.com/2009/02/how-to-choose-opensource-project.html

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.