The availability of the source code and the right to modify it:
It is very important. It enables the unlimited tuning and improvement of a software product. It also makes it possible to port the code to new hardware, to adapt it to changing conditions, and to reach a detailed understanding of how the system works.
Source code availability also makes it much easier to isolate bugs, and to fit them.
The right to redistribute modifications and improvement to the code:
To reuse other open source code, permits all the advantages due to the modifiability of
the software to be shared by large communities. This is usually the point that
differentiates open source software licenses from “nearly free” ones. In substance, the
fact that redistribution rights cannot be revoked, and that they are universal, is what
attracts a substantial crowd of developers to work around open source software
projects.
Right to use the software in any way:
This, combined with redistribution rights, ensures (if the software is useful enough), a large population of users, which helps in turn to build up a market for support and
customization of the software, which can only attract more and more developers to work in the project. This in turn helps to improve the quality of the product, and to improve its functionality. Which, once more, will cause more and more users to give the product a try, and probably to use it regularly.
There is no one with the power to restrict in a unilateral way how the software is used:
Even in a retroactive way. Such a power manifests, for instance, when a proprietary software vendor decides not to upgrade some software product for some old platform. In this case, customers can only stick to the old version of the software, or switch to another product. If open source software is used, customers can also fund some development for the desired platform, or look for other vendors to provide the upgrades (of the very same product).
There is no single entity on which the future of the software depends:
This is a very common concern with proprietary software. Let us say that a company uses a software product, and relies on the software manufacturer for upgrades and continued development. If the software manufacturer closes doors, or decides to discontinue development of the product, no one has the right to take the program and continue development on it, effectively killing its usability in the market. This has happened many times, and this problem is amplified by the recent mergers in the software market, that usually lead to `cannibalization’ of some software product to allow just one or two to get to the market. Open source software effectively protects
against this, because if the group or company that originated the code decides to stop development, it is always possible to found another software group to continue the maintenance and improvement, without legal nor practical limitations.
No “black boxes” are possible:
This point is so important that open source is now considered by many experts as one  of the necessary conditions for dependable applications. There are several reasons for this importance. One of them is related to the dependability of the services provided by a given software. By having the source code available, it is possible to perform a thorough inspection and verify the correctness of the algorithm and the implementation scheme used. This is also possible in part even with closed source or nearly free licences.
There is always the possibility of “forking”:

Creating an alternative code base if the current one is in some way perceived as wrongly managed. This is sometimes considered a disadvantage, having to manage not only one code base, but two. A “fork” is a subdivision of the code base in two different parts, each managed by a different group.
No per-copy fees can be asked for modified versions:
anyone can use the current code base to start new projects. Working knowledge can be gathered at a minimal cost. The right to freely modify them allowed for the incredible expansion in the number of communication protocols and systems, each perfectly tailored to the needs of their users. This is also a reason for the overwhelming success of the Linux kernel, widely employed by students thanks to its near-zero cost, and subsequently used by the same students in the startups originated by them, when they turn into entrepreneurs after leaving University.
There are fewer conflicting priorities due to marketing pressures:
This is a simple consequence of the fact that there is no single commercial entity pushing for precise delivery dates or features that must be supported. Usually open source software is delivered “when it is ready”, and when the development team feels that its quality is good enough. This means that software usually does not need as many “service packs”, updates and such, reducing the maintenance cost.
It provides a new forum for democratic action:
As individuals and companies decide where to make improvements in the system, the collective desires of the community determine the overall direction of progress, and yet without compelling anyone. People with opinions about what direction is best can urge others to join in, request help, and in this way influence the overall direction of progress, but without any elections in which the majority overrule the minority.
DISADVANTAGE:
There is no guarantee that development will happen:
In other words: it is not possible to know if a project will ever reach a usable stage, and even if it reaches it, it may die later if there is not enough interest. Of course, this is also a problem with proprietary software, but it is more evident in the case of open source. Especially when a project is started without strong backing from one or more companies, there is a significant initial gap, when the source base is still immature and the development base is still being built. If it is not possible to get funding or enough programmers cooperating at this stage, the project just “dies”, or perhaps slowly fades
out. There may be significant problems connected to intellectual property.
This point is especially important, now that some countries are accepting software and algorithm patents. It is very difficult to know if some particular method to solve a software problem is patented, and so the community can be considered guilty of intellectual property infringement. Some open source packages are already addressing this issue with switches or patches that enable or disable patented code fragments according to the country where the code is used.
It is sometimes difficult to know that a project exists, and its current status:
There is not much advertising for open source software, especially for those projects not directly backed by a company willing to invest resources in marketing campaigns. However, several `aggregation points’ for open source software do exist, although in many cases they are usable only by experts, and not by the general public. They are also in many cases very specific to some software category, such as scientific software or database systems. For the general public, some more education is still needed before the regular user can approach these services and get a solution to her software problems
in terms of open source software.

Comments (0)