#LyX 2.4 created this file. For more info see https://www.lyx.org/
\lyxformat 620
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass beamer
\begin_preamble
\usetheme{CambridgeUS}
\usecolortheme{dolphin}
\setbeamertemplate{footline}[frame number]
\date{}
\end_preamble
\options handout
\use_default_options true
\maintain_unincluded_children no
\language english
\language_package default
\inputencoding utf8
\fontencoding auto
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_roman_osf false
\font_sans_osf false
\font_typewriter_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\float_placement class
\float_alignment class
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_formatted_ref 0
\use_minted 0
\use_lineno 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tablestyle default
\tracking_changes false
\output_changes false
\change_bars false
\postpone_fragile_content true
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\docbook_table_output 0
\docbook_mathml_prefix 1
\end_header

\begin_body

\begin_layout Title
Linux and Open Source
\end_layout

\begin_layout Author
Satvik Patwardhan
\end_layout

\begin_layout Institute
The Debuggers Coding Club
\begin_inset Newline newline
\end_inset

Department of Computer Science,
 Banaras Hindu University,
 Varanasi
\end_layout

\begin_layout Section*
Introduction
\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
What is an OS?
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
The operating system (OS) is the software that provides an interface between the user and the hardware of the computer.
\end_layout

\begin_layout Itemize
The hardware provides “raw computing power”,
 the OS manages this computing power to make it easily available to the user and make sure it is used efficiently.
\end_layout

\begin_layout Itemize
Examples:
 Windows,
 Linux,
 macOS,
 Android
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
What does an OS do?
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
OS is responsible for managing processes (running programs) in the system
\end_layout

\begin_layout Itemize
Responsible for managing memory (RAM)
\end_layout

\begin_layout Itemize
Responsible for all communication with hardware
\end_layout

\begin_layout Itemize
Responsible for handling files
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Modes of Execution
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Programs run in an OS consist of instructions given to the CPU.
\end_layout

\begin_layout Itemize
Most CPUs do not allow all programs to run all types of instructions.
\end_layout

\begin_layout Itemize
Instructions in programs run by the user run in user mode
\end_layout

\begin_layout Itemize
Instructions run directly by the OS run in kernel mode
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Kernel
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Kernel is the portion of the OS responsible for important system functions
\end_layout

\begin_layout Itemize
All the previous tasks of OS handled by kernel (process management,
 memory management,
 I/O management)
\end_layout

\begin_layout Itemize
Kernel can access sensitive system commands (stop process,
 shut down)
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Section*
Source Code
\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Source Code
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
The software that we use is made by writing source code,
 compiling it and sharing the built binary files
\end_layout

\begin_layout Itemize
These executables are in machine code:
 difficult to understand logic or modify
\end_layout

\begin_layout Itemize
Proprietary software:
 Source code is not available to public,
 distributing modifications illegal (also called closed-source software)
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Free and Open Source Software
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
In 
\begin_inset Flex Bold
status open

\begin_layout Plain Layout
Free and Open Source Software (FOSS)
\end_layout

\end_inset

,
 source code is publicly available along with executables
\end_layout

\begin_layout Itemize
Modifying and exchanging source code is encouraged
\end_layout

\begin_layout Itemize
Examples:
 Android,
 Firefox,
 VLC media player etc.
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Why FOSS?
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Many people working and collaborating on same source code can catch bugs more easily
\end_layout

\begin_layout Itemize
Typically free of cost,
 if not can be compiled for free
\end_layout

\begin_layout Itemize
Can be modified and customized to your personal needs
\end_layout

\begin_layout Itemize
More scope for creativity and innovation,
 no restrictions from companies
\end_layout

\end_deeper
\begin_layout Section*
A Brief History
\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
How did FOSS come about?
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Early decades of programming was mostly collaborative
\end_layout

\begin_layout Itemize
Software was shared as source code itself
\end_layout

