I cannot go into the specific details of my project since it is in a very nascent research stage.

However, there is a fair bit of information that I can disclose. My project architecture consists of various Github projects that preprocess the data in a certain way. After a few parallel pipelines of different preprocessing stages, that lead to the final point, I concatenate all the data and do further preprocessing with a program that I have written by myself. However, after this has happened, I proceed to classify the appended data with a github project that I have pulled onto my computer. There is a lot of deep learning involved wihtin this pipeline.

There have been slight modifications to each and every one of these projects. I plan to make this an open source project(essentially upload it onto github) once I finish publishing the results. However, I am not sure as to the procedure to upload this entire architecture onto github. How would I credit the original developers whoi wrote the code for the different github projects?


Let us assume each of the projects you are using has a license which allows this. (You have already checked it, did you?)

Start with making sure you know how to handle dependencies to other Github projects properly when there are no modifications involved, like described here. That is actually the situation you should try to achieve, since it will allow you to publish the dependencies without creating duplicates of the other project's source code. Crediting the original developers is a non-issue this way.

However, you wrote

There have been slight modifications to each and every one of these projects

which means, you have forked several Github projects. These forks are currently only existing in your local environment, but when these projects are evolved in parallel by their maintainers (not knowing anything about your fork), you risk getting maintenance issues.

So what can you do to prevent this when you publish your project to the world? It depends on the nature of your modifications and the way those projects are managed.

Pull requests

First thing you should try is to publish the modifications as pull requests to the owners/maintainers of the projects you modified. Ideally, they accept those modifications, which will bring you to a situation where you can just reference their project in unmodified form.

Furthermore, the maintainers are now aware of your requirements and will hopefully keep that in mind when evolving the project further.

Of course, for this approach, you should avoid add modifications which are exclusively suitable for your system. For example, instead of directly modifiying some hardcoded text in a project, you could make the text a configuration option, and then configure it inside of your own code.

Forking on Github

If the maintainers don't accept your change, for example because they have abandoned the project, the second best option is to fork the project on Github, and reference that forked repo as an external dependency. That makes your changes public, and gives you and others at least a chance to sync your fork with the main line in the future.

Copy-paste reuse

If you just copied some code snippets or isolated source code files into your own project and made some modifications to them, make sure the license (which needs to be permissive enough to allow this) is part of each source file. In this case, you should simply include all those source files in your project, but mention where you got them from.

Note that he responsibility for any maintenance for the copied code has now shifted to you, so I would recommend to use this approach only when you are sure it is very unlikely the code needs any maintenance in the future you cannot provide by yourself.

  • Yeah, this was the answer I was looking for! – SDG Apr 23 '18 at 8:27

Each of the other GitHub projects should have their own license details - either the summary or full text of the license should be able to explain how to properly attribute the authors.

At very least, I'd expect acknowledging your use of their projects in your readme.md and linking to the relevant projects, and then depending on licensing requirements, the relevant legal declarations of use in our own license file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.