How to apply the Apache 2.0 License to your Software Project

How to apply the Apache 2.0 License to your Software Project


This page provide practical instructions on how to apply the Apache 2.0 License to your software project.


OSEHRA has adopted the Apache 2.0 License for software projects and advocates for the use of this license in the Open Source EHR space.  There is, of course, room for other licenses to be used by other members of the ecosystem, but when it comes to maximizing access to software projects that are hosted at OSEHRA, and striving for creating inclusive large-scale communities, we think that the Apache 2.0 License is a fitting choice.

Let's get to It

There are four main elements involved:

  1. Identify who is the Copyright holder (and potentially Patent holder)
  2. Get the LICENSE file
  3. Create a NOTICE file (or equivalent)
  4. Apply a notice to every source and auxiliary file in the project


Who is the Copyright Holder:

Only the copyright holder can license a creative work. There is the option for the copyright holder to authorize a third party to license the work as well. Therefore, the first step in the process of applyting the Apache 2.0 license to your software project is to ensure that you are the copyright holder, or that you have been explicitly authorized by the copyright holder to license the project.

Notice that in a collaborative project, there may be more than one, and potentially many, copyright holders involved. You will need them to reach concensus on the selection of the License.

Get the LICENSE file:

Once the copyright holder(s) agrees to license the software project under the terms of the Apache 2.0 License, the next step is to include along with the project a file containg the full text of the license. This file is typically named "LICENSE" (that is the file name), and it is placed at the top of the source tree of the project, where it becomes highly visible. This is typically one of the first files that a newcomer to the project would like to check in order to ensure that she/he has the right permissions to copy, distribute, modify, and use the software project (among other things).

An authoritative source for the text of the Apache license is the web site of the Open Source Initiative:

It is VERY important not to modify the LICENSE file. Please resist the temptation to alter the terms of the license, since, if you do, then it ceases to be the Apache 2.0 license and becomes a NEW license. Such new license will, unfortunately not be approved yet by the Open Source Initiative, and therefore will not be an accepted "Open Source License".  Should you choose to ignore this plead, please understand that you will be creating a new license, and therefore, should not misrepresent your project as being distributed under the Apache 2.0 license.


Create a NOTICE file:

The purpose of the NOTICE file is to link the triplet of information:

  1. The copyright holders (and potentially patent holders)
  2. The portions of the source code for which they hold the copyright (and that potentially can be covered by their patents)
  3. The License adopted for that portion of the code

In the  simplest scenario, there will be a single individual or a single organization, who holds the copyright of the entire body of code, and who choses to license the full body of code under a single license.

In a more typical scenario, there might be multiple copyright holders, who hold rights to different portions of the code, and who may have chosen to distribute those different portions of the code under different, but compatible, licenses.  This scenario can rapidly become confusing, and it is the role of the NOTICE file to clarify the situation of who contribute what, and under what license it is being distributed.