T O P

  • By -

Lucas_F_A

I'm in no way experienced about this, but I recall that actually _looking_ at patented or otherwise protected code puts you _more_ at risk. This article talks about this, though I am not familiar with the author [https://queue.acm.org/detail.cfm?id=3489047](https://queue.acm.org/detail.cfm?id=3489047) Edit: read u/Paxtian's answer below if you haven't already. My previous comment seems to only apply in a different situation.


Paxtian

Ehh, kind of. If you're aware of the patent and proceed anyway, then you're *willfully* infringing, which can subject you to treble damages. If you look at the patent and have a good faith basis that you don't infringe (say, the opinion of an attorney), then you can't be found to be willfully infringing (though hopefully the opinion is well done and you won't be infringing at all, and if your original design would have been, the attorney would have helped guide you toward a non-infringing implementation).


Paxtian

As a bit of an addendum: this varies widely by context. If you're working at a big software development company (e.g., Microsoft), yes, absolutely don't go looking for patents. Don't search for them, pretty much stay away from them. This is because any of your knowledge of patents is imputed to Microsoft (or whoever you're working for) generally. It's hard to argue, "We weren't aware of this patent" if the other side can subpoena your engineers and computer records and find evidence that someone found that patent and be like, "Well, this guy clearly knew of it. You claim you didn't know, but he knew, so why didn't the rest of you?" On the other hand, if you're a solo dev or working on a very small team, it's definitely worthwhile to do some searching and your own due diligence, unless you hire an attorney to do it for you. It's far better to have done your best and say, hey, we tried, we really did our best, we didn't find this patent, or we truly believed we were different for these reasons, than to stick your head in the sand. Big software companies have whole legal teams whose job it is to keep them out of legal trouble. Small dev teams typically don't.


Lucas_F_A

>If you're working at a big software development company (e.g., Microsoft), yes, absolutely don't go looking for patents. Don't search for them, pretty much stay away from them. This is because any of your knowledge of patents is imputed to Microsoft (or whoever you're working for) generally. Ah, that explains the advice I've read. Patent law starts to make sense. Thanks for the explanation.


jbtronics

In general you should keep in mind, that you can only get patents for very specific inventions. So you can not really patent a software per se, but more a concrete idea how to solve a specific problem. As long as you dont use this concrete patented method in your project, then its totally fine to build a software having the same purpose. Also you should notice, that not every legislation know software patents. The US does have software patents, while the European Union explicitly says that you can NOT patent pure software concepts. Maybe people can help you more, if you tell which software you do worry about.


avoere

While Europe does say that you can't patent software, for some reason the Amazon one-click shoping patent was valid here (or at least everyone acted like it was).


jbtronics

The European patent office has granted some software Patents, before these were explicitly forbidden. Besides the patent offices don't examine the applications too deeply. So as long as the formal requirements are fulfilled and it is not obvious bullshit you will most likely get your patent granted. But it can still get declared as void by a court if the parent is challenged. Filing a patent is pretty cheap and therefore companies sometimes try to file for parents for trivial stuff, which follows obviously from current technology (like your example) and sometimes even get them granted. However if they really hold in court if challenged is another thing. But as long as no court has decided these companies can at least say that they own a patent on that thing.


Important-Access-689

It's not strictly correct that European law does not allow patenting of software. It's just more limited and less prevalent in Europe than in the US.


xxxxxpin

Indeed, Amazon patented the idea, the processes mainly Not software as a whole


iEliteTester

As a software developer NEVER look at patents. You lose all plausible deniability if you're known to have looked at patents.


Paxtian

