Skip to content

Update and fix copyright headers#632

Merged
TheZ3ro merged 3 commits intodevelopfrom
fix/copyrightNotice
Jun 14, 2017
Merged

Update and fix copyright headers#632
TheZ3ro merged 3 commits intodevelopfrom
fix/copyrightNotice

Conversation

@TheZ3ro
Copy link
Copy Markdown
Contributor

@TheZ3ro TheZ3ro commented Jun 9, 2017

Closes #628

Description

Intro on copyright for free software projects:
https://www.softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html
https://opensource.com/law/14/2/copyright-statements-source-files

Note the following points:

  • If N people contribute to a file, are we supposed to have N copyright statements in the file? This doesn't scale over time. Imagine what these files will look like 10 years from now, and fix the problem now.
  • Having author names in a file encourages people to contribute for the wrong reasons. (Note: Contribute for better software instead of contribute for fame and money)
  • Git keeps track of who contributed what changes. It's not necessary to have explicit copyright statements.

At the Apache Software foundation we discourage the use of author tags in source code. There are various reasons for this, apart from the legal ramifications. Collaborative development is about working on projects as a group and caring for the project as a group. Giving credit is good, and should be done, but in a way that does not allow for false attribution, even by implication. There is no clear line for when to add or remove an author tag. Do you add your name when you change a comment? When you put in a one-line fix? Do you remove other author tags when you refactor the code and it looks 95% different? What do you do about people who go about touching every file, changing just enough to make the virtual author tag quota, so that their name will be everywhere?


