Moshi Co-Operative University (Mocu) : Open Source Software Development CIT 310
The document discusses open source software development including starting open source projects, types of open source projects like solo, monarchist, community and corporate projects, methods for open source development, tools for communication, version control, bug tracking and more in open source projects.
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
84 views
Moshi Co-Operative University (Mocu) : Open Source Software Development CIT 310
The document discusses open source software development including starting open source projects, types of open source projects like solo, monarchist, community and corporate projects, methods for open source development, tools for communication, version control, bug tracking and more in open source projects.
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 21
MOSHI CO-OPERATIVE
UNIVERSITY (MoCU)
Open Source Software Development
CIT 310
The Evaluation of Free/Open Source Software
Development Objectives Introduction to open source software Process-Data Model for open-source software development Types of open-source projects Methods for open-source software development Tools for open-source software development The Freeware, Free Software, Shareware & proprietary software Open-source software development Open-source software development is the process by which open-source software, or similar software whose source code is publicly available, is developed by an open-source software project. These are software products available with its source code under an open-source license to study, change, and improve its design. Open-source software development has been a large part of the creation of the World Wide Web Process-Data Model for open-source software development Starting an open-source project There are several ways in which work on an open- source project can start: An individual who senses the need for a project announces the intent to develop a project in public. A developer working on a limited but working codebase, releases it to the public as the first version of an open-source program. The source code of a mature project is released to the public. A well-established open-source project can be divided by an interested outside party. Types of open-source projects 1. Solo 2. Monarchist 3. Community 4. Corporate 5. Foundation Solo Solo projects have only one or two developers who are responsible for 100% of the code, decisions, and support of the project. They generally consist of one or two programmers who decided to open source a custom project they did in hopes of improving their professional image and/or attracting other developers to help out Monarchist A Monarchist project is usually a Solo project which "succeeded" and developed a large community. While these projects can involve large numbers of contributors, all decisions are made by the project lead and a small number of "deputies" whom he/she appoints. Community Community projects have a significant number of contributors who run the project democratically as peers. While occasional majority votes may be taken, most decisions are made by a combination of volunteerocracy and consensus. Larger projects may have a steering committee of senior members who decide strategic direction, contributor disputes, and who gets commit rights. Corporate Corporate projects generally consist of code which was open sourced by a private company but not completely alienated from them. For many, it can be hard to tell the difference between the project and the company: the majority of programmers are company employees and the company's marketing department determines strategic direction for the project. Foundation • A non-profit foundation can be thought of as the end point in formal organization of open source projects. • Such projects are incorporated with officers and directors and all decision-making formalized by the necessities of corporate structure. • Often this is done in response to the project being critical to several large companies, who use the formal structure to protect their mutual interests and ensure themselves a voice Methods According to Fuggetta, A. (2003) mentioned the appropriate methods as follows “rapid prototyping, incremental and evolutionary development, spiral lifecycle, rapid application development, and, recently, extreme programming and the agile software process can be equally applied to proprietary and open source software” Tools for OSSD Communication channels Developers and users of an open-source project are not all necessarily working on the project in proximity. They require some electronic means of communications. E-mail is one of the most common forms of communication among open-source developers and users. Tools for OSSD Cont.… Version control systems In OSS development the participants, who are mostly volunteers, are distributed amongst different geographic regions so there is need for tools to aid participants to collaborate in the development of source code. Concurrent Versions System (CVS) is an example of a source code collaboration tool being used in OSS projects. CVS helps manage the files and codes of a project when several people are working on the project at the same time. Many open-source projects are now using distributed revision control systems, which scale better than centralized repositories such as SVN(Subversion revision control system) and CVS. Tools for OSSD Cont.… Bug trackers and task lists Most large-scale projects require a bug tracking system to keep track of the status of various issues in the development of the project. Some bug trackers include: Bugzilla – a web-based bug tracker from Mozilla. Mantis Bug Tracker – a web-based PHP/MySQL bug tracker. Trac – integrating a bug tracker with a wiki, and an interface to the Subversion version control system. Redmine – written in Ruby, integrates issue tracking, wiki, forum, news, roadmap, gantt project planning and interfaces with LDAP user directory. Tools for OSSD Cont.… Testing and debugging tools Since OSS projects undergo frequent integration, tools that help automate testing during system integration are used. An example of such tool is Tinderbox. Tinderbox enables participants in an OSS project to detect errors during system integration. Tinderbox runs a continuous build process and informs users about the parts of source code that have issues and on which platform(s) these issues arise Tools for OSSD Cont.… Package management A package management system is a collection of tools to automate the process of installing, upgrading, configuring, and removing software packages from a computer The Red Hat Package Manager (RPM) for .rpm and Advanced Packaging Tool (APT) for .deb file format, are package management systems used by a number of Linux distributions Freeware, Free Software, Shareware & proprietary software Freeware is software that is made available for use by the author at no cost for an unlimited time. However, the author may retain the copyright. This means that users are not allowed to do anything with the software that is not permitted by the author. Cont.……. Free software is software that can be used, modified, copied and redistributed without restriction and for no cost. For software to be distributed as free software, the source code (human readable form of the program) must be made available to the recipient (along with the free software license releasing the source code to the public) to allow for modification. Cont.……. Shareware is both a type of software and a way to distribute the software. Authors of shareware give users a license to try out the software for a specific period of time, usually for 30 days. If a user wishes to continue using the software after this trial period, he is required to register with the author by paying the author a small fee Cont.……. Proprietary software, also known as closed- source software, is non-free computer software for which the software's publisher or another person retains intellectual property rights—usually copyright of the source code, but sometimes patent rights.