Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

Module 2: Principles and Open Source Methodology

1 Mark Questions:

1. What is open source software development?


Open source software development is the process by which open source (or
similar software whose source is publicly available) is developed. These are
software products “available with its source code and under an open source
license to study, change, and improve its design".
Examples: Mozilla Firefox and the OpenOffice.org Suite.

2. List any four participants in OSS Development projects.


a. Project leaders: who have the overall
responsibility
b. Volunteer developers: who do actual coding for the project.
c. Everyday users: who perform testing, identify bugs,
d. Posters (Periphery): who participate frequently in newsgroups and
discussions,

3. Draw a neat diagram of open source community.

4. What is License?
A license is the permission or right granted to engage in some act without which
the act might be otherwise unlawful.

5. Define copyright.
Copyright is a legal concept enacted by most national governments, that gives
the creator of an original work exclusive rights to it, usually for a limited period
of time.

6. What is Copy left?


Copyleft is a form of licensing and may be used to modify copyrights for
works such as computer software, documents, music and art.
Copyleft is the practice of using copyright law to remove
restrictions on distributing copies and modified versions of a work for
others and requiring that the same freedoms be preserved in modified
versions.

7. Define Patent.
A patent is a set of exclusive rights granted by a state to an inventor or
his assignee for a fixed period of time in exchange for a disclosure of an
invention.
The term "patent" refers to a right granted to anyone who invents or
discovers any new and useful process, machine, article of manufacture, or
composition of matter, or any new and useful improvement thereof.

8. Expand GPL and LGPL.


GPL: General Public License Please
LGPL: Lesser General Public License

9. Expand BSD and ASF


BSD: Berkeley Software
Distribution ASF : Apache
Software Foundation

10. What is bug tracker?


Bug tracker is used to keep track of the status of various issues in the
development of the project.

11. Write any two types of open source projects.


a. Software programs and libraries.
Eg: Linux kernel, the Firefox web-browser and OpenOffice.org office
b. Distributions
Eg: Debian, Fedora Core, Mandriva,
c. BSD derivatives,
d. Book or standalone document project..

12.Write any two ways of starting an open source project.


An individual who senses the need for a project announces the intent to
develop the 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.

13. Write any two tools used for open source development.

1. Communication Channels
2. Software Engineering Tools
3. TestingTools
4. Automated Tests

14.Expand CVS and SVN.


CVS: Concurrent Versions System
SVN: Subversion Revision Control System

15. List any four common licensing practices of open source.


 Public Domain
 Free Software Licenses in General
 The GNU General Public License
 The GNU Library General Public License

16. Expand NPL and MPL.


 Netscape Public License
 Mozilla Public License

17. List any four exclusive right attached to the holder of copyright.
i. To produce copies or reproductions of the work.
 To sell those copies (typically, electronic copies).
ii. To import or export the work.
iii. To create derivative works (works that adapt the original work).
iv. To perform or display the work publicly.
v. To sell or assign these rights to others.
vi. To transmit or display by radio or video.

18. Expand SQA and FDL


Software Quality Assurance
Free Documentation License

19. Expand GDB and OSI


a. GNU Debugger
b. Open Source Initiative

20. Expand RPM and APT.


 Red Hat Package Manager
 Advanced Packaging Tool
21. List any four law of patent.
a. Governing laws
b. Ownership
c. Application
d. Enforcement

22. Expand WTO and EPC


World Trade Organization
European Patent Convention

23. List the different paradigm of software engineering methodology


a. The Life-Cycle Paradigm
b. The Prototyping Paradigm
c. The Spiral Model Paradigm
d. Engineering Software

24. List any four bug tracker


a. BugzilLa-
b. Mantis-
c. Trac-
d. Request tracker
e. GNATS-The GNU Bugtracking system.
f. Source Forge

3 Mark questions:

1. Write the process data model for open source software development.
Open source software development is the process by which open source (or
similar software whose source is publicly available) is developed. These are
software products "available with its source code and under an open source license
to study, change, and improve its design". Examples of popular Open source
software product are Mozilla Firefox and the OpenOffice.org Suite.

The Open source software development method is very unstructured,


because no clear development tools, phases, etc.,