With those note in minds, what I've done here is pretty simple:

  • Compare with meld or a similar tool the keepassx and keepassxc repo folder
  • For every .cpp file that has difference and has been modified after the fork:
    • If there are substantial changes, add the new copyright notice.
    • If the .cpp file comes with an .h file, add the new copyright to that as well
    • If there are minor changes don't touch the file. (Useless adding copyright to that simple change like Q_EMIT to emit conversions)
  • For every .cpp file that has a copyright notice and was added after the fork, maintain the copyright and add KeePassXC Team (we can't really remove the copyright without asking the author)
  • .ui files don't need copyright notice
  • For every CMakeLists.txt, if the file has some code (it's >10 lines long) add the copyright notice
  • For every .png file, add the copyright notice to the COPYING file
  • For every external/library code, add the copyright notice to the COPYING file

Other then this, I have to report some other things:

  • Fixed the COPYING file, it was reporting KeePassX information/copyright
  • Added a Comment in the COPYING file explaining what KeePassXC Team means. Some team members' email are missing.
  • Removed from the zxcvbn copyright notice in COPYING the KeePassXC name (we have no copyright on that)
  • Removed from src/cli/EntropyMeter.cpp the zxcvbn copyright since it was rewritten by me and (mostly by) @louib
  • The following files were reporting Felix Geyer copyright but they were added after the fork by different people, I've changed the copyright to KeePassXC Team
    • src/cli/Extract.cpp
    • src/cli/Merge.cpp
    • src/core/PassphraseGenerator.cpp
    • src/core/PassphraseGenerator.h
    • src/gui/CloneDialog.cpp
    • src/gui/CloneDialog.h
    • src/http/HttpPasswordGeneratorWidget.cpp
    • src/keys/YkChallengeResponseKey.h
  • All KeePassHTTP files were reporting the copyright in a different format, changed the format and added KeePassXC Team notice
  • Copyright for share/icons/application/16x16/actions/group-empty-trash.png is missing, like noted here.

I hope I've done a fine work. Waiting for feedback on this. @keepassxreboot/core-developers

Checklist:

  • ✅ I have read the CONTRIBUTING document. [REQUIRED]
  • ✅ My code follows the code style of this project. [REQUIRED]
  • ✅ All new and existing tests passed. [REQUIRED]

@droidmonkey
Copy link
Copy Markdown
Member

Wow this was great work! I'll do a thorough review and approve.

@louib
Copy link
Copy Markdown
Member

louib commented Jun 12, 2017

good job @TheZ3ro !!

Copy link
Copy Markdown
Contributor

@weslly weslly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

We probably should also add the base32 class to COPYING and create a LICENSE.APACHE-2 file

@TheZ3ro
Copy link
Copy Markdown
Contributor Author

TheZ3ro commented Jun 12, 2017

Uh yeah I missed that. Here we have a small problem.
Apache2.0 license is compatible only with GNU GPLv3.0 and not with GNU GPLv2.0.
KeePassXC is currently licensed on both v3.0 and v2.0 (at choice).

@weslly
Copy link
Copy Markdown
Contributor

weslly commented Jun 12, 2017

@TheZ3ro I'm no license expert but since KeePassXC doesn't specify a version of GPL and is dual licensed, wouldn't this situation be covered by this line of GPLv2?

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

@droidmonkey
Copy link
Copy Markdown
Member

GPLv2 is inherently incompatible with GPLv3. Therefore you must pick and choose the sections that apply in both. Per my reading, section 6 in v2 is the problem. If we decide that v3 is in force for that section its all good. IANL

@phoerious
Copy link
Copy Markdown
Member

We should use GPLv3 if you ask me.

@TheZ3ro
Copy link
Copy Markdown
Contributor Author

TheZ3ro commented Jun 14, 2017

I've added the APACHE-2.0 license.
I would really like a different implementation for base32 (maybe written by us) for the next version of KeePassXC.

// Copyright 2010 Google Inc.
// Author: Markus Gutschke
// Source: https://github.com/google/google-authenticator-libpam/blob/master/src/base32.c
// Modifications copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TheZ3ro just a small nitpick, doesn't apache v2.0 requires a modification notice? Most of this function was modified in comparison to the original file

Copy link
Copy Markdown
Contributor Author

@TheZ3ro TheZ3ro Jun 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, fixing this.

Edit: fixed with a rebase

@TheZ3ro TheZ3ro force-pushed the fix/copyrightNotice branch from 3df44d0 to e902573 Compare June 14, 2017 13:53
@TheZ3ro TheZ3ro force-pushed the fix/copyrightNotice branch from e902573 to 11607b1 Compare June 14, 2017 13:54
@TheZ3ro TheZ3ro merged commit 139658b into develop Jun 14, 2017
@TheZ3ro TheZ3ro deleted the fix/copyrightNotice branch June 14, 2017 17:15
@phoerious phoerious added this to the v2.2.0 milestone Jun 18, 2017
droidmonkey added a commit that referenced this pull request Jun 25, 2017
- Added YubiKey 2FA integration for unlocking databases [#127]
- Added TOTP support [#519]
- Added CSV import tool [#146, #490]
- Added KeePassXC CLI tool [#254]
- Added diceware password generator [#373]
- Added support for entry references [#370, #378]
- Added support for Twofish encryption [#167]
- Enabled DEP and ASLR for in-memory protection [#371]
- Enabled single instance mode [#510]
- Enabled portable mode [#645]
- Enabled database lock on screensaver and session lock [#545]
- Redesigned welcome screen with common features and recent databases [#292]
- Multiple updates to search behavior [#168, #213, #374, #471, #603, #654]
- Added auto-type fields {CLEARFIELD}, {SPACE}, {{}, {}} [#267, #427, #480]
- Fixed auto-type errors on Linux [#550]
- Prompt user prior to executing a cmd:// URL [#235]
- Entry attributes can be protected (hidden) [#220]
- Added extended ascii to password generator [#538]
- Added new database icon to toolbar [#289]
- Added context menu entry to empty recycle bin in databases [#520]
- Added "apply" button to entry and group edit windows [#624]
- Added macOS tray icon and enabled minimize on close [#583]
- Fixed issues with unclean shutdowns [#170, #580]
- Changed keyboard shortcut to create new database to CTRL+SHIFT+N [#515]
- Compare window title to entry URLs [#556]
- Implemented inline error messages [#162]
- Ignore group expansion and other minor changes when making database "dirty" [#464]
- Updated license and copyright information on souce files [#632]
- Added contributors list to about dialog [#629]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add KeePassXC Team Copyright to modified source files

5 participants