Changeset - 034a60be9b5c
[Not reviewed]
0 4 1
Brett Smith (brett) - 7 years ago 2016-12-31 19:46:10
brett@sfconservancy.org
js: Split whole-site JS from Supporter-specific JS.
5 files changed with 93 insertions and 102 deletions:
0 comments (0 inline, 0 general)
www/conservancy/static/js/conservancy.js
Show inline comments
 
new file 100644
 
/* Copyright (C) 2012-2013 Denver Gingerich,
 
** Copyright (C) 2013-2014 Bradley M. Kuhn,
 
** Copyright (C) 2016 Brett Smith.
 
** License: GPLv3-or-later
 
**  Find a copy of GPL at https://sfconservancy.org/GPLv3
 
*/
 

	
 
$(document).ready(function() {
 
    /* Set up the fundraiser multiprogressbar near the top of each page. */
 
    var siteFinalGoal = $('span#site-fundraiser-final-goal').text();
 
    var noCommaSiteFinalGoal = parseInt(siteFinalGoal.replace(/,/g, ""));
 
    var siteMatchCount = $('span#site-fundraiser-match-count').text();
 
    var noCommaSiteMatchCount = parseInt(siteMatchCount.replace(/,/g, ""));
 
    if (! noCommaSiteMatchCount) {
 
        noCommaSiteMatchCount = "0";
 
    }
 
    var barParts = [{
 
        value: (noCommaSiteMatchCount / noCommaSiteFinalGoal) * 100,
 
        text: noCommaSiteMatchCount.toLocaleString() + " matched!",
 
        barClass: "progress",
 
        textClass: "soFarText",
 
    }];
 
    if (barParts[0].value < 100) {
 
        var matchesLeft = noCommaSiteFinalGoal - noCommaSiteMatchCount;
 
        barParts.push({
 
            value: 100,
 
            text: matchesLeft.toLocaleString() + " to go!",
 
            barClass: "final-goal",
 
            textClass: "goalText",
 
        });
 
    }
 
    $('#siteprogressbar').empty().multiprogressbar({parts: barParts});
 

	
 
    $('span#fundraiser-percentage').css({ 'color'        : 'green',
 
                                          'font-weight'  : 'bold',
 
                                          'float'        : 'right',
 
                                          'margin-right' : '40%',
 
                                          'margin-top'   : '2.5%',
 
                                          'text-align'   : 'inherit'});
 

	
 
    /* Set up donation form elements used across the whole site. */
 
    $('.toggle-content').hide();
 
    $('.toggle-control')
 
     .addClass('clickable')
 
     .bind('click', function() {
 
        var $control = $(this);
 
        var $parent = $control.parents('.toggle-unit');
 

	
 
        $parent.toggleClass('expanded');
 
        $parent.find('.toggle-content').slideToggle();
 

	
 
        // if control has HTML5 data attributes, use to update text
 
        if ($parent.hasClass('expanded')) {
 
            $control.html($control.attr('data-expanded-text'));
 
        } else {
 
            $control.html($control.attr('data-text'));
 
        }
 
    });
 
    $('a.donate-now')
 
      .addClass('clickable')
 
      .bind('click', function() {
 
        var $control = $('#donate-box');
 
        var $otherTextControl = $('.donate-sidebar');
 

	
 
        setTimeout(function() { $control.find('.toggle-content').slideUp(100);
 
                                $control.toggleClass('expanded');
 
                                $control.find('.toggle-content').slideDown(800).fadeOut(10);
 
                                $otherTextControl.find('.donate-box-highlight').fadeOut(100);
 
                              }, 300);
 
          setTimeout(function() { $control.find('.toggle-content').fadeIn(2000);
 
                                  $otherTextControl.find('.donate-box-highlight')
 
                                  .css({'font-weight': 'bold', 'font-size' : '110%' });
 
                                  $otherTextControl.find('.donate-box-highlight').fadeIn(10000);
 
                                }, 500);
 
    });
 
    $(".t-shirt-size-selector").hide();
 
    $('input[name=on0]:radio').change(function() {
 
        var input=$(this);
 
        var tShirtSelector = input.parent().children('.t-shirt-size-selector')
 
        var noShippingSelector = input.parent().children('input#no_shipping');
 
        var value = input.val();
 
        if (value == "wantGiftYes") {
 
            tShirtSelector.show();
 
            noShippingSelector.val("2");
 
        } else {
 
            tShirtSelector.hide();
 
            noShippingSelector.val("0");
 
        }
 
    });
 
});
www/conservancy/static/js/supporter-page.js
Show inline comments
 
/* Copyright (C) 2012-2013 Denver Gingerich, 
 
** Copyright (C) 2013-2014 Bradley M. Kuhn,
 
** Copyright (C) 2016 Brett Smith.
 
** License: GPLv3-or-later
 
**  Find a copy of GPL at https://sfconservancy.org/GPLv3
 
*/
 

	
 
var supportTypeSelector = function(supportTypeHash) {
 
    return $(".supporter-type-selector a[href=" + supportTypeHash + "]");
 
};
 

	
 
var $window = $(window);
 

	
 
$window.load(function() {
 
    /* We've sometimes published links that say #renew instead of #renewal.
 
       Rewrite that to work as intended. */
 
    if (window.location.hash === "#renew") {
 
        window.location.hash = "#renewal";
 
    }
 
    var $selectorLink = supportTypeSelector(window.location.hash);
 
    if ($selectorLink.length > 0) {
 
        $window.scrollTop($selectorLink.offset().top);
 
    }
 
});
 

	
 
