Software development often requires the usage of libraries, which are often open source and licensed to the user. While some of these licenses allow for free and unrestricted commercial use, like the MIT licence:
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction...
Others, like the GPLv3, are a more restrictive
- You are not allowed to claim patents or copyright on the software. Moreover, you are obligated to display a copyright notice, disclaimer of warranty, intact GPL notices, and a copy of the GPL.
- You are not allowed to change the license or introduce additional terms and conditions.
- You are under the reciprocity obligation, which means you are obligated to release the source code and all of the rights to modify and distribute the entire code.
My question is, is there a legal definition for the bounds of these types of agreements? A lot of the time, complex projects are broken into a series of sub-sections, or even sub applications. For instance, consider a use case where two separate devices are used in a general process:
- load the data
- process the data (contains a reference to a library licensed with GPLv3)
- transmit the data
- receive the data
- display the data
would all of Device 1 fall under GPLv3? Just the portion which processes data? or would both Device 1 and Device 2 fall under GPLv3 because they are both part of a system?
A lot of the time executables on a computer can function like Device 1 and Device 2. If these, instead, are communicating applications on a single machine, and not separate devices, how far would libraries like GPLv3 reach then?