84

I am a third-year computer engineering student at a university in Croatia.

In 2020, my Computer Architecture professor asked me to make an assembler and an emulator for PicoBlaze that would run in any modern browser. In return, he would excuse me from the assembly language exam (meaning he would give me an A, even if I didn't show up for the test) and let me write my Bachelor thesis about that project. I did that, and you can see the work on my website.

A few months after I made the PicoBlaze assembler and emulator, I had some mental health issues preventing me from attending the university and working on that project for almost a year. Not long before my absence, I added the MIT license to my project.

In the meantime, my work began being used at a university in Argentina for introduction to embedded systems. Recently, I received pull requests from a GitHub user named agustiza, who claims to be from the university in Argentina where my project is being used. At first, the pull requests were small bug-fixes, but soon they expanded with agustiza adding significant new features. I accepted those pull requests.

Can I still present my PicoBlaze assembler and emulator as my Bachelor thesis, or will I run into problems because a part of it was written by agustiza? Do I need to write a new Bachelor thesis?

UPDATE: I got a C from my Bachelor thesis, and the fact that not all code was written by me didn't create problems.

6
  • 40
    You need to talk with your Bachelor's thesis advisor. It's clear you did a lot of work on the assembler and the emulator, and it sounds like you already had a working piece of software before this other contributor got involved. Present it in that light to your thesis advisor/contact person, and see what they have to say. In all likelihood, you'll be fine.
    – isaacg
    Aug 29, 2023 at 18:42
  • 143
    Well done! You are now leading an international collaborative open source software project, rather than just being the typical individual Github user who posts their personal repositories online. Great validation that you are doing good work. In terms of your thesis, this only strengthens it, as a marker of quality. An advantage of git is that your contributions and others are transparently and inherently documented in terms of what portions of the code you might wish to personally claim credit for. As another user notes, you can make a tag to indicate the original state of the project. Aug 30, 2023 at 3:45
  • 30
    I'd like to highlight and agree with A N's comment below : put a git tag on your personal last major commit, and you can present the code as of that tag as solely your work. Your thesis advisor may also let you write one or two chapters analysing the next contributor's code (just not presenting it as something you wrote). Aug 30, 2023 at 4:51
  • 2
    Congratulations! It is very rare and impressive for an undergraduate's open source project to attract that kind of interest
    – Darren Ong
    Sep 1, 2023 at 14:06
  • 2
    I don't know how things are at your institution, but in my experience the requirement for originality is not that high in a Bachelor's thesis. You say that the course is "computer engineering", and collaborative working is a key part of software engineering; I would put a chapter in the thesis explaining the nature of the collaboration from an engineering process viewpoint. Sep 1, 2023 at 21:01

5 Answers 5

88

Can I still present my PicoBlaze assembler and emulator as my Bachelor thesis, or will I run into problems because a part of it was written by agustiza? Do I need to write a new Bachelor thesis?

First of all, you can just choose to make a branch solely for your thesis, and without any of agustiza's changes. It's not as if anyone forced you to present those changes in your thesis. Git makes it super easy to attribute the work exactly, and to choose what commits any particular branch includes.

When presenting the project in your thesis, you can choose to use a branch with only bugfixes and no feature contributions. You'd create such a branch from some point prior to the contributions and cherry-pick them as appropriate

You should also include a "field experience" chapter that describes how the project is used by others, and what changes they made (!). There are not all that many bachelors' thesis projects that find outside users, so if anything you should be very proud!

4
  • 46
    Alternatively, if no additional work was needed on the project in order to use it for the bachelor's thesis, the last version that was 100% your contribution can be simply given a tag in GitHub instead of a branch.
    – A N
    Aug 30, 2023 at 2:58
  • 11
    While this is the most clear-cut approach, acknowledging the fact that other people found your project useful enough to work on it is a chapter that I'd proudly write into my thesis
    – Hobbamok
    Aug 31, 2023 at 15:23
  • 10
    I would also suggest using SmartGit (free for noncommercial use). Meh. Could you please remove this infomercial? There are many open-source alternatives which look just as good or better. If OP wrote an assembler and emulator, they probably don't mind using git in a console, or lazygit, or TurtoiseGit, .... Sep 1, 2023 at 9:02
  • @EricDuminil Mot much of an infomercial if the thing is free for use described here. I am intimately familiar with the alternatives, and they are miles behind. I am not in any way associated with the company that makes it, this is my honest assessment of how useful it is. Sep 3, 2023 at 15:13
131

First, congratulations! The code you wrote for your bachelor's thesis was useful enough that other people used it to teach classes at a university level and added new features. This is a major positive point for the impact of your work and you should be proud to say it in your thesis. Not very many bachelor's thesis code projects are ever touched by anyone other than the author.

Generally, the rule in academia is that you can use other people's stuff as long as you cite it and make it clear what was their work and what was your work. Plagiarism is presenting someone else's work as your own. So you don't have to worry about plagiarism as long as you are clear that others (such as GitHub user agustiza) contributed to the code.

Copyright is a legal issue and handled by the license that you chose for the GitHub project. This is mostly irrelevant to the bachelor's thesis as the thesis will presumably be a document, written by you, describing how you designed the code and what it does. Here you could also mention the contributions of GitHub user agustiza. The copyright of the thesis is yours and separate from the copyright of the code itself.

7
  • 40
    Given how Git works, it should even be pretty straightforward - line by line if you like - to indicate which portions are your own work and which portions are by pull request.
    – Ben Barden
    Aug 29, 2023 at 18:51
  • 1
    And you can easily cite the specific branch and revision that's OP's work, and there would absolutely be no confusion as to what was changed and what wasn't.
    – Nelson
    Aug 30, 2023 at 4:51
  • 4
    Just as a starter: with git blame source_code you can reveal quickly the last author of the lines, with a pipe (similar to git blame source_code | grep "name" -c) quickly count how many lines of the present form of file source_code are the result of name's work.
    – Buttonwood
    Aug 30, 2023 at 12:31
  • 1
    Most of this is a fantastic answer. I also decline to give legal advice on this site. But at least under U.S. law the bachelor's thesis may not have an entirely separate copyright from the program if the thesis primarily describes how the code was designed and how it works. The thesis in that case would likely be classified as a derivative work, which while having a separate copyright would not be separate in the way an average non-lawyer thinks of the term. It probably will not matter in practice, but if it's significant then OP may wish to consult with a lawyer in their jurisdiction. Aug 30, 2023 at 16:43
  • 2
    What happen to you is awesome. Now you can write another chapter about open source collaboration, how your software have been used by others and their contributions. The fact that they contributed to your project and not any other is of merit by itself! Just, maybe review your whole thesis to check that you never say that you are the only author, but that you started, wrote most, leaded, etc...
    – estebarb
    Aug 30, 2023 at 18:53
8

Can I still present my PicoBlaze assembler and emulator as my Bachelor thesis

Yes absolutely. Just make sure to mention that not all code in that repository is exclusively yours and that you only write about features that you implemented as if they were your work.

Apart from that, Git blame makes it quite easy to discern who wrote what code so I wouldn't even go into the hassle of detailing that. Just write your thesis (the writing is usually more important than the code behind it anyway) and maybe add a section about collaboration (aka what they added).

If doubt still remains, talk to your supervisor or your corresponding examination office, they are the ones making the calls at the end of the day and they know how to deal with it all.

2

Short answer is Yes. And that's the sign your work is already making an impact. Exception may be if GitHub you designed to be specifically like the way you designed but someone changed it significantly so it looked totally different and you are no longer a primary contributor .

0

It's awesome that someone used your code and repo already. You should talk with your supervisor about this. Any code written by you is only your work. You have to take full ownership of those parts and reason about what you did and why. If somebody else contributed to your codebase you need to mention the author. You can not take ownership of that code. But it's your project so you still need to reason about the code that was added. And how you interact with that code. Do you agree? Do you disagree? Do you keep it? A great way of dealing with this would be to test the code. Then you can argue the following: this is my project, this is the overall design, those parts are mine, and those were contributed by XY. To ensure quality I decided to run this set of tests. As they all passed I decided to keep this code. In those sections, you are not only an engineer but a manager of an open-source project. If you decide to test this code make sure to test your own code in a similar way so the argument of ensuring quality holds somewhat equal over the whole codebase. The goal of a thesis is to present the work you have done and back it up with research and evidence. It's also great for your career, you will most likely work in teams later. You already have some experience with that in your open-source project. Not many people can say that!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .