[IPOL discuss] Patents and IPOL code

Pascal Getreuer getreuer at gmail.com
Tue Apr 5 00:50:00 CEST 2011

Hi all,

There are a growing number of IPOL articles that involve patented
algorithms, so it is useful to talk about how to handle this
carefully.  What I say below is my understanding of the situation---I
am not a lawyer---so please feel free to correct me and contribute
your knowledge.

# How to check whether an existing algorithm is patented?

If you plan to post code on IPOL for an existing algorithm, you should
check whether anyone has filed a patent on it.  You can do this using
patent search engines like

Unfortunately, even if no patent has been specifically filed on the
algorithm in question, it is conceivable that a patent exists for a
similar algorithm and that the patent claims are broad enough to cover
both algorithms.  So it is in general very difficult (i.e., requires
lawyers) to determine with confidence that an algorithm is not

# What does it mean if an algorithm is patented?

For our purposes, there are two concerns:
   1. Distributing code that implements a patented algorithm
constitutes patent infringement---even if you completely wrote the
code yourself.
   2. Similarly, distributing the program binary of a patented
algorithm constitutes patent infringement.

If a patent owner realizes that IPOL is distributing code for their
patented algorithm, they can sue IPOL.  But it depends on the patent
owner, and suing IPOL is the worst-case scenario.  It is more likely
that the patent owner would rather not go to court and would instead
negotiate to come to an agreement.

# How should we handle patented algorithms on IPOL?

My suggestion is we should state that code containing patented
algorithms is "for research and educational purposes only" and
reference the patent to show good faith.  This approach may help if a
patent owner does negotiate with IPOL on an infringement.  Also, since
other researchers will be downloading this code, we should give ample
warning of the patent issues.

More specifically, here is what I suggest.
   1. On the IPOL article, state above the source code links that the
code is "for research and educational purposes."  (Perhaps we should
say more here?)

   2. Within the source code archive, include a "license.txt" file
that references the patent that is implemented by the source code,
explains which source files contain the implementation, and warns that
these files or their binaries may not be redistributed without the
consent of the patent owner.  Then follow this with the usual language
for the license of your choice (e.g., BSD).  Here is an example
license for a project including the patented Hamilton-Adams
demosaicking algorithm:

Copyright (c) 2011, Your Name Here
All rights reserved.

The source file "dmha.c" implements the algorithm covered by U.S. Patent
5629734.  For this reason, the source files "dmha.c", "dmha.h",
"dmhacli.c" and its binary program "dmha" may only be used for research
and educational purposes.  Redistribution or commercial use is not
allowed without the consent of Eastman Kodak Company.

With the exception of the files mentioned above, redistribution and use in
source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
(the rest of usual BSD license follows)

   3. If your source archive has a readme, include the patent
explanation there as well.

   4. In the source files related to the patented algorithm, include a
warning at the top explaining that the file may not be redistributed.
Continuing with the Hamilton-Adams example, the files "dmha.c",
"dmha.h", and "dmhacli.c" should each have the following in the file
header comment.

 * This algorithm implemented in this source file is covered by U.S.
 * Patent 5629734, “Adaptive color plan interpolation in single
 * sensor color electronic camera."  Use of this software in source or
 * binary form is allowed only for research and educational purposes.
 * Redistribution or commercial use is not allowed without the consent
 * of Eastman Kodak Company.

   5. When the program binary is executed, print a statement like

    This program is for research and educational purposes only.
    See license.txt for details.

I hope that in this discussion we can refine the list above and
develop some sort of template.  This could then be applied uniformly
to IPOL code containing patented algorithms.


More information about the discuss mailing list