Every project has its own phases. There are, however, generalities between
Open source development projects.
Open source is also about sharing ideas, and spreading the effort of creating
software over a large number of interested developers. This sharing can lead to
better software in shorter development times. It also allows for better feedback
directly to the developers than is often present in traditional development models.

Major companies like Apple and IBM have recognized that there can be a
significant advantage to writing software in this way. Apple by way of the Darwin
project and IBM through several significant donations of software and patents to
open source groups have paved the way for other companies to seriously consider
using this development model.

Open source software development can be divided into several phases.

A diagram displaying the process-data structure of Open source software


development is placed on the right side. In this picture, the phases of Open source
software development are displayed, along with the corresponding data elements.
This diagram is made using the Meta-Modeling and Meta-Process Modeling The
process starts with a choice between the adopting of an existing project, or the
starting of a new project. The difference between these two is explained in the
section ‘New projects vs. existing projects'. If a new project is started, the process
goes to the Initiation phase. If an existing project is adopted, the process goes
directly to the Execution phase.
2. Explain the different types of open source projects.

Different types of open source projects are:

 Software programs and libraries: They are standalone pieces of code.


Some might even be dependent on other open source projects. These
projects serve a specified purpose and fill a definite need. Examples of
this type of project include the Linux kernel, the Firefox web-browser
and OpenOffice.org office suite of tools. Distributions are another type
of open source project.
 Distributions are collections of software: that are published from the
same source with a common purpose. The most prominent example of a
"distribution" is an operating system. There are a large number of Linux
distributions (such as Debian, Fedora Core, Mandriva, Slackware, etc.)
which ship the Linux kernel along with many user-land components.
There are also other distributions, like ActivePerl, the Perl programming
language for various operating system, and even the OpenCD and
cygwindistributions of open source programs for Microsoft Windows.
 BSD derivatives: maintain the source code of an entire operating
system, the kernel and all of its core components, in one revision
control system;
developing the entire system together as a single team. These operating
system development projects closely integrate their tools: more so than
in the other distribution based systems. Finally, there is the book or
standalone document project. These items usually do not shipped as
part of an open source software package. The Linux Documentation
Project hosts many such projects that document various aspects of the
GNU/ Linux operating system.

3. How to start an open source project? Explain.


There are several ways in which work on an open source project can start:

1. An individual who senses the need for a project announces the intent to
develop the project in public. The individual may receive offers of help from
others. The group may then proceed to work on the code.

2. A developer working on a limited but working codebase, releases it to


the public as the first version of an open source program. The developer
continues to work on improving it, and possibly is joined by other developers.

3. The source code of a mature project is released to the public, after


beingdeveloped as proprietary software or in house software.

4. A well-established open source project can be forked by an interested


outside party. Several developers can then start a new project, whose source code
then diverges from the original. Eric Raymond observed

4. Write a note on participants in OSS Development Projects.


The participants can be divided into the following:

1. Project leaders who have the overall responsibility (Core). Most of them
might have been involved in coding the first release of the software. They
control the overall direction of individual projects.

2. Volunteer developers (Core/Periphery) who do actual coding for the project.


These include:

o Senior members with broader overall authority.


o Peripheral developers producing and submitting code fixes.
o Occasional contributors.
o Maintainers who work on different aspects of the project.

3. Everyday users (Periphery) who perform testing, identify bugs, deliver bug
reports, etc.

4. Posters (Periphery) who participate frequently in newsgroups and discussions,


but do not do any coding.

5. List and explain the tools used for open source development.

1. Communication Channels

Open Source Technology 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 commtmication among open source developers and users. Often, electronic
mailing lists are used to make sure e-mail messages are delivered to all
interested parties at once. This ensures that at least one of the members can
reply to it (in private or to the whole mailing list). In order to communicate in
real time, many projects use an instant messaging method such as IRC
(although there are many others available). Web forums .have recently become
a common way for users to get help with problems they encounter when using
an open source product.
2. Software Engineering Tools

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. ConcurreJJt
Versions System (CVS) is a prominent 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. CVS
allows several people to · work on the same file at the same time. This is done
by moving the file into the users' directories and then merging the files when
the users are done. CVS also enables one to easily retrieve a previous version
of a file.

