The challenge
The problem with software patents is that they are applicable even if you write your own code, without any knowledge of any patented invention. You may accidentally "reinvent" something that is patented. This makes de developing software like walking on a mine field.
Sometimes it gets even worse: you may use a technique that you think is obvious or widespread, and someone else manages to patent it in good faith. Or you develop in a country that does not recognize software patents and have no patent reflex. It is then difficult, time consulting and costly to try to invalidate the patent.
Last but not least, there are bad patents, that make life difficult on purpose.
How to find out?
Unfortunately, you don't easily find out if you breached a patent without knowing the patent. Moreover, the language used in patent descriptions could be very abstract making a search on keywords very unreliable.
Reading books like "The software IP detective's handbook", one can understand that patent infringement is a case by case analysis, and the tools used are mostly reverse engineering (to find out the architecture of the software and compare it to the claims of a specific patent).
Here some practical considerations that may help, not to avoid patent issues, but at least to reduce slightly the risks:
- Inform yourself about patents in the specific field of your software. Especially if your software is very specialized (e.g. search for "software patent hotel" and you'll find at least 2
patents related to hotel management software)
- Check for patents issued by your closest competitors (e.g. "software patent airbnb")
- If you implement an existing algorithm or a variation thereof, or use some formal protocols, check if the algorithm is patented or if some patents reference the algorithm (e.g search for "patent software LZW compression")
- Whenever using interfaces based on existing data structures, check if the organisations behind the data structure could have patented them (e.g search for "patent software ical")
- Whenever you implement a known API, check if the API itself could be related to a patent.
Fortunately, Google makes it easy to search patents on a topic, for example on sorting you'll find a couple of patents like this one, and patents can be expired as well, which can be good news. =
Perhaps AI revolution will give us more tools in this regard?
I'd suggest however not to worry too much about the patents in a first stage, because it's time consuming, might influence you and therewith increase the risk of infringement, and most of all, it's the best way not to write working software because of fear. Keep track however of the source of your ideas as you write the code, for later verification.
If big money is at stake, it might be better to preventively look out for a lawyer specialized in software IP.
Disclaimer: I am not a lawyer and this is not legal advice. It's only about sharing my own practical experience of software engineering. For legal advice, seek for a lawyer or a qualified legal expert in your jurisdiction