The Age of
Incompatible
  Expensive
  Machines
selling hardware
1968

hardware      software
FORTRAN
          COBOL
 Algol
#!/usr/bin/perl                                                                                                           ...
The Birth of
  UNIX
UNIX.zip

UNIX-source.zip
trade secret
most widely and
 deeply understood
trade secret
   in the history
   of computing
sharing
       innovations
          &
    bug fixes
The Birth of
Proprietary
 Software
1980
proprietary
 software
sharing
shareware
The Rise of
Free Software
1984
Free Software
Free as in speech
Free as in freedom
Free as in beer
1. use
2. copy
3. modify
4. contribute
1989, 1991

  GPL
you must extend the
same freedoms
     to others
copyleft
permissive
 licenses
you give complete
   freedom to
 developers
1993
1995
2000



$1,000,000,000
Free Software
  Becomes
 Mainstream
1998
Open Source
is Everywhere
all software
2005–2007
Software
Freedom as
Inspiration
open data
open access
Questions?

francois@catalyst.net.nz

   @fmarier
Photo credits:

ibm 360 with people: http://www.flickr.com/photos/cote/54408562/sizes/l/in/photostream/
cdc6600: https://s...
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
35 Years of Open Source Software
Upcoming SlideShare
Loading in...5
×

35 Years of Open Source Software

19,749

Published on

History of Free and Open Source Software. From the university lab to the enterprise. New Zealand Computer Society Innovation Conference.

Thanks to Evonne Cheung for her awesome graphics!

Published in: Technology
7 Comments
36 Likes
Statistics
Notes
No Downloads
Views
Total Views
19,749
On Slideshare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
662
Comments
7
Likes
36
Embeds 0
No embeds

No notes for slide

