65
Understanding Free Software & Open Source Licensing May 30 eLiberatica 2008 Bucharest, Romania

"Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Embed Size (px)

DESCRIPTION

This is a presentation held at eLiberatica 2008.http://www.eliberatica.ro/2008/One of the biggest events of its kind in Eastern Europe, eLiberatica brings community leaders from around the world to discuss about the hottest topics in FLOSS movement, demonstrating the advantages of adopting, using and developing Open Source and Free Software solutions.The eLiberatica organizational committee together with our speakers and guests, have graciously allowed media representatives and all attendees to photograph, videotape and otherwise record their sessions, on the condition that the photos, videos and recordings are licensed under the Creative Commons Share-Alike 3.0 License.

Citation preview

Page 1: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Understanding Free Software & Open Source Licensing

May 30eLiberatica 2008Bucharest, Romania

Page 2: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Warnings and Disclosure

Page 3: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Warnings and Disclosure1. I am not a lawyer

Page 4: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Warnings and Disclosure1. I am not a lawyer2. Law is not code

Page 5: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Warnings and Disclosure1. I am not a lawyer2. Law is not code3. Solely my opinions

Page 6: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

FooAssociates

Page 7: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Free Software

Foundation License

Compliance Lab

Volunteer since 2004

FooAssociates

Page 8: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

FooAssociates

Page 9: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Mozilla Foundation

Paid Staff Member

Since 2005

FooAssociates

Page 10: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

FooAssociates

Page 11: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Open Source Initiative

Board Observer since

January

FooAssociates

Page 12: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

FooAssociates

Page 13: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Maximize the global public and individual benefits of the Internet.

Mozilla Manifestohttp://mozilla.org/about/mozilla-manifesto.html

Page 14: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://farm1.static.flickr.com/51/146743083_ab97013e4d_o.jpg

FoundationsThe Roots of Free Software & Open Source Licensing

Page 15: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

CopyrightAutomatically granted to creators by the state

Page 16: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

CopyrightAutomatically granted to creators by the state

U

Page 17: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

The Big Idea? You own your software.

Page 18: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

If you can't open it... you don't own it.

Page 19: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Proprietary Software Your softwareowns you.

Page 20: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://upload.wikimedia.org/wikipedia/commons/4/45/Darwin_divergence.jpg

Four Freedoms

Page 21: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://upload.wikimedia.org/wikipedia/commons/4/45/Darwin_divergence.jpg

Four Freedoms1. Run

Page 22: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://upload.wikimedia.org/wikipedia/commons/4/45/Darwin_divergence.jpg

Four Freedoms1. Run2. Study

Page 23: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://upload.wikimedia.org/wikipedia/commons/4/45/Darwin_divergence.jpg

Four Freedoms1. Run2. Study3. Modify

Page 24: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

http://upload.wikimedia.org/wikipedia/commons/4/45/Darwin_divergence.jpg

Four Freedoms1. Run2. Study3. Modify4. Share

Page 25: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

License Types

Page 26: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

PermissiveThe sky is the limitTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Page 27: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

BSD License

Page 28: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

BSD LicenseKeep license notices

Page 29: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

BSD LicenseKeep license noticesNo warranty

Page 30: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

BSD LicenseKeep license noticesNo warrantyDon't use our name

Page 31: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Mac OS X

Page 32: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Mac OS XBSD

Page 33: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Mac OS XBSDMach

Page 34: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Mac OS XBSDMachNeXTStep

Page 35: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft Share ...but Share-alike

Page 36: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal Entity

Page 37: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/

Legal Entity

Page 38: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/

Legal Entity

Page 39: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/

Legal Entity

Page 40: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Legal Entity

Page 41: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal Entity

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS <style type="text/css">

Page 42: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal Entity

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS <style type="text/css">

Page 43: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy; Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS

Legal Entity

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS <style type="text/css">

Page 44: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy; Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS

Legal Entity

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS <style type="text/css">

Page 45: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy; Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS

Legal Entity

Incompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

do_login() or die("Bad username/password -- edit $CONFFILE and try again.");

@_ = @ARGV;

gen_head(); &list_tasks;}

sub gen_head { print <<EOS <style type="text/css">

Page 46: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal Entity

Page 47: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Legal Entity

Page 48: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Legal Entity

Page 49: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 50: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 51: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 52: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 53: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 54: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Incompatible

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding;

Copyleft

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

Legal EntityIncompatible

#!/usr/bin/env perluse strict;use warnings;

=head1 DESCRIPTIONHacked version of Best Practical's Hiveminder todo.pl scriptGenerates reports from Hiveminder - meant to be safe-ish to run as a cgi scriptHacked up by [email protected]=cut

use Encode ();use YAML ();use LWP::UserAgent;use Number::RecordLocator;use Email::Address;use Fcntl qw(:mode);use File::Temp;

our $CONFFILE = "$ENV{HOME}/.hiveminder";our %config = ();our $ua = LWP::UserAgent->new;our $locator = Number::RecordLocator->new();our $default_query = "not/complete/starts/before/tomorrow/accepted/but_first/nothing";our %args;

$ua->cookie_jar({});

# Load the user's proxy settings from %ENV$ua->env_proxy;

my $encoding;eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding();};$encoding ||= "utf-8";

binmode STDOUT, ":encoding($encoding)";

main();

sub main { setup_config();

$args{owner} = "me";

Page 55: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

GNU General Public License Private Freedom.Public Responsibility.

Page 56: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

GoogleProprietary services built with GPL'd software.

Page 57: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

MySQL Dual-licensing:Share-alike or pay.

Page 58: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

Time?

I don't want to be late!

Page 59: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

1984 called It wants its software market back.

Page 60: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

The Internet 1969

Page 61: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

PC Revolution 1980's

Page 62: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

The World Wide Web 1991

Page 63: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008
Page 65: "Understanding Free Software and Open Source Licensing" by Zak Greant @ eLiberatica 2008

License; Disclaimer of Warranty and Liability

This Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived.

THIS WORK IS OFFERED AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL I BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT THE USE OF THE WORK, EVEN IF I HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.