Pregunta

I'm new to forking and open source and I'm porting a Rust library into Swift but I wasn't sure if I needed to fork the original repo and then replace it with my new files or just upload my own repo and mention in the README that it's a Swift port of an existing library

¿Fue útil?

Solución

1. Technical point of view

Forking a repository on GitHub creates a bidirectional link between your own forked repository and the original repository.

Beside the social aspects (i.e. showing that it's based on someone else's work, and letting the original author know about your fork), the main intent is to facilitate sharing of changes and improvements that you make in your repo, by pulling them back to the original project. The GitHub guide on forking explains this with wealth of details.

In your specific case, you do not intend to pull back changes, because your Swift version is not relevant for the Rust community. So the fork is of no use. IMHO, I even think it could be a source of confusion.

2. Legal point of view

If you create a port of the original library by translating and adapting it in another language, and even if it is without a single line of the original code, your work will be a derived work, which is subject to the copyright of the original author.

You may be tempted to say: "but I rewrote everything myself, how can this be copyright ?". This is due to the principle of non-litteral copying.

So you must verify if the license of the original library allows derived work ("modification") and under which conditions. If the license doesn't tell anything, or in case of doubt, the best thing is to contact the original author.

3. Moral and practical aspects

It's always good (even in the rare case where you would not be obliged to), to give back to Caesar what belongs to Caesar, i.e. tell clearly that it's a port of library abc from author xyz, and provide a link back to the original.

It's also a recommended practice to take contact with the original author, even if the license would already give you all the rights: after all, wouldn't you be interested that the author informs his/her community that there is a Swift port ?

Last but not least, did you think of a versioning strategy ? What if the original library evolves: will you follow, or do you see its future as more independent ?

Disclaimer: This is the viewpoint of a software professional. It shall in no way be considered as legal advice. For legal advice, consult a lawyer or a qualified legal advisor in your jurisdiction.

Otros consejos

In addition to the other thoughtful discussion by @Christophe and @Robert,

A fork would provide some formal acknowledgement of the original, even if from a practical matter you never intend to merge back with the original project.

You can keep the original copyright, and even the originals sources. I'd suggest adding your translation as a mirror structure of some kind (e.g. a top-level parallel tree). In this way a pull request could be theoretically done even if impractical or will never happen in reality.

This may also help you with the versioning that strategy that @Christophe is calling out as needed. You can update your base, check if you have particular bugs and bug fixes in your fork.

Something like this must be done elsewhere as proof of concept at least, as APIs and other things are ported to various programming languages, sometimes by third parties like you in this case.

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