Rete or Not?

This is probably old stuff to most people but I only found InRule yesterday when I was checking to see if my del.icio.us subscriptions had anything interesting for me to read about. Anyway, on InRule's web site they have a paper titled Rete or Not?

The paper is an attempt to convince us that InRule's engine is better than Rete-based engines. AFAICT the reason is because InRule's engine can handle multiple modes for rule execution. But the paper is mostly about why Rete's no good anyway. Among other things, it says, "...users must understand how a Rete engine works before effectively writing rules" and, my favourite statement, "Roughly 20% of business applications have a need for Rete".

There are quite a few things in the paper that conflicts with my view of how the Rete Algorithm works and in general how a Rete-based rule engine works and what can and cannot be done with one. For example, the description of partial "left" and "right" matches doesn't make any sense.

To me, the Rete Algorithm is a solution to the many patterns/many facts matching problem. It's not the only solution and it might not even be the best solution but the claims they make in the paper are just too much.

I find it hard to take it seriously since they don't say which engine they're comparing against, come to think of it, they don't even say how the InRule engine works. Apart from saying that they have an execution mode that is similar to Rete and some other modes which work sequentially there's NO information about what's going on.

If they really want to convince people they have a better engine; why not run some benchmarks?

[2007-06-25] Update: Well, apparently: "InRule will benchmark using your performance needs, with real-life application and capacity scenarios. We recognize that every client environment is unique, and do not believe in making idle claims based on questionable proprietary benchmarks. We will demonstrate and substantiate actual performance metrics."

What about questionable (all benchmarks are) non-proprietary ones? It seems they don't do those either. What the **** does benchmark using your performance needs mean anyway? And, just so you know. I'm not kidding or making this up or anything! That's what they say on their web site. Right here (under Performance).

I'm adding the label humour to these posts. This is too much. It's gotta be a joke.

3 kommentarer:

woolfel sa...

I've looked at InRule before and I am not impressed. They don't have a good understanding of RETE and their explanation is mostly inaccurate. When they say partial match, I'm guessing they are referring to joins. The term partial match can be applied to any condition of a rule that matches. Right and left partial matches are referring to the joins.

I find the "iterative" statement about RETE to be wrong. They clearly don't understand how conflict resolution works. Anyone that knows Manners benchmark would know that RETE engines don't iterate over the productions (aka activations in the agenda).

The non-RETE vendors really don't understand pattern matching theory, so they try to come up non-sensical explanation that aren't backed by real data.

Johan Lindberg sa...

Yes, I remember having read a post or two about them over on your blog.

Apart from making wild claims about things without backing them up whatsoever. I'm surprised that they decide to criticize all rete-based enines as if they all behave in the same way and especially since they're talking about things that (at least in my mind) are not part of the algorithm.

Executing rules in a user-defined order can be done in all rete-based engines I've tried anyway. You may have to rely on salience or focus to achieve it but I can't see why that's so bad.

woolfel sa...

yeah, it's call marketechture. Since they don't understand RETE and haven't got a clue about how to implement a high performance rule engine, their only choice is to make empty claims. it's business as usual for those trying to cash in on the business rule movement.