Bug trackers and task lists

Most projects require a bug tracker (usually web or otherwise Internet


based) to keep track of the status of various issues in the development of the
project. A simple text file is not sufficient, because they have many such bugs,
and because they wish to facilitate reporting and maintenance of bugs by users
and secondary developers.

3. Testing. Tools

Since OSS projects undergo frequent integration, tools that help


automate testing during system integration are used. An example of such tool is
Tinderbox. Tmderbox enables participants in an OSS project to detect errors
during system integration. Tmderbox 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. Furthermore, this tool identifies the author of the
offending code. The author is then held responsible for ensuring that error is
resolved. Mainly because normal testing tools are quite expensive, open source
testing tools are gaining popularity.

A debugger is a computer program that is used to debug (and sometimes


test or optimize) other programs. GNU Debugger (GDB) is an example of a
debugger used in Open source software development. This debugger offers
remote debugging, what makes it especially applicable to Open source software
development. Also, some memory leak detectors have been designed to work
with GDB. A memory leak tool or memory debugger is a programming tool for
finding memory leaks and buffer overflows. A memory leak is a particular
kind of unnecessary memory consumption by a computer program, where the
program fails to release memory that is no longer needed. Examples of memory
leak detection tools used by Mozilla are the XPCOM Memory Leak tools.
Validation tools are used to check if pieces of code conform to the specified
syntax. They are most often used in the context of HIML/XML, but can also be
used with programming languages. An example of a validation tool is LCLint,
now called Splint.

4. 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 distribution.

5. Automated Tests

Software testing is an integral part of open source development. While


many open source packages were known to be released with some glaring bugs
even in some stable releases, most open source software eventually becomes
verystable.

6. Write a note on patent law.

1. Effects

A patent is not a right to practice or use the invention. Rather, a patent


provides the right to exclude others from making, using, selling, offering for
sale, or importing the patented invention for the term of the patent, which is
usually 20 years from the filing date. A patent is, in effect, a lir.1ited property
right that the govemment offers to inventors in exchange for their agreement to
share the details of their inventions with the public. Like any other property
right, it may be sold, licensed, mortgaged, assigned or transferred, given away,
or simply abandoned.

2. Enforcement

Patents can generally only be enforced through civil lawsuits (for example, for
a US patent, by an action for patent infringement in a United States federal court),
although some territories (such as France and Austria) have criminal penalties for
wanton infringement. Typically, the patent owner will seek monetary
compensation for past infringement, and will seek an injunction prohibiting the
defendant from engaging in future acts of infringement. In order to prove
infringement, the patent owner must establish that the accused infringer practices
all of the requirements of at least one of the claims of the patent (noting that in
many jurisdictions the scope of the patent may not be limited to what is literally
stated in the claims, for example dueto the "doctrine of equivalents").

3. Ownership

In most countries, both natural persons and corporate entities may apply for a
patent. The entity or entities then become the owners of the patent when and if it
issues. However, it is nearly always required that the inventor or inventors be
named and an indication be given on the public record as to how the owner or
owners acquired their rights to the invention from the inventor or inventors. In the
United States, however, only the natural person(s) (i.e., the inventor/s) may apply
for a patent. If a patent issues, then each person listed as an inventor owns the
patent separately from the other. For example, if two inventors are listed on a
patent, then one may grant licenses to the patent independently of the other, absent
an agreementto the contrary.
4. Governing laws

The grant and enforcement of patents are governed by national laws, and also
by international treaties, where those treaties have been given effect in national
laws.
Patents are, therefore, territorial in nature. Commonly, a nation forms a patent

5. Application

A patent is requested by filing a written application at the relevant patent office.


The application a description of how to make and use the invention and, under
some legislations, if not self evident, the usefulness of the invention. The patent
application may or must also comprise "claims". Claims define the invention and
embodiments for which the applicant wants patent rights. To obtain a patent, an
applicant

6. Economics

There are four primary incentives embodied in the patent system: to invent in
the first place; to disclose the invention once made; to invest the sums necessary to
experiment, produce and market the invention; and to design around and improve
upon earlier patents.
1. Patents provide incentives for economically efficient research and
development (R&D). Many large modern corporations have annual R&D budgets
of hundreds of dollars.

