The situation is following: There is a project (lets call it A), standard MIT licensed but long abandoned. I created a rebranded fork, fully MIT compliant, called B. Another person, lets call him Jack, created one of his own forks, called C, also MIT.
I have made, and will make substantial changes to B, but one of the changes I want to do was also implemented by Jack in his C repo. instead of reinventing hot water, I want to include his specific feature into my repo, and of course give credit. I tried contacting Jack out of curtesy, but there was no response (though I think this shouldn't really matter).
Potential ways I am thinking about are:
- Add his repo as additional remote
- Create a branch of my master and cherry pick commits from his repo
- Since this will create conflicts and unbuildable state, harmonize his code with another commit of my own
- Add Jack to AUTHORS file which I added and now maintain for all other contributors, past, present and future
This will leave his commits as they are and part of B's git chain, but it is more work for me to resolve everything since API surface no longer matches that of project A (which C inherited and just expanded).
Another option I am considering is:
- Just copy/paste changes from his repo I need, avoiding conflicts and modifying to fit
- When committing, change commit message and add Jack as
Co-authored-by:
- Add Jack to AUTHORS
This would be faster for me, but would remove him as a direct commit author.
In both ways I believe he would be attributed. But I guess primary question is: Am I even allowed to do that? As in merge outside up/down/stream without Jack's explicit permission?
And if allowed, which way would be allowed/best?