Legal Issues of API/Interface Duplication
I would like your opinion on any potential legal issues associated with Application Programming Interface (API) or general interface duplication/copying/idea-borrowing (by that I mean creating a similar interface, though not necessarily one intended to provide cross-compatibility).
This is perhaps kind of a stupid question (since there seems to be plenty of precedent suggesting it's okay), but since a few quick searches didn't seem to bring up any particularly useful information, I figure I should ask.
My questions are (and I'm not looking for "official" legal advice, just your opinion and general knowledge on the matter):
- Is is okay to duplicate the API or interface of a library? Or to ask a different way, can an API or other programming interface mechanism be copyrighted?
- Is it okay to borrow from the design of an interface (obviously this one doesn't apply if the answer to the above question is that it's okay to copy interfaces).
There seems to be a reasonable amount of precedent suggesting it's okay, most notably the Wine project (which presumably wouldn't exist if Microsoft could copyright it's API). And I think I remember reading something about a lawsuit between Apple and Microsoft over the window-based GUI user interface concept, which I guess failed, although that's a somewhat different kind of "interface" (though arguably similar enough that the same logic would apply).
To explain my reason for asking this, I'm considering borrowing interface ideas from a commercial windowing toolkit in the creation of my own toolkit (mostly as a learning project, but I would like to be able to release it if I desired). The reasoning is that if I design the interface in a similar manner, I can possibly avoid having to refactor it later on when I discover that I've created an illogical interface organization (essentially standing on their shoulders for the organization considerations).
So anyway, I would like to hear what you think. Sorry if my post is a little long; just trying to be thorough. Cheers! :-)
Here is what I found here: http://law.bepress.com/cgi/viewcontent.cgi?article=3925&context=expresso
So it's not just a matter of having the rights or not, but also how you licensed the software and/or documentation from which you'd like to extract the interface API from and duplicate.
-cb
Quote:
Copyright was eventually chosen as the main legal vehicle for software protection, although patents are currently becoming the new battleground for further legal protection. However, because the current ruling for interoperability removed copyright protection for interfaces and structure as well as for reverse engineering, closed source software licences often tries to compensate by adding such rules in the licence itself as part of a contractual agreement. For example, inthe end-user licensing agreement distributed along with Adobe Premiere, a popular video editing application from Adobe Systems, there is such a clause:
Quote:
“You also agree not to reverse engineer, decompile, disassemble or
otherwise attempt to discover the source code of the Software
except to the extent you may be expressly permitted to decompile
under applicable law, it is essential to do so in order to achieve
operability of the Software with another software program, and
you have first requested Adobe to provide the information
necessary to achieve such operability and Adobe has not made
such information available. Adobe has the right to impose
reasonable conditions and to request a reasonable fee before
providing such information. Any information supplied by Adobe
or obtained by you, as permitted hereunder, may only be used by
you for the purpose described herein and may not be disclosed to
any third party or used to create any software which is substantially
similar to the expression of the Software.”
So it's not just a matter of having the rights or not, but also how you licensed the software and/or documentation from which you'd like to extract the interface API from and duplicate.
-cb
Oversimplified non-legal and lots of special case explanation:
Purely functional information cannot be copyrighted. This includes function prototypes and class interfaces.
Borrowing from their implementation is a no-no, but the function declarations (prototypes) are basically unprotected.
If all you are trying to do is learn different ways to organize your code and you legally have access to that code, then it is just fine.
Purely functional information cannot be copyrighted. This includes function prototypes and class interfaces.
Borrowing from their implementation is a no-no, but the function declarations (prototypes) are basically unprotected.
If all you are trying to do is learn different ways to organize your code and you legally have access to that code, then it is just fine.
I guess I wasn't QUITE thorough enough. I am speaking strictly of the interface here, not implementation code. I'm quite aware that "borrowing" source code without the proper license is illegal. I'm talking about the sort of thing the Wine project is doing: creating a compatible (or mostly compatible) interface, but with a completely new implementation (using only interface/API documentation as a reference).
Another similar case would be the Win32 header files used by GCC. As I understand it, they would kind of be a duplication of the interface (I'm suspect you can copyright header files, or there probably wouldn't be GPL notices at the top of just about every GPL library source file, header or not, that I've ever seen). The difference in this case of course is that while the interface may be duplicated, the implementation (the DLLs containing the code) are not. I wonder if that difference matters much?
cbenoi1:
It sounds to me like they're talking about reverse engineering the implementation in order to figure out exactly how the interface works (to find undocumented features/bugs), and/or because the interface documentation has not been made publicly available. I'm talking about using publicly available documentation; no reverse engineering. (Hmm... I didn't make that clear either. I'm talking about a commercial package with freely available documentation in my specific case, although that license clause from Adobe is quite interesting. It would seem to suggest that you can at least attempt to limit someone's ability to copy your interface. Thanks for that link!)
Thanks guys!
Another similar case would be the Win32 header files used by GCC. As I understand it, they would kind of be a duplication of the interface (I'm suspect you can copyright header files, or there probably wouldn't be GPL notices at the top of just about every GPL library source file, header or not, that I've ever seen). The difference in this case of course is that while the interface may be duplicated, the implementation (the DLLs containing the code) are not. I wonder if that difference matters much?
cbenoi1:
It sounds to me like they're talking about reverse engineering the implementation in order to figure out exactly how the interface works (to find undocumented features/bugs), and/or because the interface documentation has not been made publicly available. I'm talking about using publicly available documentation; no reverse engineering. (Hmm... I didn't make that clear either. I'm talking about a commercial package with freely available documentation in my specific case, although that license clause from Adobe is quite interesting. It would seem to suggest that you can at least attempt to limit someone's ability to copy your interface. Thanks for that link!)
Thanks guys!
> license clause from Adobe is quite interesting.
> It would seem to suggest that you can at least
> attempt to limit someone's ability to copy your
> interface.
Asking if it's ok to copy an interface / API bears the question "Where did you get that interface / API documentation in the first place?". As you can see with the Adobe Premier example, you need to buy their SDK and agree not to make a competing product. So there is no straight and cut answer; it depends on the licensing agreement of the product you are duplicating the interface / API from, not solely the Copyright Act.
> I'm talking about using publicly available documentation
I'd be interested in knowing what you mean by "publicly available".
-cb
> It would seem to suggest that you can at least
> attempt to limit someone's ability to copy your
> interface.
Asking if it's ok to copy an interface / API bears the question "Where did you get that interface / API documentation in the first place?". As you can see with the Adobe Premier example, you need to buy their SDK and agree not to make a competing product. So there is no straight and cut answer; it depends on the licensing agreement of the product you are duplicating the interface / API from, not solely the Copyright Act.
> I'm talking about using publicly available documentation
I'd be interested in knowing what you mean by "publicly available".
-cb
By publicly available, I mean publicly available (all I have to do is go to a web page to look at it, no fees, no accepting contract agreements, just like you can go to msdn.microsoft.com and view documentation for the Windows API). Of course that doesn't mean it's not copyrighted (it obviously is), and there may even be a license attached to it somewhere down in the footers or something (just not one you have to click an "Accept" button on).
Here's exactly what I'm wanting to do: I want to create my own little windowing toolkit for D, but I would like to use the Qt documentation as a reference for how I should go about designing the class/interface organization (see http://doc.trolltech.com). I'm not intending to directly copy it or be directly compatible with it, mostly I just want to use it for layout inspiration.
The more general question of whether it's okay to duplicate an API/interface is mostly because I didn't find anything obvious talking about the legal aspects of doing that (I rather expected to find something on the Wine site about it, seeing as it's probably the pinnacle of interface duplication, but didn't see anything). Obviously if it's okay to duplicate an interface in the general case, then it's certainly okay to draw inspiration from it's organizational layout.
And obviously I should have split my original question into two parts. [smile] One part for the general case, and one part for my specific case. Well, we learn as we go!
Here's exactly what I'm wanting to do: I want to create my own little windowing toolkit for D, but I would like to use the Qt documentation as a reference for how I should go about designing the class/interface organization (see http://doc.trolltech.com). I'm not intending to directly copy it or be directly compatible with it, mostly I just want to use it for layout inspiration.
The more general question of whether it's okay to duplicate an API/interface is mostly because I didn't find anything obvious talking about the legal aspects of doing that (I rather expected to find something on the Wine site about it, seeing as it's probably the pinnacle of interface duplication, but didn't see anything). Obviously if it's okay to duplicate an interface in the general case, then it's certainly okay to draw inspiration from it's organizational layout.
And obviously I should have split my original question into two parts. [smile] One part for the general case, and one part for my specific case. Well, we learn as we go!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement