Overview of tasks for transitioning NetBeans to Apache, per repository.
Reference: https://incubator.apache.org/guides/transitioning_asf.html
1st Code Donation
Repo | html4j | jackpot30 | netbeans | ||||
---|---|---|---|---|---|---|---|
Task | Assigned To | Status | Verified | Assigned To | Status | Assigned To | Status |
Audit Cryptography | Jaroslav Tulach | Evaluation done as part of initial few commits | Comments | ||||
Relicense | Jaroslav Tulach | Done, including rat-maven-plugin integration |
See the table below. | ||||
Repackaging | - | No plans to do it now. To simplify merges and keep backward compatibility. | No plans to do it now. To simplify merges and keep backward compatibility. | ||||
Continuous Build | Jaroslav Tulach | Updated NetBeans builders, requested Apache Jenkins Job: INFRA-15058 | Linux & Windows | ||||
Update pom release info | Jaroslav Tulach | Done as 9032affbe | Source release job | Not a Maven project, so no POM. |
Relicensing of incubator-netbeans
The total number of files in incubator-netbeans is 44,324.
Automatically convertible by the tool for analyzing and changing GPL+CDDL license headers is 29,334.
That leaves 14,828 that currently cannot be automatically be converted and that need to be investigated or that indicate the tool needs to be finetuned.
Some file types by definition are excluded since they don't have licenses at all. They may not need a license: "A file without any degree of creativity in either its literal elements or its structure is not protected by copyright law; therefore, such a file does not require a license header." – https://www.apache.org/legal/src-headers.html Other files "may make sense to have no license header". Three examples are: "short informational text files", "test data for which the addition of a source header would cause the tests to fail", and "'snippet' files that are combined as form a larger file where the larger file would have duplicate licensing headers".
When identifying the problematic areas for the relicensing process in incubator-netbeans, the following types of files are relevant, some/many of which could be seen to not having "any degree of creativity" or "may make sense to have no license header" via the above definitions:
File Type | Statistics* | Status | Issues |
---|---|---|---|
.form | find . -type f -name "*.form" | grep -v '\.git' | wc -l Result: 1242 1019 have an adjacent Java source file with a license header 223 don't have an adjacent Java source file (form module tests) | Consensus appears to be that all .form files need to manually have licenses added, in incubator-netbeans, while Matisse needs to be able to generate licenses for .form files going forward. | |
.png/.gif/other image files | find . -type f -name "*.png" | grep -v '\.git' | wc -l Result: 2273 find . -type f -name "*.gif" | grep -v '\.git' | wc -l Result: 1094 find . -type f -name "*.jpg" | grep -v '\.git' | wc -l Result: 26 find . -type f -name "*.ico" | grep -v '\.git' | wc -l Result: 3 | ||
manifest files | find . -type f -name "*.form" | grep -v '\.git' | wc -l Result: 772 | Does this have any degree of creativity? | |
list files | find . -type f -name "*.list" | grep -v '\.git' | wc -l Result: 42 | Does this have any degree of creativity? | |
sig files | find . -type f -name "*.sig" | grep -v '\.git' | wc -l Result: 108 | Does this have any degree of creativity? | |
txt files | find . -type f -name "*.txt" | grep -v '\.git' | wc -l Result: 930 | May make sense to have no license header? | |
binaries-list files | find . -type f -name "binaries-list" | grep -v '\.git' | wc -l Result: 121 | Does this have any degree of creativity? | |
README files | find . -type f -name "README*" | grep -v '\.git' | wc -l Result: 22 | May make sense to have no license header? | |
file files | find . -type f -name "*.file" | grep -v '\.git' | wc -l Result: 1 | May make sense to have no license header? | |
jsp files | find . -type f -name "*.jsp" | grep -v '\.git' | wc -l Result: 7 | ||
xsl files | find . -type f -name "*.xsl" | grep -v '\.git' | wc -l Result: 49 | ||
sh files | find . -type f -name "*.sh" | grep -v '\.git' | wc -l Result: 80 | ||
css files | find . -type f -name "*.css | grep -v '\.git' | wc -l Result: 33 | ||
META-INF files | Does this have any degree of creativity? | ||
pass (golden) files | find . -type f -name "*.pass" | grep -v '\.git' | wc -l Result: 2644 | Does this have any degree of creativity? | |
- Statistics column is for number of files and any other numbers.
Tool for analyzing and changing GPL+CDDL license headers
A tool to analyze and change the license headers is attached here. The tool does the following to the license headers:
-for files that contain string "CDDL":
-it looks for the first comment in the file
-the normalizes the text of the comment:
replaces pieces that look like a range of years with text "<YEARS>"
replaces <p/> with a newline
replaces each single newline with a space
replaces a consecutive spaces and tabs with a single space
replaces multiple newlines with a single newline
removes leading and trailing newlines
The conversion part then looks at the normalized headers, and if it matches the following regexp, it replaces it with and ASF license header:
"\\QDO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\\E\\s*" +
"(" +
"\\QCopyright <YEARS> Oracle and/or its affiliates. All rights reserved.\\E\\s*" +
"|" +
"\\QCopyright (c) <YEARS> Oracle and/or its affiliates. All rights reserved.\\E\\s*" +
"|" +
"\\QCopyright \u00A9 <YEARS> Oracle and/or its affiliates. All rights reserved.\\E\\s*" +
"|" +
"\\QCopyright <YEARS> Sun Microsystems, Inc. All rights reserved.\\E\\s*" +
")" +
"(\\QOracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.\\E\\s*)?" +
"(" +
"\\QThe contents of this file are subject to the terms of either the GNU General Public License Version 2 only (\"GPL\") or the Common Development and Distribution License(\"CDDL\") (collectively, the \"License\"). You may not use this file except in compliance with the License. You can obtain a copy of the License at http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this particular file as subject to the \"Classpath\" exception as provided by Oracle in the GPL Version 2 section of the License file that accompanied this code. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: \"Portions Copyrighted [year] [name of copyright owner]\"\\E\\s*" +
"|" +
"\\QThe contents of this file are subject to the terms of either the GNU General Public License Version 2 only (\"GPL\") or the Common Development and Distribution License(\"CDDL\") (collectively, the \"License\"). You may not use this file except in compliance with the License. You can obtain x copy of the License at http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this particular file as subject to the \"Classpath\" exception as provided by Oracle in the GPL Version 2 section of the License file that accompanied this code. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: \"Portions Copyrighted [year] [name of copyright owner]\"\\E\\s*" + //note: typo "x copy" instead of "a copy"
"|" +
"\\QThe contents of this file are subject to the terms of either the GNU General Public License Version 2 only (\"GPL\") or the Common Development and Distribution License(\"CDDL\") (collectively, the \"License\"). You may not use this file except in compliance with the License. You can obtain a copy of the License at http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this particular file as subject to the \"Classpath\" exception as provided by Sun in the GPL Version 2 section of the License file that accompanied this code. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: \"Portions Copyrighted [year] [name of copyright owner]\"\\E\\s*" +
"|" +
"\\QThe contents of this file are subject to the terms of either the GNU General Public License Version 2 only (\"GPL\") or the Common Development and Distribution License(\"CDDL\") (collectively, the \"License\"). You may not use this file except in compliance with the License. You can obtain a copy of the License at http:www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this particular file as subject to the \"Classpath\" exception as provided by Sun in the GPL Version 2 section of the License file that accompanied this code. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: \"Portions Copyrighted [year] [name of copyright owner]\"\\E\\s*" + //note: mistake in URL (no '//'), otherwise as above
")" +
"(" +
"\\QIf you wish your version of this file to be governed by only the CDDL or only the GPL Version 2, indicate your decision by adding \"[Contributor] elects to include this software in this distribution under the [CDDL or GPL Version 2] license.\" If you do not indicate a single choice of license, a recipient has the option to distribute your version of this file under either the CDDL, the GPL Version 2 or to extend the choice of license to its licensees as provided above. However, if you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the option applies only if the new code is made subject to such option by the copyright holder.\\E\\s*" +
"|" +
"\\QIf you wish your version of this file to be governed by only the CDDL or only the GPL Version 2, indicate your decision by adding \"[Contributor] elects to include this software in this distribution under the [CDDL or GPL Version 2] license.\" If you do not indicate x single choice of license, x recipient has the option to distribute your version of this file under either the CDDL, the GPL Version 2 or to extend the choice of license to its licensees as provided above. However, if you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the option applies only if the new code is made subject to such option by the copyright holder.\\E\\s*" + //note: typos "a single choice" -> "x single choice", "a recipient" -> "x recipient"
"|" +
//empty
")" +
"(\\QContributor(s):\\E\\s*)?" +
"(" +
"\\QThe Original Software is NetBeans. The Initial Developer of the Original Software is Sun Microsystems, Inc. Portions Copyright <YEARS> Sun Microsystems, Inc. All Rights Reserved.\\E\\s*" +
"|" +
"\\QThe Original Software is NetBeans. The Initial Developer of the Original Software is Sun Microsystems, Inc. Portions created by Sun Microsystems, Inc. are Copyright (C) <YEARS> All Rights Reserved.\\E\\s*" +
"|" +
"\\QThe Original Software is NetBeans. The Initial Developer of the Original Code is Sun Microsystems, Inc. Portions Copyright <YEARS> Sun Microsystems, Inc. All Rights Reserved.\\E\\s*" +
"|" +
"\\QThe Original Software is NetBeans. The Initial Developer of the Original Software is Oracle. Portions Copyright <YEARS> Oracle. All Rights Reserved.\\E\\s*" +
"|" +
"\\QThe original software is NetBeans. The initial developer of the original software was Sun Microsystems, Inc.; portions copyright <YEARS> Sun Microsystems, Inc. All rights reserved.\\E\\s*" +
"|" +
"\\QThe Original Software is NetBeans. The Initial Developer of the Original Software is Sun Microsystems, Inc.\nPortions Copyrighted <YEARS> Sun Microsystems, Inc.\\E\\s*" +
"|" +
"\\QPortions Copyrighted <YEARS> Sun Microsystems, Inc.\\E\\s*" +
"|" +
"\\QPortions Copyrighted <YEARS> Oracle, Inc.\\E\\s*" +
"|" +
"\\QPortions Copyrighted <YEARS> Oracle\\E\\s*" +
"|)" +
"(\\QIf you wish your version of this file to be governed by only the CDDL or only the GPL Version 2, indicate your decision by adding \"[Contributor] elects to include this software in this distribution under the [CDDL or GPL Version 2] license.\" If you do not indicate a single choice of license, a recipient has the option to distribute your version of this file under either the CDDL, the GPL Version 2 or to extend the choice of license to its licensees as provided above. However, if you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the option applies only if the new code is made subject to such option by the copyright holder.\\E\\s*)?";
Most files with the GPL+CDDL header match this pattern. The remaining files may need to be checked manually.
2nd Code Donation (to be done)