1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Free software in a nutshell</title>
<meta name="author" content="Simeon Simeonov"/>
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="mobile-web-app-status-bar-style" content="black-translucent"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="dist/reset.css"/>
<link rel="stylesheet" href="dist/reveal.css"/>
<link rel="stylesheet" href="dist/theme/statnett_compact.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme"/>
<!-- <link rel="stylesheet" href="plugin/highlight/zenburn.css" id="highlight-theme"/> -->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h2>Free software in a nutshell</h2>
<h4>Free as in freedom</h4>
</br>
<p><small>Simeon Simeonov - TDE</small></p>
</section>
<section>
<section id="fragments">
<h2>Agenda</h2>
</br>
<ul>
<span class="fragment"><li>What is free software - historical context</li></span>
<span class="fragment"><li>Free software vs. "open source"</li></span>
<span class="fragment"><li>Free software licenses</li></span>
<span class="fragment"><li>Debunking some of the most common myths about free software</li></span>
<span class="fragment"><li>The main practical advantages of free software</li></span>
<span class="fragment"><li>What can Statnett and I do?</li></span>
<span class="fragment"><li>Q & A</li></span>
</ul>
</section>
</section>
<section>
<h3>Historical context</h3>
<ul>
<li><p>In the late 1970s while working as a programmer at MIT AI Laboratory, Richard Matthew Stallman (b. 1953), also known by his initials <em>rms</em>, became frustrated when most manufacturers stopped distributing <em>source code</em> and began using copyright and restrictive software licenses to limit or prohibit copying and redistribution. This was a consequence triggered by the US Copyright Act of 1976.</p></li>
<li><p>In September 1983 Stallman announced the plan for the <em>GNU operating system</em> - a free operating system "compatible with Unix so that it would be portable, and so that Unix users could easily switch to it". The name GNU is a recursive acronym for "GNU's Not Unix".</p></li>
<li><p>In February 1984, Stallman quit his job at MIT to work full-time on the GNU project. Since then, he had remained affiliated with MIT as an unpaid "visiting scientist" in the Computer Science and Artificial Intelligence Laboratory.</p></li>
<li><p>In 1985, Stallman published the GNU Manifesto, which outlined his motivation for creating a free operating system called GNU. Soon after, he started a nonprofit corporation called the <em>Free Software Foundation</em> (FSF) to employ free software programmers and provide a legal infrastructure for the free software movement. Stallman was the nonsalaried president of the FSF, which is a 501(c)(3) nonprofit organization founded in Massachusetts. Stallman popularized the concept of <em>copyleft</em>, a legal mechanism to protect the modification and redistribution rights for free software.</p></li>
</ul>
</section>
<section>
<h2>What is free software?</h2>
<p>A program is free software if the program's users have the four essential freedoms:</p>
<ul>
<li><p>Freedom 0 - The freedom to run the program as you wish, for any purpose</p></li>
<li><p>Freedom 1 - The freedom to study how the program works, and change it so it does your computing as you wish. Access to the source code is a precondition for this</p></li>
<li><p>Freedom 2 - The freedom to redistribute copies so you can help others</p></li>
<li><p>Freedom 3 - The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this</p></li>
</ul>
<p>"A program is free software if it gives users adequately all of these freedoms. Otherwise, it is nonfree. While we can distinguish various nonfree distribution schemes in terms of how far they fall short of being free, we consider them all equally unethical." - <a href="https://www.gnu.org/philosophy/free-sw.html">GNU (Philosophy)</a></p>
<p>The term "libre" has been used lately</p>
</section>
<section>
<h4>The GNU operating system</h4>
<ul>
<li><p>By June 1987, the project had accumulated and developed free software for an assembler, an almost finished portable optimizing C compiler - GCC, an editor - GNU Emacs, and various Unix utilities (such as ls, grep, awk, make and ld). They had an initial kernel that needed more updates.</p></li>
<li><p>By 1992, the GNU project had completed all of the major operating system utilities, but had not completed their proposed operating system kernel - <em>GNU Hurd</em>. With the release of the Linux kernel, started independently by Linus Torvalds in 1991, and released under the GPLv2 with version 0.12 in 1992, for the first time it was possible to run an operating system composed completely of free software. Though the Linux kernel is not part of the GNU project, it was developed using GCC and other GNU programming tools and was released as free software under the GNU General Public License. Most compilation of the Linux kernel is still done with GNU toolchains.</p></li>
<li><p>The GNU packages consist of numerous operating system tools and utilities (shell, coreutils, compilers, libraries, etc.) including a library implementation of all of the functions specified in POSIX System Application Program Interface (POSIX.1). The GCC compiler can generate machine-code for a large variety of computer-architectures.</p></li>
<li><p>Linux kernel – this implements program scheduling, multitasking, device drivers, memory management, etc. and allows the system to run on a large variety of computer-architectures.</p></li>
<li><p>The packaging of GNU tools, together with the Linux kernel and other programs, is usually called a Linux distribution (distro). The GNU Project calls the combination of GNU and the Linux kernel "GNU/Linux", and asks others to do the same, resulting in the GNU/Linux naming controversy.</p></li>
</ul>
<p>Visit <a href="https://www.gnu.org/software/">https://www.gnu.org/software/</a> for a complete list of the GNU packages</p>
</section>
<section>
<h2>Free software vs. "open source"</h2>
<ul>
<li><p>In February 1998 Bruce Perens and Eric S. Raymond (<em>esr</em>) founded the <em>Open Source Initiative</em></p></li>
<li><p>Stallman argues that software users should have the freedom to share with their neighbors and be able to study and make changes to the software that they use. He maintains that attempts by proprietary software vendors to prohibit these acts are antisocial and unethical. He argues that freedom is vital for the sake of users and society as a moral value, and not merely for pragmatic reasons such as possibly developing technically superior software.</p></li>
<li><p>Eric S. Raymond argues that moral arguments, rather than pragmatic ones, alienate potential allies and hurt the end goal of removing code secrecy.</p></li>
</ul>
<p>Most "open source" software is a free software, but there are exceptions (f.i. qmail, nmap, True crypt... )</p>
<p>The term <em>FOSS</em> - (Free and open-source software) is widely used to describe specific software.</p>
</section>
<section>
<h2>Other free software</h2>
<ul>
<li><p>The earliest distributions of Unix from Bell Labs in the 1970s included the source code to the operating system, allowing researchers at universities to modify and extend Unix</p></li>
<li><p>In 1974 the operating system arrived at University of California Berkeley, at the request of computer science professor Bob Fabry</p></li>
<li><p>The Berkeley Software Distribution - <em>BSD</em> just included some extra features, which were intertwined with code owned by AT&T</p></li>
<li><p>Extensive academic research during the 80s. 4.3BSD was released in June 1986</p></li>
<li><p>4.3BSD + TCP/IP stack was freely redistributable under the terms of the BSD license. It was released in June 1989</p></li>
<li><p>1993 - FreeBSD and NetBSD are first released</p></li>
<li><p>1995 - The last 4.4BSD is released. OpenBSD is released</p></li>
</ul>
<p>The permissive nature of the BSD license has allowed many other operating systems, both open-source and proprietary, to incorporate BSD source code. Microsoft Windows used BSD code in its implementation of TCP/IP and bundles recompiled versions of BSD's command-line networking tools since Windows 2000. Darwin, the basis for Apple's macOS and iOS, is based on 4.4BSD-Lite2 and FreeBSD. Plastation (3,4,5), Nintendo Switch...</p>
</section>
<section>
<h2>Free software licenses (GPL)</h2>
<p>The Free Software Foundations is behind several versions of the <em>GNU General Public License</em> (GNU GPL or simply GPL)</p>
<p><em>Copyleft</em> - any derivative work must be distributed under the same or equivalent license terms</p>
<ul>
<li><p>GPLv1 - Released in 1989 and no longer used</p></li>
<li><p>GPLv2 - Released in 1991 and still in use (f.i. the Linux kernel) - "strong copyleft" not even allowing integration of GPL licensed software components into non GPL software</p></li>
<li><p>GPLv3 - Released in 2007 - changes in regard to software patents, DRM and alike.</p></li>
<li><p>LGPL(2 and 3) - "weak copyleft" - making it possible to use and integrate a software component released under the LGPL into (even proprietary) software without being required by the terms of a strong copyleft license to release the source code of their own components</p></li>
</ul>
<p>GPLv2+ or GPLv3+ stands for "2 (or 3) or any later version" and is the default form of the license</p>
</section>
<section>
<h2>Free software licenses (BSD)</h2>
<p>3-clause BSD license ("BSD License 2.0", "Revised BSD License", "New BSD License", or "Modified BSD License") and 2-clause BSD license ("Simplified BSD License" or "FreeBSD License") are the most popular BSD licenses. No copyleft.</p>
<ul>
<li><p>Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer</p></li>
<li><p>Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution</p></li>
<li><p>Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission (3rd clause)</p></li>
</ul>
</section>
<section>
<h2>Free software licenses (Apache)</h2>
<p>A permissive free software license written by the Apache Software Foundation (ASF). No copyleft.</p>
<p>Requiring a patent license on contributions that necessarily infringe a contributor's own patents. This license requires preservation of the copyright notice and disclaimer.</p>
</section>
<section>
<h2>Free software licenses (MIT)</h2>
<p>A permissive free software license written by MIT. No copyleft. Does not mention patents.</p>
<p>"The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software."</p>
</section>
<section>
<section id="fragments">
<h2>Some of the most common myths about free software</h2>
<ul>
<span class="fragment"><li><p>If you use free software and modify it, you have to release your modifications (licensed under the GPL)</p></li></span>
<span class="fragment"><li><p>You will never get proper / commercial support if you use free software</p></li></span>
<span class="fragment"><li><p>Free software is free of charge</p></li></span>
<span class="fragment"><li><p>Free software is not / anti commercial</p></li></span>
</ul>
</section>
</section>
<section>
<h2>The main practical advantages of free software</h2>
<ul>
<li><p>Better personal control - avoiding vendor lock-in</p></li>
<li><p>Privacy and security - nothing happens behind your back, the security of a software is verified by the community and not by the company that made it</p></li>
<li><p>Quality over profit</p></li>
</ul>
</section>
<section>
<h2>What can Statnett do?</h2>
<ul>
<li><p>Using free software with commercial support</p></li>
<li><p>Developing and sharing free software</p></li>
<li><p>Modifying and sharing free software</p></li>
<li><p>Supporting free software projects - software that is already in use at Statnett</p></li>
<li><p>Influencing free software projects by purchasing / ordering new features</p></li>
</ul>
</section>
<section>
<h2>What can I do?</h2>
<ul>
<li><p>Consciousness raising</p></li>
<li><p>Developing and sharing free software</p></li>
<li><p>Donating (FSF, FSFE, or any other free software peoject) instead of "When are they going to implement / fix this?"</p></li>
</ul>
</section>
<section>
<h1>Q & A</h1>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="dist/plugin/zoom.js"></script>
<script src="dist/plugin/notes.js"></script>
<script src="dist/plugin/search.js"></script>
<script src="dist/plugin/markdown.js"></script>
<script src="dist/plugin/highlight.js"></script>
<script>
// Also available as an ES module, see: https://revealjs.com/initialization/
// import Reveal from 'reveal.js';
// import RevealZoom from 'reveal.js/plugin/zoom';
// import RevealNotes from 'reveal.js/plugin/notes';
// import RevealSearch from 'reveal.js/plugin/search';
// import RevealMarkdown from 'reveal.js/plugin/markdown';
// import RevealHighlight from 'reveal.js/plugin/highlight';
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight],
});
</script>
</body>
</html>
|