$(document).ready(function() {
 
    var siteFinalGoal = $('span#site-fundraiser-final-goal').text();
 
    var noCommaSiteFinalGoal = parseInt(siteFinalGoal.replace(/,/g, ""));
 
    var siteMatchCount = $('span#site-fundraiser-match-count').text();
 
    var noCommaSiteMatchCount = parseInt(siteMatchCount.replace(/,/g, ""));
 
    if (! noCommaSiteMatchCount) {
 
        noCommaSiteMatchCount = "0";
 
    }
 
    var barParts = [{
 
        value: (noCommaSiteMatchCount / noCommaSiteFinalGoal) * 100,
 
        text: noCommaSiteMatchCount.toLocaleString() + " matched!",
 
        barClass: "progress",
 
        textClass: "soFarText",
 
    }];
 
    if (barParts[0].value < 100) {
 
        var matchesLeft = noCommaSiteFinalGoal - noCommaSiteMatchCount;
 
        barParts.push({
 
            value: 100,
 
            text: matchesLeft.toLocaleString() + " to go!",
 
            barClass: "final-goal",
 
            textClass: "goalText",
 
        });
 
    }
 
    $('#siteprogressbar').empty().multiprogressbar({parts: barParts});
 

	
 
    $('span#fundraiser-percentage').css({ 'color'        : 'green',
 
                                          'font-weight'  : 'bold',
 
                                          'float'        : 'right',
 
                                          'margin-right' : '40%',
 
                                          'margin-top'   : '2.5%',
 
                                          'text-align'   : 'inherit'});
 

	
 
    $('.toggle-content').hide();
 

	
 
    $('.toggle-control')
 
     .addClass('clickable')
 
     .bind('click', function() {
 
        var $control = $(this);
 
        var $parent = $control.parents('.toggle-unit');
 

	
 
        $parent.toggleClass('expanded');
 
        $parent.find('.toggle-content').slideToggle();
 

	
 
        // if control has HTML5 data attributes, use to update text
 
        if ($parent.hasClass('expanded')) {
 
            $control.html($control.attr('data-expanded-text'));
 
        } else {
 
            $control.html($control.attr('data-text'));
 
        }
 
    });
 
    $('a.donate-now')
 
      .addClass('clickable')
 
      .bind('click', function() {
 
        var $control = $('#donate-box');
 
        var $otherTextControl = $('.donate-sidebar');
 

	
 
        setTimeout(function() { $control.find('.toggle-content').slideUp(100);
 
                                $control.toggleClass('expanded');
 
                                $control.find('.toggle-content').slideDown(800).fadeOut(10);
 
                                $otherTextControl.find('.donate-box-highlight').fadeOut(100);
 
                              }, 300);
 
          setTimeout(function() { $control.find('.toggle-content').fadeIn(2000);
 
                                  $otherTextControl.find('.donate-box-highlight')
 
                                  .css({'font-weight': 'bold', 'font-size' : '110%' });
 
                                  $otherTextControl.find('.donate-box-highlight').fadeIn(10000);
 
                                }, 500);
 
    });
 
    $(".t-shirt-size-selector").hide();
 
    $('input[name=on0]:radio').change(function() {
 
        var input=$(this);
 
        var tShirtSelector = input.parent().children('.t-shirt-size-selector')
 
        var noShippingSelector = input.parent().children('input#no_shipping');
 
        var value = input.val();
 
        if (value == "wantGiftYes") {
 
            tShirtSelector.show();
 
            noShippingSelector.val("2");
 
        } else {
 
            tShirtSelector.hide();
 
            noShippingSelector.val("0");
 
        }
 
    });
 

	
 
    // Forms start in "invalid" form, with the errors shown, so that
 
    // non-Javascript users see the errors by default and know what they must
 
    // enter.  The following two lines correct that.
 
    $('*#amount').addClass("valid");
 
    $('.supporter-form-inputs .form-error-show')
 
        .removeClass('form-error-show').addClass('form-error');
 
    $('.dinner-form-inputs .form-error-show')
 
        .removeClass('form-error-show').addClass('form-error');
 

	
 
    $('*#amount').on('input', function() {
 
        var input=$(this);
 
        var value = input.val();
 
        var errorElement=$("span#error", input.parent());
 
        var noCommaValue = value;
 
        noCommaValue = value.replace(/,/g, "");
 
        var re = /^((\d{1,3}(,?\d{3})*?(\.\d{0,2})?)|\d+(\.\d{0,2})?)$/;
 
        var isValid = ( re.test(value) &&
 
                        parseInt(noCommaValue) >= parseInt(input.attr("min")));
 
        if (isValid)  {
 
           input.removeClass("invalid").addClass("valid");
 
           errorElement.removeClass("form-error-show").addClass("form-error");
 
           $("#form-correction-needed").removeClass("form-error-show").addClass("form-error");
 
        }
 
        else {
 
            input.removeClass("valid").addClass("invalid");
 
            errorElement.removeClass("form-error").addClass("form-error-show");
 
        }
 
    });
 
    var validateFormAtSubmission = function(element, event) {
 
            var valid = element.hasClass("valid");
 
            if (! valid) {
 
                $("#form-correction-needed").removeClass("form-error").addClass("form-error-show")
 
                                        .css("font-weight", "bold").css("font-size", "150%");
 
	        event.preventDefault();
 
            } else {
 
                $("#form-correction-needed").removeClass("form-error-show").addClass("form-error");
 
            }
 
    };
 
    $(".supporter-form-submit#monthly").click(function (event) {
 
        validateFormAtSubmission($(".supporter-form#monthly input#amount"), event);
 
    });
 
    $(".supporter-form-submit#annual").click(function (event) {
 
        validateFormAtSubmission($(".supporter-form#annual input#amount"), event);
 
    });
 
    $(".supporter-form-submit#renewal").click(function (event) {
 
        validateFormAtSubmission($(".supporter-form#renewal input#amount"), event);
 
    });
 
    $(".dinner-form-submit").click(function (event) {
 
        validateFormAtSubmission($(".dinner-form input#amount"), event);
 
    });
 

	
 
    var selectSupportType = function(event) {
 
        var $selectedLink = $(event.target);
 
        $(".supporter-type-selector a").removeClass("supporter-type-selector-selected");
 
        $selectedLink.addClass("supporter-type-selector-selected");
 
        $(".supporter-type-selection").each(function(index, element) {
 
            var $element = $(element);
 
            if (event.target.href.endsWith("#" + element.id)) {
 
                $element.show();
 
            } else {
 
                $element.hide();
 
            }
 
        });
 
        $("#form-correction-needed").removeClass("form-error-show").addClass("form-error");
 
        return false;
 
    };
 
    $(".supporter-type-selector a").bind("click", selectSupportType);
 

	
 
    var selectSupportTypeFromHash = function() {
 
        return supportTypeSelector(window.location.hash).click();
 
    };
 
    $window.bind("hashchange", selectSupportTypeFromHash);
 
    var $selectorLink = selectSupportTypeFromHash();
 
    if (parseFloat($("form#annual").get(0).dataset.upgradeFromAmount) > 0) {
 
        supportTypeSelector("#annual").click();
 
        $(".supporter-type-selector").hide();
 
    }
 
    else if ($selectorLink.length === 0) {
 
        supportTypeSelector("#annual").click();
 
    }
 

	
 
    $( ".footnote-mark" ).tooltip({
 
        items: "a",
 
        hide: { duration: 5000 },
 
        position: {
 
            my: "center bottom-20",
 
            at: "center left",
 
            using: function( position, feedback ) {
 
                $( this ).css( position );
 
                $( "<div>" )
 
                    .addClass( "arrow" )
 
                    .addClass( feedback.vertical )
 
                    .addClass( feedback.horizontal )
 
                    .appendTo( this );
 
            }
 
        },
 
        content: function() {
 
            return $('.footnote-1-text').text();
 
        }
 
    });
 
});
www/conservancy/static/supporter/original-supporter-appeal.html
Show inline comments
 
{% extends "base_conservancy.html" %}
 
{% block subtitle %}Support Conservancy - {% endblock %}
 
{% block category %}supporter{% endblock %}
 

	
 
{% block head %}
 
<script type="text/javascript" src="/js/supporter-page.js"></script>
 
<link href="/css/forms.css" rel="stylesheet" type="text/css"/>
 
{% endblock %}
 

	
 
{% block content %}
 
<div class="donate-sidebar">
 
<table style="background-color:#afe478;width:100%;">
 
<tr><td style="text-align:center;padding:10px;padding-bottom:10px;">
 

	
 
<div id="donate-box" class="toggle-unit"><h1 class="toggle-content">Support
 
    Now!</h1></div>
 

	
 
<h3 class="donate-box-highlight">Become a Supporter Now:</h3>
 

	
 
<p>Support us now!</p>
 

	
 
<h4><a href="#annual"><span class="donate-box-highlight">Annual supporter</span> via PayPal, ACH, or credit card.</a></h4>
 
<h4><a href="#monthly"><span class="donate-box-highlight">Monthly supporter</span> via PayPal, ACH, or credit card.</a></h4>
 
   
 
<span class="donate-box-highlight">Other annual supporters methods:</span>
 
<div class="toggle-unit">
 
    <h4 class="toggle-control" data-text="Wire Transfer" 
 
    data-expanded-text="Wire Transfer:">Wire Transfer</h4>
 
    <div class="toggle-content">
 
       Contact <a href="mailto:accounting@sfconservancy.org">Conservancy
 
            by email</a><br/> for wire transfer instructions.<br/>
 
            Include  currency &amp; country.<br/>
 
    </div><!-- /.toggle-content -->
 
