Unit 4 - Oss
Unit 4 - Oss
UNIT 4
Unit IV
CONTENTS
1
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
Overview:
Wikipedia, one of the first online encyclopedias, has come a long way since its
beginnings in 2001. Now, just after its ten-year anniversary, Wikipedia has more than
thirteen million articles and over one hundred and sixty different language editions and
is currently ranked number 8 on alexa.com with more than 10% of the world’s Internet
users visiting the site.
Features:
Wikipedia is a free, non-profit online encyclopedia that has surpassed more than 3.5
million articles in English alone and is one of the most highly trafficked sites on the
web.
The articles on Wikipedia are written and edited by thousands of volunteer contributors
as it is funded solely by donations.
Wikipedia founders vowed never to have advertisements on its site, which is a promise
they have diligently kept.
Wikipedia features a simple search engine and a consistent format.
Wikipedia currently uses Ubuntu Linux 2.6 as their operating system with a standard
LAMP package.
2
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
System:
Wikipedia uses MediaWiki software to run its website. Its main U.S. data center, consisting of
about 300 servers, is located in Florida. Wikipedia also has a European data center in
Amsterdam, EvoSwitch, where they have approximately 50 servers. There are also tentative
plans to secure another data center in Virginia.
CONTRIBUTING TO WIKIPEDIA
Wikipedia is a free encyclopedia project, written collaboratively by volunteers. Many people
view Wikipedia articles every day, but don't contribute.
Following steps are taken when you want to constructively contribute to Wikipedia.
1. Create a Wikipedia account
2. Get familiar with Wikipedia's core policies
3. Expand stubs
4. Add a photo
5. Write a new article
6. Remove spam
7. Help out
8. Do some maintenance
9. Revert vandalism
3. Expand stubs:
An article that is not complete, or written in full detail, may be marked with a {{Stub}} tag.
You can help by adding content to the articles currently marked as stubs. Articles may also
have a more detailed {{stub}} meaning that the stub has been sub-sorted. Sub-sorted stubs
include anything from Arts, Cultures, Design, Broadcast Media, Radio, Television, Literature,
and more!
4. Add a photo:
An encyclopedia is not complete without pictures. You can upload as many pictures as you
wish; however, you must provide detailed information on the source and the license of the file.
If you cannot provide that information, do not upload any photos. If you still choose to upload
photos, they will be deleted.
5. Write a new article:
3
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
The English version of Wikipedia currently has over six million articles! You can help continue
this growth by writing an article of your own. You should write an article about something you
are very knowledgeable about so that you can write a complete and informative article. Articles
created as test pages, pure vandalism, attack pages, etc. will be deleted on the spot, without any
further debate.
6. Remove spam:
Wikipedia is accessed by millions of people every day, thus, there tends to be a lot of vandalism
or spamming. People who vandalize or spam a page may have added inappropriate links,
blanked the page, added nonsense, etc. You can help out by removing, or reverting, this
vandalism. Removing vandalism will make Wikipedia a better place for people to gather
information and resources.
7. Help out:
Even though Wikipedia is an encyclopedia, it is also a community. You can help out
newcomers to make it a bigger and better community for the encyclopedia.
8. Do some maintenance
You can help Wikipedia run optimally by doing maintenance tasks like removing copyright
violations, fixing up articles, participating in deletion processes, and all sorts of other things.
9. Revert vandalism:
Use tools if you like. If you're getting good at it, you'll get a tool called 'rollback' that lets you
revert vandalism faster. Remember, spam is also vandalism! If somebody is persistent about
vandalising a page, report them to the 'Administrator Intervention against Vandalism' board -
AIV for short - once they have been warned suitably.
4
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
Author - This is the person who created the project. They have the power to assign new
roles to other members to help with the project's maintenance.
Owner - The owner has administrative ownership of the project (and can be the same
person as the author)
Maintainers - These people are responsible for driving the vision and goals of the
project. They're usually people who feel responsible for the direction of the project and
who are committed to improving it.
Contributors - Contributors add to the project in one way or another. They follow the
same code review process, are subject to the same requirements on code style, and so on.
Community Members/Users - These valuable members of the community can provide
feedback about features, bug reports, and more.
1. Individual senses the need of the project: This is the phase when a developer thinks
about developing open-source software that is required by the people in the community,
by the corporates or by day to day users. He/She senses the need for a certain kind of
software that should be available in the market so that everyone can benefit from the
development.
2. Announcing the intent to develop it to public: When a developer thinks of developing
certain software there are multiple hurdles he might face and also have lack of
5
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
resources; here resources can be termed as the time to invest, Tools Required and the
utilities that might help for the development. In such cases, the developer thinks of
releasing the Idea to the public wherein he proposes the technologies required, are of
specialization and also the tools that are required to develop that particular idea into a
fully functional project.
3. Source Code of a mature software is made available to the Public: No one is going
to contribute until you show some intent and approach towards the development of the
software. The developer tries to build software which will be modified and updated by
the people in Community and the one who use it.
Maintain Documentation
Documentation that is careful, efficient, and serves the expected communities of your project
will help grow your client base. After some time, your client base will turn into the contributors
to your open-source software.
Documentation can come in numerous structures and can target various crowds. As a
component of your documentation, and relying upon the extent of your work, you may choose
to do at least one of the accompanying,
1. A guide that will introduce the project to the public that you have developed.
2. You can even design tutorials to give people a brief walkthrough of what you’ve
developed.
3. The most required document is the one that contains the Frequently Asked Questions.
4. There should be a document that must help the user Troubleshoot the errors.
5. Video Tutorials can be of a plus point if provided.
These few documents will make your client base very strong.
6
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
a) GNU/Linux
b) Android
c) Free BSD
d) Open Solaris.
1. Hardware layer: This layer comprises all the peripheral devices such as (RAM/
HDD/ CPU etc.).
2. Kernel: It is Linux's main component and is also in charge of many of the LINUX
operating system's functions. It communicates with hardware directly and delivers
low-level operations to upper-layer elements.
3. Shell/GCC: It is a user-to-kernel interface that hides the complexities of the kernel's
operations from users. Shell processes the user's command and performs the kernel's
functions.
4. Application Software: The desktop environment that comes with your Linux OS or
that you choose to install has individual applications installed. Most Linux
distributions, such as Ubuntu, come with dedicated app stores to find and install the
software.
5. Bootloader: Computers go through a startup process known as booting. This boot
process requires instruction, and your operating system is in charge of it. The
bootloader for your operating system precedes the process when you turn on your
computer.
6. Background services: Also known as "daemons," these small systems serve as
workers in the background, assuring that critical tasks such as scheduling, publishing,
and multimedia work properly. They begin to run once the user logs in to the
computer or right after the system gets booted
FEATURES:
1. Portable Environment
2. Free and Open-Source
7
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
b) ANDROID
8
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
c) Free BSD
What is FreeBSD?
FreeBSD is an operating system for a variety of platforms which focuses on features, speed,
and stability. It is derived from BSD, the version of UNIX® developed at the University of
California, Berkeley. It is developed and maintained by a large community.
Easy to install
FreeBSD can be installed from a variety of media including CD-ROM, DVD, or directly over
the network using FTP or NFS.
FreeBSD is free
While you might expect an operating system with these features to sell for a high price,
FreeBSD is available free of charge and comes with the source code.
Contributing to FreeBSD
It is easy to contribute to FreeBSD. All you need to do is find a part of FreeBSD which you
think could be improved and make those changes (carefully and cleanly) and submit that back
to the Project by means of a bug report.
9
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
d) Open Solaris
Introduction
Open Solaris is an open source operating system, similar in scope to GNU/Linux and BSD, but
descended from the proprietary Solaris operating system from Sun Microsystems. The authors
of this book find it helpful to think of Open Solaris as divided into three distinct but related
aspects: the code, the distributions, and the community.
Features of Solaris
1. Security: Solaris includes some of the world's most advanced security features, such as
Process and User Rights
2. Management: Trusted Extensions for Mandatory Access Control, the Cryptographic
Framework and Secure by Default Networking that allow you to safely deliver new
Solutions consolidate with security and protect mission-critical data
3. Performance: Solaris delivers indisputable performance advantages for database, Web,
and Java technology-based services, as well as massive scalability, shattering world
records by delivering unbeatable price/ performance advantages.
4. Networking: With its optimized network stack and support for today’s advanced network
computing protocols, Solaris delivers high-performance networking to most applications
without modification.
5. Data Management: Solaris offers dramatic advances in file system and volume
management by delivering virtually unlimited capacity and near-zero administration
6. Interoperability: Understanding that businesses today rely on a mix of technologies
from a variety of vendors, Solaris provides tools to enable seamless interoperability with
hundreds of heterogeneous hardware and software platforms
7. Observability: The Solaris release gives you Observability into your system with tools
such as Solaris Dynamic Tracing (DTrace), which enables real-time application
debugging and optimization
8. Platform Choice: Solaris is fully supported on more than 900 SPARC-based and
x64/x86-based systems from top manufacturers, including systems from Sun, Dell, HP,
and IBM
9. Virtualization: The Solaris OS includes industry-first virtualization features such as
Solaris Containers, which let you consolidate, isolate, and protect thousands of
applications on a single server
10. Availability: Solaris features, such as Predictive Self-Healing, support automatic
diagnosis and recovery from hardware and application faults, maximizing system uptime.
11. Support & Services: Offering a broad portfolio of world-class services, Sun can help
you extract maximum value from the Solaris Operating System.
10
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
11
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
Virtualization is technology that lets you create useful IT services using resources that
are traditionally bound to hardware.
It allows you to use a physical machine’s full capacity by distributing its capabilities
among many users or environments.
In more practical terms, imagine you have 3 physical servers with individual dedicated
purposes. One is a mail server, another is a web server, and the last one runs internal legacy
applications. Each server is being used at about 30% capacity—just a fraction of their running
potential. But since the legacy apps remain important to your internal operations, you have to
keep them and the third server that hosts them, right?
Traditionally, yes. It was often easier and more reliable to run individual tasks on individual
servers: 1 server, 1 operating system, 1 task. It wasn’t easy to give 1 server multiple brains. But
with virtualization, you can split the mail server into 2 unique ones that can handle independent
tasks so the legacy apps can be migrated. It’s the same hardware, you’re just using more of it
more efficiently
Keeping security in mind, you could split the first server again so it could handle another task—
increasing its use from 30%, to 60%, to 90%. Once you do that, the now empty servers could
be reused for other tasks or retired altogether to reduce cooling and maintenance costs.
12
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
Xen supports paravirtualization and “hardware assisted” virtualization for modified and un-
modified guests, respectively.
Guests can be Linux or Windows, but the overwhelming majority of guests are Linux variants,
particularly in the hosting space.
OpenVZ
OpenVZ is container-based virtualization for Linux, which has become quite popular among
the mass-market Linux hosting providers as an inexpensive way to provide virtual private
servers.
The OpenVZ containers provides the same services as a separate host and claims to provide
near native performance.
VirtualBox
VirtualBox is an open source desktop virtualization tool originally developed by German
company, innotek, which was acquired by Sun Microsystems in February 2008.
VirtualBox runs on Windows, Linux, Solaris and Mac OS X and can support all those operating
systems as guests.
While it is mostly used on desktops, VirtualBox is a full virtualization app and can be used on
servers as well.
Lguest
Lguest is an interesting virtualization project started by Australian developer, Paul “Rusty”
Russell.
Designed with Linux in mind, lguest allows multiple copies of the same kernel to run alongside
each other.
While not a full virtualization hypervisor, lguest prides itself on ease of use and uses the same
kernel image for host and guest operating systems.
TYPES OF VIRTUALIZATION
7 Types of Virtualization
Virtualization is implemented in different ways, depending on the programs. There are seven
types of virtualization, which you’re going to learn below.
13
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
Operating systems such as Windows, Linux, etc., are virtualized and thus available for users
all over the world. The OS is available to users for an annual fee. To keep the OS functional,
the developers normally execute upgrades and ask you to upgrade on your end.
2. Application-Server Virtualization
Application-Server Virtualization has been around since the start of virtualization. Like other
types of virtualization, developed servers are moved to the virtual environment to serve
multiple users. The process involves dividing a physical server into several distinctive and
secluded virtual servers. This is usually done by using a software application. After which each
virtual server independently runs its own operating system. This helps eliminate server
complexity, increase application performance and also deploy workload speedily.
Application-Server Virtualization is mostly utilized by web hosting companies to provide
secure and fast web hosting services. Without virtualizing servers, the servers use only a little
part of their processing power. The resultant effect here is that the server will sit idle since the
workload is distributed to a small portion of the network’s servers. Also, data centers would
become crowded with underutilized servers.
3. Application Virtualization
Don’t get confused; this is entirely different from application-server virtualization. Virtualized
applications are the ones we run on our devices, and they seem as if they are naturally stored
on our computer’s hard drive. But in reality, the applications are running on a server. Though
they utilize your computer’s RAM and CPU to run, they are centrally stored on a server, from
which they were virtualized. Examples of such applications are cloud-based software and also
Microsoft Terminal Services. These apps could be in your device, but you do not control them
entirely, the developer can make changes from their servers—such as upgrades.
4. Administrative Virtualization
This type of virtualization is deployed in the process of providing administrative roles to
various users of a system. It is mostly used in data centers to define the roles of users. That is,
a specific user may have access to some files, servers, etc., while another user may not have
the same access. Basically, this works via the user policy of the application or server. Users
can have access to files and other data but cannot make any changes to them.
5. Network Virtualization
As you already know about virtualization, it is all about moving a developed program that plays
specific functions into the virtual space—the internet, of course. Network virtualization
and EDR is the combination of all physical equipment used for networking into a single
software package. This software is then pushed to the internet as a service for general use.
Network virtualization also involves dividing bandwidth into several independent channels,
each assigned to servers and devices.
Advantages of virtualization
1. Cheap- IT infrastructures find virtualization to be a more affordable implementation
option because it doesn't require the use or installation of actual hardware components.
14
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
2. Efficient-By downloading the new versions of the software and hardware from a third-party
supplier, efficient virtualization also enables automatic upgrades of both
3. Disaster recovery-When servers are virtualized, disaster recovery is relatively simple thanks
to fast backup restoration and current snapshots of your virtual machines. If a disaster occurs
in the data centre or server room itself, you can still relocate such virtual machines to a cloud
provider.
4. Deployment
Resources may be deployed much more quickly when employing virtualization technology. It
is feasible to significantly reduce the amount of time required for setting up physical devices
or creating local networks.
Prior to widespread virtualization, the average person found it nearly impossible to start a
digital business. Thanks to the multiple networks, servers, and storage devices that are now
accessible, almost anyone can start their own side business or turn into a business owner
6. Saves energy
Both individuals and businesses can save energy by using virtualization. The rate of energy
consumption can be reduced because no local hardware or software alternatives are being
employed
7. Improved uptime
Virtualization technologies have increased uptime dramatically.
8. Consistent cost
People and corporations can have predictable expenses for their IT requirements because third-
party vendors frequently offer choices for virtualization.
Disadvantages of virtualization
Virtualization would result in very low costs for the common person or business. In a
virtualization environment, the suppliers, however, may incur very significant implementation
expenses. It follows that devices must either be created, made, or purchased for implementation
when hardware and software are eventually required.
2. Restraints
15
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
The accessibility of a company is another important factor. Long-term data linking is required.
If not, the business would become less competitive in the market. Because every document
from and for the client is essential to the service provider, availability difficulties might be seen
as one of the drawbacks of virtualization.
4. Time-intensive
In comparison to local systems, virtualization takes less time to implement, but it ultimately
costs users time. This is due to the fact that there are additional procedures that need to be
completed in order to attain the desired result.
5. Threats to security
Information is our current currency. Having money allows you to make money. Without it,
people will forget about you. The success of a corporation depends on information, hence it is
frequently targeted.
People can grow a business or opportunity quickly owing to virtualization, but won't be able to
grow it as large as they would like. In a virtualization network, growth generates latency since
multiple firms share the same resources.
If users have access to local equipment, they have complete control over their options. With
virtualization, people lose control because numerous ties are required to cooperate in order to
complete the same task.
CONTAINERIZATION
16
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
17
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
DISADVANTAGES:
1. Security: Containers share the same host kernel, which can pose a security risk. If a
container is compromised, it can potentially affect other containers on the same host.
However, container-specific security measures, such as container isolation and network
segmentation, can mitigate this risk.
3. Storage: Containers are designed to be stateless, meaning they don’t store data or state.
This can make managing persistent data, such as databases, a complex within a container
environment. However, some solutions, such as persistent volumes, can be used to collect
data stored in a docker container environment.
18
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
a) DOCKER
Docker is a software platform for building applications based on containers — small and
lightweight execution environments that make shared use of the operating system kernel but
otherwise run in isolation from one another.
What is Docker?
Docker is an open source project that makes it easy to create containers and container-based
apps. Originally built for Linux, Docker now runs on Windows and MacOS as well. To
understand how Docker works, let’s take a look at some of the components you would use to
create Docker-containerized applications.
Dockerfile
Each Docker container starts with a Dockerfile. A Dockerfile is a text file written in an easy-
to-understand syntax that includes the instructions to build a Docker image (more on that in a
moment). A Dockerfile specifies the operating system that will underlie the container, along
with the languages, environmental variables, file locations, network ports, and other
components it needs—and, of course, what the container will actually be doing once we run it.
Docker image
Once you have your Dockerfile written, you invoke the Docker build utility to create an image
based on that Dockerfile. Whereas the Dockerfile is the set of instructions that tells build how
to make the image, a Docker image is a portable file containing the specifications for which
software components the container will run and how. Because a Dockerfile will probably
include instructions about grabbing some software packages from online repositories, you
should take care to explicitly specify the proper versions, or else your Dockerfile might produce
inconsistent images depending on when it’s invoked. But once an image is created, it’s static.
b) DEVELOPMENT TOOLS
Docker:
The first and still most popular container technology, Docker’s open-source containerization
engine works with most of the products that follow, as well as many open-source tools.
Docker Enterprise
This set of extensions not only adds features to Docker, but also makes it possible for Docker
(the company) to add commercial support. If you need a support matrix to know exactly which
versions of what software are supported—and a phone number to call if things go wrong—then
Docker Enterprise might be for you.
CRI-O
The first implementation of the Container Runtime Interface, CRI-O is an incredibly
lightweight, open-source reference implementation.
rktlet
19
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
The aforementioned rkt, redesigned and retooled to use the CRI as rktlet, now has a set of
supported tools and community to rival Docker.
containerd
A project of the Cloud Native Computing Foundation, containerd was an early container
format. More recently the developers of containerd built a CRI plugin that lets Kubernetes run
containerd in the same way it runs rktlet or CRI-O.
Microsoft Containers
Positioned as an alternative to Linux, Microsoft Containers can support Windows containers
under very specific circumstances. They generally run in a true virtual machine and not in a
cluster manager like Kubernetes.
c) IDEs
What is Container Management Software?
Container management platforms facilitate the organization and virtualization of software
containers, which may also be referred to as operating-system-level virtualizations. Developers
use containers to launch, test, and secure applications in resource-independent environments.
Containers house components of applications, libraries, or groups of source code that can be
executed on demand. The management platforms help users allocate resources to optimize
efficiency and balance system workloads. Containers provide a flexible, portable platform to
organize, automate, and distribute applications.
Amazon Elastic Container Service (Amazon ECS)
Mirantis Kubernetes Engine (formerly Docker Enterprise)
Google Kubernetes Engine (GKE)
AWS Fargate
Kubernetes
IBM Cloud Kubernetes Service
Azure Kubernetes Service (AKS)
Portainer
Rancher
DEBUGGERS
Debugging is the process of finding and reducing the number of bugs in computer software and
electronic hardware. When a program crashes, the debugger shows the position in the original
code. A good debugger plays an essential role in software development.
Debugging can be more difficult when various subsystems are tightly coupled, as changes in
one may cause bugs to appear in another.
Three different types of debuggers can be utilized in open source systems:
1. source-level debuggers
2. memory debuggers
3. bug tracking software.
20
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
PROGRAMMING LANGUAGES
Open-source programming languages are not owned by anyone. They are easily available, they
are usually maintained by a community, and on many occasions, they are also freely distributed
under different open-source licenses. This means that open-source languages are mostly open
so that anyone can modify them, and they are usually not proprietary. Up to a certain extent,
and depending on the open-source protocol used, they can be more or less open to the public.
Some of the world’s most popular programming languages are open source. Some commonly
used languages in open source environment are:
Python
Java
JavaScript
4.9 LAMP
LAMP is an open source Web development platform that uses Linux as the operating system,
Apache as the Web server, MySQL as the relational database management system and PHP as
the object-oriented scripting language. (Sometimes Perl or Python is used instead of PHP.)
Because the platform has four layers, LAMP is sometimes referred to as a LAMP stack. Stacks
can be built on different operating systems. Developers that use these tools with a Windows
operating system instead of Linux are said to be using WAMP; with a Macintosh system,
MAMP; and with a Solaris system, SAMP.
Each represents an essential layer of the stack, and together they can create a database-
driven and dynamic website.
The illustration below can help visualize how the layers stack together:
21
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
22
FUNDAMENTALS OF OPEN SOURCE SOFTWARE
3. The LAMP stack has proven to be a secure and stable platform thanks to its vast community
that contributes when any problems arise.
4. What makes it so attractive is that you can easily customize the stack and interchange the
components with other open source software to suit your needs.
23