################################################
  DOCUMENTATION ABOUT ATLASSIAN CLOVER LICENSE
################################################

From: sales@atlassian.com [mailto:sales@atlassian.com] 
Sent: Wednesday, September 25, 2013 5:09 PM
To: uschindler@apache.org
Cc: npellow@atlassian.com
Subject: RE: Fwd: New Clover License for Apache - {844535}

Hey Uwe,

Thanks for getting back.
I found the license using the key you provided - thanks for that! I've renewed the license for another year and added you as a technical contact. 

Cheers,
Amber

Clover 100+ Machines: Open Source License	Apache	 27 Jun 2014

SEN:	 SEN-2304226 
Technical Contact:	Mike Mccandless (mikemccand@apache.org), Uwe Schindler (uschindler@apache.org)
Billing Contact:	Mike Mccandless (mikemccand@apache.org) 
Licensed To:	 Apache

History:	
27 Jun 2012	 Purchase of Clover 100+ Machines: Open Source License	
27 Jun 2013	 Maintenance Renewal	
 
---------------------------------------------------------------------------------

From: Nicholas Muldoon <nmuldoon@atlassian.com>
To: Ted Yu <yuzhihong@gmail.com>
Cc: Enis Soztutar <enis@hortonworks.com>, Todd Lipcon <todd@cloudera.com>
Content-Type: multipart/alternative; boundary=047d7b10cff34cee0f04c376df70
X-Gm-Message-State: ALoCoQmzowRKrtL3txnON+W+U2vn7gwwWSn/U5dvchuTV0Nn3xaMoAojvbPal5TBkC6foBnuHPWU

--047d7b10cff34cee0f04c376df70
Content-Type: text/plain; charset=ISO-8859-1

Hi Ted,

Please find a renewed license below - Clover 3 compatible. Should you have
any difficulty please let me know.

[license]

Thanks Ted, have a great day, thanks for your support,
Nicholas


On Fri, Dec 18, 2009 at 1:33 AM, Nicholas Muldoon <nmuldoon@atlassian.com> wrote:
---------------------------------------------------------------------------------

Hi,
Atlassian are excited to be presenting Apache with a site license for Clover
2.6.

This Clover license can be used for any code that is under an org.apache
package. Further, this license can be used by any developer on their machine
in conjunction with our Eclipse or IntelliJ plugins for development on an
org.apache project.

[license]


On Sat, Dec 19, 2009 at 10:38 PM, Nick Pellow <npellow@atlassian.com> wrote:
---------------------------------------------------------------------------------
Hi Mike,

That would be great if you could forward this to committers@apache.org.
The license is available to anyone working on the org.apache.* be it 
in IDEA/Eclipse/Ant/Maven locally, or on a central build server.

Since the license will only instrument and report coverage on 
org.apache packages, please mention that it is fine to commit this 
license to each project if it makes running builds easier. ie just 
check out the project and run with Clover, without the need for the 
extra step of locating and installing the clover license.

Cheers,
Nick

> On 19/12/2009, at 1:11 AM, Michael McCandless wrote:
>
>> Woops, I meant "The only restriction is that it will only test 
>> coverage of packages under org.apache", below.
>>
>> Mike
>>
>> On Fri, Dec 18, 2009 at 9:05 AM, Michael McCandless 
>> <lucene@mikemccandless.com> wrote:
>>>
>>> Since this generous offer extends beyond Lucene...
>>>
>>> I'd like to forward this to committers@apache.org, pointing to where 
>>> the license is available
>>>
>>> (https://svn.apache.org/repos/private/committers/donated-licenses/cl
>>> over/2.6.x), explaining that Lucene upgraded (providing the link to 
>>> our coverage report), etc.
>>>
>>> But I wanted to confirm with you all first: is this OK?  This 
>>> license may be used by anyone?  The only restriction is that it will 
>>> only test coverage of packages under org.apache.lucene?
>>>
>>> I can draft something up and run it by you all first, if this makes 
>>> sense...