</div><!-- /.toggle.unit -->
 

	
 
<div class="toggle-unit">
 
    <h4 class="toggle-control" data-text="Paper Check" 
 
    data-expanded-text="Paper Check:">Paper Check</h4>
 
    <div class="toggle-content">
 
    Send paper check for $120 to:<br/>
 
    Software Freedom Conservancy, Inc.<br/>
 
    137 MONTAGUE ST  STE 380<br/>
 
    BROOKLYN, NY 11201-3548 &nbsp; USA<br/>
 
    Please write <q>SUPPORTER</q> and t-shirt size in memo line. 
 
    </div><!-- /.toggle-content -->
 
</div><!-- /.toggle.unit -->
 

	
 
<p><a href="/donate">Even More Ways to Donate</a></p>
 
<!-- Flattr end -->
 
</td></tr></table>
 
</div>
 

	
 

	
 
<div class="content-with-donate-sidebar">
 
  <h1><img class="appeal-header" alt="Become a Conservancy Supporter!" src="/img/conservancy-supporter-header.png"/></h1>
 

	
 
<p>Software Freedom Conservancy is an essential organization to free and
 
open source software. We are the home of over
 
<a href="/members/current/">30 projects</a> like 
 
<a href="http://git-scm.org">Git</a>,
 
<a href="http://inkscape.org">Inkscape</a>, <a href="http://samba.org">Samba</a>,
 
<a href="http://winehq.org">Wine</a>, <a href="http://www.seleniumhq.org/">Selenium</a>, the <a href="/copyleft-compliance/">GPL Compliance Project for Linux
 
Developers</a>, <a href="http://pypy.org">PyPy</a> and
 
<a href="http://sugarlabs.org/">Sugar Labs</a> just to name a few. Conservancy is a "fiscal sponsor plus",
 
providing everything that our projects need in a nonprofit. We help our
 
projects defend their trademarks, manage their assets, handle donations,
 
improve their community management, manage risk and assist them with all
 
legal needs they may have. While we do receive a portion of the revenue
 
donated to our projects, we keep that number low enough that it doesn't
 
even pay for a single staff member. <a href="#donate-box" class="donate-now">Help us</a> show that you care about
 
community-focused free software and help us be able to continue our
 
charitable work. Donating to Conservancy is a great non-technical way to
 
contribute to the cause.</p>
 

	
 
<img alt="*** The Conservancy T-Shirt that Supporters Receive ***" class="appeal" src="/img/conservancy-t-shirt.jpg"/>
 

	
 
<p>For the first time, we're launching a Supporter
 
program. For <a href="#donate-box" class="donate-now">an annual donation of $120</a>, you can
 
download an official Supporter card and receive a Conservancy t-shirt<a id="return-footnote-shirts-when"></a>. If
 
this is out of reach, please donate at whatever level you can - it makes a
 
big difference to us to know that you <a href="#donate-box" class="donate-now">support us</a>, and a little goes a long
 
way.</p>
 

	
 
<p>In addition to supporting our projects,
 
<ul>
 

	
 
<li>we share our expertise across communities. We speak at many
 
conferences, and publish materials to increase understanding about the
 
organizational, community and legal issues around free and open source
 
software. We advocate for free and open source software and provide
 
education around that mission.  We form partnerships across our
 
communities to work more effectively.  Check out <a 
 
href="https://copyleft.org/">copyleft.org</a>
 
or sign up to join the <a 
 
href="http://sfconservancy.org/news/2014/aug/12/tax-exempt-working-group/">
 
tax exempt working group</a>.</li>
 

	
 
<li>we seek to solve problems for the public through free and open 
 
source
 
software.  We've launched a <a href="http://npoacct.sfconservancy.org/">
 
nonprofits accounting project</a> to help all
 
nonprofits (in free software and in other fields) avoid paying millions
 
of dollars in licensing fees for subpar accounting software.</li>
 

	
 
<li>as part of Conservancy's partnership in the program, we support Karen as
 
  a co-organizer of the Free and Open Source Software Outreach Program.</li>
 

	
 
<li>we encourage and support our employees to do volunteer work in the
 
    community.  For example, Bradley and Karen together host an oggcast
 
    called <cite><a href="http://faif.us">Free as in Freedom</a></cite> which
 
    discusses important legal and policy issues in open source and free
 
    software.</li></ul>
 

	
 
<img class="appeal-footer" alt="*" src="/img/conservancy-supporter-heart.png"/>
 

	
 
<p>As an organization, we try to do everything transparently; even 
 
our
 
<a 
 
href="https://gitorious.org/conservancy/policies/source/master:">
 
internal policies</a> are published and available for scrutiny.</p>
 

	
 
<p>Please <a href="#donate-box" class="donate-now">join our Supporter program</a> and spread software freedom!</p>
 

	
 
<br clear="left"/>
 

	
 
<div class="supporter-type-selector">
 
<hr/>
 
  <strong>Become a Supporter Now:</strong>  <a id="annualSelector" href="#annual">Annual</a> | <a id="monthlySelector" href="#monthly">Monthly</a></div>
 
<div id="annual" class="supporter-type-selection">
 
<h3>Join as an Annual Supporter</h3>
 
<a id="annual"></a>
 
<form id="annual" class="supporter-form" action="https://www.paypal.com/cgi-bin/webscr" method="post" name="supporter">
 
<div class="supporter-form-inputs">
 
            <input type="hidden" name="return" value="https://sfconservancy.org/supporter/thank-you.html" />
 
            <input type="hidden" name="cmd" value="_xclick" />
 
            <input type="hidden" name="business" value="supporter@sfconservancy.org" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Annual" />
 
            <input id="no_shipping" type="hidden" name="no_shipping" value="0" />
 
  <label for="amount"><strong>Amount:</strong> $</label>
 
  <input id="amount" type="text" name="amount" size="7" minimum="120" value="120" />
 
  <span id="error" class="form-error-show">$120 is a minimum for Conservancy
 
  Supporters.  <a href="/donate">Donate smaller amounts here</a>.</span><br/>
 

	
 
                      <label for="wantGift"><strong>Do you want to receive a t-shirt? </strong></label>
 
                      <input type="radio" name="on0" value="wantGiftYes" />Yes
 
                      <input type="radio" checked="checked" name="on0" value="wantGiftNo" />No
 
                      <br />
 
                      <span class="t-shirt-size-selector">
 
                      <label for="tShirtSize"><strong>T-shirt size: </strong></label>
 
                      <select name="os0" id="os0">
 
                        <option name="os0" id="os0" value="MenS">Men's S</option>
 
                        <option name="os0" id="os0" value="MenM">Men's M</option>
 
                        <option name="os0" id="os0" value="MenL">Men's L</option>
 
                        <option name="os0" id="os0" value="MenXL">Men's XL</option>
 
                        <option name="os0" id="os0" value="Men2XL">Men's 2XL</option>
 
                        <option name="os0" id="os0" value="LadiesS">Ladies' S</option>
 
                        <option name="os0" id="os0" value="LadiesM">Ladies' M</option>
 
                        <option name="os0" id="os0" value="LadiesL">Ladies' L</option>
 
                         <option name="os0" id="os0" value="LadiesXL">Ladies' XL</option>
 
                      </select><br/></span>
 
                      <label for="publicAck"><strong>
 
                          Should we <a href="/sponsors#supporters">list you publicly</a> as a Conservancy Supporter? </strong></label>
 
                      <input type="radio" checked="checked" name="on1" value="publicAckYes" />Yes
 
                      <input type="radio" name="on1" value="publicAckNo" />No<br/>
 
            
 
                      <label for="joinList"><strong>Join Conservancy's
 
                      Low-Traffic Announcement Email List? </strong></label>
 
                      <input type="radio" checked="checked" name="os1" value="joinListYes" />Yes
 
                      <input type="radio" name="os1" value="joinListNo" />No<br/>
 
                      <br />
 
                      <br /></div>
 
                      <div id="annual" class="supporter-form-submit">
 
                      <input type="image"
 
                             src="/img/supporter-payment-button-annual.png"
 
                             height="81" width="188"
 
                             border="0" name="submit" alt="Become an Annual Supporter Now!">
 
                      <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
 
