I'm a software developer with experience in CoreImage - 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.
My main question here is whether it's legal or not. My current points of consideration are:
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 "default" header in CoreImage.h file:
/* CoreImage - CoreImage.h
Copyright (c) 2014 Apple, Inc. All rights reserved. */
If it is protected - what exact part is protected and how? Say we could split this library in a few parts:
- Design - high level definitions and components, their meaning and relationship, i.e. "Filter", "Pipeline", "Kernel", etc. Irrespective of specific class/method names used later in API
- API - actual names of classes/methods, i.e. "CIImage", "CIFilter", "CIKernel", etc., names of methods used in code, etc.
- Compiled executable - actual CoreImage code compiled into executable binary, of no interest in current question, but I guess worth mentioning for the whole picture
Here I'm specifically interested in replicating "Design" part of this framework. Replicating API exactly name-to-name is not mandatory in my case, but very desirable.
My question is somewhat similar to Is it illegal to implement a patented algorithm or method and take advantage from it? one of the difference being that I don't know if CoreImage is patented at all.
Another point of consideration is this Oracle-Amazon case regarding use of API.
Yet another point of consideration is game design (i.e. ideas/mechanics) not being under copyright protection, source: this GDC talk.
So to rephrase:
- Is it fine to reimplement this framework at all?
- 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
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.
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.