jueves, 22 de diciembre de 2011

Patent 5,946,647

Let us imagine you are working on software for a mobile phone. When an SMS text message comes in you might think it would be cool to display it and highlight any email addresses or phone numbers in it. The user would tap an email address to add it to his address book, or tap a phone number to call it. It is a fairly obvious idea.

There are a few different ways you could implement it in software. I would probably have a bunch of regular expressions that matched phone numbers and email addresses, and for each type of match there would be a list of things that you could do. Have a think about what you might like to appear in a pop-up menu after you tapped an email address that appeared in a text message on your phone. I bet you can think of two or three things. Later you might think of new things to do with an email address, or new things that appear in a text message that could be highlighted so the user can tap them to perform actions on them. For example if someone sends a message saying "meet me at 7pm", the user could tap where it says "7pm" and this time could pop up in the calendar to show whether there are already any appointments at 7pm. There are lots of things like this you could do.

To handle the possibility that you will think of these new ideas in the future, you write your software in a general way. You design general concepts like a pattern matcher that can look at some text and decide whether it is a phone number or an email address or some other text that you have not thought of yet. This sort of thing is done so often in software that the regular expressions I mentioned above were invented. This is a notation for describing strings of characters. For example the expression [0-9]+pm matches one or more of the digits 0 to 9, followed by the letters 'pm'. Because this is done in software so frequently there are freely available software libraries that anyone can use and that given a text message and a regular expression will spit out a list of all the matching items in the text message.

There is some work in hooking up the various parts, but the point is that all the parts are known to programmers. We all know when regular expressions are useful, and we can all imagine how you would use lists of items that display actions such as "Add to address book" on the screen and then perform the action when activated by the user. I could write some code that would solve this problem in a general way in less than a day from first hearing a vague description of it.

The point is that it is obvious to anyone who writes software. Solving problems like this involves putting together some well known pieces in well known ways. I am emphasizing how obvious this sort of thing is.

The existence of patent 5,946,647 is not obvious. I can not really think of how I would find out about it without reading every single patent and I can not think of a guaranteed way to even know what to look for.

But if I write my obvious code in half a day, there is a good chance I would violate patent 5,946,647.

It is not certain. I have read the patent and it manages to convey the obvious idea in far too many words. So many that I would never be sure whether any given implementation fitted the patent. But there are only so many ways to do something this simple in software, and truly original ideas are rare. So the likelihood is high.

And Apple sued and a judge ruled that HTC has violated the patent and as a result will not be allowed to import devices with this software into the USA. This sucks.

No hay comentarios:

Publicar un comentario