Pregunta

This is ALMOST a direct duplicate of (What is the netiquette for forking other people's open source projects?) except that I could not find my answer there, and I cannot comment (because I don't have enough reputation yet).

Here's my scenario:
I have a public fork of a public GitHub project (https://github.com/fengyuanchen/cropper). I've contributed some fixes to the origin (such as working around canvas rendering limitations on low-memory devices), but I've also added in a bunch of functionality that I wanted in the software, such as:

  1. viewMode: 4: When the image is rotated, it scales so that the entire image is always visible inside the container. The cropBox is also always constrained within the image, rather than just the canvas.
  2. getCroppedCanvas tiling: The ability to tile (eg: duplicate matrix-style) the cropped image on a canvas.

However, the original author does not want to merge in this new functionality because he wants to keep his original plugin as simple as possible.

I've tried negotiating and bargaining, but am just getting ignored.

So, I've resigned myself to the fact that I'm going to continue to maintain this public fork. Not ideal, but I really want that other functionality. So there we are.

The original licence is an MIT licence, and declared as:

The MIT License (MIT)

Copyright (c) 2014-2016 Fengyuan Chen and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

What I don't think is answered in the other post:

  1. Now that I'm updating/maintaining what is effectively a new version, how do I correctly give attribution to the original author? I know that I'm effectively working on a new version that is my own, but it's based on a foundation that was authored by someone else.
  2. Is it ok to masquerade as if this new fork is totally mine? eg: Replace links to the github.io page for the original project to my own in my forked README? It sort of feels wrong to not link back to the original, but the github.io has demos on it, and I'd like to demo the new functionality I'm putting in.
  3. Is there any part of a repo, be it the README.md, the site etc that I should totally replace with my own work to make it more...appropriately mine?
  4. Should I change the licence wording to remove the original Author's name, and replace it with mine?

Basically, it doesn't feel like the fork is mine, even though all the new work is my own. I don't want to pi$$ anyone off, and the original work was really good.

I'd appreciate any guidance that people can offer so that I do the right thing, which is all I want to do, really.

Update
Here's what I did in the end https://github.com/OddPrints/cropper :

  1. Added the Credit and Why the Fork? sections plus the mention under the main blockquote.
  2. Follow the Website link - linked back to the original author as much as possible including in the jumbotron and header/footer menus, but still re-themed the site.
  3. Changed the dist intro comment to:

Cropper v2.3.3 https://github.com/OddPrints/cropper forked from https://github.com/fengyuanchen/cropper

Copyright (c) 2015-2016 OddPrints and contributors originally 2014-2016 Fengyuan Chen and contributors
Released under the MIT license

Date: 2016-07-01T11:35:42.277Z

But I haven't yet changed the licence, because apparently it's not ideal to remove people's names? (Licensing on forked projects)

¿Fue útil?

Solución

Now that I'm updating/maintaining what is effectively a new version, how do I correctly give attribution to the original author?

Here's something I often see in similar situations:

Copyright 2016 - Project101, written by ndtreviv, based on Project100, originally written by RandomDude24

Replace links to the github.io page for the original project to my own in my forked README?

This should be fine. As long as you mention that this is a fork of some other project and link it in at least one place in the readme file, I don't see why the readme file shouldn't link to your own fork.

Is there any part of a repo, be it the README.md, the site etc that I should totally replace with my own work to make it more...appropriately mine?

IMO, If I was the original author, I would be absolutely fine with you having a fork (after all, I was the one who put the project in Github in the first place), as long as your project clearly gives credit to the original page.

Make sure that your site doesn't look too much like the original and you may also want to rewrite the the wiki.

Also, In the readme file, you should point out what was an original feature and what you have added

Otros consejos

I would just try to be explicit about what is the original work, and what are your additions. Don't "mascarade" original code as yours (this would be "stealing" and is bad).

First, if possible, make most of your changes in new source files (where you add your name -or your employer if you are working- as copyright holder).

Then you might add comments for the few changes in the original files you are doing.

At last, be nice, and add into the README.md that most of the work is cloned, and a small paragraph describing your improvements. Maybe add another file IMPROVEMENTS.md describing your additions..

Be sure that the reader of the forked project can tell at a glance which code is mostly work from the original project, and which code is yours.

Perhaps rename your project slightly differently (e.g. Cropper_with_Foo if you add feature Foo to a project Cropper)

Licenciado bajo: CC-BY-SA con atribución
scroll top