<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
    <title>Help Us Help the World</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="Keywords" content="Apache, ASF, OpenOffice, donations contributions">
    <meta name="Description" content="Information on how to donate to the Apache Software Foundation to benefit Apache OpenOffice and other Apache projects">
    
    <style>

     .left {
    float: left;
    width: 50%;
    padding: 5px 25px 5px 5px;
     }

     .right {
    margin-left: 50%;
    padding: 5px 5px 5px 25px;
     }
    </style>

</head>

<body>

<div class="left">

<h2>A Good Cause</h2>

<p>
	Apache OpenOffice, the leading open source office productivity software, is published by the non-profit <a href="https://www.apache.org">Apache Software Foundation</a> (ASF). Apache OpenOffice has been downloaded
<a href="https://www.openoffice.org/stats/downloads.html">over 330 million times</a>, by users in <a href="https://www.openoffice.org/stats/countries.html">over 240 countries</a>.
Commercial alternatives to OpenOffice sell for 100 USD or more, and come without the legal right to make copies and share the software.</p>

<p>
Apache OpenOffice is only one of <a href="https://projects.apache.org/projects.html?name">many open source projects</a> that are part of the Apache Software Foundation. The ASF comprises over 350 open source
projects, over 620 active members, over 5,500 committers and countless contributors and users. We are responsible for millions of lines of code and the 35+ servers which make up our
infrastructure.</p>

	<p><strong>We invite you to donate to the Apache Software Foundation, to support Apache OpenOffice as well as the many other projects at Apache.</strong>
		Your contribution shows your support for our mission and help sustain a vibrant organization. Your contribution also shows your support for Open Source
		and provides you the opportunity to "give back" to the community.</p>

<h2>How we use Donations</h2>

<p>The Apache Software Foundation provides the technical infrastructure for the projects &mdash; the mailing lists, code repositories, bug tracking systems, etc. We have the normal
business operating expenses which go with any organization. These include: Bandwidth costs, Servers and hardware, Legal and Accounting, Normal office expenses, Marketing and PR,
Sub-contractors to "fill in the holes" for administrative and secretarial duties.</p>
	
<p>As a public charity our budget is transparent and spending is documented in our <a href="https://www.apache.org/foundation/board/calendar.html">Board minutes</a></p>	
	
</div>

<div class="right">
<h2>How to Donate</h2>
<p>
We have another page that describes <a href="https://www.apache.org/foundation/contributing.html#make-a-donation">ways to donate to the ASF</a>.
The Apache Software Foundation is a registered non-profit, charitable organization under Section 501(c)(3) of the U.S. Internal Revenue Code. This means that, 
for individuals within the U.S., donations to the ASF should be <strong>tax-deductible</strong>. (Check with your tax accountant to confirm details for your personal situation.)</p>
</p>
</div>

</body>
</html>
