The following Java project contains an Apache 2.0 license https://github.com/apache/pdfbox-jbig2/blob/master/LICENSE.txt as well as a copyright header on every file in the project https://github.com/apache/pdfbox-jbig2/blob/master/src/main/java/org/apache/pdfbox/jbig2/Dictionary.java.

If one were to port the code, to for example an Apache 2 licensed golang project, what is necessary to meet the terms of the license? The files aren't being copied 1:1 but are derivative works in my understanding. Which of the following are required?

  • Attribute the source project in a NOTICES.txt
  • Update the license of the project to include a copy of the license of this project (so 2 licenses stacked on top of each other)
  • Add a copyright header to every .go file corresponding to a .java file in the source

1 Answer 1


Based on the requirements of the license, you may move the Apache 2.0 license into a single license.txt and the notices (attribution) into a single notices.txt for the entire project.

The language...

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file...

... just says it is licensed under Apache, there are no addnl implications for you.

Please consider adding SPDX identifiers to each file. These license identifiers are the state of the art way to support any future automation w.r.t. license compliance.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.