Transcript
Page 1: 35 Years of Open Source Software
Page 2: 35 Years of Open Source Software

The Age of Incompatible

Expensive Machines

Page 3: 35 Years of Open Source Software
Page 4: 35 Years of Open Source Software
Page 5: 35 Years of Open Source Software

selling hardware

Page 6: 35 Years of Open Source Software

1968

hardware software

Page 7: 35 Years of Open Source Software

COBOL

FORTRAN

Algol

Page 8: 35 Years of Open Source Software

#!/usr/bin/perl## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.#

use strict;use warnings;

use Getopt::Long;

# Declaration of important/main variables.my $quiet = 0;my $sparse = 0;my $help = 0;my $explain = 1;my $debug = 0;my $reasondir = '/usr/share/vrms/reasons/';my %reason = ();

## Auxiliary functions section (FIXME: put them in a file by themselves).#

# sub usage:# Input: nothing.# Output: Messages to stdout telling the usage of the program.sub usage() { print <<EOF;Usage: vrms [OPTIONS] ...

--quiet, -q Do nothing if there are no non-free packages installed.--explain, -e Give a brief explanation of why a package is non-free, if available.--sparse, -s Just list non-free packages, nothing else.--reason-dir=DIR Use DIR as the reason directory.--help, -h Display this help.--debug, -d Generate debugging information.

All options can be prefixed with "no" (eg: --noexplain) to turn them off.EOF}

# sub parse_reason_file:# Input: the name of a reason file and the global hash %reason# Output: the hash %reason filled with reasons from the input file# (FIXME: %reason shouldn't be global)sub parse_reason_file { my $file = shift; print "Parsing reason file $file\n" if $debug >= 1; open(REASON, "<", $file) ordie "Can't open FILE [$file]: $!\n"; while (my $line = <REASON>) {chomp $line;# Grab a line of the form 'package: reason', skip if we don't matchmy ($pkg, $reason) = ($line =~ /^(\S+):\s+(.*)\s*$/) or next;print "'$pkg' because '$reason'\n" if ($debug >= 1);

# If this is _our_ master file, then prefer anything# else (so that package maintainers can override)next if exists $reason{$pkg} and $file =~ /\/vrms$/;

$reason{$pkg} = $reason; }

close REASON ordie "Can't close FILE [$file]: $!\n";}

## Main program starts here.#GetOptions('q|quiet' => \$quiet, 's|sparse' => \$sparse, 'e|explain!' => \$explain, 'reason-dir=s' => \$reasondir, 'd|debug+' => \$debug, 'h|help' => \$help);

if ($help) { usage(); exit 0;}

opendir(REASONDIR, $reasondir) or die "Can't open DIR [$reasondir]: $!\n";# Parse all the reason files in $reasondir except those beginning with# a . or ending with a ~parse_reason_file("$reasondir/$_") foreach (grep {!/~$/ && !/^\./} readdir(REASONDIR));closedir REASONDIR or die "Can't close DIR [$reasondir]: $!\n";

my $statusfile = '/var/lib/dpkg/status';my $is_nonfree = 0; ### preset none found, yetmy %nonfree = ();my $is_other_nonfree = 0; ### preset none found, yetmy %other_nonfree = ();my $is_contrib = 0; ### preset none found, yetmy %contrib = ();my $is_other_contrib = 0; ### preset none found, yetmy %other_contrib = ();my %pkg_status = ();my $pkgcnt = 0;my $clumpcnt = 0;my $dontcarelines = 5; ### no. of lines a non-installed entry may have in the statusfile

my $sysname = "";chop($sysname = `uname -n`);

open(PKG_SOURCE, "< $statusfile") or die "Can't open FILE [$statusfile]: $!\n";

$/ = ""; ### snarf a paragraph at a timewhile(<PKG_SOURCE>) { my $clump = $_; $clumpcnt++; my (@pkglines) = split(/\n/, $clump); ### iff more than $dontcarelines lines, package is installed, so process it ### (speed-up by skipping don't-care entries) if (@pkglines > $dontcarelines) {my $pkg = ""; ### name of this packagemy $pkgstatus = ""; ### statusmy $plan = ""; ### install plan (hold, deinstall, purge, install, etc.)my $state = ""; ### state (ok or ???)my $status = ""; ### status (installed, not-installed, etc.)my $section = ""; ### section this is where non-free is markedmy $shortdescr = ""; ### one-liner description of pkgmy $linenbr = 0; ### current line number of this pkackag's infomy $label = ""; ### junk field (not used, except to catch split values)my $has_pkg = 0; ### reset the markersmy $has_status = 0;my $has_section = 0;