<br/><br/><small>Button above redirects to PayPal's site for credit
 
        card, bank account or PayPal balance payment methods.  Select options first.</small>
 
                      </div>
 

	
 
</form>
 
</div>
 
<div id="monthly" class="supporter-type-selection">
 
<h3>Join as an Monthly Supporter</h3>
 
<a id="monthly"></a>
 
<p>Monthly supporters will not receive any supporter benefits (including the t-shirt) until they've been
 
  monthly supporters for 12 months.</p>
 
<form id="monthly" class="supporter-form" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
 
<div class="supporter-form-inputs">
 
            <input type="hidden" name="business" value="supporter@sfconservancy.org" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Monthly" />
 
            <input type="hidden" name="return" value="https://sfconservancy.org/supporter/thank-you.html" />
 
            <input type="hidden" name="cmd" value="_xclick-subscriptions">
 
            <input id="no_shipping" type="hidden" name="no_shipping" value="0" />
 
            <input type="hidden" name="lc" value="US">
 
            <input type="hidden" name="no_note" value="1">
 
            <input type="hidden" name="t3" value="M" />
 
            <input type="hidden" name="p3" value="1" />
 
            <input type="hidden" name="src" value="1" />
 
            <input type="hidden" name="srt" value="0" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Monthly" />
 
  <label for="amount"><strong>Monthly Amount:</strong> $</label>
 
  <input id="amount" type="text" name="a3" size="5" minimum="10" value="10" />
 
  <span id="error" class="form-error-show">$10/month is a minimum for Conservancy
 
  Supporters.  <a href="/donate">Donate smaller amounts here</a>.</span><br/>
 
                      <label for="wantGift"><strong>Do you want to receive a t-shirt? </strong></label>
 
                      <input type="radio" name="on0" value="wantGiftYes" />Yes
 
                      <input type="radio" checked="checked" name="on0" value="wantGiftNo" />No
 
                      <br />
 
                      <span class="t-shirt-size-selector">
 
                      <label for="tShirtSize"><strong>T-shirt size: </strong></label>
 
                      <select name="os0" id="os0">
 
                        <option name="os0" id="os0" value="MenS">Men's S</option>
 
                        <option name="os0" id="os0" value="MenM">Men's M</option>
 
                        <option name="os0" id="os0" value="MenL">Men's L</option>
 
                        <option name="os0" id="os0" value="MenXL">Men's XL</option>
 
                        <option name="os0" id="os0" value="Men2XL">Men's 2XL</option>
 
                        <option name="os0" id="os0" value="LadiesS">Ladies' S</option>
 
                        <option name="os0" id="os0" value="LadiesM">Ladies' M</option>
 
                        <option name="os0" id="os0" value="LadiesL">Ladies' L</option>
 
                         <option name="os0" id="os0" value="LadiesXL">Ladies' XL</option>
 
                      </select><br/></span>
 
                      <label for="publicAck"><strong>
 
                          Should we  <a href="/sponsors#supporters">list you publicly</a> as a Conservancy Supporter? </strong></label>
 
                      <input type="radio" checked="checked" name="on1" value="publicAckYes" />Yes
 
                      <input type="radio" name="on1" value="publicAckNo" />No<br/>
 
                      <label for="joinList"><strong>Join Conservancy's
 
                      Low-Traffic Announcement Email List? </strong></label>
 
                      <input type="radio" checked="checked" name="os1" value="joinListYes" />Yes
 
                      <input type="radio" name="os1" value="joinListNo" />No<br/>
 
                      <br /></div>
 
                      <div id="monthly" class="supporter-form-submit">
 
                      <input type="image"
 
                      src="/img/supporter-payment-button-monthly.png"
 
                      height="81" width="188"
 
                      border="0" name="submit" alt="Become a Monthly Supporter Now!">
 
<br/><br/><small>Button above redirects to PayPal's site for credit
 
        card, bank account or PayPal balance payment methods.  Select
 
                      options first.</small>
 
                      </div>
 
</form>
 
</div>
 
<span id="form-correction-needed" class="form-error">Please ensure all form data above is correct.</span>
 
</div>
 
{% endblock %}
www/conservancy/templates/base_conservancy.html
Show inline comments
 
{% load humanize %}
 
{% load subtract %}
 
{% load min %}
 

	
 
<!DOCTYPE html>
 

	
 
<html lang="en">
 

	
 
  <head>
 
    <title>{% block title %}{% block subtitle %}{% endblock %}Software Freedom Conservancy{% endblock %}</title>
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 
    <meta name="description" content="The Software Freedom Conservancy provides a non-profit home and services to Free, Libre and Open Source Software (FLOSS) projects." />
 
    <meta name="keywords" content="software, freedom, conservancy, open source, gnu, GNU, Open Source, Free and Open Source, Free and Open Source Software, FLOSS, FOSS, protect, protection, help, policy, linux, non-profit" />
 
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
 
    <link rel="stylesheet" type="text/css" media="screen" href="/css/conservancy.css" />
 
    <link rel="stylesheet" type="text/css" media="(min-width: 67em)" href="/css/conservancy-bigscreen.css" />
 
    <link rel="stylesheet" href="/css/jquery-ui-1.8.22.custom.css" />
 
    <link rel="stylesheet" href="/css/jquery.ui.multiprogressbar.css" />
 
    <script type="text/javascript" src="/js/jquery-1.7.2.js"></script>
 
    <script type="text/javascript" src="/js/jquery-ui-1.8.22.custom.min.js"></script>
 
    <script type="text/javascript" src="/js/jquery.outerhtml.js"></script>
 
    <script type="text/javascript" src="/js/jquery.ui.multiprogressbar.js"></script>
 
    <script type="text/javascript" src="/js/supporter-page.js"></script>
 
    <script type="text/javascript" src="/js/conservancy.js"></script>
 
    {% block head %}{% endblock %}
 
  </head>
 

	
 
  <body class="conservancy-{% block category %}other{% endblock %}">
 
    <h1 id="conservancyheader"><a id="logobutton" href="/">Software Freedom Conservancy</a></h1>
 
    <div id="navbar-outer">
 
      <div id="navbar">
 
	<ul>
 
      <li class="supporter"><a href="/supporter/">Become a Supporter!</a></li>
 
      <li class="donate"><a href="/donate/">Donate</a></li>
 
      <li class="news"><a href="/news/">News</a></li>
 
      <li class="blog"><a href="/blog/">Blog</a></li>
 
      <li class="Projects"><a href="/projects/">Projects</a></li>
 
      <li class="compliance"><a href="/copyleft-compliance/">Copyleft Compliance</a></li>
 
      <li class="npoacct"><a href="/npoacct/">NPOAcct</a></li>
 
      <li class="sponsors"><a href="/sponsors/">Sponsors</a></li>
 
      <li class="About"><a href="/about/">About</a></li>
 
    </ul>
 
      </div>
 
      <div id="navbar-clear"></div>
 

	
 
    </div>
 

	
 
