Professional Documents
Culture Documents
UNIT 3_OSS
UNIT 3_OSS
UNIT 3_OSS
Unit III
The traditional software development process consists of six activities, illustrates in Figure 1: collecting
and analyzing requirements, design a solution approach, develop the code, test, deploy and maintain.
After each step is finished, the process proceeds to the next step.
The open source development model has key differences when compared to the traditional model of
developing software (collect requirements, design, implement, test, release, and maintain).
The open source development model, illustrated in Figure 2, starts with an idea for a new project, a new
functionality or capability to an existing open source software component. Next step is to provide a design
for the implementation and then a prototype of the capability and translate it from an idea into running
software. At the moment the software runs, it is released as development release, even though it may contain
known and unknown bugs. This follows the spirit of release early and release often.
The software will be tested by the community who discuss the software through mailing lists and discussion
boards and provide feedback, bug reports, and fixes through the project mailing list. The feedback is
recorded and taken into consideration by project members and maintainers to improve the implementation
and then a new development release will be available. This cycle happens as many times as needed until
project members feel that the implementation is stable enough. When the implementation is released as
stable, the development cycle continues to happen with the development release (also called development
tree) until a newer stable release is available.
Here the users can work as co-developers and hence, they can access the source code.
The base version should get released early to find its co-developers early.
The codes contributed by co-developers must have a quick integration into the source code.
A modular approach of the software makes it easy to study and modify.
A well structured decision-making structure should be there.
Some of the unique characteristics of the open source development model include:
1. Bottom up development: Project members who do the most work get the most say when it comes to
making design and implementation decisions. Those that do the most work get the most say.
Relationships between developers are very important.
2. “Release early, release often”: Don’t wait to have a fully working version to make the code public
and release a version of the software. This release philosophy allows for peer review, where all
members of the community can comment and offer suggestions and bug fixes. It also allows having
small incremental changes that are easier to understand and test. Open source projects tend to make a
release available early to be used by the user community and then quickly update the releases as the
software is modified. This practice is described as “release early, release often”. The open source
community believes that this practice leads to higher-quality software because of peer review and the
large base of users who are using and testing the software, accessing the source code, reporting bugs,
and contributing fixes. A side benefit of having many people looking at the code is that the code is
reviewed for adherence to coding style; fragile or inflexible code can also be improved because of
these reviews.
3. Peer Review: Members of the open source project review the code, provide comments and feedback
to improve the quality and functionality, and do early test to catch bugs and provide enhancements
as early as possible in the development cycle. The result is an improved, high quality code.
4. Small, Incremental changes: In open source project development, often additional features are
small and non intrusive for good reasons:
a. It is easier to understand small patches and code changes than making a large change in the
code or a big architectural re-design.
b. The small changes are important because its helps focusing the testing phase which is
cyclical and ongoing with every increment of the software.
c. A small change is less like to have unintended consequences.
5. Features that ignore security concerns are flagged: The open source community takes security
very seriously and any development or capability that jeopardizes the security of the software is
flagged and not included in the software until the security concern is dealt with.
6. Continuous quality improvement: This is due to the extensive peer review and quick bug fixes
7. Test projects: In many cases, test projects are created for large open source projects to create test
suites and automate testing.
8. End user involvement in the entire process: In Figure 2, we notice that the users are actually
involved in all the phases of development in the open source model.
3.2 LICENSING
An Open-Source-Software-based License:
The amount of open-source-software (OSS) used in the global software engineering community is already
enormous and still growing. This includes both the products we develop and the development tools we use
to create them. It is meanwhile rare to find examples of products that do not contain open source
components. Although, using open source components in products does have many advantages, it is very
important that one also manages the use of the open source components in a license-compliant way. A set of
companies and other organizations who either offer or use OSS-based license compliance tools have
recently formed the “Open Source Tooling Group”. This international group works on establishing an
ecosystem of OSS-based tools for license compliance that fit together well and can offer an ecosystem of
tools for organizations to help fulfill their license compliance obligations. This talk provides the motivation
and overview of this topic describing the relevance to software engineering practitioners. It will close by
highlighting some of the research areas where further improvements could be done in this fast-growing field.
GNU GPL
The positive aspects of GNU GPL license are
• Maintenance of GPL for derivative software thus guaranteeing free access and distribution.
• Most commonly used free software licensing method.
• The integrator can view and use the source code for his development activities.
• The integrator can modify the source code for his products.
• The integrator can provide his software under his own name.
• The integrator will have a good community support.
• Competitors cannot use the software to create closed-source derived products.
Generally we can say, that commercial companies may not want to further develop software under GPL
because they can not later change the licensing type and that the integration into closed source or even open-
source environments with other licenses can be hard and particularly not be done.
MODE OF
FUNDING
Commercial
Corporate
Donations Enterprise
Sponsor
Support
1. Donations:
Wikipedia is the best example of the donation model. Annually it turns to its users directly asking for
donations, using banner ads and on-site promotions. The Wikimedia Foundation also receives funding from
benefactors and grants. Wikimedia follows a very similar model as public radio in the U.S.
Bitcoin Foundation is funded by a membership model which you can join for a donation or if you wish
you can donate without membership. Membership is another very common model for offline non-profit
organizations
Software foundations such as the Free Software Foundation, Software for the Public Interest, Software
Freedom Conservancy and Apache Foundation operate under a similar sponsorship model, with the
majority of donations coming from large corporate sponsors.
2. Corporate Sponsor or Patronage:
Companies benefit greatly from open source software and will hire and employ people just to work on them.
Google employed creator of Python, Guido van Rossum for 7-years. Yahoo employed creator of PHP,
RasmusLerdorf for many years to further PHP development. Two examples which key people are able to
dedicate their time.
Linux has long been funded and advanced by corporate contributors. You can see the amount of time given
to open source by the Linux contributors list. A majority of these contributions are for drivers to make the
company’s hardware work with Linux. The companies are motivated to get involved but the time and code
contributed is still open source.
Android was created by Google and released as open source to generate a platform audience, receive
contributions and feedback and encourage adoption. Also, as open source third-party manufacturers are
more willing to adopt a platform since it is open. Google still maintains primarily control and employs
the majority of developers.
3. Commercial Enterprise Support
RedHat was one of the first companies who attempted to build a for-profit business off open source. The
RedHat business model is to develop an enterprise version of the Linux platform and offer long-term
stability and enterprise support contracts. RedHat had some bumps along the way but has worked out a
pretty good model, now working well with the community and is a profitable company with a \$10b
valuation # Ubuntu follows a similar model as RedHat but started with more a focus on the consumer
market.
• Open source software is the computer software developed either by an individual, group or an organization
to meet certain requirements and it is available openly for general public for any modifications based on its
developing body’s interest.
• The cost of open source software is free.
• Open source provides limited technical support.
• Open source software is available under free licensing.
• In open source software users need to rely on community support.
• In open source software installation and updates are administered by the user.
• Limited hands on training and online resources are available for open source software application training.
• Here in open source software users can customize.
• In this rapid community response helps in fixing the bugs and malfunctions.
• In open source software the source code is public.
• The source of funds of open source software mainly depends on donations and support.
Commercial Software: Commercial software is the computer software where only the person, team, or
organization that created it can modify also they have exclusive right over the software. Anyone needs to use
it has to pay for it valid and authorized license. Here the source code is protected. For commercial software
the users need to spend moderate to expensive cost. It is available under high licensing cost. It depends on
its software sale / product licensing as its main source of fund.
Some examples of commercial software are Windows Operating System, MS Office, SAP, Oracle, Adobe
Photoshop.
• Commercial software is the computer software where only the person, team, or organization that created it
can modify also they have exclusive right over the software. Anyone needs to use it has to pay for it valid
and authorized license.
• The cost of commercial software varies from moderate to expensive.
• Commercial software provides guaranteed technical support.
• Commercial software is available under high licensing cost.
• In commercial software users get dedicated support from the vendor.
• In commercial software installation and updates are administered by the software vendor.
• On site and Online trainings are available from the commercial software vendor side for software
application training.
• But in commercial software mainly vendor offers customization.
• In this mainly the vendor is responsible for fixing the malfunctions.
2. Ownership
Assume that a group of researchers want to use the source code of some open source software to study
metrics of coding. However, this is not the use of the software that the developers intended. The question that
gets raised by this concept is whether or not researchers would need to ask the developers for permission to
study the code. If they do not need the permission, then the developers might be discontented with this use
and thus might be discouraged from creating new works and Open Source Software in the future. On the other
hand, if they would need the permission, then it leads to even bigger problems.
The three core aspects that are required for Open Sourcs Model to function are:
1. RESPECT
2. MORAL
3. COMPLIANCE
1. RESPECT
When consuming, using or redistributing an open source component, we respect the provider’s
ideas, thoughts, individual rights and intellectual property by adhering to associated license terms
& conditions. If the terms & conditions are unclear, we contact the provider for clarification.
2. MORAL
We regard open source model as sharing model. the provider shares a creation in a greater
community. the community is expected to give constructive feedback to improve & collaborate.
This can include a question in discussion or mailing list, filing a bug, change or submit a patch. the
Communication is respectful, polite & constructive.
3. COMPLIANCE
The compliance boundary conditions of a software distribution are expected to be given. it includes
fulfilling obligations of single licenses. Compliance to the terms & conditions of all included open
source software components must be made plausible.
3.7 OPEN SOURCE TEACHING
Open Source Teaching-Learning is an emerging philosophy of education for the Digital Age. In their
day, educational theories such as Waldorf, Montessori, and Reggio Emilia met the evolving needs of
learners. Today’s challenges and opportunities demand more.
Open Source Teaching-Learning empowers students to work in partnership with teachers to
develop their own learning experiences and interdisciplinary paths of inquiry.
It enables students to amplify and accelerate their learning by participating in virtual networks and
online communities. Students can apprentice with expert mentors and collaborate with partners
around the world.
They can also create their own knowledge capital as they learn.
Open Source Learning empowers us to produce value, interdependence, and hope in real time.
Why Open Source Teaching-Learning?
In spite of all the attention and money devoted to improving our education system, today’s learners remain
poorly understood and badly underserved. Students, parents, and teachers are suffering.
Rather than advocating a specific system or required set of techniques, tools, and ideas, Open Source
Teaching-Learning embraces the idea that everyone learns different things in different ways, and it values
diverse approaches to reaching those goals.
We can now connect beyond the classroom with the ideas, resources, and people that can help students on
their learning journeys.
In Open Source Teaching-Learning, each student works with the guidance of a teacher-mentor to develop an
interdisciplinary learning journey around a big idea or question.
Students design their experience by working with a variety of tools – especially resources in the digital
realm, such as credible internet content, online organizing tools (calendar, project management, and
collaboration), 3-D printing, and mobile devices.
As their projects develop, students deepen their experience through information-sharing that establishes
themselves and empowers others.
Results
The result of Open Source Teaching-Learning is that, in the process of mastering concepts and skills, we
develop our mental, physical, civic, spiritual, and technical fitness, and we learn new ways to think. For
example:
• It allows students to create and manage interactive learning material that becomes available online to
everyone, generating and sharing value that extends beyond the traditional K-16 curriculum.
• Deeper and more engaged involvement results in significant improvement in academic achievement.
• It also creates opportunities for traditional performance evaluation of objective production, including
formative and summative tests; and alternative assessment of portfolios, which can include a variety of
artifacts, including trans media presentation of content, and the student’s choices related to platforms, media,
and design.
• Participants – students and teachers alike — emerge with progressively masterful records of assessment
and authentic work portfolios that tell a far more compelling story than diplomas or résumés.
Open Source Media refers to media that is created and distributed under an open-source license. This means
that the source code of the media is made available to the public, allowing anyone to view, modify, and
distribute it. The open-source approach is often used in software development, but it can also be applied to
other types of media such as music, video, and images.
There are several benefits to using open-source media. First, it allows for greater collaboration and
innovation since anyone can contribute to the development of the media. Second, it can help to reduce costs
since there is no need to pay for expensive proprietary software or licenses. Finally, it can help to promote
transparency and accountability since the source code is available for anyone to review.
There are several examples of open-source media available today. One such example is OSMC, a free and open-
source media center built on Debian Linux and Kodi Media Center . Another example is mpv, a free and open-source
media player for the command line .
Open source media centre- OSMC (Open Source Media Center) is a free and open source media
center distribution
Open source media server- store all your media files in one place on the media server and can
access them remotely or locally using a computer or smartphone.
Open source media manager- An open-source media manager is a software tool that allows users
to manage media & configurations on their computer. It is a free and open-source alternative to
proprietary file managers. Open-source media managers are developed by a community of
developers who collaborate to create and maintain the software.
Open source media player- free and open source cross-platform multimedia player and framework
that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming
protocols.
If you’re looking for small business collaboration tools that fits both your budget and your business needs,
consider open source collaboration software. Open source software licenses don’t cost anything, which
makes these collaboration tools much, much less expensive than other options
Open source communities are semi-organised collections of contributors to a project, typically software.
These communities bring people with shared interests together to collaboratively build something,
which can be shared with anyone inside or outside of the community. And, almost always, open source
projects are the results of distributed communities.
1. Be welcoming: Alongside maintaining a healthy open source community, it remains vital to ensure
you also attract new contributors. This can be done by providing information on where the code is,
how to download the software, and technical documentation is vital.
2. Embracing the change: As we all learn how to work as distributed teams, it’s important not to try to
replicate the culture they had in an office. The drastic change from in office to remote work is no
doubt a struggle for some employees.
3.9 c) Communication
Contributing to an open source community involves working with others collaboratively and, like all team
projects, effective communication is key. Don’t be afraid to ask questions and reach out to other people for
help. It’s okay not to know things, especially if you’re a first-timer, but show that you tried and did your
homework first.
GITHUB
GitHub is a website and cloud-based service that helps developers store and manage their code, as well as
track and control changes to their code. Git is a specific open-source version control system created by
Linus Torvalds in 2005.
GitHub is a platform for hosting, storing, and editing code. Individuals use it to host small websites,
organize projects, and collaborate with teammates and community members. The platform is built around
"Repositories" used to organize code for single projects.
Organizations use GitHub to share code and collaborate on projects internally, or to publicly post open
source projects.
Individuals and organization members alike benefit from GitHub's massive community of creators. GitHub
creators borrow inspiration and ideas from one another and help each other to solve problems.
GitHub even has a sponsorship program so that funders that find open source projects that they are
passionate about can contribute to the individual or organization behind it.
Git is a version control system which means that when developers create something, they make constant
changes to the code, releasing new versions.
Version control systems keep these revisions straight, storing the modifications in a central repository. This
allows developers to easily collaborate, as they can download a new version of the software, make changes,
and upload the newest revision. Every developer can see these new changes, download them, and contribute.
Git is a command-line tool, but the centre around which all things involving Git revolve is the hub---
GitHub.com---where developers store their projects and network with likeminded people.
Specifically, Git is a distributed version control system, which means that the entire codebase and history
is available on every developer’s computer, which allows for easy branching and merging.
GitHub’s interface is user-friendly enough so even novice coders can take advantage of Git.
1. Repository
A repository (usually abbreviated to "repo") is a location where all the files for a particular project are stored
2. Forking a Repo
“Forking” is when you create a new project based off of another project that already exists. This is an
amazing feature that vastly encourages the further development of programs and other projects. If you find a
project on GitHub that you’d like to contribute to, you can fork the repo, make the changes you’d like, and
release the revised project as a new repo.
3. Pull Requests
You've forked a repository, made a great revision to the project, and want it to be recognized by the original
developers---maybe even included in the official project/repository. You can do so by creating a pull
request. The authors of the original repository can see your work, and then choose whether or not to accept it
into the official project
4. Social networking
The social networking aspect of GitHub is probably its most powerful feature, allowing projects to grow
more than just about any of the other features offered. Each user on GitHub has their own profile that acts
like a resume of sorts, showing your past work and contributions to other projects via pull requests.
5. Changelogs
When multiple people collaborate on a project, it’s hard to keep track revisions---who changed what, when,
and where those files are stored. GitHub takes care of this problem by keeping track of all the changes that
have been pushed to the repository.
Features of GitHub:
1. Drag and Drop Gist Code
2. Creating a folder via the Web Interface
3. Using Git URL Shortener
4. File Finder
5. Using Github Emoji
6. Using Github Command Line Interface
7. Linking Lines
8. Task Checklist
9. 3D Rendering
The top open source automation testing tools that are available in the market.
These testing tools aid in areas of testing like automation & manual testing, functionality, regression, load,
performance, stress & unit testing, web, mobile & desktop testing, etc.
Some of these software testing tools are licensed and some are open source. In this tutorial, we are going to
take an in-depth look at Open source testing tools.
Any software tool is known as open source if its source code is available for free for use & modification
over the original design. In contrast to licensed tools, open source tools don’t have a commercial license.
All such open source tools that serve a specific purpose of software testing are known as open source testing
tools.
The selection will always depend upon the purpose of your testing (automated, manual, functional and so
on).
1. Katalon Platform is an all-in-one solution that supports web, API, mobile, and desktop app test
automation. It is powerful in enabling cross-functional operations for product development teams at
scale.
As a codeless solution, Katalon Platform is easy to use, robust to expand, yet contains the necessary
components for advanced needs with built-in keywords and project templates.
2. QA Wolf is an open-source end-to-end automated testing tool and one of the fastest ways to create
QA tests that we’ve seen. It’s fully hosted, so no downloads or installation are required.
Its automatic code generation and low learning curve enable your entire team to get involved in test
creation from the non-technical members to the senior developers.
3. selenium is one of the best open source testing tools that is available today. Being compatible with
quite a lot of programming languages, testing frameworks, browsers and operating systems,
Selenium is an awesome automation testing tool for web apps.
It helps you to create very effective test scripts for regression testing, exploratory testing, and quick
bug reproduction.
4. Robotium is an open-source tool that acts as a test automation framework which is mainly intended
for Android UI testing.
5. Sikuli is an open source testing tool which is built upon the concept of image recognition and
possesses the ability to automate anything that is seen on the screen. It is very useful to automate
non-web-based desktop applications.
It is also known for its quick bug reproduction.
6. Apache JMeter is an open source Java desktop app which is intended mainly for web applications’
load testing. It also supports unit testing and limited functional testing.
It has a lot of good features like dynamic reporting, portability, powerful Test IDE, etc and supports
different type of applications, protocols, shell scripts, Java objects, and databases.
7. Test Link is an open source web-based test management tool which is primarily featured for test
plans, test cases, user roles, test projects and test specifications.
It offers cross-platform OS support and gets well integrated with other bug tracking systems
8. Httest is used to implement all types of Http-based tests. It offers a range of Http based
functionalities. It allows testing of complex scenarios very effectively.
9. OpenTest is a spectacular automation tool for web, Apps, and APIs.
10. Linux Desktop Testing Project - LDTP is an open source automated testing tool for GUI testing.
In most cases, GitHub Issues is used for reporting bugs and requesting features. Sometimes it hosts
discussions, helps process support requests, or even submit documentation feedback. If you want to use
GitHub Issues with your repository for a long time and stay productive, consider following basic issue
tracker maintenance practices that are described below.
1. If You’re Just Starting, Go With the Defaults
2. Encourage Search to Avoid Duplication
3. Add Structure to Issue Reporting and Encourage Reporters to Be Specific
4. Route Vulnerability Reports Elsewhere
5. Use (But Don’t Overuse) Labels
6. Mention the Appropriate People
7. Choose a Workflow to Assign Issues to Developers
8. Don’t Forget to Close Issues
9. Backing up GitHub Issues
3.13 CONTRIBUTING CODE.
Why contributing to open source?
Some reasons you might want to contribute to open source are:
It can be a rewarding experience: knowing that you helped fix a pesky issue or
improve the documentation for the libraries that you use can be quite satisfying and
benefit a bunch of folks.
It is an excellent way to learn new skills: from improving your version control skills
to working collaboratively with other developers, technical writers and designers, you
always acquire new skills (or sharpen your existing ones).
Being part of the community: contributing to open source helps you build
relationships within the open-source community
Find mentors and mentor others: as you work on open source projects you often
need to explain how you do things and discuss the best solution to a problem.
Going beyond the technical skills: not only it allows you to improve your coding or
technical skills, but it also allows you to work on essential people skills such as
effective communication, conflict resolution, leadership and organisational skills.
Working in the open: in many cases, we do not get the chance to share what we work
on in our day job due to NDIs or other circumstances. Or maybe you are looking for a
career change and want to build an online developer presence. Contributing to open-
source gives you a chance to showcase all of the skills mentioned above in an open
and public manner.
1. Choose a Project
Endeavor to choose a project that requires skills that you possess. For instance, a
developer with web development skills can fix a bug in the CSS file of a project. Go
through the documentation, and look at the existing issues. If you find an issue you’d like
to work on, indicate interest. Issues can be found on the /contribute page of the repository.
Make sure to do this so the issue can be assigned to you and not someone else.
If there are specific problems you noticed in the project that have no existing issues, reach
out to the project maintainer. An issue can be created after your request is confirmed.
In the discussion forum, talk about the problem you want to work on. Remember to keep
all discussions public, as other contributors can learn from them.
2. Open an Issue
If you request an issue to be assigned to you, there is no need to open another issue. A new
issue can be opened if there is a particular problem you want to work on, or if there is a
new idea that you want to add to the project. Ensure that an issue has been assigned to
you.
Go ahead to work on the issue after these conditions have been met.
3. Check if the project is actively accepting contributions
Verify if the specified project is accepting the contributions from sources.
4. Open a Pull Request (PR)
Fork the main repository of the project.
Clone it locally.
Create a branch to work with.
Link your local repository to the main by setting it as remote.
Pull in changes from the main repository often to stay updated with recent merges and
issues. This will prevent merge contradictions.
Include references, images and files used in your pull request. This shows the
authenticity of your contribution.
Test the changes made after adding your contribution. This is to ensure that your pull
request does not contradict the existing project.
Examine your pull request to see if it fits the contribution guidelines of the project.
5. Submit Contribution
Submit the pull request and wait for a response from the maintainers. One of these
incidents might occur during this time:
1. A request is made to edit from the maintainer to edit the pull request.
2. There is no response from the owners or maintainers of the project.
3. The pull request is labeled unacceptable.
4. The pull request gets accepted and merged.
An open-source contribution is only complete after a successful pull request (PR) merge.