\begin_layout Itemize
As software development shifted from academia to corporations,
 source code sharing became discouraged due to lack of profitability
\end_layout

\begin_layout Itemize
In 1980,
 copyright law in US was changed to allow source code to be copyrighted
\end_layout

\begin_layout Itemize
This angered everyone apart from the companies
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
How did FOSS come about?
 (contd.)
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
The most popular operating system at the time,
 UNIX,
 slowly became corporate controlled and proprietary
\end_layout

\begin_layout Itemize
In response,
 Richard Stallman.
 from the MIT Artificial Intelligence lab,
 started the GNU Project
\end_layout

\begin_layout Itemize
GNU (GNU's Not Unix) aimed to make a set of FOSS software which can be used to run a computer
\end_layout

\begin_layout Itemize
He introduced 
\begin_inset Quotes eld
\end_inset

copyleft
\begin_inset Quotes erd
\end_inset

 (as opposed to copyright),
 where anyone could modify and share works released as such,
 and others cannot take away this right from their modifications either
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Four Freedoms
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Richard Stallman gave 
\begin_inset Quotes eld
\end_inset

four freedoms
\begin_inset Quotes erd
\end_inset

 as the definition of free software
\end_layout

\begin_layout Itemize
Freedom 0:
 The freedom to use the program for any purpose.
\end_layout

\begin_layout Itemize
Freedom 1:
 The freedom to study how the program works,
 and change it to make it do what you wish.
\end_layout

\begin_layout Itemize
Freedom 2:
 The freedom to redistribute and make copies so you can help your neighbor.
\end_layout

\begin_layout Itemize
Freedom 3:
 The freedom to improve the program,
 and release your improvements (and modified versions in general) to the public,
 so that the whole community benefits.
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
The History of UNIX
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
In the 60s and 70s,
 UNIX was the most popular operating system
\end_layout

\begin_layout Itemize
Made by Ken Thompson (inventor of B programming language),
 Dennis Ritchie (inventor of C programming language) and others at Bell Labs
\end_layout

\begin_layout Itemize
Unix was proprietary and later expensive
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
The GNU Project
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Richard Stallman started the GNU project (GNU’s Not Unix) to make an alternative to UNIX
\end_layout

\begin_layout Itemize
GNU project was very succesful:
 assembler,
 gcc C compiler,
 emacs text editor,
 and most OS system commands completed
\end_layout

\begin_layout Itemize
GNU software is still a core part of Linux and Mac,
 released as open source under GNU General Public License (GPL)
\end_layout

\begin_layout Itemize
By 1991,
 only the kernel was left to be finished
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
The Linux kernel
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Work on the GNU kernel was going slowly
\end_layout

\begin_layout Itemize
MINIX was a proprietary UNIX kernel for made for students to study
\end_layout

\begin_layout Itemize
In 1991,
 Linus Torvalds,
 a computer science student at Univesity of Helsinki,
 made a kernel similar to MINIX called “Linux”
\end_layout

\begin_layout Itemize
By combining the GNU system software and the Linux kernel,
 the first FOSS operating system was created
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Development of the Linux kernel
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Linux kernel is now developed by the community
\end_layout

\begin_layout Itemize
Hobbyists and students contribute just as much as employees of Google and Microsoft
\end_layout

\begin_layout Itemize
Focus is entirely on the kernel:
 everything from basic system commands to GUI is handled by others
\end_layout

\end_deeper
\begin_layout Section*
The 
\begin_inset Quotes eld
\end_inset

Linux OS
\begin_inset Quotes erd
\end_inset


\end_layout

\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Components of a Linux system
\end_layout

\end_inset


\end_layout

\begin_layout Frame
\begin_inset Graphics
	filename components-linux.png
	width 50page%

\end_inset


\end_layout

\begin_layout Frame

\emph on
Source:
 Wikipedia
\end_layout

\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
System Components
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Init system – responsible for starting and stopping processes
\end_layout

\begin_layout Itemize
Daemons – processes that are always running (network,
 audio,
 battery monitor etc.)
\end_layout

\begin_layout Itemize
Windowing system – responsible for creating,
 showing and destroying app windows
\end_layout

\begin_layout Itemize
Graphics toolkit – responsible for creating and adjusting buttons,
 menus,
 content within window
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
System Components (Contd.)
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Desktop environment – main user interface of the computer.
 Lets users open and close apps,
 switch between apps,
 change system settings etc.
\end_layout

\begin_layout Itemize
Package manager – basically an app store like Google Play,
 Apple App Store etc.
 Provides both apps and system components
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 2
status open

\begin_layout Plain Layout

+-
\end_layout

\end_inset


\begin_inset Argument 4
status open

\begin_layout Plain Layout
Linux Distributions
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
For every single type of system component,
 there are many different options made by different people
\end_layout

\begin_layout Itemize
Users cannot be expected to choose every option wisely
\end_layout

\begin_layout Itemize
A Linux distribution (distro) is a compilation of all the system components needed to run the computer
\end_layout

\begin_layout Itemize
Examples:
 Ubuntu,
 Fedora,
 Debian,
 Arch Linux etc.
\end_layout

\begin_layout Itemize
A distribution chooses which software to include based on different philosophies (which we do not have time to discuss)
\end_layout

\end_deeper
\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 4
status open

\begin_layout Plain Layout
Examples of Linux Distros
\end_layout

\end_inset


\end_layout

\begin_layout Frame
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset Graphics
	filename ubuntu.png
	lyxscale 10
	width 75page%

\end_inset


\begin_inset Caption Standard

\begin_layout Plain Layout
Ubuntu with GNOME desktop environment
\end_layout

\end_inset


\end_layout

\end_inset


\end_layout

\begin_layout Frame

\size scriptsize
Source:
 Canonical Limited,
 GPL <http://www.gnu.org/licenses/gpl.html>,
 via Wikimedia Commons
\end_layout

\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 4
status open

\begin_layout Plain Layout

\end_layout

\end_inset


\end_layout

\begin_layout Frame
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset Graphics
	filename fedora.png
	lyxscale 10
	width 75page%

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
Fedora Linux with KDE Plasma desktop environment
\end_layout

\end_inset


\end_layout

\end_inset


\end_layout

\begin_layout Frame

\size scriptsize
Source:
 The Fedora Project,
 GPL <http://www.gnu.org/licenses/gpl.html>,
 via Wikimedia Commons
\end_layout

\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 4
status open

\begin_layout Plain Layout

\end_layout

\end_inset


\end_layout

\begin_layout Frame
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset Graphics
	filename android.png
	lyxscale 10
	height 60pheight%

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
Android
\end_layout

\end_inset


\end_layout

\begin_layout Plain Layout

\end_layout

\end_inset


\end_layout

\begin_layout Frame

\size scriptsize
Source:
 The Android Open Source Project,
 Apache License 2.0 <http://www.apache.org/licenses/LICENSE-2.0>,
 via Wikimedia Commons
\end_layout

\begin_layout Standard
\begin_inset Separator plain
\end_inset


\end_layout

\begin_layout Frame
\begin_inset Argument 4
status open

\begin_layout Plain Layout

\end_layout

\end_inset


\end_layout

\begin_layout Frame
\begin_inset Float figure
placement document
alignment document
wide false
sideways false
status open

\begin_layout Plain Layout
\begin_inset Graphics
	filename arch.png
	lyxscale 10
	height 60pheight%

\end_inset


\end_layout

\begin_layout Plain Layout
\begin_inset Caption Standard

\begin_layout Plain Layout
Arch Linux with no desktop environment installed
\end_layout

\end_inset


\end_layout

\begin_layout Plain Layout

\end_layout

\end_inset


\end_layout

\end_body
\end_document
