Robby wrote:
> Hello,
> I am programming micro controllers in C language. It is obvious that the
> code must be programmed so to handle hardware inputs and outputs in a real
> time
> fashion. And therefore I am finding myself coding a kernel which retrieves
> hardware and software signals from lower level program and sending them off
> to a message queue for further processing. This is quite similar to the
> Windows ideology of processes its signals. I then use a message loop to
> retrieve these messages and send them to the appropriate winproc function.
> All this is done in a very similar way as we do win32 programming. Obviously
> I am not doing everything exactly as Windows does, but you get the idea.
> Therefore I have messages such as WM_PAINT, WM_CREATE and so forth. Except I
> call them KM_PAINT and KM_CREATE and so forth. Also I have created similar
> functions such as ShowWindow() and InvalidateRect() and so forth. Again,
> although I do use the same mesage and function names, their contents are not
> the same as the ones we use in Windows. Basically, instead of just doing a
> big program in C which would be totally unfamiliar to a new programmer, I
> have decide to use a Kernal which would look familiar to a C programmer and
> trying to use objects as much as possible.
> I don't know if this is the right community to ask my question, although I
> would like to know your opinion. My question is....given the fact that I am
> using similar names and programming mechanics as Windows is, is there any
> probabilities that I may run into any infringement issues?
> For example, a function like ShowWindow() will show a Window just as Windows
> does, but the contents of this function will be nowhere the same as the
> typical ShowWindow() function used in win32. Although it may have the same
> parameters?
> In your opinion am I headed for trouble if I continue this way?
> Your sincere feedback is appreciated!
Despite other people's response, there are those who deal with IP
technology and with lawyers to know the basic issues you need to
confront to protect your own products and also make sure you are
infringing on others.
At the end of day, there would be four possible claims:
- Copyright Infringement
- Patent Infringement
- Trade secret Infringement
- Trademarks Infringement
So where could you possible fall?
Copyright, unless you using Microsoft source code, you don't have to
worry about that.
Trademarks, Microsoft don't have a copyright and trademark on function
and variable names - not at this level. It would very weak case for
Microsoft to claim ownership of the term "ShowWindow()" However,
there could be patents based on new Business Methods. More on that later.
Trade Secret, these are ideas that are not documented, a secret, and
its quite possible Microsoft may have trade secrets. However, the
changes in the reverse engineering laws most likely nullified this -
and this I mean Microsoft secrets in Windows.
So I doubt you will infringing on anyone code as long as you didn't
use someone else software and claim it your own - i.e. COPY IT!
It is perfectly find to EMULATE a behavior, but this is where patents
law changes could play a role.
Patents, are there patents for signals to message queues? Possibly,
but that was 30-40 years ago and I'm sure the patents have expired.
Why? because millions of systems, such as process control systems are
based on such technology. Embedded system designers and programmers
would be in trouble otherwise. So the idea of hardware signal to
software message queue is not something Microsoft can stop anyone from
doing.
Since 1996, and again in 98 and 2000, the patent laws were relaxed to
remove the "Hardware" or mechanical aspect of it - meaning, software
patents or business methods because the common place. Gosh, even
BATCH files were frivolously patent since the changes in the laws.
In the old days, a patent was harder to get because it required a
unique element to it. The methodology followed by examiners was
called Marcus (Markus?) Analysis which simplistically means:
Given prior art ideas, A, B and C, you could not claim a patent P
P = A + B + C <-- NO PATENT
The law required that you have a UNIQUE, NEW and NON-OBVIOUS idea D
because you can claim a patent.
P = A + B + C + D <-- PATENT
This is very important. Lets use you for example:
Idea A: Signals
Idea B: Message
Idea C: Queue
No Patent = Signal + message + queue
These are all prior art ideas. Putting them together was probably not
enough. Why? Because those these are you can buy in a store
figuratively speaking. What is missing is the unique idea - software
algorithm or method:
Idea A: Signals
Idea B: Message
Idea C: Queue
Idea D: Software Method or Algorithm
Patent = Signal + message + queue + method
The patent would cover D - the "Optimized Signal to Message Method."
Also, in the past, and even today, the better patent tries to
encapsulate a wide range of applications, so you throw in an
application to help stop a competitor:
Idea E: GUI Display
Patent = Signal + message + queue + method + GUI
So its very possible to have patents, but I think they are expired at
this point. If anything, you have a the better Mouse Trap, which is
the goal of patents to allow inventors to build the better idea for
society, not just protect the original inventor:
Prior Art Ideas: A, B, C, E
New Idea: D1
Patent = A + B + C + D1 + E
where D1 is a
"Better Faster, Optimized Method for GUI Display Systems Using
Carbon Based Query Dissemination Techniques"
However, today, the laws were relaxed so that you can take just take
prior arts ideas, put them together to claim a patent - these are
called business methods. This is whats creating all the patent
problem today because you don't even need actual software, just the
ideas and they can be old. Markus Analysis is not being applied and
the burden is on others to claim a patent is frivolous or no good.
The inventor doesn't even have research all the prior art like he had
to in the past.
The sad part is people have gone back in time and claim business
method patents on old prior art methods which at the time were not
patentable themselves. But today they are.
What that means, you don't know what ideas are patent. You need to do
the research or get a lawyer to do it for you. I don't think you have
to worry for old ideas like ShowWindow(), but if you come up with a
better "ShowWindow()" method even you can claim a patent, and this is
what Microsoft guards against - frivolous patents trying to troll on
old ideas when they fill many patents themselves.
I think based on what you said, if you not copying software, you don't
have to worry about copyrights, trademarks and trade secrets. The
names use for variables, constants and functions I doubt would be an
issue.
But you probably need to concern yourself with business/software
patents. They might be frivolous and dubious, and probably in your
case, nothing to worry about, but a patent protection comes from the
fact that it COST money to fight it. And its easy for a big company
to scare the little guy.
With that said, don't just listen to me. I am just expressing
experience in IP area. I know a lot about it, and even participated
as Software Expert witness in several cases. But I don't carry the
badge and if you are concern, find yourself a good IP lawyer, befriend
him because if you are serious, you will need one that you can speak
with a lot and that could be costly.
Finally, of course, if you are thinking of patenting this "cloning"
you are doing - that isn't going to help your cause. Might even piss
off Microsoft. :-) But unless you reach some level of market, like
1-2%, I doubt they will bother you. But then again, they might to set
precedence. Again, I doubt there is anything here. But you never know
what frivolous patents are out there.
---