230 likes | 485 Views
How Is Open Source Affecting Software Development?. Je-Loon Yang. Introduction. What is open source? From a developers perspective, open source is a combination of two important properties: Visible source code A right to make unencumbered derivatives
E N D
How Is Open Source Affecting Software Development? Je-Loon Yang
Introduction • What is open source? • From a developers perspective, open source is a combination of two important properties: • Visible source code • A right to make unencumbered derivatives • Ex: Microsoft’s shared source and library vendors’ code licenses for developing derivative products from nonvisible code.
Terminology • Free Software • Designed Primarily by Richard Stallman • Involves four key rights inherent for users, developers, and reprogrammers • The freedom to run the program, for any purpose • The freedom to study how the program works, and adapt it to your needs • The freedom to redistribute copies so you can help your neighbor • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits
Terminology(2) • Open Source • A small group of Free Software developers concerned that the term “free” was being misunderstood by both developers and users • It’s basically the same thing as free software
Terminology(3) • Open Standards • Individuals and corporations are free to develop code that instantiates or works with the open standards • Example • HTML, software like IE, Dreamweaver, Firefox, and Opera • SQL, software like Oracle, MySQL
Terminology(4) • Shared source • The owner of the source code can offer different groups of users differential access to view the source code • No right to change the code
Criteria • Defined by OSI (Open Source Initiative) • Free Redistribution • The license shall not restrict any party from selling or giving away the software • Source Code • The program must include source code, and must allow distribution in source code as well as compiled form
Criteria(2) • 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 may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software
Criteria(3) • No Discrimination Against Persons or Groups • No Discrimination Against Fields of Endeavor • Distribution of License • The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties • 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
Criteria(4) • License Must Not Restrict Other Software • The license must not place restrictions on other software that is distributed along with the licensed software • License Must Be Technology-Neutral • No provision of the license may be predicated on any individual technology or style of interface.
Range of code adoption • Code adoption can happen at the level of a few lines of code, a method, a class, a library, a component, a tool, or a complete system.
Software Reuse Possibilities • Open up on three axes • What to reuse • Promoted by the available software’s breadth and price • How to reuse it • Diverse granularity and interfacing options • Where to reuse it • Inherent portability of source code over most binary packaged component technologies
Software Reuse Possibilities (2) • Movement along three axes increases the breadth of software reuse opportunities in any development effort.
Websites • Free Software Foundation • http://www.fsf.org/ • FreshMeat • http://freshmeat.net • SourceForge • http://sourceforge.net • Comprehensive Perl Archive Network • http://www.cpan.com
Influence on software products • Design based on existing software elements • The reused open source code will typically be of higher quality than the custom-developed code’s first incarnation • Functionality will often be far more complete than what the bespoke development would afford
Influences on software products (2) • Reusing open source components can also affect the licensing model of the resultant product. • Some open source license dictate under which license you can distribute derivative products.
Metric • Quality varies widely without standardized processes and metrics exist for assessing • Indicators • Underlying source code • Associated mailing list archives • Bug-tracking databases • Some software repositories even provide metrics of activities based on the factors above
Security • Pros: • Benefit from reusing widely deployed and scrutinized algorithms and protocols • Cons: • Adversaries having access to the source can more efficiently locate and exploit vulnerabilities
Process Issues • Large open source development projects increase the visibility, accessibility, and adoption prospects of important software engineering processes such as version control, peer reviews, issue tracking, release engineering, and regression testing. • These processes are standard in any CMM level 3 and above organization.
Process Issues (2) • Developers reusing software in source form can read the code and can often learn valuable coding practices from well-engineered software • Ours is one of the few creative professions where writers are not allowed to read each other’s work
Conclusion • Open source and non-open source development tools both have strengths and weaknesses. Most likely, they are both here to stay. • Before developing with an open source, users should take a look at the license to make sure the rights. Some licenses make the developing software an open source, too.
References • Diomidis Spinellis, Clemens Szyperski, “How Is Open Source Affecting Software Development?”, IEEE Software, January/February 2004, pp 28-33 • Stephane Lussier, “How Open Source Changed the Way My Team Works”, IEEE Software, January/February 2004, pp 68-72 • Michel Ruffin and Christof Ebert, Alcatel, “Using Open Source Software in Product Development: A Primer”, IEEE Software, January/February 2004, pp 82-86 • Johndan Johnson-Eilola, “Open Source Basics: Definitions, Models, and Questions”, ACM Special Interest Group for Design of Communications Proceedings of the 20th annual international conference on Computer documentation, pp 79-83 • Free Software Foundation, http://www.fsf.org/ • Open Source Initiative OSI, http://www.opensource.org • ONLamp, http://www.onlamp.com • Yahoo Taiwan Knowledge+, http://tw.knowledge.yahoo.com