Great topic and I just recently had that discussion in the Modelica community, which complicates things as tools serialize the code, so that code may end up in more or less files than you had intended (see here).
My last post there kind of wraps things up and most of it should carry over to this community as well.
Some key points:
-
Your copyright needs no explicit statement, but … You do have a copyright the moment you create something, which is not trivial (to give a loose definition). Including per file headers is a precaution that you (or your organization) may take or not. The advantage is that it is ultimately extremely safe as it is machine and human readable at the raw source level.
-
REUSE compliance is much less hassle than it looks. As has been pointed out here before, you can use a
REUSE.toml
to elegantly assign SPDX headers to multiple files en bloc. This extremely lightens the burden of adding labels to files like.gitignore
or tons of image files. Finally, there are pre-commit hooks to add SPDX tags conveniently to files still lacking one. -
A single license file does not meet today’s complexity. With just two lines of SPDX tags a lot of ambiguity can be removed. Why shouldn’t some of the images that I ship in my project have a different license than the stricter one given for the main code? (It’s also extremely likely that those artifacts get distributed separately down the road.) It’s also a good idea to explicitly separate branding and trademark related copyrights from the rest. Often the license text does address this (but not always), yet the license file in my repo and the file with my corporate logo may get separated. I find it nice that there is an additional way to explicitly label that logo a “proprietary asset” even in an open source project.
TL;DR
In Julia, we value the flexibility and composability of multiple dispatch. It’s interesting to see, how the very same people that value this kind of flexibility still believe a single license file in a repo is all that should ever be needed in a world of composition (e.g., copy & paste).
The legal world of IP is surprisingly more complicated than it may look. The REUSE specification imho goes a long way in dealing with that complexity in a rather clear, unambiguous, and even convenient way.