{% comment %}
 
FUNDRAISER VARIABLES AND CONSTANTS GUIDE
 

	
 
fundraiser_goal_amount: The highest number of Supporters we want
 
fundraiser_so_far_amount: The number of Supporters we have
 
fundraiser_donation_count: The "minimum" number of Supporters we want (not currently used)
 
fundraiser_donation_count_disclose_threshold: The number of Supporters that have been matched
 

	
 
When we started the fundraiser, we had 660 Supporters matched.
 
PIA will match up to 416.
 
660+416==1076, so we use that constant to see if our match is done.
 
{% endcomment %}
 

	
 
    <div class="fundraiser-top-text">
 
      <em>
 
        Let's stand up for software freedom together!
 
        {% if sitefundgoal.fundraiser_donation_count_disclose_threshold >= 1076 %}
 
        416 Supporters were matched
 
        {% else %}
 
        The next {{ 1076|subtract:sitefundgoal.fundraiser_donation_count_disclose_threshold|intcomma }} Supporters who join or renew by January 15 <a href="/news/2016/nov/29/private-internet-access-2016-fundraising-match/">will count twice</a>,
 
        {% endif %}
 
        thanks to <a href="https://www.privateinternetaccess.com/">Private Internet Access</a>!
 
      </em>
 
<div id="siteprogressbar">
 
<a href="/supporter">
 
  {% if sitefundgoal.fundraiser_donation_count_disclose_threshold < 1076 %}
 
  <span id="site-fundraiser-match-count">{{ sitefundgoal.fundraiser_donation_count_disclose_threshold|subtract:660|intcomma }}</span>
 
  {% else %}
 
  <span id="site-fundraiser-match-count">416</span>
 
  {% endif %}
 
  Supporters have been matched, out of
 
  <span id="site-fundraiser-final-goal">416</span> possible.
 
</a>
 
</div>
 
</div>
 
      {% block outercontent %}<div id="mainContent"> {% block content %}{% endblock %}</div>{% endblock %}
 
    <div id="conservancyfooter">
 
      <p><a href="/">Main Page</a> | <a href="/about/contact/">Contact</a> | <a href="/sponsors/">Sponsors</a> | <a href="/privacy-policy/">Privacy Policy</a> | <a href="/feeds/omnibus/">RSS Feed</a></p>
 
      <p>Find Conservancy
 
      on <a href="https://identi.ca/conservancy">pump.io</a>,
 
      <a href="https://twitter.com/conservancy">Twitter</a>, <a href="https://www.youtube.com/channel/UCUEeuNvX2UyTTyTYXR9dm_A">Youtube</a>, <a href="https://plus.google.com/104268783278405704634/">Google+</a>
 
      and other social networks too!</p>
 
      <p class="copyright_info">
 
      <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> 
 
      <br />This page, and all contents herein, unless a license is otherwise
 
      specified, are licensed under a
 
      <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0">Creative
 
      Commons Attribution-ShareAlike 4.0 International License</a>.</p>
 
    </div>
 
  </body>
 
</html>
www/conservancy/templates/supporter/index.html
Show inline comments
 
{% extends "base_conservancy.html" %}
 
{% block subtitle %}Support Conservancy - {% endblock %}
 
{% block category %}supporter{% endblock %}
 

	
 
{% block head %}
 
<script type="text/javascript" src="/js/supporter-page.js"></script>
 
<link href="/css/forms.css" rel="stylesheet" type="text/css"/>
 
{% endblock %}
 

	
 
{% block content %}
 
<div class="donate-sidebar">
 
<table style="background-color:#afe478;width:100%;">
 
<tr><td style="text-align:center;padding:10px;padding-bottom:10px;">
 
<div id="donate-box" class="toggle-unit"><h1 class="toggle-content">Support
 
    Now!</h1></div>
 

	
 
<h3 class="donate-box-highlight">Become a Supporter Now:</h3>
 

	
 
<p>Support us now!</p>
 

	
 
<h4><a href="#annual"><span class="donate-box-highlight">Annual supporter</span> via PayPal, ACH, or credit card.</a></h4>
 
<h4><a href="#monthly"><span class="donate-box-highlight">Monthly supporter</span> via PayPal, ACH, or credit card.</a></h4>
 
<h4><a href="#renewal"><span class="donate-box-highlight">Renewing Annual supporter</span> via PayPal, ACH, or credit card.</a></h4>
 
   
 
<span class="donate-box-highlight">Other annual supporters methods:</span>
 
<div class="toggle-unit">
 
    <h4 class="toggle-control" data-text="Wire Transfer" 
 
    data-expanded-text="Wire Transfer:">Wire Transfer</h4>
 
    <div class="toggle-content">
 
       Contact <a href="mailto:accounting@sfconservancy.org">Conservancy
 
            by email</a><br/> for wire transfer instructions.<br/>
 
            Include  currency &amp; country.<br/>
 
    </div><!-- /.toggle-content -->
 
</div><!-- /.toggle.unit -->
 

	
 
<div class="toggle-unit">
 
    <h4 class="toggle-control" data-text="Paper Check" 
 
    data-expanded-text="Paper Check:">Paper Check</h4>
 
    <div class="toggle-content">
 
    Send paper check for $120 to:<br/>
 
    Software Freedom Conservancy, Inc.<br/>
 
    137 MONTAGUE ST  STE 380<br/>
 
    BROOKLYN, NY 11201-3548 &nbsp; USA<br/>
 
    Please write <q>SUPPORTER</q>, t-shirt size, if you are renewing, and if
 
    you want public acknowledgment in memo line. 
 
    </div><!-- /.toggle-content -->
 
</div><!-- /.toggle.unit -->
 

	
 
<p><a href="/donate">Even More Ways to Donate</a></p>
 
<!-- Flattr end -->
 
</td></tr></table>
 
</div>
 
<div class="content-with-donate-sidebar">
 
  <h1 class="appeal"><img class="appeal-header" alt="Become a Conservancy Supporter!" src="/img/conservancy-supporter-header.png"/></h1>
 

	
 
  
 
<div class="supporter-type-selector">
 
  <strong>Become a Supporter Now:</strong>   <a id="annualSelector" href="#annual">Annual</a> | <a id="monthlySelector" href="#monthly">Monthly</a> | <a id="renewalSelector" href="#renewal">Annual Renew</a></div>
 
<div id="annual" class="supporter-type-selection">
 
<h3>Join as an Annual Supporter</h3>
 
<a id="annual"></a>
 
<p><strong>Note:</strong> annual supporter is not an automatic renewal
 
  relationship.  If you join today, you'll receive an email in about one year to remind you to
 
  optionally renew.</p>
 
<form id="annual" class="supporter-form" action="https://www.paypal.com/cgi-bin/webscr" method="post" name="supporter"
 
      data-upgrade-from-amount="{{ partial_amount }}">
 