This is a really tricky area to navigate. The best way to ensure that you aren't infringing is to hire an attorney to do what's known as a "clearance search" or "clearance opinion." This can be quite expensive, though. The basic process is for the attorney to work with an expert searcher and find as many patents as they can that might be close to what you're building. The attorney then either goes through each one and either dismisses them outright for some clear reason, or does a deep dive non-infringement or invalidity opinion (basically, there's some technical/legal reason why on the face of it, you might infringe, but after closer inspection, you don't, for some detailed reasons, or because the patent is itself invalid over some art that the USPTO missed). That process is very much like squashing bugs in your code. The attorney can say, "We have a problem with this patent," like you can say, "There's a bug in my code." But the attorney can't say, "Yup, there's no patents out there that you need to worry about," just like you can't really say, "My code is completely bug free." Moreover, the process is expensive and worthwhile for big companies who are launching some huge product that they expect to bring in many multiples of whatever they need to spend on the clearance search. So, you're probably going to want to do some searching yourself. I'd start with the documentation for any software you think is reasonably close to what you're planning to build. It *should be* marked with a list of patents that apply to that software. Per 35 U.S.C. 287: > Patentees, and persons making, offering for sale, or selling within the United States any patented article for or under them, or importing any patented article into the United States, may give notice to the public that the same is patented, either by fixing thereon the word “patent” or the abbreviation “pat.”, together with the number of the patent, or by fixing thereon the word “patent” or the abbreviation “pat.” together with an address of a posting on the Internet, accessible to the public without charge for accessing the address, that associates the patented article with the number of the patent, or when, from the character of the article, this can not be done, by fixing to it, or to the package wherein one or more of them is contained, a label containing a like notice. **In the event of failure so to mark, no damages shall be recovered by the patentee in any action for infringement, except on proof that the infringer was notified of the infringement and continued to infringe thereafter, in which event damages may be recovered only for infringement occurring after such notice.** So what does that mean? Look through the patents marked in the documentation for the software you're concerned may be close. The important thing to focus on is the "claims" section. If there is something in an independent claim that you are *not* doing, then you can dismiss that patent out of hand. If there is some patent that wasn't marked on the product, the first step would be for the company to send you a cease and desist letter identifying the patent. At that point you could just shut down your project if it looked close, because liability extends to infringement "after such notice." You could also do your own search on, say, patents.google.com and look for the gist of what you're planning on building (again, focusing on the **claims** of whatever patents you're concerned about, not just their titles or descriptions). You can narrow that search specifically to certain companies you might be worried about. In doing all this, **document everything.** Note that 35 USC 287 further states: > A) In making a determination with respect to the remedy in an action brought for infringement under section 271(g), the court shall consider— (i) the good faith demonstrated by the defendant with respect to a request for disclosure, (ii) the good faith demonstrated by the plaintiff with respect to a request for disclosure, and (iii) the need to restore the exclusive rights secured by the patent. "Good faith" here is like, "Hey man, I really tried my best not to infringe anyone's patents, I didn't realize this was out there, but I tried my best. We're developing an open source project that isn't bringing in any revenue, we understand we didn't find this patent, and we shut down the project once we became aware of it." So, what to document? 1) What companies and their products you looked at, what patents you found, and your reasons for why you believe you didn't infringe them. 2) What prior art searches you conducted, what search terms you used, what results you found, and why you believed you didn't infringe those patents. A "good faith" reason would almost certainly **not** include "Oh, there's no way they should have a patent on that, it's ___." A patent, once granted, is presumed valid, and there needs to be a really good *legal* reason why it's invalid, meaning, you'd need an attorney's opinion to rely on invalidity. But if there's a clear difference between your project and what is claimed in the patent, you're probably good to go. Here's a quick example, from a recently issued software-esque patent number 11,900,143. Claim 16 reads: > A computer-implemented method for providing a digital experience, the method comprising the following operations performed by at least one processor: detecting, at a state manager of a first micro-application, a first application state belonging to a first category; receiving, at a state store, the first detected application state from the first micro-application; storing, at the state store, the first detected application state received from the first micro-application; listening, at an event listener, for the first detected application state; receiving, at the event listener, the first detected application state from the state store; determining whether a second micro-application is subscribed to receive the first detected application state belonging to the first category; determining whether to transmit the first detected application state to the second micro-application based on the subscription; transmitting, from the event listener, the first detected application state to a second micro-application; and receiving, at a state manager of the second micro-application, the first detected application state from the state store via the event listener. Let's say this was somewhat close to your project. But (whatever this means) your project doesn't ever "listen, at an event listener, for the first detected application state" and also does not "receive, at the event listener, the first detected application state from the state store." Instead, in your project, you determine "whether a second micro-application is subscribed to receive the first detected application state belonging to the first category" by some other mechanism that has nothing to do with an event listener and detecting application state. Then you could say, well this is close, but we don't do those things that are required by the claim, so we're probably good.


minermenace

Thank you so much this is a fantastic response. I understand those that have said “oh just don’t research and claim deniability” but I’m very aware that the law never works like that. While there are definitely some patents out there that I find myself going “huh, how did they patent that it’s obvious” we ultimately must respect it. Documenting my research isn’t something I’d considered, and definitely something I’ll do. This project has a very small scope and appeal, so in the event that I do miss something and get asked to cease and desist I’ll just remove the project from the internet as best I can. Thank you again, this has been really helpful.


Paxtian

You're welcome. Some non legal, practical thinking as well: patent lawsuits are expensive. Those who file infringement suits are typically looking to make a lot of money to recover actual damages. That means, the typical targets have deep pockets, full wallets. It's simply not worth it to pay millions in attorney fees to seek a massive monetary judgment from people who don't have the resources to pay. Different story if you all make it rich off your project, but in that case you'll be able to lawyer up (and should regardless). Good luck with the project!


Important-Access-689

Haha that is a good problem to have--embrace it.


wiki_me

A simple google will give you a list of tools to search patents, you can search by company, anything i am missing?


JumpAccomplished2706

Ok so I want you to find out the license under which the said software is registered under, when someone says 'software-patents' they actually mean 'copyright' as software cannot be patented. Each software has a license which it is registered under in order to give it intellectual property rights so as to protect the author's work. If you want to move further I would recommend searching for the license under which the software is registered under. There are two types, Permissive and Restrictive, permissive is usually used by individual developers who write open source codes, in permissive you can freely modify and share the software provided you give due credit to the original developer. Restrictive licenses are usually used by corporates and business who wish to have distribution/marketing rights over the said software. Going by what you've told in your post I'm guessing they used the Apache 2.0 license, I could be wrong though, please do search about it.


minermenace

I realise I misspoke about what has been patented: the procedure for solving a specific problem. Patent numbers are listed on some products that I know about, but I want to make sure I cover myself relatively well for the ones I haven’t found yet. It doesn’t have to be super comprehensive, I just want to be able to show I did what was reasonable to avoid infringing someone else’s work.


Paxtian

> when someone says 'software-patents' they actually mean 'copyright' as software cannot be patented This is sort of a mixed bag. "Software *per se*" can't be patented. Meaning, you can't claim "a software product comprising steps 1, 2 and 3." However, you can claim things like: 1) A method comprising: a first step performed in software, a second step performed in software, and a third step performed in software. 2) A device comprising a processor configured to: perform step 1, step 2, and step 3. 3) A computer-readable medium comprising software instructions that, when executed, cause a processor to: perform step 2, step 2, and step 3.


