As part of incubation, we need to make sure that code imported to Apache Taverna has:

  • Clean Intellectual Property rights (e.g. covered by the Software Grant from University of Manchester).
  • Dependencies that use a compatible license.
  • An Apache Software foundation (ASF) license header on all "our" files.
  • All externally sourced files (that are in the git repository/release archive) of a compatible license and mentioned in LICENSE and/or NOTICE as required).
  • DISCLAIMER file, while we're in the incubator.

Repositories are listed on https://taverna.incubator.apache.org/download/code/.

Terminology:

  • SG: Software Grant from The University of Manchester (filed 2015-02-23 by secretary@apache.org)
  • PR: GitHub Pull Requests (which would anyway be covered by Apache License section 5, but we ask for ICLA for 'larger' contributions, e.g. new code base)
  • ICLA: Individual Contributor License Agreement (ICLA) filed with ASF.
    (note: all committers also have ICLAs on file - here "ICLA" means contributed by a non-committer (at the time)
  • IP: Intellectual Property

 

Checking with Maven

mvn apache-rat:check is used by the release process and should fail if license headers are missing. It will generate files (i.e., target/rat.txt) at the top of the repository and within each built submodule as well.

Example of failing rat check:

stain@biggiebuntu:~/src/taverna/incubator-taverna-server$ mvn apache-rat:check
[INFO] Scanning for projects...
...
[INFO] Rat check: Summary of files. Unapproved: 5 unknown: 5 generated: 0 approved: 1 licence.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Apache Taverna Server .............................. FAILURE [  0.819 s]
..
[ERROR] Failed to execute goal org.apache.rat:apache-rat-plugin:0.11:check (default-cli) on project apache-taverna-server: Too many files with unapproved license: 5 See RAT report in: /home/stain/src/taverna/incubator-taverna-server/target/rat.txt -> [Help 1]

 

Where target/rat.txt shows:

  Files with Apache License headers will be marked AL
  Binary files (which do not require AL headers) will be marked B
  Compressed archives will be marked A
  Notices, licenses etc will be marked N
 !????? src/clients/tcl/taverna2server.tcl
  B     src/main/signing/signing.jks
  N     release-notes.txt
  B     usage.pdf
  AL    pom.xml
  N     NOTICE
 !????? tomcatcontext.xsd
 !????? context.sample.xml
  N     DISCLAIMER
  B     install.pdf
 !????? CITATION
  B     usage.docx
 !????? .opf.yml
  N     LICENSE
  B     install.docx

Action Required

Add required file headers (see below) to Java, XML files, etc.

Some 'magic' files or README-style files (E.g. CITATION here) can't have file comments. They need to be checked manually, e.g. with git log --follow and opened in the corresponding program (e.g. Microsoft Word for usage.docx above). If the file is OK, then add it as an exclusion with a justification comment to the pom.xml for the apache-rat-plugin plugin. See taverna language's RAT excludes for an example.

For W3C files, and others that are not 'ours' (i.e., not contributed to ASF), (1) find the file's origin, (2) check its license, and (3) add it to the end of the LICENSE and (in some cases) NOTICE files at the top of the repository. See for example taverna-language LICENSE.

File headers

University of Manchester (Software Grant)

© University of Manchester LGPL file headers like the one below must be replaced with the standard ASF file header.

These files are covered by the Software Grant, which permits relicensing to Apache License 2.0. 

NOTE: If you find a © that does NOT mention University of Manchester, or has a different license, then discuss on the list (or list it on this wiki page).

/*******************************************************************************
 * Copyright (C) 2009 The University of Manchester
 * 
 * Modifications to the initial code base are copyright of their respective
 * authors, or their employers as appropriate.
 * 
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ******************************************************************************/

ASF headers

The correct ASF header should be something like the Java, XML, JSON, and YAML, Python, Ruby, and shell script examples below.

Java

For Java - make sure you use /*  */ rather than /** */ to avoid accidentally generating Javadoc. For some reason common practice is to have the {{package org.apache.taverna.*}} line above the file "header".

package org.apache.taverna.....;
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** 
 * While this is the javadoc for {@link Foo}
 */
public class Foo...


XML

And for XML:

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements. See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership. The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<project ... />

 

JSON

JSON does not support comments, but generally these one-liners should work (e.g. in schema.json) if the JSON starts with {

{
  "http://purl.org/dc/terms/rights": "Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file to You under the Apache License, Version 2.0 (the 'License'); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License.",
  "http://purl.org/dc/terms/license": {"@id": "http://www.apache.org/licenses/LICENSE-2.0"},
  
  "...": ".. the actual JSON follows"


Others

YAML, Python, Ruby and shell script all support # kind of line comments:

##  Licensed to the Apache Software Foundation (ASF) under one or more
##  contributor license agreements.  See the NOTICE file distributed with
##  this work for additional information regarding copyright ownership.
##  The ASF licenses this file to You under the Apache License, Version 2.0
##  (the "License"); you may not use this file except in compliance with
##  the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.

 

 

  • No labels