Processing numbers: Iterate through numbers in text
Columns: Keep column counter, reset in last column
Showing animations: Carry out steps, keep step counter
A bit of programming can be very useful for research in other
fields
Free and Open Source Software
What is free software?
Why should you care?
Why do programmers make free software?
What can/should you do for software freedom?
Four Freedoms
Richard M. Stallman: Founder of the Free Software Foundation
Programmer at MIT, created many important programs for software
engineers (GCC, Emacs)
Disillusioned by increasing secrecy, lack of collaboration among
software developers
Published the GNU Manifesto in 1985
“Free software is a matter of liberty, not price. Think of free
as in free speech, not as in free beer.”
Freedom 0
The freedom to run the program, for any purpose
If your laptop dies, can you run the program on your new laptop?
Can you play all your music, watch all your videos, read all your
e-books?
Freedom 1
The freedom to study how the program works, and adapt it to your needs
This means you need to have access to the source code
Example: Windows sends information about you back to Microsoft. Someone
should be able to study what they send.
Example: I modified an open source program to make these slides
Freedom 2
The freedom to redistribute copies so you can help your neighbor
You have a useful program, and your neighbor asks you to share. Choices
with non-free software:
be antisocial to your neighbor
violate the license agreement
RMS: What if your neighbor asked for a recipe?
Freedom 3
The freedom to improve the program, and release your improvements to
the public, so that the whole community benefits
Again, requires access to source code
Why would anyone want to give away something that they can charge
for?
People have done so since the beginning of time. Did Newton or Einstein
charge royalties for their work?
Linux
1991: Linus Torvalds releases the first Linux kernel, built upon
Tannenbaum's teaching kernel Minix
Do you pine for the nice days of minix-1.1, when men were men and
wrote their own device drivers? Are you without a nice project and just
dying to cut your teeth on a OS you can try to modify for your needs?
Linux + Gnu tools + X11: usable desktop system
Many choices of “distros”: Ubuntu, Red Hat, Suse, ...
Firefox
1998: Microsoft succeeded in “cutting off Netscape's air
supply”
Netscape open-sources Mozilla browser
Previously closed-sourced code is a mess
2002: Mozilla 1.0 released
2004: Firefox 1.0 released
Generally recognized as a better, faster, safer browser than Internet
Explorer
OpenOffice
Based on StarOffice, a German MS Office clone
1999: Sun buys StarDivision
2000: Open sourced
2006: ODF format becomes an international standard
Comparable to Office 2003, can read/write Office 2003 files
Open Standards
If Alice uses application A to produce a file, can Bob open it with
application B?
Can Alice open it with application A version 2020?
File formats standardized by ISO, other standards bodies
Standard formats: PDF, HTML, ODF
Nobody fully understands Microsoft Office formats, not even Microsoft.
For a truly bad time, try opening your old files in Office 2007...
Programmer Motivation
Why would a programmer work for free?
Idealism is not primary motive
Most open source developers are paid by some company
Many developers simply solve problems that their company has
Some companies use open source as a strategic weapon
Myth/Fact: Security
Myth: Open source is insecure: hackers can read source code, find
vulnerabilities
Fact: Hackers trace through binary code even if they don't have the
source
Myth: Open source is more secure: “Given enough eyeballs, all
bugs are shallow”
Fact: Most security bugs are found after attack, not through
“enough eyeballs”
Myth/Fact: Price
Myth: Open source is free, so I'll save a bundle
Fact: That's true, but there are “switching costs”
Myth: Retraining people to use new software is too expensive
Fact: Most people only use a tiny feature set of their applications and
can change quickly
Myth/Fact: Quality
Myth: If it is free, it can't be any good
Fact: Many open source programs are very good, often better than
commercial alternatives
Myth: Open source software is hard to use
Fact: True for some programs, but usability has gotten much better
overall
Myth/Fact: Legality
Myth: Open source software is illegal—it's communism!
Fact: OSS licenses are based on copyright law
Myth: If I use Linux, I will get sued
Fact: Linux distributors have been sued (without success), but not end
users
Taking the Plunge
Start with products that run on Windows: Firefox, Thunderbird,
OpenOffice
Use open file formats (ODF, HTML, iCal, PDF, plain text, not .DOC)
Use a Live CD
Install on an older computer
Stuck with one or two Windows programs? Run VMWare or Wine
Future of Free and Open Source
Not a passing fad
Can't put the genie back in the bottle
Serves business purpose of large companies
Servers
Low end computers ($200 Walmart computer)
Routine office work (cash registers, claims entry, etc.)
Nontraditional devices (One Laptop Per Child, internet tablets, cell
phones)
Reminders
One more homework for stragglers (I'll drop lowest grade)
Project presentations due next Tuesday
On Tuesday, I'll randomly select speakers for Tuesday and Thursday
Tantalizing hints about the final exam next Thursday