<div class="supporter-form-inputs">
 
            <input type="hidden" name="return" value="https://sfconservancy.org/supporter/thank-you.html" />
 
            <input type="hidden" name="cmd" value="_xclick" />
 
            <input type="hidden" name="business" value="supporter@sfconservancy.org" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Annual" />
 
            <input id="no_shipping" type="hidden" name="no_shipping" value="0" />
 
  <label for="amount"><strong>Amount:</strong> $</label>
 
  <input id="amount" type="number" name="amount" size="7" min="{{ minimum_amount }}" value="{{ minimum_amount }}" />
 
  <span id="error" class="form-error-show">$120 is a minimum for Conservancy
 
  Supporters.  <a href="/donate">Donate smaller amounts here</a>.</span><br/>
 

	
 
                      <label for="wantGift"><strong>Do you want to receive a t-shirt? </strong></label>
 
                      <input type="radio" name="on0" value="wantGiftYes" />Yes
 
                      <input type="radio" checked="checked" name="on0" value="wantGiftNo" />No
 
                      <br />
 
                      <span class="t-shirt-size-selector">
 
                      <label for="tShirtSize"><strong>T-shirt size: </strong></label>
 
                      <select name="os0" id="os0">
 
                        <option name="os0" id="os0" value="MenS">Men's S</option>
 
                        <option name="os0" id="os0" value="MenM">Men's M</option>
 
                        <option name="os0" id="os0" value="MenL">Men's L</option>
 
                        <option name="os0" id="os0" value="MenXL">Men's XL</option>
 
                        <option name="os0" id="os0" value="Men2XL">Men's 2XL</option>
 
                        <option name="os0" id="os0" value="StandardLadiesS">Standard Ladies' S</option>
 
                        <option name="os0" id="os0" value="StandardLadiesM">Standard Ladies' M</option>
 
                        <option name="os0" id="os0" value="StandardLadiesL">Standard Ladies' L</option>
 
                         <option name="os0" id="os0" value="StandardLadiesXL">Standard Ladies' XL</option>
 
                        <option name="os0" id="os0" value="FittedLadiesS">Fitted Ladies' S</option>
 
                        <option name="os0" id="os0" value="FittedLadiesM">Fitted Ladies' M</option>
 
                        <option name="os0" id="os0" value="FittedLadiesL">Fitted Ladies' L</option>
 
                         <option name="os0" id="os0" value="FittedLadiesXL">Fitted Ladies' XL</option>
 
                      </select><br/></span>
 
                      <label for="publicAck"><strong>
 
                          Should we <a href="/sponsors#supporters">list you publicly</a> as a Conservancy Supporter? </strong></label>
 
                      <input type="radio" checked="checked" name="on1" value="publicAckYes" />Yes
 
                      <input type="radio" name="on1" value="publicAckNo" />No<br/>
 
            
 
                      <label for="joinList"><strong>Join Conservancy's
 
                      Low-Traffic Announcement Email List? </strong></label>
 
                      <input type="radio" checked="checked" name="os1" value="joinListYes" />Yes
 
                      <input type="radio" name="os1" value="joinListNo" />No<br/>
 
                      <br />
 
                      <br /></div>
 
                      <div id="annual" class="supporter-form-submit">
 
                      <input type="image"
 
                             src="/img/supporter-payment-button-annual.png"
 
                             height="81" width="188"
 
                             border="0" name="submit" alt="Become an Annual Supporter Now!">
 
                      <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
 
<br/><br/><small>Button above redirects to PayPal's site for credit
 
        card, bank account or PayPal balance payment methods.  Select options first.</small>
 
                      </div>
 
</form>
 
</div>
 
<div id="monthly" class="supporter-type-selection">
 
<h3>Join as an Monthly Supporter</h3>
 
<a id="monthly"></a>
 
<p>Monthly renewal is automatic.  Also, monthly supporters might not receive tangible Supporter benefits (such as
 
  the t-shirt) until they've reached at least $60 in monthly supporter
 
  donations.  However, they will be included immediately
 
  in the <a href="/sponsors/#supporters">Supporters' list</a>.</p>
 
<form id="monthly" class="supporter-form" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
 
<div class="supporter-form-inputs">
 
            <input type="hidden" name="business" value="supporter@sfconservancy.org" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Monthly" />
 
            <input type="hidden" name="return" value="https://sfconservancy.org/supporter/thank-you.html" />
 
            <input type="hidden" name="cmd" value="_xclick-subscriptions">
 
            <input id="no_shipping" type="hidden" name="no_shipping" value="0" />
 
            <input type="hidden" name="lc" value="US">
 
            <input type="hidden" name="no_note" value="1">
 
            <input type="hidden" name="t3" value="M" />
 
            <input type="hidden" name="p3" value="1" />
 
            <input type="hidden" name="src" value="1" />
 
            <input type="hidden" name="srt" value="0" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Monthly" />
 
  <label for="amount"><strong>Monthly Amount:</strong> $</label>
 
  <input id="amount" type="number" name="a3" size="5" min="10" value="10" />
 
  <span id="error" class="form-error-show">$10/month is a minimum for Conservancy
 
  Supporters.  <a href="/donate">Donate smaller amounts here</a>.</span><br/>
 
                      <label for="wantGift"><strong>Do you want to receive a t-shirt? </strong></label>
 
                      <input type="radio" name="on0" value="wantGiftYes" />Yes
 
                      <input type="radio" checked="checked" name="on0" value="wantGiftNo" />No
 
                      <br />
 
                      <span class="t-shirt-size-selector">
 
                      <label for="tShirtSize"><strong>T-shirt size: </strong></label>
 
                      <select name="os0" id="os0">
 
                        <option name="os0" id="os0" value="MenS">Men's S</option>
 
                        <option name="os0" id="os0" value="MenM">Men's M</option>
 
                        <option name="os0" id="os0" value="MenL">Men's L</option>
 
                        <option name="os0" id="os0" value="MenXL">Men's XL</option>
 
                        <option name="os0" id="os0" value="Men2XL">Men's 2XL</option>
 
                        <option name="os0" id="os0" value="StandardLadiesS">Standard Ladies' S</option>
 
                        <option name="os0" id="os0" value="StandardLadiesM">Standard Ladies' M</option>
 
                        <option name="os0" id="os0" value="StandardLadiesL">Standard Ladies' L</option>
 
                         <option name="os0" id="os0" value="StandardLadiesXL">Standard Ladies' XL</option>
 
                        <option name="os0" id="os0" value="FittedLadiesS">Fitted Ladies' S</option>
 
                        <option name="os0" id="os0" value="FittedLadiesM">Fitted Ladies' M</option>
 
                        <option name="os0" id="os0" value="FittedLadiesL">Fitted Ladies' L</option>
 
                         <option name="os0" id="os0" value="FittedLadiesXL">Fitted Ladies' XL</option>
 
                      </select><br/></span>
 
                      <label for="publicAck"><strong>
 
                          Should we  <a href="/sponsors#supporters">list you publicly</a> as a Conservancy Supporter? </strong></label>
 
                      <input type="radio" checked="checked" name="on1" value="publicAckYes" />Yes
 
                      <input type="radio" name="on1" value="publicAckNo" />No<br/>
 
                      <label for="joinList"><strong>Join Conservancy's
 
                      Low-Traffic Announcement Email List? </strong></label>
 
                      <input type="radio" checked="checked" name="os1" value="joinListYes" />Yes
 
                      <input type="radio" name="os1" value="joinListNo" />No<br/>
 
                      <br /></div>
 
                      <div id="monthly" class="supporter-form-submit">
 
                      <input type="image"
 
                      src="/img/supporter-payment-button-monthly.png"
 
                      height="81" width="188"
 
                      border="0" name="submit" alt="Become a Monthly Supporter Now!">
 
<br/><br/><small>Button above redirects to PayPal's site for credit
 
        card, bank account or PayPal balance payment methods.  Select
 
                      options first.</small>
 
                      </div>
 
</form>
 
</div>
 

	
 
<div id="renewal" class="supporter-type-selection">
 
