lect16.ppt

advertisement
Today’s topics
OS & Society
Software development models
Reading
Open Source definitions
Microsoft Corp., "Some Questions Every Business Should
Ask About the GNU General Public License (GPL)", 2001
Brookshear, Chapter 6
CompSci 001
16.1
OS & Software Development
1.
Who writes software?
2.
How are they paid for it?

How is software developed?
CompSci 001
16.2
UNIX: History of an OS

1969: UNIX created
 Private research project at Bell Labs
 High-level language used by system and application
developers
 Good programming interface  Sophisticated apps
1971: First edition released
1972: Dennis Ritchie rewrites B
 What did he call the new language?
1977: Berkeley Software Design releases BSD Unix

UNIX is ubiquitous in research institutions



CompSci 001
16.3
Richard Stallman’s quest

In January 1984 I quit my job at MIT and began
writing GNU software. Leaving MIT was necessary
so that MIT would not be able to interfere with
distributing GNU as free software. If I had
remained on the staff, MIT could have claimed to
own the work, and could have imposed their own
distribution terms, …. I had no intention of doing a
large amount of work only to see it become useless
for its intended purpose: creating a new softwaresharing community.
CompSci 001
16.4
From software to politics?

Help change the world?
CompSci 001
16.5
A post from 1991
Hello everybody out there using minix I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386 (486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on things
people like/dislike in minix, as my OS resembles it somewhat (same
physical layout of the file-system (due to practical reasons) among
other things). I've currently ported bash (1.08) and gcc (1.40),and
things seem to work.This implies that I'll get something practical
within a few months, and I'd like to know what features most people
would want.
Any suggestions are welcome, but I won't promise I'll implement
them :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It
is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(
CompSci 001
16.6
Linux Timeline








10/1991 : v0.02 - first usable
Linux
01/1992 : v0.12 - first 'actually
working' version, under GPL
03/1992 : comp.os.linux
04/1992 : v0.95 - capable of
using X
09/1992 : Linux stops being
Minix-like and becomes UNIXlike
03/1994 : 1.0
06/1996 : 2.0.0
12/2003 : 2.6.0


What is Linux?
 Freely available OS
 Based on Linux kerrnel
developed by Torvalds
 Collection of common
UNIX utilities and
programs
 Anyone who can code can
make modifications to
them
Impact? Marketshare?
 25% of servers
 2.8% of desktops
• [IDC 2004]
CompSci 001
16.7
Types of software
Software Licenses
 Proprietary (closed) software
 Public domain
 Freeware
 Free
 Shareware
 Open Source
 Adware
 Copylefted
 Spyware
 Semi-free
 Commercial
 Commercial
Academic licenses
 Specific licenses
 GNU Public License
 Mozilla Public License
 Lots more…
Say you buy software using (steep) student discounts that are available at
the Duke Computer Store?

Can you use it when you leave Duke and are no longer a student?
What do you buy when you purchase software?
CompSci 001
16.8
Open source




Commercial software license schemes
 Microsoft’s Embrace and Extend
 What’s a EULA?
Rights
 Make copies of the program and distribute them
 Access to the software’s source code
 Make improvements to the program
Results
 All contributors at same relative level
 Lots of competition in distribution or support
 Why does it work?
Free Software Foundation formed in 1984
 GNU General Public License (Copyleft)
 Seminal work produced (emacs, gnu compiler)
 Spawned different licenses like the Open Source Definition
CompSci 001
16.9
What’s special about software?

Why is there no significant "Free Hardware Movement"
analogous to the Free Software Foundation's work?

What about the One Laptop per Child Project?
CompSci 001
16.10
Emerging methods in programming

Individual vs. Group, Proprietary vs. Open source
Agile programming

Extreme programming

CompSci 001
16.11
XP and Refactoring
(See books by Kent Beck (XP) and Martin Fowler (refactoring))

eXtreme Programming (XP) is an agile design process
 Communication: unit tests, pair programming, estimation
 Simplicity: what is the simplest approach that works?
 Feedback: system and clients; programs and stories
 Courage: throw code away, dare to be great/different

Make it run, make it right, make it fast, make it small
Do the simplest thing that can possibly work (XP)

CompSci 001
16.12
Quotations from Fred Brooks




Plan to throw one away; you will anyhow.
Successful software always gets changed.
Good judgment comes from experience; experience comes from bad
judgment
The programmer, like the poet, works only slightly removed from pure thought-stuff.
He builds castles in the air, from air, creating by exertion of the imagination. Few
media of creation are so flexible, so easy to polish and rework, so readily capable of
realizing grand conceptual structures. Yet the program construct, unlike the poet's
words, is real in the sense that it moves and works, producing visible outputs
separate from the construct itself. It prints results, draws pictures, produces sounds,
moves arms. The magic of myth and legend has come true in our time. One types the
correct incantation on a keyboard, and a display screen comes to life, showing things
that never were nor could be. ... The computer resembles the magic of legend in this
respect, too. If one character, one pause, of the incantation is not strictly in proper
form, the magic doesn't work. Human beings are not accustomed to being perfect,
and few areas of human activity demand it. Adjusting to the requirement for
perfection is, I think, the most difficult part of learning to program.
CompSci 001
16.13
Beyond software - licensing for all
CompSci 001
16.14
http://creativecommons.org
CompSci 001
16.15
CompSci 001
16.16
Sources of material




Organizations
 The Electronic Frontier Foundation
 Center for Democracy and Technology
Media and discussion
 Wired Magazine
 Slashdot
Databases of information and laws
 Lexis/Nexis
 Thomas
Social issues in Computer Science
 Computer Professionals for Social Responsibility
CompSci 001
16.17
Download