12

When attempting to re-implement a piece of user-space software, it can be quite insightful to analyse the kernel-calls that the original software makes (using a tool like strace).

If the information gleaned from the tracing tool were used to guide the re-implementation effort, would this make the re-implementation a derived work (and therefore subject to the original implementation's licensing requirements)?

Note that at no point is the original source-code analyzed, only it's runtime kernel-calls.

1
  • As far as copyright is concerned, no: reverse engineering a piece of software based on its observable behaviour (whether internal or external) is not copying. However, check that what you are doing is allowed by the license terms of the software that you are running. Commented Jan 7 at 19:40

2 Answers 2

15

You have to understand the difference between copyrights, patents and trademarks. Please read the quoted text below.

Copyrights protects only "original works of authorship fixed in a tangible medium of expression". It doesn't cover ideas, concepts, processes, facts and algorithms. Copyright covers the "fixed" tangible expression of ideas, concepts, processes, facts and algorithms.

Ideas, concepts, processes and algorithms are protected by patents.

I assume you want to create a software that mimics or copies part of the functionality of some other possibly copyleft-licensed open source software, and this software is in Linux userspace and makes kernel system calls.

Alternatively, you may want to create an open source software that mimics or copies part of the functionality of some other possibly proprietary software, and this software is in Linux user space and makes kernel system calls. Please note that you may not be allowed by the proprietary software's EULA to reverse engineer the software.

You must not copy the source code, documentation, images or videos from the original software, as those are protected by copyright law and may subject your software to the same copyleft licensing terms. However, the ideas, concepts, algorithms, UI/UX flows and/or processes can be copied from the copylefted software, if they are not protected by patents.

So, based on this, I would say tracing kernel system calls, and reimplementing them, would not be infringing copyrights and would not be considered the creation of a derivative work of the original software.

Some examples: NTFS is a proprietary filesystem in Microsoft Windows. SMB is a proprietary network file sharing protocol in Microsoft Windows. Open source Linux software were created for both of these, based on reverse-engineering. This does not infringe Microsoft's copyrights. Patents are another matter to check, of course.

From the U.S. Copyright Office FAQ page on Copyright In General:

What is copyright?
Copyright is a form of protection grounded in the U.S. Constitution and granted by law for original works of authorship fixed in a tangible medium of expression. Copyright covers both published and unpublished works.

What does copyright protect?
Copyright, a form of intellectual property law, protects original works of authorship including literary, dramatic, musical, and artistic works, such as poetry, novels, movies, songs, computer software, and architecture. Copyright does not protect facts, ideas, systems, or methods of operation, although it may protect the way these things are expressed. See Circular 1, Copyright Basics, section "What Works Are Protected."

How is a copyright different from a patent or a trademark?
Copyright protects original works of authorship, while a patent protects inventions or discoveries. Ideas and discoveries are not protected by the copyright law, although the way in which they are expressed may be. A trademark protects words, phrases, symbols, or designs identifying the source of the goods or services of one party and distinguishing them from those of others.

When is my work protected?
Your work is under copyright protection the moment it is created and fixed in a tangible form that it is perceptible either directly or with the aid of a machine or device.


On the legality of reverse engineering:

For U.S. law on reverse engineering, please see Reverse Engineering and the Law: Understand the Restrictions to Minimize Risks by Rahul Vijh.

Quoting from that article:

In short, to ensure you steer clear of any legal risk of reverse engineering, it should be performed only to the extent of allowances, such as for accessing ideas, facts, and functional concepts contained in the product. Be especially cognizant of EULA agreements that state “no reverse engineering”, copyright laws, and anti-circumvention provisions before proceeding to perform any reverse engineering on the product.

For EU and UK law on reverse engineering, please see Reconciling trade secrets and reverse engineering in the EU and UK by Eversheds Sutherland.

From EU Directive 2016/943 (16):

... Reverse engineering of a lawfully acquired product should be considered as a lawful means of acquiring information, except when otherwise contractually agreed. ...

I am not a lawyer and this is not legal advice.

6
  • Why do you say "copylefted software"? Commented Jan 7 at 2:11
  • 2
    Reverse engineering is legal if performed for software interopability. Public facing methods are often required for software interopability, so you are legally protected to reverse engineer them. Commented Jan 7 at 17:38
  • @Bergi Copyleft could have been introduced more gracefully here. As is, it reads like a typo. Given the inaccurate claims it might be. Commented Jan 7 at 17:40
  • 1
    @Questor Does this imply that some Reverse Engineering is not legal? Commented Jan 8 at 15:43
  • 1
    @Chuu That is a grey area. Its definitely legal for software/hardware interoperability in the USA. Commented Jan 8 at 16:31
1

Looking at system calls doesn't create a derived work. Of course, it also doesn't create an original work - it doesn't create anything. So just because you looked at system calls doesn't mean the thing you later create is derived work - but it also doesn't mean it is NOT a derived work.

Recording the system calls and playing them back may well be a derived work. Much like recording a song, or photocopying a photo.

Without typing out a hundred pages of case law, here's a general rule of thumb that often works for both copyright and simple courtesy:

One day or one week, look at the original thing and try to understand what it's doing. (Stephen King is slowly revealing traits of this character, or some software is building a lookup table).

Then put away your notes about HOW it does the thing.

The next week, figure out how you want to do the thing, without referring back to detailed notes about how the other person did it.

If you're learning from Stephen King, in your writing you may slowly reveal facts about the character - without referring back to the exact words he uses. Similarly for software. You might use a lookup table - without referring back to exactly how the other person implemented theirs.

In that way, you can do the same thing without directly copying the parts that involve some creative choices regarding HOW to do it.

Yes this is just a general rule of thumb. It's not a replacement for studying hundreds of cases.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.