<h3 id="renew">Renew as an Annual Supporter</h3>
 
<a id="renewal"></a>
 
<p><strong>Note:</strong> This option is for existing annual supporters who
 
  seek to renew for another year.  The annual renewal is not automatic;
 
  annual supporters are emailed each year to invite them to optionally renew. </p>
 
<form id="renewal" class="supporter-form" action="https://www.paypal.com/cgi-bin/webscr" method="post" name="supporter">
 
<div class="supporter-form-inputs">
 
            <input type="hidden" name="return" value="https://sfconservancy.org/supporter/thank-you.html" />
 
            <input type="hidden" name="cmd" value="_xclick" />
 
            <input type="hidden" name="business" value="supporter@sfconservancy.org" />
 
            <input type="hidden" name="item_name" value="Conservancy Supporter, Annual Renewal" />
 
            <input id="no_shipping" type="hidden" name="no_shipping" value="0" />
 
  <label for="amount"><strong>Amount:</strong> $</label>
 
  <input id="amount" type="number" name="amount" size="7" min="120" value="120" />
 
  <span id="error" class="form-error-show">$120 is a minimum for Conservancy
 
  Supporters.  <a href="/donate">Donate smaller amounts here</a>.</span><br/>
 

	
 
                      <label for="wantGift"><strong>Do you want to receive (another) t-shirt? </strong></label>
 
                      <input type="radio" name="on0" value="wantGiftYes" />Yes
 
                      <input type="radio" checked="checked" name="on0" value="wantGiftNo" />No
 
                      <br />
 
                      <span class="t-shirt-size-selector">
 
                      <label for="tShirtSize"><strong>T-shirt size: </strong></label>
 
                      <select name="os0" id="os0">
 
                        <option name="os0" id="os0" value="MenS">Men's S</option>
 
                        <option name="os0" id="os0" value="MenM">Men's M</option>
 
                        <option name="os0" id="os0" value="MenL">Men's L</option>
 
                        <option name="os0" id="os0" value="MenXL">Men's XL</option>
 
                        <option name="os0" id="os0" value="Men2XL">Men's 2XL</option>
 
                        <option name="os0" id="os0" value="StandardLadiesS">Standard Ladies' S</option>
 
                        <option name="os0" id="os0" value="StandardLadiesM">Standard Ladies' M</option>
 
                        <option name="os0" id="os0" value="StandardLadiesL">Standard Ladies' L</option>
 
                         <option name="os0" id="os0" value="StandardLadiesXL">Standard Ladies' XL</option>
 
                        <option name="os0" id="os0" value="FittedLadiesS">Fitted Ladies' S</option>
 
                        <option name="os0" id="os0" value="FittedLadiesM">Fitted Ladies' M</option>
 
                        <option name="os0" id="os0" value="FittedLadiesL">Fitted Ladies' L</option>
 
                         <option name="os0" id="os0" value="FittedLadiesXL">Fitted Ladies' XL</option>
 
                      </select><br/></span>
 
                      <label for="publicAck"><strong>
 
                          Should we <a href="/sponsors#supporters">list you publicly</a> as a Conservancy Supporter? </strong></label>
 
                      <input type="radio" checked="checked" name="on1" value="publicAckYes" />Yes
 
                      <input type="radio" name="on1" value="publicAckNo" />No<br/>
 
            
 
                      <label for="joinList"><strong>Join Conservancy's
 
                      Low-Traffic Announcement Email List? </strong></label>
 
                      <input type="radio" checked="checked" name="os1" value="joinListYes" />Yes
 
                      <input type="radio" name="os1" value="joinListNo" />No<br/>
 
                      <br />
 
                      <br /></div>
 
                      <div id="renewal" class="supporter-form-submit">
 
                      <input type="image"
 
                             src="/img/supporter-payment-button-renewal.png"
 
                             height="81" width="188"
 
                             border="0" name="submit" alt="Renew as an Annual Supporter Now!">
 
                      <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
 
<br/><br/><small>Button above redirects to PayPal's site for credit
 
        card, bank account or PayPal balance payment methods.  Select options
 
  first.  Choosing options here will change any previous settings.</small>
 
</div></form></div>
 
<span id="form-correction-needed" class="form-error">Please ensure all form data above is correct.</span>
 

	
 
<hr style="clear: both;"/>
 
<h4>Software Freedom needs your help.</h4>
 

	
 
<p><em>Conservancy is continuing its shift towards being a
 
Supporter-driven organization so we can focus on critical free software 
 
issues.  Support our great 
 
member projects, stand up for the GPL, and make your voice heard in support of free software. 
 
We're counting on you. 
 
<a href="#donate-box" class="donate-now">Donate today!</a></em></p>
 

	
 
<!--- FIXME scale this properly like on VMware page -->
 

	
 
<a href="/img/member-project-logos.png"><img class="appeal-left" src="/img/member-project-logos.png"/></a>
 
<p>
 
Software is critical to all of our infrastructure and as a society, we are deeply reliant on the software we use. Making sure our software is free and open assures that tomorrow we can still use those solutions we invest in today. Software freedom is fundamental &mdash; we need it in order to effectively solve our problems in the long term. While the world today is powered increasingly by free software, many
 
people don't realize is how much support is needed to keep all of these
 
projects free and open. The work that we do every day ensures the success and
 
the continued freedom of the projects.  Our developers dedicate themselves to improving our <a href="/projects/current/">member
 
projects</a>, and we enable them to do that. This includes projects like Git, Samba,
 
Wine, BusyBox, QEMU, Inkscape, Selenium, and dozens more.</p>
 

	
 
<p>We are asking for you
 
  to <a href="#donate-box" class="donate-now">join us as a
 
  Conservancy Supporter</a>. Last year, over 1,000 of you became annual
 
  Supporters, allowing us to continue our basic operations.  We still need
 
  2,500 (total) annual Supporters to continue our full range of operations
 
  through 2017.  If you don't become a Supporter now, we will be forced to
 
  reduce our program activities going forward.</p>
 

	
 
<h4 style="clear: left;">2016 successes</h4>
 

	
 
<p>
 
Software Freedom Conservancy has had a lot of major successes this year:
 
<ul>
 

	
 
<li>We brought three new projects under the protection of Conservancy: <a href="https://forums.librehealth.io/">LibreHealth</a>, a critical initiative for health in free and open source software, <a href="https://www.spec-ops.io/">Spec-Ops</a>, a project dedicated to creating of open standards in critical areas, including payments and identity
 
and <a href="http://brew.sh/">Homebrew</a>, a software package manager for Apple's OS X. </li>
 

	
 
<li>We <a href="/news/2015/mar/05/vmware-lawsuit/">supported
 
the lawsuit</a> Christoph Hellwig brought against VMware in Germany, the
 
first case on derivative works and the GPL. Christoph's case <a href="/news/2016/aug/09/vmware-appeal/">continues on appeal</a>.</li>
 

	
 
<li>We helped Conservancy projects Bro, Buildbot, and Godot receive Mozilla MOSS grants. Another Conservancy project, phpMyAdmin, successfully completed a thorough security audit as part of Mozilla's Secure Open Source Fund (no serious issues were found!).</li>
 

	
 

	
 
<li>We <a href="/news/2016/may/10/yorba-assigns-copyrights/">received an assignment of copyrights from the Yorba Foundation</a>, including Shotwell and Geary, in order to safeguard those copyrights for the future.</li>
 

	
 
<li>We conducted friendly discussions with companies out of compliance with
 
