Introduction
There are several factors involved in the success and failure of the project. Many researchers have researched on variety of projects to find the factors influencing the success and failure of the project. Massey (2003) suggested that process maturity plays an important role in the outcome of the project. Massey (2003) defines process maturity as an indication of the project’s capability to improve the ability of the product through quantitative measure and feedbacks received. In this paper, the success of free software and open source project, Linux is critically reviewed. This paper discusses about the factors that has influenced the success of the project. Free software and open source project is taken up for review in this paper because of its unique nature. It is publicly available and anyone can contribute to the development of the product and it involves people from different parts of the world and a common software engineering process could not be applied. This paper reviews the strategies involved in the development of the Linux project and the effectiveness of those strategies. There are many free software and open source projects launched and some of them have been successful and some of them have not. So, in this paper the process maturity will be analysed to find out if that can influence the outcome of the project. Linux is considered as one of the major successes in the free software and open source project world and reviewing the strategies and processes adopted for this can give a good insight of the factors that has the impact on the success and failure of the project. This paper also reviews the role of process maturity adopted in Linux project to its success.
Review of Linux Project
The development model applied to Linux is unique in two different ways. Volunteers develop it and the volunteers are from different parts of the world. The nature of the free software and open source projects is also different as all the source code is publicly available and shared with other developers. Raymond & Trader (1999) suggest that the open source development model attracts a wide variety of users, high-level user review and involvement. Fagan (1976) recommended that the user reviews contribute to the quality of the product. It is not possible to apply all the software engineering strategies in free software and open source projects because different motivations drives the development of the product rather than the software projects developed in a software company. The review of the Linux project is divided into following five strategies used in Linux:
- Version Control
- Documentation
- Mailing Lists
- Systematic Testing
- Security
1. Version Control
There are some tools for managing the configuration and version controls such as CVS (Vesperman, 2003). This allows people to work on same code without much coordination with each other. This kind of strategy attracts more developers and allows them to review the code, detect the bugs, remove the bugs and even add new features to the product. Raymond & Trader (1999), identified this strategy which is widely adopted in the Linux project and suggests this has contributed to the success of the project. Adopting a private version control strategy limits the access to other developers. On the contrast, CVS and other similar tools allows the volunteers to track the work being done by other volunteers and thus allowing multiple developers to work together but in a distributed way. The bug tracking systems also works effectively with the strategy by encouraging the developers to do the testing and get involved in fixing the bugs in the product and making the product robust and sustainable in the market. So, having this kind of strategy, a wider user review of the code is achieved and lot more ideas are put in from different people in fixing the problem or enhancing the product etc.
2. Documentation
Documentation can be divided into parts as user documentation and developer documentation. Koch & Schneider (2002) examines the importance of documentation and suggests it plays a very important role in the success of the project as without the documentation users will find the product very difficult to use and understand. Linux is very well user documented and it can be inferred that it has contributed to the success of the project with its very user-friendly user documentation. Koch & Schneider (2002) also suggests that developer documentation can take different forms such as the developers would be able to find the solutions for their questions either by looking at the code itself and understanding the process or even they can refer to the mailing list archives that contains large amount of information. Developers can even understand the style of coding by looking at the action. However, having developer documentation may improve the quality of coding and makes the code clearer and readable to other developers (Raymond 2003). Linux project also contains a very good user documentation as well as developer documentation, so from the above discussion, we can understand that this might have added value to the success of the project.
3. Mailing Lists
Koch & Schneider (2002) examines the importance of having a structures mailing list feature and recommends that structured mailing list that specialises in multiple categories such as user mailing list, developer mailing list and announcements can have a huge impact on the success of the project and especially the open source projects. These mailing lists contain posts from users and developers that can be very helpful for other users and developers who might have similar questions or concerns and this can be a central place to search for answers to their questions. Linux adapts this strategy very well and effectively manages the mailing lists and sends out the announcements electronically as well to its registered users and developers. This can be found very time saving and an effective way of communicating with the members. Linux provides its users the archived mailing lists and this strategy reduces the requirement for documentation to some level and people can find information from archived discussions. This way of communication and representing the information to the public is faster as well as effective and attracts more people to involve in the project in different forms such as users and developers.
4. Systematic Testing
Raymond (1999) identifies different levels of testing such as before releasing the new version to the public, it is first released to its special developer list for testing the product, having an automated testing suite, including a facility of tracking defects in the product etc. Linux project is very well structured and accommodates high-level version release testing. Before releasing the stable version to the public, it is first released to its selected set of developers to use it, test it, and provide feedback for the product. It is then releases to the public and it also has the facility to capture the feedback from its users about defects, usability etc and as it boasts of having a wide variety of users all over the world, any feedbacks received are prioritised and dealt with very quickly. As discussed in earlier paragraphs, capturing the feedbacks and working through them plays an important role in making the product successful and sustainable in the market. Having an effective development model can keep its users interested and also enhance the product with more facilities and features. Having an effective system to track the defects, prioritise them and dealing with them is a crucial factor to make the product robust and successful.
5. Security
As the computers are gaining popularity in this modern world, the threat to the computer software is also increasing. It is therefore very important that the security features are addressed and proper security measures are implemented in the product for the product to be successful in the market (Schah et al. 2002). Security loopholes are considered as a major defect and anything related to that makes the users cautious and suspicious in using the product. If a development model considers all the factors mention in the above paragraphs and leaves out to consider the major security threats, then the whole development mode becomes ineffective and the project will be a failure. Linux boasts of rich security features being implemented and it is updated regularly to handle any threats posed. As Linux project is an open source project, a lot of ideas come in from different parts of the world and any threats are resolved very quickly. Linux provides a lot of sophisticated security features to its users such as option to select the software and safely download them, access permission facility to prevent any unauthorised access to the system. It also has the features to safeguard the users system from being infected by viruses and other malicious contents.
From the above paragraphs, it can be inferred that for a software project to be successful, it is important to have an effective development model to manage the key factors that contribute to the success and failure of the software project. The major factors responsible for the outcome of the project are discussed in the above paragraphs. There are some more things that can add value to the product such as portability, extensibility etc. Identifying them and managing them to the product’s advantage makes the product more efficient, robust and sustainable in this competitive market.
Conclusion
This paper identified the key factors that are responsible for the success and failure of the software projects and concentrated on the free software and open source project Linux as this project is widely accepted as a successful software project. This paper discussed about different areas of the project and identified the level of importance of those that has made the Linux project a successful software project. There are advantages and disadvantages that need to be managed in any free software and open source projects because of its unique development model than the traditional software engineering approach. This is mainly due to its worldwide presence of the developers involved in the project with different backgrounds and software approach techniques.
There are several other factors that contribute to the success of the Linux project such as multi-tasking ability, compatibility with other software packages, fast and easy installation, stability etc. A lot of factors are responsible for the outcome of the project and only major factors with higher contribution levels are discussed in this paper. Further research can be undertaken in this area to identify some other factors influencing the success and failure of the project.