intellectual-property software
Is it legal to reimplement iOS algorithm/framework on Android?
<p>I'm a software developer with experience in <a href="https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html" rel="nofollow noreferrer">CoreImage</a> - very powerful native iOS/OSX framework for image processing. I admire its efficiency, understand how it works internally and want to roughly reproduce most essential parts of it on Android for commercial purposes.</p>
<p>My main question here is whether it's legal or not. My current points of consideration are:</p>
<ol>
<li><p>Whether this framework is patented or not. I haven't found any information about it and to be honest I don't even know where to look for. Is it protected from replication by default (copyright law)? They only thing I found is this &quot;default&quot; header in CoreImage.h file:</p>
<p>/* CoreImage - CoreImage.h</p>
<p>Copyright (c) 2014 Apple, Inc.
All rights reserved. */</p>
</li>
<li><p>If it is protected - what exact part is protected and how? Say we could split this library in a few parts:</p>
<ol>
<li>Design - high level definitions and components, their meaning and relationship, i.e. &quot;Filter&quot;, &quot;Pipeline&quot;, &quot;Kernel&quot;, etc. Irrespective of specific class/method names used later in API</li>
<li>API - actual names of classes/methods, i.e. &quot;CIImage&quot;, &quot;CIFilter&quot;, &quot;CIKernel&quot;, etc., names of methods used in code, etc.</li>
<li>Compiled executable - actual CoreImage code compiled into executable binary, of no interest in current question, but I guess worth mentioning for the whole picture</li>
</ol>
</li>
</ol>
<p>Here I'm specifically interested in replicating &quot;Design&quot; part of this framework. Replicating API exactly name-to-name is not mandatory in my case, but very desirable.</p>
<p>My question is somewhat similar to <a href="https://law.stackexchange.com/questions/66628/is-it-illegal-to-implement-a-patented-algorithm-or-method-and-take-advantage-fro">Is it illegal to implement a patented algorithm or method and take advantage from it?</a> one of the difference being that I don't know if CoreImage is patented at all.</p>
<p>Another point of consideration is this <a href="https://arstechnica.com/tech-policy/2020/01/oracle-copied-amazons-api-was-that-copyright-infringement/" rel="nofollow noreferrer">Oracle-Amazon case</a> regarding use of API.</p>
<p>Yet another point of consideration is game design (i.e. ideas/mechanics) not being under copyright protection, source: <a href="https://youtu.be/8eAW-7Js7NA?t=959" rel="nofollow noreferrer">this GDC talk</a>.</p>
<p>So to rephrase:</p>
<ol>
<li>Is it fine to reimplement this framework at all?</li>
<li>If it is - what's the best course of action? I'd like to preserve design AND public API, but if needed can reuse only design and rename all classes/methods</li>
</ol>
<p>UPD:</p>
<p>Just to make it clear - I don't have CoreImage source code (I guess no one besides Apple does) and I can't/don't intend to use it anyways. I don't have any particular code-written implementation at hand. My primary concern is all about Design.</p>
<p>UPD2:</p>
<p>I found many parts of this system to be patented so I think the question no longer stands. I'd still appreciate comments/thoughts on this topic.</p>

<p>Regarding patents, there is not likely to be a patent covering the whole thing but there might be patents covering aspects of it. It will be a very cursory view but you can use google patents to look for patents assigned to apple with key words that hit in relevant concepts.</p>
<p>Regarding copyright, the clone PC BIOS’s used a clean room design process to develop IBM compatible computers. It takes two separated teams and a few lawyers. The “clean” developers need to be people who do not know anything about the internals.</p>

<h2>written works including software are protected by copyright</h2>
<p>That means you can’t copy them or make a derivative work from them.</p>
<p>So, for example, your shaft ware can have a ‘Filter’ and ‘Kernel’, they just can’t use any of the same code. They can implement the same functionality but you would need to write the code to do it from scratch.</p>
