Open Source Software Flashcards
What is open source development?
Its an approach to software development in which the source code of a software system is published and volunteers are invited to participate in the development process.
Its roots are in the Free Software Foundation (www.fsf.org), which advocates that source code should not be proprietary but rather should always be available for users to examine and modify as they wish.
Open source software extended this idea by using the Internet to recruit a much larger population of volunteer developers. Many of them are also users of the code.
What are open source systems?
Open source software is widely used by consumers, businesses and especially software developers.
Well know examples are the Android mobile platform, the Linux operating systems, e.g. Ubuntu, and the Firefox browser and languages such as Java and Python.
Many software developer use open source tools such as Eclipse and GCC, the GNU Compiler collection, daily. The WWW relies heavily on open source software such as Apache.
Notable open source web browsers are Mozilla’s Firefox, and Google’s Chromium.
There are many proprietary browsers too, though all likely depend significantly on open source libraries.
e.g. Chrome was assembled from 25 different code libraries from Google and third parties such as Mozilla’s Netscape Portable Runtime, Network Security Services, NPAPI, Skia Graphics Engine, SQLite, and a number of other open-source projects. https://en.wikipedia.org/wiki/Google_Chrome
What are open source issues?
Should the product that is being developed make use of open source components?
Should an open source approach be used for the software’s development?
What is open source business?
More and more product companies are using an open source approach to development.
Their business model is not reliant on selling a software product but on selling support for that product.
They believe that involving the open source community will allow software to be developed more cheaply, more quickly and will create a community of users for the software.
What is open source licensing?
Today open source software is licensed in similar ways to commercial software. The terms though are rather different. Open source software licenses tend to emphasis the rights of the user to do things that commercial licenses typically prohibit, such as distributing copies.
Prior to open source licensing being adopted in the 1980s software was sometimes distributed as freeware – usually meaning copyrighted but free to use and copy, or as public domain – with nobody having any legal rights over the software.
A fundamental principle of open-source development is that source code should be freely available, this does not mean that anyone can do as they wish with that code.
- Legally, the developer of the code (either a company or an individual) still owns the code. They can place restrictions on how it is used by including legally binding conditions in an open source software license.
- Some open source developers believe that if an open source component is used to develop a new system, then that system should also be open source.
- Others are willing to allow their code to be used without this restriction. The developed systems may be proprietary and sold as closed source systems.
What are some open source license models?
The GNU General Public License (GPL). This is a so-called ‘reciprocal’ license that means that if you use open source software that is licensed under the GPL license, then you must make that software open source.
The GNU Lesser General Public License (LGPL) is a variant of the GPL license where you can write components that link to open source code without having to publish the source of these components.
The Berkley Standard Distribution (BSD) License. This is a non-reciprocal license, which means you are not obliged to republish any changes or modifications made to open source code. You can include the code in proprietary systems that are sold.
What is license management?
- Establish a system for maintaining information about open-source components that are downloaded and used.
- Be aware of the different types of licenses and understand how a component is licensed before it is used.
- Be aware of evolution pathways for components.
- Educate people about open source.
- Have auditing systems in place.
- Participate in the open source community