Open-Source Software ISYS 475 Open-Source Software • Open-source software (OSS) is computer software with its source code made available and licensed with an open-source license in which the copyright holder provides the rights to study, change and distribute the software for free to anyone and for any purpose. • Digital rights management (DRM) technologies attempt to give control to the seller of digital content or devices after it has been given to a consumer. Free Software and Free Software Foundation • Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us • The Free Software Foundation is working to secure freedom for computer users by promoting the development and use of free (as in freedom) software and documentation and by campaigning against threats to computer user freedom like Digital Rights Management (DRM) and software patents. – http://www.fsf.org/ Free Software Definition • A program is free software if the program's users have the four essential freedoms: – The freedom to run the program, for any purpose (freedom 0). – The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this. – The freedom to redistribute copies so you can help your neighbor (freedom 2). – The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. Brief History • Tiny BASIC: 1975 – It is a dialect of the BASIC programming language that can fit into as little as 2 or 3 KB of memory. – Collaboratively developed and implemented on many computers. – "@COPYLEFT ALL WRONGS RESERVED” • GNU project: 1983 – A Unix-like operating system includes a kernel, compilers, editors, text formatters, mail software, graphical interfaces, libraries, games and many other things. – GNU/Linux system – GNU General Public License The Open Source Definition http://opensource.org/osd • 1. Free Redistribution • 2. Source Code • 3. Derived Works: allow them to be distributed under the same terms as the license of the original software. • 4. Integrity of The Author's Source Code:may restrict source-code from being distributed in modified form • 5. No Discrimination Against Persons or Groups • 6. No Discrimination Against Fields of Endeavor: – Type of business, genetic research, etc. • 7. Distribution of License: – The rights attached to the program must apply to all users • 8. License Must Not Be Specific to a Product: – The rights attached to the program must not depend on the program's being part of a particular software distribution. • 9. License Must Not Restrict Other Software: – the license must not insist that all other programs distributed on the same medium must be open-source software. • 10. License Must Be Technology-Neutral Open Source Licenses • Open source licenses are licenses that comply with the Open Source Definition — in brief, they allow software to be freely used, modified, and shared. GNU General Public License, version 2 http://opensource.org/licenses/GPL-2.0 • freedom to distribute copies of free software (and charge for this service if you wish), • receive source code or can get it if you want it, • can change the software • if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. • It protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. • there is no warranty for this free software. Copyleft • Copyleft is a form of licensing and can be used to maintain copyright conditions for works such as computer software, documents, and art. • It uses copyright law to offer the right to distribute copies and modified versions of a work and requiring that the same rights be preserved in modified versions of the work. Characteristics of Open Source • Have access to the source code – Availability of source code provides greater continuity and security against : • Financial collapse of vendors of key products • Vendors choosing to withdraw support for unprofitable products • Distributed with a license • Open-source software is very often developed in a public, collaborative manner. • No warranty Example: Sendmail • License: – C:\xampp\sendmail\license • Source code: – C:\xampp\sendmail\source\sendmail.dpr • This program can be opened with NotePad Benefits of Using Open Source Software http://open-source.gbdirect.co.uk/migration/benefit.html • Quality vs features: Commercial products typically favor visible features (giving marketing advantage) over harder-to measure qualities such as stability, security and similar less glamorous attributes. • Flexibility through freedom: – Freedom from a single vendor – Freedom to modify your software tailored for the way you do business. • Total cost of ownership: – Total of direct capital investment in software plus indirect costs of installation, training, repairs, downtime, technical support, and upgrading. Total cost of ownership (TCO) • Arguments in favor of low TCO for open source software include: – Possibly zero purchase price – Potentially no need to account for copies in use, reducing administrative overhead – Claimed reduced need for regular upgrades (giving lower/nil upgrade fees, lower management costs) – Claimed longer uptimes and reduced need for expensive systems administrators – Near-zero vulnerability to viruses eliminating need for virus checking, data loss and downtime – Claimed lower vulnerability to security breaches and hack attacks reducing systems administration load – Claimed ability to prolong life of older hardware while retaining performance Disadvantages of Open Source Software • Projects can die • Support issues: – Open Source community does not have a legal obligation to answer your questions. – Open Source support usually consists of forums only and it's not unusual for questions to go unanswered. • No guarantee of updates • Liability for intellectual property infringement – The typical open source project contains contributions from many people. It is almost impossible to audit the entire code base for violations of previous license conditions. Typical Open Source Platform for Web Applications Development • LAMP: – Linux, Apache, MySQL, PHP • XAMPP: – an easy to install Apache Distribution for Linux, Windows, Mac OS X, and Solaris. The package includes the Apache web server, MySQL, SQLite, PHP and Perl Software for this course • Operating System: – Windows • Web server: – Apache • Database management system: – MySQL, SQLite • Development language: – PHP • IDE: – NetBeans