35 Years of Open Source Software

  1. 1. The Age of Incompatible Expensive Machines
  2. 2. selling hardware
  3. 3. 1968 hardware software
  4. 4. FORTRAN COBOL Algol
  5. 5. #!/usr/bin/perl foreach (@pkglines) { # close REASON or chomp; # This program is free software; you can redistribute it and/or modify die "Can't close FILE [$file]: $!n"; $linenbr++; # it under the terms of the GNU General Public License as published by } if (/^Package:/) { # the Free Software Foundation; either version 2 of the License, or ($label, $pkg) = split(/:s+/,$_,2); # (at your option) any later version. # $pkgcnt++; # # Main program starts here. printf "pkg(%4.4d) pkg=[%s]n",$pkgcnt,$pkg if $debug >= 1; # This program is distributed in the hope that it will be useful, # $has_pkg = 1; ### we have necessary section # but WITHOUT ANY WARRANTY; without even the implied warranty of GetOptions('q|quiet' => $quiet, next; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 's|sparse' => $sparse, } # GNU General Public License for more details. 'e|explain!' => $explain, if (/^Status:/) { # 'reason-dir=s' => $reasondir, my $label = ""; 'd|debug+' => $debug, ($label, $pkgstatus) = split(/:s+/,$_,2); use strict; 'h|help' => $help); print "tpkgstatus=[$pkgstatus]n" if $debug >= 1; use warnings; $pkg_status{$pkg} = $pkgstatus; if ($help) { ($plan, $state, $status) = split(/s+/,$pkgstatus); use Getopt::Long; usage(); print "ttplan=[$plan]n" if $debug >= 1; exit 0; print "ttstate=[$state]n" if $debug >= 1; # Declaration of important/main variables. } print "ttstatus=[$status]n" if $debug >= 1; my $quiet = 0; $has_status = 1; ### we have necessary section my $sparse = 0; opendir(REASONDIR, $reasondir) or next; my $help = 0; die "Can't open DIR [$reasondir]: $!n"; } my $explain = 1; # Parse all the reason files in $reasondir except those beginning with if (/^Section:/) { my $debug = 0; # a . or ending with a ~ my $label = ""; my $reasondir = '/usr/share/vrms/reasons/'; parse_reason_file("$reasondir/$_") ($label, $section) = split(/:s+/,$_,2); my %reason = (); foreach (grep {!/~$/ && !/^./} readdir(REASONDIR)); print "tsection=[$section]n" if $debug >= 1; closedir REASONDIR or $has_section = 1; ### we have necessary section # die "Can't close DIR [$reasondir]: $!n"; if ($section =~ /contrib|non-free|restricted|multiverse/) { # Auxiliary functions section (FIXME: put them in a file by themselves). ### read thru rest of array to find descr instead of waiting for it source code # my $statusfile = '/var/lib/dpkg/status'; my $found_descr =0; my $is_nonfree = 0; ### preset none found, yet while (! $found_descr) { # sub usage: my %nonfree = (); if ($linenbr > $#pkglines) { # Input: nothing. my $is_other_nonfree = 0; ### preset none found, yet ### iff badly formed entry ensure blank description # Output: Messages to stdout telling the usage of the program. my %other_nonfree = (); print "tEEEE shortdescr=[$shortdescr]n" if $debug >= 1; sub usage() { my $is_contrib = 0; ### preset none found, yet last; print <<EOF; my %contrib = (); } Usage: vrms [OPTIONS] ... my $is_other_contrib = 0; ### preset none found, yet my $dline = $pkglines[$linenbr++]; my %other_contrib = (); if($dline =~ /^Description:/) { --quiet, -q Do nothing if there are no non-free packages installed. my %pkg_status = (); ($label, $shortdescr) = split(/:s+/,$dline,2); --explain, -e Give a brief explanation of why a package is non-free, my $pkgcnt = 0; print "tshortdescr=[$shortdescr]n" if $debug >= 1; if available. my $clumpcnt = 0; $found_descr = 1; --sparse, -s Just list non-free packages, nothing else. my $dontcarelines = 5; ### no. of lines a non-installed entry may have in the } --reason-dir=DIR Use DIR as the reason directory. statusfile } --help, -h Display this help. if ($section =~ /contrib/) { --debug, -d Generate debugging information. if (lc $status eq 'installed') { my $sysname = ""; $is_contrib = 1; All options can be prefixed with "no" (eg: --noexplain) to turn them off. chop($sysname = `uname -n`); $contrib{$pkg} = $shortdescr; EOF } else { } open(PKG_SOURCE, "< $statusfile") or $is_other_contrib = 1; die "Can't open FILE [$statusfile]: $!n"; $other_contrib{$pkg} = $shortdescr; # sub parse_reason_file: } # Input: the name of a reason file and the global hash %reason $/ = ""; ### snarf a paragraph at a time } else { # Output: the hash %reason filled with reasons from the input file while(<PKG_SOURCE>) { if (lc $status eq 'installed') { # (FIXME: %reason shouldn't be global) my $clump = $_; $is_nonfree = 1; sub parse_reason_file { $clumpcnt++; $nonfree{$pkg} = $shortdescr; my $file = shift; my (@pkglines) = split(/n/, $clump); } else { print "Parsing reason file $filen" if $debug >= 1; ### iff more than $dontcarelines lines, package is installed, so process it $is_other_nonfree = 1; open(REASON, "<", $file) or ### (speed-up by skipping don't-care entries) $other_nonfree{$pkg} = $shortdescr; die "Can't open FILE [$file]: $!n"; if (@pkglines > $dontcarelines) { } my $pkg = ""; ### name of this package } while (my $line = <REASON>) { my $pkgstatus = ""; ### status } chomp $line; my $plan = ""; ### install plan (hold, deinstall, purge, install, etc.) last; ### this is last desriptor of package we care about so end loop # Grab a line of the form 'package: reason', skip if we don't match my $state = ""; ### state (ok or ???) } else { my ($pkg, $reason) = ($line =~ /^(S+):s+(.*)s*$/) or next; my $status = ""; ### status (installed, not-installed, etc.) ### un-processed lines from package info print "'$pkg' because '$reason'n" if ($debug >= 1); my $section = ""; ### section this is where non-free is marked if($debug >= 1) { my $shortdescr = ""; ### one-liner description of pkg print "tt--- $_n"; # If this is _our_ master file, then prefer anything my $linenbr = 0; ### current line number of this pkackag's info } # else (so that package maintainers can override) my $label = ""; ### junk field (not used, except to catch split values) } next if exists $reason{$pkg} and $file =~ //vrms$/; my $has_pkg = 0; ### reset the markers } my $has_status = 0; if (!$has_status or !$has_pkg) { $reason{$pkg} = $reason; my $has_section = 0; print STDERR "vrms: ERROR- Badly formed dpkg-status entry #$clumpcnt!n"; } print STDERR " pkg=[$pkg], pkgstatus=[$pkgstatus], section=[$section] n"; }
  6. 6. The Birth of UNIX
  7. 7. UNIX.zip UNIX-source.zip
  8. 8. trade secret
  9. 9. most widely and deeply understood trade secret in the history of computing
  10. 10. sharing innovations & bug fixes
  11. 11. The Birth of Proprietary Software
  12. 12. 1980
  13. 13. proprietary software
  14. 14. sharing
  15. 15. shareware
  16. 16. The Rise of Free Software
  17. 17. 1984
  18. 18. Free Software
  19. 19. Free as in speech
  20. 20. Free as in freedom
  21. 21. Free as in beer
  22. 22. 1. use 2. copy 3. modify 4. contribute
  23. 23. 1989, 1991 GPL
  24. 24. you must extend the same freedoms to others
  25. 25. copyleft
  26. 26. permissive licenses
  27. 27. you give complete freedom to developers
  28. 28. 1993
  29. 29. 1995
  30. 30. 2000 $1,000,000,000
  31. 31. Free Software Becomes Mainstream
  32. 32. 1998
  33. 33. Open Source is Everywhere
  34. 34. all software
  35. 35. 2005–2007
  36. 36. Software Freedom as Inspiration
  37. 37. open data
  38. 38. open access
  39. 39. Questions? francois@catalyst.net.nz @fmarier
  40. 40. 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.jpg ken and dennis with medals: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Medal_lg.jpeg warrington logo: http://wikieducator.org/File:Warrington_logo.png ashs logo: http://wikieducator.org/File:ASHS_logo.png wanted 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_200 fsf logo: https://secure.wikimedia.org/wikipedia/en/wiki/File:FSF-Logo.svg tux: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Tux.svg open source: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Opensource.svg stock market: http://www.flickr.com/photos/thewalkingirony/3051500551/ android logo: https://secure.wikimedia.org/wikipedia/en/wiki/File:Android_logo.svg in-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.jpeg Bill Gates: http://en.wikipedia.org/wiki/File:Bill_Gates_in_WEF_,2007.jpg Bruce Perens: [not CC] http://perens.com/press/photos/ Lawrence Lessig: http://en.wikipedia.org/wiki/File:Lessig_portrait.jpg Jimmy Wales: http://en.wikipedia.org/wiki/File:Jimmy_Wales_Fundraiser_Appeal_edit.jpg Steve Ballmer: http://en.wikipedia.org/wiki/File:Steve_ballmer_2007_outdoors2.jpg us department of justice: https://secure.wikimedia.org/wikipedia/en/wiki/File:US-DeptOfJustice-Seal.svg
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×