I found an interesting bachelor's thesis recently, with some ideas in it that I have not seen applied in any sort of library that I've come across before. Thus, I would like to create my own library to apply some of the ideas found in this thesis.

My question is -- as this thesis does not contain a copyright notice, am I free under fair use to make use of the "interfaces" defined in the thesis in my own open-source library (for what it's worth, this will probably be MIT licensed).

I have reached out to the author to clarify on the copyright status of the work, and have yet to receive a response -- but even if they do not give their blessing, am I still able to make use of their interfaces under fair use?

I know that in Google v Oracle, it was ruled that "declaring code" falls under fair use -- but the question is: What exactly is declaring code?

I put "interfaces" in quotes above, because the languages used in the thesis (Haskell and Purescript) do not have a concept directly comparable to interfaces in other languages. So this leads to some questions:

  1. Are Haskell data type declarations considered "declaring code" in the Oracle v Google terminology, thus making copying Haskell data type declarations fair use?
  2. Are Haskell type classes considered "declaring code" in the Oracle v Google terminology, thus making copying them fair use?

Type classes in Haskell are pretty similar to interfaces in other languages, so it seems plausible that they could be considered declaring code. However, data types seem a bit blurrier to me. Whereas from an object-oriented perspective, data types (such as, say, a linked list) might be considered "implementing code" rather than "declaring code" -- in Haskell, the equivalent:

data List a = Empty | Append a (List a)

would probably be considered "declaring" code: A List is either Empty, or a value a appended to another list. The data structure is the interface, in a sense.

This brings up another question with regard to the exact definition of "declaring code", given that there are entire programming paradigms in which everything could arguably be called "declaring code". Not to mention the fact that if, one tries to define "declaring code" to be "the types/interfaces defined by a program", and "implementing code" to be "the terms inhabiting those types/interfaces", this too faces problems -- as there are languages where the distinction between types and terms is blurred.

Have any legal scholars investigated these issues? Or is "declaring code" in Google v Oracle defined in such a way to decide what is and is not declaring code in some of the "gray cases" mentioned above? Does the distinction come down to intent, or the complexity of the "declaring code" perhaps?

2 Answers 2


The lack of a copyright notice is irrelevant, what matters is whether permission is granted. The material cannot be copied, except if the copyright holder grants you permission to copy. However, you might be able to create something legal and satisfactory on your own, because the underlying ideas are not protected. By way of analogy, you cannot copy the Turbo Pascal Numeric Methods library without permission, but you can study the logic of a module and write your own FFT routine.

The status of something as "declaring code" is entirely irrelevant to the court's decision in Google v. Oracle. What is relevant to the court's finding of fair use is that the content constituted 0.4 percent of the entire API, and the fact that the copied lines of code are inextricably bound to other lines of code that are accessed by programmers, allowing programmers to bring their skills to a new environment. The court found that he amount of copying was tethered to a valid, and transformative, purpose.


As user6726 says in their answer, the thesis copyright is owned by the author, and unless they give you a license you don't have permission.

However you probably don't need permission.

  1. The underlying ideas are not covered by copyright, so if they have some code or pseudo-code then you can translate that into a different language, or just implement it differently.

  2. If there is only one way, or a very small number of ways, to express an idea then it is not covered by copyright because writing it down is not creative. However identifier names and comments would be considered creative.

  3. Copying small fragments of code that include creative material from the thesis is almost certainly fair use because:

    • Your use is transformative; you are creating a new piece of usable software rather than just reproducing chunks of the original work. The fact that you are releasing the software as open source also helps: it makes your work subject to review and commentary and allows others to learn from it, just like an academic paper.

    • The copyright work is factual.

    • You are only copying a small part of the thesis.

    • You are not impacting the market for copies of the thesis (so the author doesn't lose money).

I say "almost certainly fair use" because its not definite until a court has said so. I can't imagine a court seriously entertaining a claim that this is not fair use, but it would cost both sides quite a lot in lawyers fees to get to that point.

Crediting the thesis author and referencing the thesis in your documentation also weigh slightly on the plus side in the fair use analysis.

  • Crediting the author also seems like the right thing to do ethically even if not legally required. Commented Aug 10, 2022 at 14:38

You must log in to answer this question.

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