2. In accordance with the original definition of the term "patent," patents


facilitate and encourage disclosure of innovations into the public domain for the
common good.
7. Write a note on software engineering methodology.

Software engineering methodologies are the framework that tells us how we


should go about developing our software systems. These frameworks define
different phases of the development process, such as planning, requirements
analysis, design, testing and maintenance. The choice of which methodology to use
in a development project is closely related to the size of the software system and
the environment it is supposed to function in. The environment in itself constitutes
a larger system-though most often not a computer software system, but rather some
kind of organization. The different paradigms presented in this chapter all spring
from this view of the world as asystem of systems.

 The Life-Cycle Paradigm


The life-cycle paradigm. of software engineering is sometimes called the
"waterfall model", as it demands a sequential approach to the development process.
The work is started at the system level and passes through phases of analysis, design,
coding, testing and maintenance. Six activities constitute the overall development
process.

 System engineering and analysis: This activity is characterized by system-level


requirements gathering for all system elements, which then is reduced to a subset of
requirements that are relevant to the software system being developed. Overall design
and analysis tasks are also executed in order to understand the full system of which
the software system being developed is only a part.
 Software requirements analysis: This activity is usually executed together with the
customer, as the goal is to document all function, performance and interfacing
requirements for the software.
 Design: When creating the design of the software system the requirements are
transformed into a representation of software that can be assessed for quality before
the actual coding begins. Data structures, architecture, procedural detail and interface
characterization are outlined and documented in a design specification.
 Coding: This activity is the transition of the design specification into a software
program.
 Testing: This activity is to be executed using documented test methods in order to
ensure that as many errors as possible is unveiled, and that the software is in
accordance with the requirements.
 Maintenance: Rather than being an atomic activity, maintenance reapplies all other
activities, as new requirements are defined in order to adapt the software to the
changesoccurring in its environment.

8. Write a note on some common licensing practices


 Public Domain A common misconception is that much free software is
public domain. This happens simply· because the idea of free software or
Open Source is confusing to many people, and they mistakenly describe these
programs as public-domain. A public-domain program is one upon which the
author has deliberately surrendered his copyright rights. It can't really be said
to come with a license; it's your personal property to use as you see fit.
You can easily take a public-domain program private, by declaring a copyright
and applying your own license to it or simply declaring "All Rights
Reserved."

 Free Software Licenses in General If you have a free software collection


like a Linux disk, you may believe the programs on that disk are your
property. That's not entirely true. Copyrighted programs are the property of
the copyright holder, even when they have an Open Source license like the
GPL. The program's license grants you some rights, and you have other rights
under the definition of fair use in copyright law. It's important to note that an
author does not have to issue a program with just one license. You can GPL a
program, and also sell a version of the same program with a commercial, non-
Open source license.
 The Netscape Public License and the Mozilla Public License Netscape
developed NPL when they made their product Netscape Navigator Open
Source. Actually, the Open source version is called Mozilla; Netscape reserves
the trademark Navigator for their own product.
An important feature of the NPL is that it contains special privileges that apply to
Netscape and nobody else. It gives Netscape the privilege of relicensing
modifications that you've made to their software. They can take those
modifications private, improve them, and refuse to give you the result. This
provision was necessary because when Netscape decided to go Open Source, it
had contracts with other companies that committed it to provide Navigator to them
under a r.on-Open source license. Netscape created the MPL, or Mozilla Public
License, to address this concern. The MPL is much like the NPL, but does not contain
the clause that allows Netscape to re-license your modifications. The NPL and MPL
allow you to take modifications private.

9. What is Copyright? Explain.


