Am I allowed to write functions that have names of matlab functions (copyright)?
18 views (last 30 days)
Show older comments
Boris Blagov
on 23 Jun 2018
Commented: Walter Roberson
on 25 Jun 2018
Hello everyone,
I am not really well versed when it comes to copyright laws. My question is, am I allowed to write a function and give it a name that exists as a Matlab function, for example from a toolbox? Am I allowed to share said functions?
I know that the code within a Matlab supplied function is copyrighted and is property of Matlab, but does this hold also for the names of the functions? For example, may i write my own function, which is called "mvnrnd.m"? Am I allowed to share such a function with someone else?
I can't imagine it would be, since I can have that function name in another coding language and i don't see how Mathworks can sue the other company for something so generic, but I prefer to ask anyways.
I am leaving aside the obvious coding issue if you have two functions with the same name.
11 Comments
Walter Roberson
on 25 Jun 2018
Mathworks does not permit its staff to give public interpretations of the license terms, except in the form of occasional "Solutions" posted under the Mathworks Support account. The correct avenue is to contact either Technical Support or Sales with specific scenarios.
Actual lawyers not working for Mathworks do not comment on these kinds of situations without a lot of talk about jurisdiction -- and talk about the difference between what the law says and what the case law is in that particular jurisdiction.
Accepted Answer
Guillaume
on 25 Jun 2018
Something that has not been touched on: while the name of a function is not copyrightable, the function API (function name + inputs and outputs) might be depending on your jurisdiction. As far as I know (I am not a lawyer), it's not copyrightable in the EU, but in the US the latest ruling is that they are (after an earlier ruling that they weren't).
This is very relevant for you as you are not just replicating a function name but the whole signature (if you are replicating a toolbox function).
More Answers (4)
Jan
on 25 Jun 2018
There have been reports in this forum about cases, in which using the name of a toolbox function without having a license for this toolbox, caused an error during the folder is included in the path - before the function is used. So beside the legal issues, there could be a restriction in the software.
I've shared a larger program with another lab, which did not have the Signal Processing Toolbox. It was used in my code only for a Butterworth filter. I've rewritten a function to calculate the filter parameters from scratch without taking a look into the original function to be sure. Now I'm using this workaround:
function vargargout = myButter(varargin)
persisent butterFcn
if isempty(butterFcn)
if ~isempty(which('butter.m'))
butterFcn = @butter;
else
butterFcn = @local_butter;
end
end
[varargout{1:nargout}] = butterfcn(varargin{:});
end
function [Z, P, G] = local_butter(n, W, pass)
...
end
Now Matlab's version is used, if it is available, and my one otherwise. This does not compete with Matlab's Signal Processing Toolbox. But if I write replacements of all functions of this toolbox and offer it commercially, I'd expect troubles.
Jan
on 23 Jun 2018
The names of the function are not covered by a copy right. Of course, they are not: imagine the built-in functions "i" and "j".
But it will be a bad idea to call your function like built-in functions of Matlab's toolboxes. Shadowing the built-in functions can cause serious troubles. After an experiment with a user-defined and buggy version of strcmp, my Matlab installation could not be used anymore: There was no chance to modify the path or to open the file for editing. I had to use an external editor to fix this.
It is very hard to guarantee that there are no collisions between user-defined and Matlab's functions. If you do not own all toolboxes or future versions of Matlab contain new functions, there is no chance to check this. You can use FEX: UniqueFuncNames to check at least the locally defined functions.
4 Comments
Walter Roberson
on 25 Jun 2018
Boris, you mentioned that you are in the EU. The entire EU has signed copyright treaties such that "sufficiently original" works are automatically copyrighted at the moment of creation, without any need to register the copyright. Registering the copyright might extend the legal protections available (depending on jurisdiction), but in any jurisdiction that has signed the treaties, the item is copyrighted upon creation even without registration.
Image Analyst
on 23 Jun 2018
The names are not copyrighted. I even know of some functions, skewness() and dataset(), that are being sold by a commercial company. Mathworks knows about that situation. There's no problem, other than being the MAJOR problem that you "put aside".
John D'Errico
on 25 Jun 2018
I am not a lawyer. But I would argue that it is the code that matters, and the code that has a copyright, which will reside in that code. The name of the function is not covered though. It cannot be. If anything, the name of a function might involve a question of trademark. But that is not the case. You will not find trademarks on the names of functions.
So you can distribute your own version of mvnrnd. It is arguably a poor idea, since your version of that code may well not be coded as well. And if it has subtly different functionality than the one that is supplied by MathWorks then you may be creating subtle bugs inside the code of those who use MATLAB and who have been given your code, possibly without knowing what was done. Such a bug could be difficult to track down.
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!