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

1,087 views

Published on

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.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,087
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Understanding Free Software May 30 eLiberatica 2008 & Open Source Licensing Bucharest, Romania
  2. 2. Warnings and Disclosure
  3. 3. 1. I am not a lawyerWarnings and Disclosure
  4. 4. 1. I am not a lawyerWarnings and Disclosure 2. Law is not code
  5. 5. 1. I am not a lawyerWarnings and Disclosure 2. Law is not code 3. Solely my opinions
  6. 6. FooAssociates
  7. 7. Free Software Foundation LicenseFooAssociates Compliance Lab Volunteer since 2004
  8. 8. FooAssociates
  9. 9. FooAssociates Mozilla Foundation Paid Staff Member Since 2005
  10. 10. FooAssociates
  11. 11. FooAssociates Open Source Initiative Board Observer since January
  12. 12. FooAssociates
  13. 13. Maximize the global public and Mozilla Manifesto individual benefits of thehttp://mozilla.org/about/mozilla-manifesto.html Internet.
  14. 14. The Roots of FreeFoundations Software & Open Source Licensing
  15. 15. AutomaticallyCopyright granted to creators by the state
  16. 16. U AutomaticallyCopyright granted to creators by the state
  17. 17. You own yourThe Big Idea? software.
  18. 18. If you cant open it... you dont own it.
  19. 19. Your softwareProprietary Software owns you.
  20. 20. Four Freedoms
  21. 21. 1. RunFour Freedoms
  22. 22. 1. Run 2. StudyFour Freedoms
  23. 23. 1. Run 2. StudyFour Freedoms 3. Modify
  24. 24. 1. Run 2. StudyFour Freedoms 3. Modify 4. Share
  25. 25. License Types
  26. 26. The sky is the limitPermissive THIS 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.
  27. 27. BSD License
  28. 28. Keep license noticesBSD License
  29. 29. Keep license noticesBSD License No warranty
  30. 30. Keep license noticesBSD License No warranty Dont use our name
  31. 31. Mac OS X
  32. 32. BSDMac OS X
  33. 33. BSDMac OS X Mach
  34. 34. BSDMac OS X Mach NeXTStep
  35. 35. Share ...Copyleft but Share-alike
  36. 36. Legal Entity Copyleft #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;
  37. 37. Legal Entity use use use use use use our YAML (); LWP::UserAgent; Number::RecordLocator; Email::Address; Fcntl qw(:mode); File::Temp; $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 perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;
  38. 38. Legal Entity use use use use use use our YAML (); LWP::UserAgent; Number::RecordLocator; Email::Address; Fcntl qw(:mode); File::Temp; $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 perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;
  39. 39. Legal Entity use use use use use use our YAML (); LWP::UserAgent; Number::RecordLocator; Email::Address; Fcntl qw(:mode); File::Temp; $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 perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;
  40. 40. Legal Entity use use use use use use our YAML (); LWP::UserAgent; Number::RecordLocator; Email::Address; Fcntl qw(:mode); File::Temp; $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 perl use strict; use warnings; Copyleft =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to #!/usr/bin/env perl run as a cgi script use strict; Hacked up by zak@fooassociates.com use warnings; =cut =head1 DESCRIPTION use Encode (); Hacked version of Best Practicals Hiveminder todo.pl script use YAML (); Generates reports from Hiveminder - meant to be safe-ish to use LWP::UserAgent; run as a cgi script use Number::RecordLocator; Hacked up by zak@fooassociates.com use Email::Address; =cut use Fcntl qw(:mode); use File::Temp; use Encode (); use YAML (); our $CONFFILE = "$ENV{HOME}/.hiveminder"; use LWP::UserAgent; our %config = (); use Number::RecordLocator; our $ua = LWP::UserAgent->new; use Email::Address; our $locator = Number::RecordLocator->new(); use Fcntl qw(:mode); our $default_query = "not/complete/starts/before/tomorrow/ use File::Temp; accepted/but_first/nothing"; our %args; our $CONFFILE = "$ENV{HOME}/.hiveminder"; our %config = (); $ua->cookie_jar({}); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); # Load the users proxy settings from %ENV our $default_query = "not/complete/starts/before/tomorrow/ $ua->env_proxy; accepted/but_first/nothing"; our %args; $ua->cookie_jar({}); # Load the users 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";
  41. 41. Legal Entity use YAML (); Copyleft 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/ #!/usr/bin/env perl nothing"; use strict; our %args; use warnings; $ua->cookie_jar({}); =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script # Load the users proxy settings from %ENV Generates reports from Hiveminder - meant to be safe-ish to $ua->env_proxy; run as a cgi script Hacked up by zak@fooassociates.com my $encoding; =cut eval { require Term::Encoding; use Encode (); $encoding = Term::Encoding::get_encoding(); use YAML (); }; use LWP::UserAgent; $encoding ||= "utf-8"; use Number::RecordLocator; use Email::Address; binmode STDOUT, ":encoding($encoding)"; use Fcntl qw(:mode); use File::Temp; main(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; sub main { our %config = (); setup_config(); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); $args{owner} = "me"; our $default_query = "not/complete/starts/before/tomorrow/ accepted/but_first/nothing"; do_login() or die("Bad username/password -- edit $CONFFILE and try our %args; again."); $ua->cookie_jar({}); @_ = @ARGV; # Load the users proxy settings from %ENV gen_head(); $ua->env_proxy; &list_tasks; } sub gen_head { print <<EOS <style type="text/css">
  42. 42. Legal Entity use YAML (); Copyleft 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/ #!/usr/bin/env perl nothing"; use strict; our %args; use warnings; $ua->cookie_jar({}); =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script # Load the users proxy settings from %ENV Generates reports from Hiveminder - meant to be safe-ish to $ua->env_proxy; run as a cgi script Hacked up by zak@fooassociates.com my $encoding; =cut eval { require Term::Encoding; use Encode (); $encoding = Term::Encoding::get_encoding(); use YAML (); }; use LWP::UserAgent; $encoding ||= "utf-8"; use Number::RecordLocator; use Email::Address; binmode STDOUT, ":encoding($encoding)"; use Fcntl qw(:mode); use File::Temp; main(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; sub main { our %config = (); setup_config(); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); $args{owner} = "me"; our $default_query = "not/complete/starts/before/tomorrow/ accepted/but_first/nothing"; do_login() or die("Bad username/password -- edit $CONFFILE and try our %args; again."); $ua->cookie_jar({}); @_ = @ARGV; # Load the users proxy settings from %ENV gen_head(); $ua->env_proxy; &list_tasks; } sub gen_head { print <<EOS <style type="text/css">
  43. 43. Legal Entity use YAML (); Copyleft 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/ #!/usr/bin/env perl nothing"; use strict; our %args; use warnings; $ua->cookie_jar({}); =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script # Load the users proxy settings from %ENV Generates reports from Hiveminder - meant to be safe-ish to $ua->env_proxy; run as a cgi script Hacked up by zak@fooassociates.com my $encoding; =cut eval { require Term::Encoding; use Encode (); $encoding = Term::Encoding::get_encoding(); use YAML (); }; use LWP::UserAgent; $encoding ||= "utf-8"; use Number::RecordLocator; use Email::Address; binmode STDOUT, ":encoding($encoding)"; use Fcntl qw(:mode); use File::Temp; main(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; sub main { our %config = (); setup_config(); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); $args{owner} = "me"; our $default_query = "not/complete/starts/before/tomorrow/ accepted/but_first/nothing"; do_login() or die("Bad username/password -- edit $CONFFILE and try our %args; Copyleft again."); $ua->cookie_jar({}); @_ = @ARGV; # Load the users proxy settings from %ENV gen_head(); $ua->env_proxy; &list_tasks; } sub gen_head { print <<EOS <style type="text/css"> #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users 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
  44. 44. Legal Entity use YAML (); Copyleft 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/ #!/usr/bin/env perl nothing"; use strict; our %args; use warnings; $ua->cookie_jar({}); =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script # Load the users proxy settings from %ENV Generates reports from Hiveminder - meant to be safe-ish to $ua->env_proxy; run as a cgi script Hacked up by zak@fooassociates.com my $encoding; =cut eval { require Term::Encoding; use Encode (); $encoding = Term::Encoding::get_encoding(); use YAML (); }; use LWP::UserAgent; $encoding ||= "utf-8"; use Number::RecordLocator; use Email::Address; binmode STDOUT, ":encoding($encoding)"; use Fcntl qw(:mode); use File::Temp; main(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; sub main { our %config = (); setup_config(); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); $args{owner} = "me"; our $default_query = "not/complete/starts/before/tomorrow/ accepted/but_first/nothing"; do_login() or die("Bad username/password -- edit $CONFFILE and try our %args; Copyleft again."); $ua->cookie_jar({}); @_ = @ARGV; # Load the users proxy settings from %ENV gen_head(); $ua->env_proxy; &list_tasks; } sub gen_head { print <<EOS <style type="text/css"> #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users 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
  45. 45. Legal Entity use YAML (); Copyleft 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/ #!/usr/bin/env perl nothing"; use strict; our %args; use warnings; $ua->cookie_jar({}); =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script # Load the users proxy settings from %ENV Generates reports from Hiveminder - meant to be safe-ish to $ua->env_proxy; run as a cgi script Hacked up by zak@fooassociates.com my $encoding; =cut eval { require Term::Encoding; use Encode (); $encoding = Term::Encoding::get_encoding(); use YAML (); }; use LWP::UserAgent; $encoding ||= "utf-8"; use Number::RecordLocator; use Email::Address; binmode STDOUT, ":encoding($encoding)"; use Fcntl qw(:mode); use File::Temp; main(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; sub main { our %config = (); setup_config(); our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); $args{owner} = "me"; our $default_query = "not/complete/starts/before/tomorrow/ accepted/but_first/nothing"; do_login() or die("Bad username/password -- edit $CONFFILE and try our %args; Copyleft again."); $ua->cookie_jar({}); @_ = @ARGV; # Load the users proxy settings from %ENV gen_head(); $ua->env_proxy; &list_tasks; } sub gen_head { print <<EOS <style type="text/css"> #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy; my $encoding; eval { require Term::Encoding; $encoding = Term::Encoding::get_encoding(); }; Incompatible $encoding ||= "utf-8"; binmode STDOUT, ":encoding($encoding)"; main(); sub main { setup_config(); $args{owner} = "me"; #!/usr/bin/env perl do_login() or die("Bad username/password -- edit use strict; $CONFFILE and try again."); use warnings; @_ = @ARGV; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script gen_head(); Generates reports from Hiveminder - meant to be safe-ish to &list_tasks; run as a cgi script } Hacked up by zak@fooassociates.com =cut sub gen_head { print <<EOS 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 users proxy settings from %ENV $ua->env_proxy;
  46. 46. Legal Entity Copyleft #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;
  47. 47. Legal Entity Copyleft Incompatible #!/usr/bin/env perl =head1 DESCRIPTION use strict; Hacked version of Best Practicals Hiveminder todo.pl script use warnings; Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script =head1 DESCRIPTION Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script =cut Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script use Encode (); Hacked up by zak@fooassociates.com use YAML (); =cut use LWP::UserAgent; use Number::RecordLocator; use Encode (); use Email::Address; use YAML (); use Fcntl qw(:mode); use LWP::UserAgent; use File::Temp; use Number::RecordLocator; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; our %args; our $locator = Number::RecordLocator->new(); our $default_query = "not/complete/starts/before/tomorrow/ $ua->cookie_jar({}); accepted/but_first/nothing"; our %args; # Load the users proxy settings from %ENV $ua->env_proxy; $ua->cookie_jar({}); my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; require Term::Encoding;
  48. 48. Legal Entity Copyleft Incompatible #!/usr/bin/env perl =head1 DESCRIPTION use strict; Hacked version of Best Practicals Hiveminder todo.pl script use warnings; Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script =head1 DESCRIPTION Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script =cut Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script use Encode (); Hacked up by zak@fooassociates.com use YAML (); =cut use LWP::UserAgent; use Number::RecordLocator; use Encode (); use Email::Address; use YAML (); use Fcntl qw(:mode); use LWP::UserAgent; use File::Temp; use Number::RecordLocator; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; our %args; our $locator = Number::RecordLocator->new(); our $default_query = "not/complete/starts/before/tomorrow/ $ua->cookie_jar({}); accepted/but_first/nothing"; our %args; # Load the users proxy settings from %ENV $ua->env_proxy; $ua->cookie_jar({}); my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; require Term::Encoding;
  49. 49. Legal Entity Incompatible #!/usr/bin/env perl Copyleft Incompatible use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =cut #!/usr/bin/env perl use Encode (); =head1 DESCRIPTION use strict; use YAML (); Hacked version of Best Practicals Hiveminder todo.pl script use warnings; use LWP::UserAgent; Generates reports from Hiveminder - meant to be safe-ish to use Number::RecordLocator; run as a cgi script =head1 DESCRIPTION use Email::Address; Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script use Fcntl qw(:mode); =cut Generates reports from Hiveminder - meant to be safe-ish to use File::Temp; run as a cgi script use Encode (); Hacked up by zak@fooassociates.com our $CONFFILE = "$ENV{HOME}/.hiveminder"; use YAML (); =cut our %config = (); use LWP::UserAgent; our $ua = LWP::UserAgent->new; use Number::RecordLocator; use Encode (); our $locator = Number::RecordLocator->new(); use Email::Address; use YAML (); our $default_query = "not/complete/starts/before/tomorrow/ use Fcntl qw(:mode); use LWP::UserAgent; accepted/but_first/nothing"; use File::Temp; use Number::RecordLocator; our %args; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); $ua->cookie_jar({}); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; # Load the users proxy settings from %ENV our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; $ua->env_proxy; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; my $encoding; our %args; our $locator = Number::RecordLocator->new(); eval { our $default_query = "not/complete/starts/before/tomorrow/ require Term::Encoding; $ua->cookie_jar({}); accepted/but_first/nothing"; $encoding = Term::Encoding::get_encoding(); our %args; }; # Load the users proxy settings from %ENV $encoding ||= "utf-8"; $ua->env_proxy; $ua->cookie_jar({}); binmode STDOUT, ":encoding($encoding)"; my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; main(); require Term::Encoding; sub main { setup_config(); $args{owner} = "me";
  50. 50. Legal Entity Incompatible #!/usr/bin/env perl Copyleft Incompatible use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =cut #!/usr/bin/env perl use Encode (); =head1 DESCRIPTION use strict; use YAML (); Hacked version of Best Practicals Hiveminder todo.pl script use warnings; use LWP::UserAgent; Generates reports from Hiveminder - meant to be safe-ish to use Number::RecordLocator; run as a cgi script =head1 DESCRIPTION use Email::Address; Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script use Fcntl qw(:mode); =cut Generates reports from Hiveminder - meant to be safe-ish to use File::Temp; run as a cgi script use Encode (); Hacked up by zak@fooassociates.com our $CONFFILE = "$ENV{HOME}/.hiveminder"; use YAML (); =cut our %config = (); use LWP::UserAgent; our $ua = LWP::UserAgent->new; use Number::RecordLocator; use Encode (); our $locator = Number::RecordLocator->new(); use Email::Address; use YAML (); our $default_query = "not/complete/starts/before/tomorrow/ use Fcntl qw(:mode); use LWP::UserAgent; accepted/but_first/nothing"; use File::Temp; use Number::RecordLocator; our %args; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); $ua->cookie_jar({}); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; # Load the users proxy settings from %ENV our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; $ua->env_proxy; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; my $encoding; our %args; our $locator = Number::RecordLocator->new(); eval { our $default_query = "not/complete/starts/before/tomorrow/ require Term::Encoding; $ua->cookie_jar({}); accepted/but_first/nothing"; $encoding = Term::Encoding::get_encoding(); our %args; }; # Load the users proxy settings from %ENV $encoding ||= "utf-8"; $ua->env_proxy; $ua->cookie_jar({}); binmode STDOUT, ":encoding($encoding)"; my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; main(); require Term::Encoding; sub main { setup_config(); $args{owner} = "me";
  51. 51. Legal Entity Incompatible #!/usr/bin/env perl Copyleft Incompatible use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =cut #!/usr/bin/env perl use Encode (); =head1 DESCRIPTION use strict; use YAML (); Hacked version of Best Practicals Hiveminder todo.pl script use warnings; use LWP::UserAgent; Generates reports from Hiveminder - meant to be safe-ish to use Number::RecordLocator; run as a cgi script =head1 DESCRIPTION use Email::Address; Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script use Fcntl qw(:mode); =cut Generates reports from Hiveminder - meant to be safe-ish to use File::Temp; run as a cgi script use Encode (); Hacked up by zak@fooassociates.com our $CONFFILE = "$ENV{HOME}/.hiveminder"; use YAML (); =cut our %config = (); use LWP::UserAgent; our $ua = LWP::UserAgent->new; use Number::RecordLocator; use Encode (); our $locator = Number::RecordLocator->new(); use Email::Address; use YAML (); our $default_query = "not/complete/starts/before/tomorrow/ use Fcntl qw(:mode); use LWP::UserAgent; accepted/but_first/nothing"; use File::Temp; use Number::RecordLocator; our %args; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); $ua->cookie_jar({}); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; # Load the users proxy settings from %ENV our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; $ua->env_proxy; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; my $encoding; our %args; our $locator = Number::RecordLocator->new(); eval { our $default_query = "not/complete/starts/before/tomorrow/ require Term::Encoding; $ua->cookie_jar({}); accepted/but_first/nothing"; $encoding = Term::Encoding::get_encoding(); our %args; }; # Load the users proxy settings from %ENV $encoding ||= "utf-8"; $ua->env_proxy; $ua->cookie_jar({}); binmode STDOUT, ":encoding($encoding)"; my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; main(); require Term::Encoding; sub main { setup_config(); $args{owner} = "me";
  52. 52. Legal Entity Incompatible #!/usr/bin/env perl Copyleft Incompatible use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =cut #!/usr/bin/env perl use Encode (); =head1 DESCRIPTION use strict; use YAML (); Hacked version of Best Practicals Hiveminder todo.pl script use warnings; use LWP::UserAgent; Generates reports from Hiveminder - meant to be safe-ish to use Number::RecordLocator; run as a cgi script =head1 DESCRIPTION use Email::Address; Hacked up by zak@fooassociates.com Hacked version of Best Practicals Hiveminder todo.pl script use Fcntl qw(:mode); =cut Generates reports from Hiveminder - meant to be safe-ish to use File::Temp; run as a cgi script use Encode (); Hacked up by zak@fooassociates.com our $CONFFILE = "$ENV{HOME}/.hiveminder"; use YAML (); =cut our %config = (); use LWP::UserAgent; our $ua = LWP::UserAgent->new; use Number::RecordLocator; use Encode (); our $locator = Number::RecordLocator->new(); use Email::Address; use YAML (); our $default_query = "not/complete/starts/before/tomorrow/ use Fcntl qw(:mode); use LWP::UserAgent; accepted/but_first/nothing"; use File::Temp; use Number::RecordLocator; our %args; use Email::Address; our $CONFFILE = "$ENV{HOME}/.hiveminder"; use Fcntl qw(:mode); $ua->cookie_jar({}); our %config = (); use File::Temp; our $ua = LWP::UserAgent->new; # Load the users proxy settings from %ENV our $locator = Number::RecordLocator->new(); our $CONFFILE = "$ENV{HOME}/.hiveminder"; $ua->env_proxy; our $default_query = "not/complete/starts/before/tomorrow/ our %config = (); accepted/but_first/nothing"; our $ua = LWP::UserAgent->new; my $encoding; our %args; our $locator = Number::RecordLocator->new(); eval { our $default_query = "not/complete/starts/before/tomorrow/ require Term::Encoding; $ua->cookie_jar({}); accepted/but_first/nothing"; $encoding = Term::Encoding::get_encoding(); our %args; }; # Load the users proxy settings from %ENV $encoding ||= "utf-8"; $ua->env_proxy; $ua->cookie_jar({}); binmode STDOUT, ":encoding($encoding)"; my $encoding; # Load the users proxy settings from %ENV eval { $ua->env_proxy; main(); require Term::Encoding; sub main { setup_config(); $args{owner} = "me"; Copyleft #!/usr/bin/env perl use strict; use warnings; =head1 DESCRIPTION Hacked version of Best Practicals Hiveminder todo.pl script Generates reports from Hiveminder - meant to be safe-ish to run as a cgi script Hacked up by zak@fooassociates.com =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 users proxy settings from %ENV $ua->env_proxy;

×