ESL licensing recommendations

From ESL
Jump to navigation Jump to search


The Electronic Structure Library (ESL) is a collection of useful utilities and libraries, intended to be usable with any electronic structure code.

Many of ESL's pieces predate the ESL itself, and come with licenses that cannot be changed without much effort. ESL as a whole will therefore likely be faced with several different licenses for its different pieces, used concurrently by its users and developers. As a first rule, if you do use ESL software (and of course we think you should!), please take the time to look up the license conditions for the particular piece you may be using, and be sure to comply with the original developers' intention. It is, after all, the original developers who created the software for your use, and adhering to their wishes is, hopefully, a small thing to ask in return.

However, as far as development is concerned, what is important is that ESL licenses be compatible with one another, i.e., different pieces of the ESL should ideally all be usable together, with any electronic structure code. We do not wish to proliferate a situation where electronic structure code X is barred from using library Y, and the developers of X subsequently block the developers of Y from using a library Z that emerged from X. Sounds complicated? Right. That would be precisely the kind of complication we hope to avoid.

It would also be unwise to try and "roll our own" licenses. In some people's view, intellectual property law will be the field tackled next by scholars after the unification of the standard model and quantum gravity is achieved. Until then, we strongly recommend adopting a license devised with the help of a professional lawyer.

Open source licenses

A good summary of trusted, often court-tested open source licenses can be found here.


The increasingly popular Lesser Gnu General Public License (LGPL) is detailed here.

In unscientific terms, the LGPL allows any code with any license to link against your library and even redistribute in binary form, as long as they provide their version of your library in source code form under the same (LGPL) licensing terms to their licensees. In effect, this means that any code changes made by others can be reused by the original project as well, avoiding a situation where multiple players fork their own private version of the library. However, it should be noted that there are some technical complications, which may prove problematic for non-open source codes wishing to use an LGPL library; in particular, the requirement for users to be able to modify and relink a library to the main code, effectively prohibiting static linking.


A more permissive and less complicated option is the group of "BSD-style" licenses, detailed here.

The advantage of BSD-style licensing is that unintended legal complications will be minimal. On the flip side, anyone will be able to make your library private, not contributing their modifications back to the original project. We appeal to all our users not to do this, and to always contribute to a single, common code base of the original library—different forks of the same project by different players will lead to different bugs in different versions, creating a minefield for later users.

One area where BSD style-licensing is definitely recommended by ESL are for Fortran modules that contain the interfaces of a library written in a different programming language, even if the remaining library is licensed under LGPL. The reason is that third-party software developers may want to copy those interfaces directly into their software that is not compatible with LGPL itself. This is useful to avoid incompatibilities between Fortran compilers, as module objects (.mod files) are compiler dependent. In that case, BSD is certainly a good and proven way out, allowing all sides to coexist.


Lastly, a word on the General Public License (GPL), detailed here. This is per se an extremely valuable license, often taken as the foundation of Free Software. However, in this case "Free" does not imply "free for the taking". Rather, the GPL protects itself by only allowing others to link their software A against GPL software B if software A is also licensed under GPL.

In other words, the GPL is not commensurate with the basic goal laid out above, "intended to be usable with any electronic structure code". GPL-licensed code will only be available for use with other GPL licensed code, and while the objective is laudable, that is unfortunately not practical for a large part of the electronic structure community. We therefore respectfully suggest that ESL library code not be licensed under GPL itself but, rather, under a more permissive license form.

Other choices

Finally: there may be other open source licenses matching more closely some developer's specific goals. In that case, please do ensure that this license will allow all of ESL's users to use all of the ESL concurrently with their respective codes.

The bottom line

Thank you, and with that, let's get on to the real objective—code for great science, based on Electronic Structure!