How two lines of code can infringe on a software patent

Italiano

        while ping -c1 $IP > /dev/null; do
        sleep 1; done; echo Connection lost

This tiny program infringes on a software patent: EP 0850441: Method of Monitoring a Computer System.

How can this be?

In order to decide whether something is monopolised (“protected”) by a patent, one has to look at the patent's claims. (In fact the claims are the only interesting parts of a patent because they tell us what the patent forbids us to do. The rest – the so-called description of the “invention” – must be there in order to get the patent granted, but it does not help you in front of a court if you can prove that you are doing something completely different from what the description says – if it says anything at all. It are the claims, that matter, nothing else.)

Claim 1 of EP 0850441 reads as follows:

A method of monitoring a computer system (10), comprising a plurality of client computers (12, 13, 14), at least one server computer (15), and a wirebased or wireless network (11), by means of which each unit in the system is operatively connected to at least one other unit in the system, characterized by the steps of continuously collecting information about at least some of the client computers (12, 13, 14) in each respective client computer; supplying the collected client computer information to an alarm unit comprised in the system (10) with the network (11) acting as information carrier and in accordance with the same network protocol(s) that is/are normally used in the computer system (10); comparing in the alarm unit the client computer information received with previously received client computer information; and generating an alarm signal by means of the alarm unit, if the difference between the client computer information received and the previously received client computer information is larger than a predetermined amount of information.

In order to understand this, let's take a deep breath and read it again, step by step.

A method of monitoring a computer system (10), comprising a plurality of client computers (12, 13, 14), at least one server computer (15), and a wirebased or wireless network (11), by means of which each unit in the system is operatively connected to at least one other unit in the system, …

This means: A network with at least two computers.

Please note the many words (“wirebased”, “unit”, “operatively connected”, …) that do not carry any information but make sound the claim “technical”. In order to get the patent, the software must be “technical” – which means exactly that these words must be present in the patent application.

But let's continue:

characterized by the steps of continuously collecting information about at least some of the client computers (12, 13, 14) in each respective client computer; …

Each computer collects information about itself. That's what a computer does all the time anyway, so we may simply forget about this part.

… supplying the collected client computer information to an alarm unit comprised in the system (10) with the network (11) acting as information carrier and in accordance with the same network protocol(s) that is/are normally used in the computer system (10); …

Well, we do not only have a computer network. We actually use it. We even use it for the purpose it was made for: Transferring data.

In this case the data is some information about the computer itself. Okay – why not? Everyone does that all the time. But let's continue:

… comparing in the alarm unit the client computer information received with previously received client computer information; and generating an alarm signal by means of the alarm unit, if the difference between the client computer information received and the previously received client computer information is larger than a predetermined amount of information.

This is the interesting part: One computer (the “alarm unit”) generates an alarm when it detects that something has changed. Heureka!

So claim 1 of EP 0850441 can be summarized as follows:

One computer checks, using the network, whether some property of another computer has changed, and generates an alarm if it did.

Now let us analyse our small program. What does it do?

        while ping -c1 $IP > /dev/null; do
        sleep 1; done; echo Connection lost

For a programmer who reads such programs all day long, it is clear that “$IP” stands for any computer on the network (its IP address). So we can run this program on one computer in order to do something with another computer.

What does our program do with the other computer? The meaning of “ping -c1 $IP” is: Send one “question” to the other computer, and wait for its answer. That's what the ping command was written for: Ask a computer on a network: “Are you there?”

As long (“while”) as the answer is “yes”, our computer does nothing but to wait (“sleep”) for one second, and then repeats the question. (The “> /dev/null” part means only “But do it silent; don't make noise!” and might be left out.)

If a ping fails – we do not get an answer to our “Are you there?” question – we reach the part on the right of the “done”. This part reads “echo Connection lost” and is our alarm: The “echo” command is used to write the message “Connection lost” on the screen.

So, again, what are we doing here?

For all this, we are infringing on claim 1 of patent EP 0850441, granted by the EPO.

So please don't run this program. And don't write anything similar for yourself. Even better: Never ever even touch a computer. Everything you write might infringe on one – or many – of the over 30.000 software patents already granted by the EPO. As you cannot read them all for their mere number, you cannot know.

With software patents, the only way to be legally safe is to stop using or writing computer programs.