the GPL, seeking non-litigious resolutions in accordance with our <a href="/copyleft-compliance/principles.html">Principles</a>. We <a href="/news/2016/nov/03/linux-compliance-agreements/">published our template agreements</a> and held two <a href="https://lwn.net/SubscriberLink/706361/a9ca4ee12c04d5d7/">feedback</a> <a href="/blog/2016/oct/27/feedback-gpl/"> sessions</a> to evaluate and improve our compliance efforts. We also worked with other community members to <a href="/blog/2016/jul/19/patrick-mchardy-gpl-enforcement/">bring clarity to international activities around GPL compliance</a> and help make the ecosystem safer for free software adoption. We stayed committed to providing <a href="/blog/2016/feb/25/zfs-and-linux/">straightforward analysis about the GPL</a>.</li>
 

	
 
<li>Our Executive Director, Karen Sandler, <a href="/news/2016/feb/23/FOSSA-testimony/">testified to the New York City Council Committee on Contracts in favor of the Free and Open Source Software Act and the Civic Commons Act</a> which would increase the use of free and open source software by New York City departments and agencies. Karen later in the year also <a href="/news/2016/oct/26/karen-sandler-oscon-eu-2016/">taught kids in London about free software</a>.</li>
 

	
 
<li>We <a href="/contractpatch/">launched a new initiative called ContractPatch</a> to help provide information and understanding about employment agreements.</li>
 

	
 
<li>We <a href="/news/2016/nov/23/compliance-principles-chinese-translation/">published “Principles of Community-Oriented GPL Compliance” in Chinese,</a> thanks to a translation by Kaiyuanshe.</li>
 

	
 
<li>We <a href="/blog/2016/jun/06/openchain-spec/">commented on the OpenChain specification</a> to help make sure that the initiative by companies to collaboratively come up with standards and shared materials around compliance also meets community expectations about how compliance obligations are satisfied.</li>
 

	
 
<li>We supported, helped coordinate, and financially backed volunteers from 
 
  our member projects to organize seven conferences in three continents, where thousands of
 
  attendees learned about free and open source software.</li>
 

	
 
<!-- conledger -V -b 2015-01-01 --limit 'tag("Approval") =~ /\/2015/ and tag("TaxImplication") !~ /(Reimbursement|USA-501c3|Corporation|Tax-Payment|LLC|W2|Refund)/' reg '/Assets/'|wc -l -->
 

	
 
<!--<li>We made FIXME contractor payments to developers writing free and open source 
 
  software, which included various different internships and contract
 
  software development work.</li> -->
 

	
 
<!--  conledger -V -b 2015-01-01 --limit 'tag("Approval") =~ /\/2015/ and tag("TaxImplication") =~ /Reimbursement/' reg '/Assets/'|egrep '^2015'|wc -l -->
 

	
 
<!-- <li>We processed and paid FIXME reimbursement requests to individuals doing work
 
  around the globe advocating for their free and open source software
 
  projects at conferences and other venues.</li> -->
 

	
 
<li>We processed and paid reimbursement requests to individuals doing work
 
  around the globe advocating for their free and open source software
 
  projects at conferences and other venues. We also paid contractors to 
 
improve our projects' software.</li>
 

	
 
<li>We gave keynotes
 
at <a href="/news/2016/oct/26/karen-sandler-oscon-eu-2016/">OSCON EU</a>, <a href="/news/2016/sep/14/brocon-keynote/">BroCon</a>, <a href="https://nextcloud.com/blog/nextcloud-conference-keynote-speakers-and-launch-event/">the NextCloud conference</>, <a href="/blog/2016/aug/16/guadec-2016/">GUADEC</a>, <a href="/news/2016/aug/08/guadec-opensym/">OpenSym 2016</a>, <a href="https://debconf16.debconf.org/talks/57/">Debconf</a>, <a href"/news/2016/may/31/kuhn-sweden-norway/">OSS 2016</a>, <a href="https://media.libreplanet.org/u/libreplanet/collection/companies-free-software-and-you/">LibrePlanet</a>, <a href="https://www.openwest.org/keynote/">OpenWest</a>
 
and participated many more conferences all over the world. We also 
 
shared our expertise in initiatives
 
like <a href="https://copyleft.org/">copyleft.org</a>. We gave
 
interviews, published <a href="/blog/">blog posts</a>, and
 
Bradley and Karen released episodes of <a href="http://faif.us/">Free as in
 
Freedom</a>, all dedicated to discussing the important issues in software
 
freedom.</li>
 
 
 
</ul>
 
<p>And we did <strong>all of this</strong> with a tiny staff of only four full time employees.</p>
 

	
 
<p>We are focused on the most important ethical issues in software
 
freedom. We work tirelessly and don't shy away from difficult issues.</p>
 

	
 
<p>We're a unique organization &mdash; a staunch defender of copyleft (for Linux,
 
Debian, and many of our member projects), a source of education and champions
 
of diversity for the community via Outreachy and other programs, and are the
 
legal home to 40 member projects that are essential to developing free
 
software.</p>
 

	
 
<p>We undertake these critical programs because they are essential to the
 
future of technology. We do them because they are right. <strong>But we cannot do
 
them without you.</strong> Last year you helped us to fundraising goals that didn't merely keep us running, but even funded <a href="/news/2016/aug/22/brett-joins/">hiring of a new employee</a>. Yet even this staffing level isn't enough to handle our existing workload.</p>
 

	
 
<p>Our fiscal sponsorship model is not financially self-sustaining by itself:
 
we cannot afford even one staff member and basic overhead with the revenue we
 
take in from our projects.  With over 1,000 Supporters, we can now sustain the basic
 
work and we will survive.  But to thrive, and handle the really complex tasks like
 
copyright and licensing advice, and license compliance, we need even more
 
resources.  That's why our final target remains 2,500 Supporters.  If you use
 
or care about our <a href="/members/current/">member projects</a>, which
 
include some of the most widely used free software, you can help them all
 
by <a href="#donate-box" class="donate-now">signing up as a Supporter
 
today</a>.</p>
 

	
 
<h4>Fighting for the GPL</h4>
 

	
 
<a href="/img/gpl-heart.png" alt="We ♥ GPL"><img class="appeal-right"  src="/img/gpl-heart.png"/></a>
 

	
 
<p>Many consider our GPL compliance and enforcement controversial.   We don't
 
think it is:  we stand up for the GPL at the request of our member projects, 
 
the Debian community, and members of the Linux kernel community. 
 
Most recently, that has resulted in our funding
 
of the <a href="/news/2015/mar/05/vmware-lawsuit/">suit
 
against VMware</a>, which is the first lawsuit on derivative works and the
 
GPL. (Christoph's case <a href="/news/2016/aug/09/vmware-appeal/">continues on appeal</a>.) While this work is extremely important to the continued long-term
 
success of software freedom and copyleft (not to mention in the long-term 
 
interest of the industry as a whole) it makes fundraising from companies
 
very difficult.  Some companies 
 
have ceased funding us and some have even successfully pressured 
 
conferences to cancel or prevent talks on our compliance work. We do
 
this work because we think that it is good for everyone in the long run,
 
because we know it is the right thing to do, and because we know that we are
 
in the best position to do it. But that's not enough &mdash; you have to think it's
 
right too and <a href="#donate-box" class="donate-now">show us by
 
becoming a Supporter now</a>.</p>
 
 
 
<img alt="Photo of Conservancy t-Shirt that Supporters receive" class="appeal-left" src="/img/conservancy-t-shirt.jpg"/>
 

	
 
<h4>It's up to you</h4>
0 comments (0 inline, 0 general)