Copyright is a legal concept enacted by most national governments, that gives the
creator of an original work exclusive rights to it, usually for a limited period of time.
o The development of copyright regulation reflects the social and technological
transformation around human creative activity and distribution of the resultant
profits. While granting exclusive private rights to authors or copyright holders
has been considered as a way of encouraging human creative activity.
o What can be Copyrighted? Copyright applies to the expression of ideas in
different forms, including literary, dramatic, musical, artistic, and other
intellectual works. The ideas expressed in such works are themselves not
copyrightable. Since the 1980s, the copyright ability of software became
internationally accepted.
o How do We Copyright Our Work? Now-a-days, copyright law does not
require formalities. The author does not need to publish, register, pay a
registration fee of any kind, nor attach a copyright notice to her work, for her
copyright to take effect. Copyright is automatically applied to a work once it is
created13 and the creator of the work automatically becomes the copyright
holder.
o Scope of copyright: Copyright may apply to a wide range of creative,
intellectual, or artistic forms or "works". These include poems, theses, plays,
and other literary works, movies, choreographic; works (dances, ballets, etc.),
musical compositions, audio recordings, paintings, drawings, sculptures,
photographs, software, radio and television broadcasts of live and other
performances, and, in some jurisdictions, industrial designs. Graphic designs.

o
10. What is Copy left? Explain
Copyleft is a form of licensing and may be used to modify copyrights for works such as
computer software, documents, music and art.
Copyleft is the practice of using copyright law to remove restrictions on distributing
copies and modified versions of a work for others and requiring that the same
freedoms be preserved in modified versions.

o Copyleft is a general method for making a program or other work free, and
requiring all modified and extended versions of the program to be free as well.
The simplest way to make program free software is to put it in the public
domain, uncopyrighted. This allows people to share the program and their
improvements. But it also allows uncooperative people to convert the program
into proprietary software. They can make changes, many or few, and distribute
the result as a proprietary product. People who receive the program in that
modified form do not have the freedom that the original author gave
them; the middleman has stripped it away.
o In the GNU project, our aim is to give all users the freedom to redistribute and
change GNU software. If middlemen could strip off the freedom, we might have
many users, but those users would not have freedom. So instead of putting GNU
software in the public domain, we "Copyleft" it. Copyleft says that anyone who
redistributes the software, with or without changes, must pass along the
freedom to further copy and change it. Copyleft guarantees that every user has
freedom.

o Copyleft also provides an incentive for other programmers to add to free


software. Important free programs such as the GNU C++ compiler exist only
because of this.

o Copyleft also helps programmers who want to contribute improvements to


free software get permission to do that. These programmers often work for
companies or universities that would do almost anything to get more money.

11. Define Patent. Write a note on it.


A patent is a set of exclusive rights granted by a state to an inventor or his assignee
for a fixed period of time in exchange for a disclosure of an invention.
The term "patent" usually refers to a right granted to anyone who invents or discovers
any new and useful process, machine, article of manufacture, or composition of matter, or
any new and useful improvement.
 A patent application must include one or more claims defining thE invention
which must be new, inventive, and useful or industrially applicable. The
exclusive right granted to a patentee in most is the right to prevent or exclude
others from making, using, selling, offering to sell or importing the invention.

13. Write a note on bug trackers and task lists.


 Bugzili·a-a sophisticated bug tracker from the Mozilla house. Web-based.
 Mantis-a web-based PHP /MySQL bug tracker.
 Trac-integrating a bug tracker with a wiki, and an interface to the Subversion
version control system.
 Request tracker-written in Perl. Given as a default to CPAN modules - see
rt.cpan.org.
 GNATS-The GNU Bugtracking system.
 SourceForge and its forks provide a bug tracker as part of its services. As a
result many projects hosted at SourceForge.net and similar services default to
using it.
 LibreSource.

15. Write a note on choosing a license.


Decisions on choosing a license
 Do you want people to be able to take modifications private or not? If you want to get
the source code for modifications back from the people who make them, apply a license
that mandates this. The GPL and LGPL would be good choices. If you don't mind
people taking modifications private, use the Apache license.
 Do you want to allow someone to merge your program with his or her own proprietary
software? If so, use the LGPL, which explicitly allows this without allowing people to
make modifications to your own code private, or use Apache licenses, which do allow
modifications to be kept private.
 Do you want some people to be able to buy commercial-licensed versions of your
program that are not Open Source? If so, dual-license your software. I recommend the
GPL as the Open Source license;
 Do you want everyone who uses your program to pay for the privilege? If so, perhaps
Open Source isn't for you. If you're satisfied with having only some people pay you, you
can work that and keep your program Open Source.

You might also like