foreach (@pkglines) { chomp; $linenbr++; if (/^Package:/) {($label, $pkg) = split(/:\s+/,$_,2);$pkgcnt++;printf "pkg(%4.4d) pkg=[%s]\n",$pkgcnt,$pkg if $debug >= 1;$has_pkg = 1; ### we have necessary sectionnext; } if (/^Status:/) {my $label = "";($label, $pkgstatus) = split(/:\s+/,$_,2);print "\tpkgstatus=[$pkgstatus]\n" if $debug >= 1;$pkg_status{$pkg} = $pkgstatus;($plan, $state, $status) = split(/\s+/,$pkgstatus);print "\t\tplan=[$plan]\n" if $debug >= 1;print "\t\tstate=[$state]\n" if $debug >= 1;print "\t\tstatus=[$status]\n" if $debug >= 1;$has_status = 1; ### we have necessary sectionnext; } if (/^Section:/) {my $label = "";($label, $section) = split(/:\s+/,$_,2);print "\tsection=[$section]\n" if $debug >= 1;$has_section = 1; ### we have necessary sectionif ($section =~ /contrib|non-free|restricted|multiverse/) { ### read thru rest of array to find descr instead of waiting for it my $found_descr =0; while (! $found_descr) {if ($linenbr > $#pkglines) { ### iff badly formed entry ensure blank description print "\tEEEE shortdescr=[$shortdescr]\n" if $debug >= 1; last;}my $dline = $pkglines[$linenbr++];if($dline =~ /^Description:/) { ($label, $shortdescr) = split(/:\s+/,$dline,2); print "\tshortdescr=[$shortdescr]\n" if $debug >= 1; $found_descr = 1;} } if ($section =~ /contrib/) {if (lc $status eq 'installed') { $is_contrib = 1; $contrib{$pkg} = $shortdescr;} else { $is_other_contrib = 1; $other_contrib{$pkg} = $shortdescr;} } else {if (lc $status eq 'installed') { $is_nonfree = 1; $nonfree{$pkg} = $shortdescr;} else { $is_other_nonfree = 1; $other_nonfree{$pkg} = $shortdescr;} }}last; ### this is last desriptor of package we care about so end loop } else {### un-processed lines from package infoif($debug >= 1) { print "\t\t--- $_\n";} }}if (!$has_status or !$has_pkg) { print STDERR "vrms: ERROR- Badly formed dpkg-status entry #$clumpcnt!\n"; print STDERR " pkg=[$pkg], pkgstatus=[$pkgstatus], section=[$section] \n";}

source code

Page 9: 35 Years of Open Source Software

The Birth of UNIX

Page 10: 35 Years of Open Source Software
Page 11: 35 Years of Open Source Software
Page 12: 35 Years of Open Source Software
Page 13: 35 Years of Open Source Software

UNIX.zip

UNIX-source.zip

Page 14: 35 Years of Open Source Software

t r a d e s e c r e t

Page 15: 35 Years of Open Source Software

t r a d e s e c r e t

most widely anddeeply understood

in the historyof computing

Page 16: 35 Years of Open Source Software

sharinginnovations

&bug fixes

Page 17: 35 Years of Open Source Software
Page 18: 35 Years of Open Source Software
Page 19: 35 Years of Open Source Software
Page 20: 35 Years of Open Source Software

The Birth of Proprietary

Software

Page 21: 35 Years of Open Source Software

1980

Page 22: 35 Years of Open Source Software

proprietary software

Page 23: 35 Years of Open Source Software
Page 24: 35 Years of Open Source Software
Page 25: 35 Years of Open Source Software
Page 26: 35 Years of Open Source Software

sharing

Page 27: 35 Years of Open Source Software

shareware

Page 28: 35 Years of Open Source Software
Page 29: 35 Years of Open Source Software

The Rise of Free Software

Page 30: 35 Years of Open Source Software
Page 31: 35 Years of Open Source Software
Page 32: 35 Years of Open Source Software

1984

Page 33: 35 Years of Open Source Software

Free Software

Page 34: 35 Years of Open Source Software

Free as in speech

Page 35: 35 Years of Open Source Software

Free as in freedom

Page 36: 35 Years of Open Source Software

Free as in beer

Page 37: 35 Years of Open Source Software

1. use

2. copy

3. modify

4. contribute

Page 38: 35 Years of Open Source Software
Page 39: 35 Years of Open Source Software

1989, 1991

GPL

Page 40: 35 Years of Open Source Software

you must extend the

same freedomsto others

Page 41: 35 Years of Open Source Software

copyleft

Page 42: 35 Years of Open Source Software

permissivelicenses

Page 43: 35 Years of Open Source Software

you give completefreedom to

developers

Page 44: 35 Years of Open Source Software
Page 45: 35 Years of Open Source Software
Page 46: 35 Years of Open Source Software
Page 47: 35 Years of Open Source Software
Page 48: 35 Years of Open Source Software

1993

Page 49: 35 Years of Open Source Software

1995

Page 50: 35 Years of Open Source Software

2000

$1,000,000,000

Page 51: 35 Years of Open Source Software

Free Software Becomes

Mainstream

Page 52: 35 Years of Open Source Software
Page 53: 35 Years of Open Source Software

1998

Page 54: 35 Years of Open Source Software
Page 55: 35 Years of Open Source Software
Page 56: 35 Years of Open Source Software
Page 57: 35 Years of Open Source Software
Page 58: 35 Years of Open Source Software
Page 59: 35 Years of Open Source Software
Page 60: 35 Years of Open Source Software
Page 61: 35 Years of Open Source Software

Open Sourceis Everywhere

Page 62: 35 Years of Open Source Software
Page 63: 35 Years of Open Source Software
Page 64: 35 Years of Open Source Software
Page 65: 35 Years of Open Source Software
Page 66: 35 Years of Open Source Software
Page 67: 35 Years of Open Source Software

all software

Page 68: 35 Years of Open Source Software
Page 69: 35 Years of Open Source Software
Page 70: 35 Years of Open Source Software
Page 71: 35 Years of Open Source Software
Page 72: 35 Years of Open Source Software
Page 73: 35 Years of Open Source Software
Page 74: 35 Years of Open Source Software
Page 75: 35 Years of Open Source Software

2005–2007

Page 76: 35 Years of Open Source Software
Page 77: 35 Years of Open Source Software
Page 78: 35 Years of Open Source Software
Page 79: 35 Years of Open Source Software

Software Freedom as Inspiration

Page 80: 35 Years of Open Source Software
Page 81: 35 Years of Open Source Software
Page 82: 35 Years of Open Source Software
Page 83: 35 Years of Open Source Software
Page 84: 35 Years of Open Source Software

open data

Page 85: 35 Years of Open Source Software

open access

Page 86: 35 Years of Open Source Software
Page 87: 35 Years of Open Source Software

@fmarier

[email protected]

Questions?

Page 88: 35 Years of Open Source Software

Photo credits:

ibm 360 with people: http://www.flickr.com/photos/cote/54408562/sizes/l/in/photostream/cdc6600: https://secure.wikimedia.org/wikipedia/en/wiki/File:Personable_Computer.jpgken and dennis with medals: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Medal_lg.jpegwarrington logo: http://wikieducator.org/File:Warrington_logo.pngashs logo: http://wikieducator.org/File:ASHS_logo.pngwanted poster: http://www.flickr.com/photos/mscaprikell/59580038/in/photostream/tape: http://www.flickr.com/photos/leejordan/486911915/tim o'reilly: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Tim_O%27Reilly_in_Foo_China_2007.JPGfsf logo: https://secure.wikimedia.org/wikipedia/en/wiki/File:FSF-Logo.svgtux: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Tux.svgopen source: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Opensource.svgstock market: http://www.flickr.com/photos/thewalkingirony/3051500551/android logo: https://secure.wikimedia.org/wikipedia/en/wiki/File:Android_logo.svgin-flight entertainment: http://www.flickr.com/photos/kalleboo/2473197800/samsung tv: http://www.flickr.com/photos/johannesfreund/2320330661/Linus: http://en.wikipedia.org/wiki/File:Linus_Torvalds.jpegBill Gates: http://en.wikipedia.org/wiki/File:Bill_Gates_in_WEF_,2007.jpgBruce Perens: [not CC] http://perens.com/press/photos/Lawrence Lessig: http://en.wikipedia.org/wiki/File:Lessig_portrait.jpgJimmy Wales: http://en.wikipedia.org/wiki/File:Jimmy_Wales_Fundraiser_Appeal_edit.jpgSteve Ballmer: http://en.wikipedia.org/wiki/File:Steve_ballmer_2007_outdoors2.jpgus department of justice: https://secure.wikimedia.org/wikipedia/en/wiki/File:US-DeptOfJustice-Seal.svg


Top Related