Open Source Software
Open-source Software (OSS) is software that is distributed under a license and is characterized by source code that is publicly available for users to view, modify, and upgrade. Additionally, Open-source software may be redistributed to anyone without any additional permissions. Open-source software is a prominent example of the open collaboration system. Notable examples of open-source software include Linux, Android, Apache HTTP Server, and Firefox. Open-source software is commonly made available through online repositories such as Github. Some common ethical issues concerning open-source software include security vulnerabilities and plagiarism instances.
- 1 History
- 2 The Open Source Definition
- 3 Open-source Model
- 4 Advantages of Open-source Software
- 5 Disadvantages of Open-source Software
- 6 Ethical Issues
- 7 See Also
- 8 External Links
- 9 References
The beginnings of Open Source Software can be traced back to Richard Stallman’s work at MIT. At MIT, when Stallman inquired for the source code of a feature that helped fix printers, he was met with the legal issue that this code was the property of MIT and couldn’t be shared. This led Stallman to create the free software movement and begin producing ways of developers producing products totally free and transparent to the public.
This free software movement was championed with the creations of Stallman’s GNU project in 1983. The GNU project was centered around creating a totally free and open source operating system with its various services to give users greater control over the programs they used. This was followed with the GNU Manifesto and Free Software Foundation, two efforts to make developers push for and contribute to transparent software.
In 1997, the piece “The Cathedral and the Bazaar” was written by Eric Raymond, which described the two differences in development styles of the GNU project versus the Linux project. GNU, part of the “Cathedral” development, was developed by a small group of programmers, who upon each version release also published the source code. The “Bazaar” development method was coined by the Linux developers using the internet as the medium for the development process, meaning the public could see each step of the process and source code as well as contribute their own features. These styles assisted in letting the general public learn about and be familiar with the benefits and practices of open source development, as well as inspire the public to contribute.
From the 2000s onwards, open source has gained a strong following by both consumers and large scale businesses. IBM in 1999 even pledged 1 billion into the development of Linux, marking a great step for a proprietary business supporting an open source platform. Recent years have seen the large successes of open source platforms, such as Github and Gitlab, as well as the extreme successes of a number of products produced via open source.
The Open Source Definition
- Free Redistribution: The license shall not require a royalty or other fee for such sale.
- Source Code: The program must include source code, and must allow distribution in source code as well as compiled form.
- Derived Works: The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
- Integrity of the Author’s Source Code: The license must explicitly permit distribution of software created from modified source code. The license may require derived works to carry a different name or version number from the original software.
- No Discrimination Against Persons or Groups: The license must not discriminate against any particular person or group of persons.
- No Discrimination Against Fields of Endeavor: The license must not restrict anyone from making use of the program in a specific field of endeavor.
- Distribution of Licenses: The rights attached to the program must apply to all to whom the program is redistributed without the need for an additional license.
- License Must Not Be Specific to a Product: The rights attached to the program must not depend on the program's being part of particular software distribution.
- License Must Not Restrict Other Software: The license must not place restrictions on other software that is distributed together with the licensed software. For example, the license must not require that all other programs distributed on the same medium must be open-source software.
- License Must Be Technology-Neutral: No provision of the license may be predicated on any individual technology or style of interface.
Open-source software follows a guideline of suggestions known as the Bazaar model. This model was first suggested by Eric S. Raymond. In his article, he suggests that every piece of open-source software should be developed using the bazaar style where there is a multitude of differing agendas and approaches. The bazaar model exhibits and follows 6 patterns:
- Users must be treated as co-developers: each user has equal access to software and code and has the equal right to contribute any content. This benefits the code in many ways since many people viewing and editing the code eventually leads to fewer bugs and implementation errors. Since every addition to the code is visible and changeable by any developer unnecessary or useless code can be replaced or deleted. Each user's ability to work on his or her own environment provide for different testing and implementation of the code. Lastly, where one user might fail to implement a piece of code he started, another user may be able to figure out any problems.
- Software must be released early.Releasing the earliest implementation of the software allows for numerous co-developers to begin implementing their own code.
- Software must involve frequent integration. Changes in the code should be integrated as soon as possible to allow for edits to be seen by all users. This process allows for the prevention of large bugs in the code. This also prevents users from recreating the same aspects of the code that someone else has already done. Some open-source software has the ability for automatic integration at some given interval of time.
- There must be multiple versions of the software: a version that has more implementations that might have codes with more mistakes and another version with fewer implementations that provides stable control for anyone editing. Users are aware when they use the newer more error-prone version and can accept the risk of using code that has not been completely tested.
- The software must have high modularization. This means that the software must allow for development to occur by multiple users in parallel and also must support independent components.
- There must be a dynamic decision-making structure. The fact that users are treated as co-developers causes a problem with hierarchy in that tough decision making must be made by an outside source. Thus, a decision-making structure is crucial in order to make important decisions when aspects of the code at odds.
Advantages of Open-source Software
In the paper, Ethical Issues in Open-source Software, Grodzinsky, Miller and Wolf highlight that in open-source software development, “accountability is not lost in the group, but it's taken up by the entire group.” In other words, if a developer writes irresponsible or buggy code, others contributing to the open-source software project would be unlikely to accept the code changes. This also works in the opposite direction: there is an inherent accountability for developers to actively make sure their code is up to date and of high quality to continue to participate in the open source platform.
Another benefit of open source software is its ability to save companies money. In 2008, a report by the Standish Group indicated that consumers were able to save roughly $60 billion per year as a result of adopting open-source software models. The attribute of open source software being free is a large part of its attraction to companies. This kind of software, however, does require a "specialized skill" to oversee the content, which might cost money to do. Sometimes vendors will charge for add-ons and joining but users don't have to pay for any setup, activation, or subscription charges. Alternatively, the expenses for proprietary software range from a few thousand to a few hundred thousand. This number is for the programming, combination and administrations, and yearly help charges. The client pays for a more customized end result.
Higher Quality Software and Improved Security
A report from the Coverity Scan project suggests that open-source software is at least on par than proprietary software with respect to software defects.  The Coverity Scan project analyzed open-source projects as well as a number of proprietary codebases to identify “hard-to-spot, yet potentially crash-causing defects.” The results indicate that having more co-developers increases the rate at which the software evolve and potential sources of error are spotted. As Linus's law states, "Given enough eyeballs all bugs are shallow."  This suggests that if many users view the source code then eventually all bugs will be found and fixed in a collaborative manner.
Freedom from lock-in
The use of proprietary software increases the risk of becoming locked into a particular vendor or technology. If this occurs, users can be at the mercy of the vendors’ price increases and experience a lack of flexibility that is difficult to escape.  On the other hand, open-source software is able to provide a more economical and flexible solution to users that do not rely on a single vendor's pricing or versioning decisions.
Open-source software is more easily accessible than other forms of software, which allows for increased usage, as it is by definition free and open to the public. Increased availability, along with increased usage, may result in standard adoption of the software by the general public. Open-source software's accessibility also decreases the number of bugs and implementation errors since anyone is free to access and edit it, increasing the number of available resources to contribute to problems within the code.
An added benefit of Open-source software is that it is constantly being updated -- sometimes by the original developers and sometimes by outside contributors. Sites like GitHub allow outside developers to work on identified "issues" in the codebase. This is useful because it often happens that there is a minor bug that does not compromise the functionality of the project but is annoying for the user. Something like this would be a low priority issue that the owners of the code would likely not get to in the process of further developing the code. Allowing outside developers to attempt to patch such a bug contributes to the usefulness and efficiency of the codebase. All patches go through the owning developers, such that no broken or buggy code could ever enter the code base.
Not only does open source offer freedom from being locked into a particular vendor, but it also allows for the flourishment of innovation. Because users have the opportunity to adjust the product without confinement, they are not restricted from creating new ways to implement things or coming up with new ideas altogether. For proprietary software, clients aren't allowed to adjust or even see the code. While this ensures security and quality of the product, it also hinders customization. However, for proprietary software, there does exist an online client group with the ability to share criticism and thoughts on the product which encourages the betterment and evolution of the software.
Disadvantages of Open-source Software
One disadvantageous aspect of open source software its ease of use. Without a framework organization, open source typically does not have good control over the programming to allow the capability of easily altering potential bugs. Additionally, there might not be very good or thorough documentation of the program and its functionalities. This can greatly hinder the ability of users to learn the software and assist in its growth and improvement. Alternatively, proprietary software is typically comprised of expert functionality which means usability is a high priority during creation. This also means the documentation will be very thorough, allowing users to discover the software capabilities much faster.
Another downside to open source software is that it might not always be created in the most controlled environment. With so many different people editing the code, each user may not continue with the development of the software for longer periods of time, often just fixing a bug here and there. There may also be a steep learning curve that takes time for users to be comfortable enough to actually contribute to the code and some users may not stick through this process. This can create a lack of continuity and affect the original direction of the product's evolution.
Lack of Resources
One major issue with open source software is due to the nature of it relying on a community of developers to support and create the software, there tends to be a lack of support available for end-users. Not being able to receive proper help and support on demand can be frustrating for many users and is a reason some tend to prefer proprietary software. Along similar lines, additional costs may be racked up in an effort to receive support for the software which would not be the case for proprietary software.
Security Vulnerabilities of Open-source Software
Despite arguments that claim that open-source software improves security, reports have shown that with the growth of open-source software its risks has been increased. The 2018 Open Source Security and Risk Analysis (OSSRA) report provide an in-depth look at the current state of open-source security, license compliance, as well as code-quality risk in commercial software. The report highlight that in 2017, 33% of audited codebases containing Apache Struts, an open-source model-view-controller framework, contained the vulnerability that led to the Equifax breach.  Industries represented in the report include automotive, big data, cyber security, enterprise software, financial services, healthcare, Internet of Things (IoT), manufacturing, and mobile apps.
Open-source Software in Operating Systems
The global market share analysis for desktop computer operating systems which indicates that as of January 2019, Windows owns the majority share, claiming 75.47% of the market; Mac OS claims 12.33% of the market; Linux claims 1.61% of the market; Chrome OS claims 1.17% of the market and the remaining 9.42% is claimed by Others/Unknown . Of the top four operating systems in the market, Linux and Chrome OS are open source while Windows and Mac OS fall under the category of proprietary software. From a cybersecurity and statistics standpoint, it can be argued that open-source operating systems are less vulnerable to malware due to their significantly smaller market shares. It is more logical for an adversary to create malware for proprietary operating systems such as Windows or Mac OS, as the adversary’s malicious software will have a higher probability of successfully infecting targeted computers.
According to John Snapper, plagiarism can consist of two things:  (1) being the use of work unauthorized and (2) being to use another's work without proper documentation. Usage of open source software is by nature authorized, so it cannot be a violation of plagiarism according to the first definition. However, it can be a violation the second way. If a developer does not identify their sources they are guilty of plagiarism. With such a large amount of open source software projects, it is becoming an increasing concern that one's published code will be used without proper citations by someone else.
Concerns of plagiarism are even greater within computer science disciplines at academic institutions. Through the use of standardized assignments and recycled projects from separate terms of the same classes, projects solutions will often circulate among students, resulting in academic misconduct and honor code violations. The use of other’s code within these software development programs is strictly prohibited, and the abundance of open source code makes it continuously easier to circumvent these restrictions.
Online repositories such as GitHub can be major players within this context. When students publish their project code to GitHub and leave it available to the public, it becomes instantly susceptible to plagiarism. With the demanding nature of computer science courses, the availability of instant solutions to complex problems is an often enticing option to a student looking for an easy way out. Plagiarism detection methods are commonly in place to deter such actions, but they are imperfect and susceptible to circumvention.
Even beyond GitHub repositories containing full solutions to problems, online forums like StackOverflow, designed to aid programmers with questions they may have, often devolve into copy-pasting code. Minor acts of plagiarism like copying smaller functions or simple algorithms through StackOverflow are not easily detectable, yet impede on the integrity of student’s work all the same.
All of these examples can be further extended to the workplace, as even professional software programmers can be guilty of code plagiarism.
One of the issues that OSS brings to the table is the lack of responsibility in regards to the software that is being created. There are many questions as to what is making sure the software is quality and follows proper standards. Over the years, OSS has done a great job of producing quality software through the community of developers approach and thus have developed trust amongst consumers and the software community. However, many argue that although the past has been successful, it is still important to question the ability for OSS to operate successfully with its current structure. As technology continues to grow and more people become developers, the OSS community is going to continue to grow. This is great for the future of the community, as more and more software can be produced and many hands make light work, but as communities grow the likelihood of issues arising that were previously not present. More developers not following the Software Engineering Code of Ethics that the OSS community follows, and soon the quality of OSS software is dropping without users' awareness of it . It is important that the OSS community is aware of the power and importance of continuing to act professionally and take responsibility for the software that they are creating. There are great similarities between the OSS community and Wikipedia in this regard. Having the trust of the internet comes with more power and responsibility, and Wikipedia has done a great job of continuing to stay well regulated and maintain their quality.