Serenity: Mark imports and license-borders properly

Created on 4 Sep 2020  Â·  6Comments  Â·  Source: SerenityOS/serenity

For example, we contain a copy of the bmpsuite at /Base/res/html/misc/bmpsuite.html, which we can probably use under the GLPv3. However, the current serenity repository doesn't seem to indicate that this is an external resource.

I believe we "sufficiently" adhere to all the terms and conditions, for bmpsuite.
However, it's probably a good idea to mark those project/license borders somehow, in order to properly attribute copyright and also declare licenses wherever we have to – after all, bmpsuite isn't the only "imported" code, by far.

Debian solves this by having a central-ish debian/copyright file per source package, which essentially lists pairs of shell-globs and licenses. Maybe something similar might work for us, too? We could create a few copyright files of a similar format in few, strategic places like Libraries/, Base/res/, etc. That would reduce the chances of legal trouble from "extremely low but not zero" to "virtually zero".

All 6 comments

Hmm, that's a good point. I think the cleanest approach would be to (incrementally) move non-original resources to one or more separate repositories. It's not like we need to ship the bmpsuite anyway, it's just something used for testing.

For things like bmpsuite, that's a good idea.

Some of the code is copied from *BSD, for example /Libraries/LibELF/exec_elf.h. In that case, this doesn't work as easily. (Actually, this might be the only such file, I don't know.)

For actual code, I think the plan is to have no external code. It's probably a good idea to make a list of files that need converting.

Looks like Meta/check_style.sh already contains such a list:

  • Kernel/FileSystem/ext2_fs.h
  • Libraries/LibC/getopt.cpp
  • Libraries/LibCore/puff.h
  • Libraries/LibCore/puff.cpp
  • Libraries/LibELF/exec_elf.h

Furthermore, these files contain "unusual" copyright notices:

  • Libraries/LibC/scanf.cpp:2: * Copyright (c) 2000-2002 Opsycon AB (www.opsycon.se) (dead website)
  • AK/Checked.h:2: * Copyright (C) 2011-2019 Apple Inc. All rights reserved. (probably Andreas, but none of my business)
  • AK/Function.h:2: * Copyright (C) 2016 Apple Inc. All rights reserved. (likewise)

And finally, if you're so inclined, here are some likely typos. the word YEAR was inserted by my script:

// In case you want to update your e-mail address
      1  * Copyright (c) YEAR, Andreas Kling <[email protected]>
   1537  * Copyright (c) YEAR, Andreas Kling <[email protected]>

// In case you want to update your name spelling
      6  * Copyright (c) YEAR, Hüseyin ASLITÜRK <[email protected]>
     26  * Copyright (c) YEAR, Hüseyin Aslıtürk <[email protected]>

// I'm glad to see that I'm not the only person who sometimes mistypes their own name
      1  * Copyright (c) YEAR, Jesse Buhgaiar <[email protected]>
      5  * Copyright (c) YEAR, Jesse Buhagiar <[email protected]>

// lol
     13  * Copyright (c) YEAR, the SerenityOS developers
    136  * Copyright (c) YEAR, the SerenityOS developers.
    150  * Copyright (c) YEAR, The SerenityOS developers.

Also, there are absolutely no mistakes with my copyright headers, zero issues at all, and I totally not fixed them just now ^^'.

If anyone is interested in the script: It's just a straight-forward derivation from check-style.sh:

git ls-files -- '*.cpp' '*.h' ':!:Base' \
| xargs head -qn2 \
| grep -Pv '^/\*$' \
| sed -re 's< 20[0-9][0-9],< YEAR,<' -e 's< 20[0-9][0-9]-20[0-9][0-9],< YEAR,<' \
| sort | uniq -c | sort -n

@nico It's probably a good idea to make a list of files that need converting.

Done. :)

puff can probably go away soon, with all the great gz work @asynts is doing :)

The exception for getopt can be dropped right now, @bugaevc has already NIH'ed it :)

Was this page helpful?
0 / 5 - 0 ratings