Open source development
Author : DAOUDI Samir | Context : MSc Software Engineering – Software Engineering |
The evolution of computing we’ve seen during the last decent has permitted a lot of improvements that make the use of computer a real pleasure and un-evitable way to do business, entertainments, social meetings …etc.
One aspect in particular in this evolution attracts us for this context, which is the evolution of software-solutions.
Person-computer interaction is thanks to the software that is the next layer after the operating system and lets users performing many operations with computer. At earlier stages software were only a limited command line applications able to perform a limited operations and where very restricted.
The restriction imposed on software resided in the fact that only limited subsets of persons know exactly the internal details and composition of software (C.DiBona et al, 2006).
Some big software companies as Microsoft and IBM and due to the concurrency that existed between them in gaining market places, where obliged to secure their products by hiding how they can accomplish certain critical tasks. The fact of compiling and hiding the source of software and the methods it uses to accomplish the different tasks can help these companies to monopolize the market and the users.
As in software, it is not the program itself that is critical but the idea and the algorithms it uses that need to be protected in certain situations and this can have some pros and cons.
Excepting the security and monopolizing aspects of the ‘closed’ software solution, users have no idea about what is running on their computers and particularly how does it accomplish the tasks.
For security reasons, in certain situations and critical environments it is completely unacceptable to run unknown or unfamiliar software and this was one of the reasons for the appearance of open source software.
What is open source software?
Open source software is a solution where not only the complied version of the product is provided, but also the source code. So advanced users can have a look on the source of the software for:
– General understanding.
– Troubleshooting.
– Enhancement and improvement…etc. (S.Weber, 2004).
The open source software offers except the fact that it is software and was developed to accomplish certain needs, many additional possibilities.
The contribution of different persons in the software can end up with a big community around it and a lot of possible enhancements and distributions as the different Linux distribution.
The dependability of a software when deploying in a complex system consists in all the factors (systems) that might influence or be influenced by the actual system
If we consider the process of development of software, different persons and actors (A whole diverse community) participate in its improvement. In this case it is very important to consider the dependability gap.
What is the dependability gap? It is the difference between the user’s expectation of system dependability and the ability to provide dependability(Sommerville,2011).
As the different software developers have no idea about where would the system be deployed and with what other systems should it co-exist; It will be really difficult to confirm how the system would interact and what can be the different responses generated by this last. I personally think that for complex open source systems the persons who have the ability to add modification should spend time in understanding the system that will host the software and declare that what was the test environment and how does it respond to different events.
References:
Steven Weber (2004). The Success of Open Source. ISBN: 0-674-01292-5.
Chris DiBona, Mark Stone & Danese Cooper (2006). Open Sources 2.0: The Continuing Evolution. ISBN: 0-596-00802-3.
Ian Sommerville (2011). Software Engineering, 9th edition, and Pearson edition, ISBN: 978-0-13-703515-1.