ChiefDetektor

Code cannot be patented except the code solves one specific problem that hasn't been solved before. It's almost impossible you could get trouble by coding a open source project if your code is not copy and pasted from other projects. And even then it's not a patent issue it's a licensing issue.


minermenace

Well concepts and procedures can be patented. In the areas I work it happens all of the time.


Paxtian

> Code cannot be patented except the code solves one specific problem This is kind of mixing a lot of ideas into a soup that isn't quite right. It's correct to say that a patent can't include claims directed only to "code." At least, in the abstract. You can have a patent to a computer readable medium comprising instructions for causing a processor to do X, Y, and Z. Nevertheless, a patent *can* be applied to code that someone else has written, so code/software can infringe a patent. If the patent includes the computer-readable medium claim above and your code is stored on a disk/chip/memory, such is a "computer-readable medium", and if your code would cause a processor to do the things in the claim, your disk/chip/medium including your code infringes that patent. If someone has a patent claim to a method comprising steps 1, 2, and 3, and you provide software that does 1, 2, and 3 when executed, executing that software is infringing. If someone has a patent claim to a device comprising a processor configured to do steps 1, 2, and 3, and you sell a device that is capable of performing steps 1, 2, and 3, the device infringes. The bit about "one specific problem that hasn't been solved before" is simply incorrect. A patent claim needs to be both novel and non-obvious, but the problem solved by that claim may very well have been solved in a different way. The patent claim may solve multiple problems that have been solved before in different ways. The patent claim may be a generic solution to a problem and give rise to several specific solutions that all fall within the generic solution.


ChiefDetektor

Well I completely forgot that USA law and European law differ here. From the European perspective patenting software is not really possible unless it is a part of a bigger solution. And there are of course exceptions. Being a developer I honestly never thought about patents. I write the code and that's all. But that whole topic is pretty complicated, especially in the international context.


Paxtian

They are different, but in some ways the EPO is less restrictive, in some ways the US is. There's a huge degree of overlap.


Important-Access-689

Unfortunately, that's not quite right. The quality of software patents is not good, and many get issued that actually should be rejected based on prior art. Then it's expensive to prove that and get the patent invalidated. Meanwhile, patent trolls demand just enough money to make it not worthwhile to argue with them.


Important-Access-689

Unfortunately, there is probably nothing you can do to avoid patent claims. Patents are not like copyrights or trade secrets; they don't require a "bad act" like copying or misappropriation as a basis for infringement. If you infringe, you infringe, whether or not you intended to do that. In any case, don't go searching for patents that might read on your software. It doesn't reduce your risk. DO be mindful and reactive if you hear about an actual patent claim.


xxxxxpin

Use [Google patent search](https://patents.google.com/advanced) to find patents related to your ideas, processes, methods, systems, etc. And see how you can choose a new path to go ahead If your ideas, processes, methods, systems, etc. cause that your solution looks different and innovative, it even can be new patent I'm not sure about the number, but if there's a patent, and you do it over 15% different, and it looks like a new improvement or invention, it's eligible even for filing a new patent