Friday, October 24, 2008

ORF 2008 - First Report


Third day just starting. This supposed to be the "meat" of the conference. We had desert the first day. Veggies the second day. Raw meat today. Brief recap of the most memorable presentations:

--- Wednesday ---

Rolando Hernandez did a great explanation of Zachman's framework showing how rules fit into the the enterprise. Several Red Hat guys (not the Drools guys) commented that this was what they needed; something that was not so geeky but at a higher level.

Jason Morris: Great talk on Ontology, a subject that few rulebase people ever consider since most are not AI graduates but probably computer science and C/C++ or Java geeks who just drifted into the field.

Edson Terelli: Covered what Drools is doing with the early stages of Complex Event Processing without drifting too much into a product demonstration, something that seems really difficult for the Drools guys because they are all so hyped by their own product. Even Dr. Frogy commented that the talk was really good.

Michael Neal stayed home with his pregnant spousal unit who was due on Thursday of ORF week.

Kris Verlaenen stepped up to delive Mic's talk Guvnor. But he got interrupted by yours truly when he announced that he would now do a Drools demo, something that is totally against the spirit of ORF. I'm sure that his talk would be perfectly suited for some other forum, perhaps a Drools marketing seminar or Java User's Group somewhere but not here. So, we got some wires crossed and Mark Proctor's personality and mine crossed for a few minutes and the talk was over. Me? I blame Mic for hanging Kris out to dry like that. :-)

Pub Night One turned out to be OK since most of us just sat around the hotel lounge and swapped war stories. Some went to supper at one place and some to others.

--- Thursday ---

Dr. Dan Levine opened with a keynote of how the human brain process various thoughts, rules and emotions. I think that knowing how rules are processed in the brain would play a very important role in knowledge acquisition. After all, this whole field owes the origins to the psychology field.

Carole Ann Berlioz-Matigon: Showed us the "other world" of Business Intelligence and Business Analytics and how a rulebase fit into that environment, especially the score card part. I think that most rulebase guys rarely consider that rules play a small part of an overall enterprise IT approach such as that provided by Fair Isaac and other companies.

Carlow Seranno-Morales: Covered Enterprise Decision Management (EDM) from front to back in a gritty (fairly technical) point-of-view. What he and Carole Ann demonstrated was that a rulebase is not the complete answer for a large enterprise - rather it takes of vendors and products that are tightly integrated and rules can be only a small part (sometimes 1/10) of the total solution. The two talks were excellent.

Daniel Selman gave a presentation on sequential rules that verged on product marketing but stayed just out of reach of the "the hook". One thing that he said was that ILOG has a product that is called Rete Non-Node-Merging or something like that. Rete without node merges is not Rete and Dr. Forgy confirmed it later.

Pub Night Two proved to be another bust but lots of great conversations because of the many groups. One such group was composed of Dr. Forgy, Dr. Hicks, Mark Proctor, Gary Riley, Edson Terelli and myself with Steve Nunez joining late. I wish that we had a recorder for what we discussed but one thing came out of it: a slide for my presentation the next day. :-)

--- Friday ---

Rick Hicks: Validation and Verification - mostly verification. This guy is the guru of gurus on this subject and has created modules for CLIPS, OPSJ, Jess and others. He is a professor at Texas A&M but he has his own company, EZ-Xpert. He has published several white papers on his two-tier system; these papers explain WHAT any verification system needs to do to be called a verification system. Excellent talk. Of course he seems to believe that all of the Conflict Resolution Strategies are wrong and that inference engines are most times not needed. See the site for his paper or video presentation.

Gary Riley: (inventor of CLIPS, C Language Integrated Production System) who started at NASA and has been working on the one set of code for 23 years. Being free (or $300 from Comix, the official vendor for CLIPS) this is the "standard" by which so many other rulebased systems are judged. Gary was a very capable speaker and led us deeper into the labyrinth of CLIPS. Beginning with the early days of CLIPS and the reasons for why he did things. He stressed that we need more documentation and many, many more examples to aid the users to understand the systems. Speed is essential. He also talked about how he improved performance on the CLIPS system. A really excellent presentation.

Mark Proctor: (inventor of Drools) did a great discussion on pattern matching, collections, from, etc. Mark also discussed more on multiple entry points on rules for parallel processing.

James Owen: (Yours Truly) Gave a substitute talk (Gary stole my benchmark presentation!) on the original 1979 Rete Algorithm, a second part on the Four Forms of Chaining and, finally, a really brief, four-minute introduction to The History of Parallel Rulebased Programming.

Dr. Charles Forgy gave us a heads up on Parallel Rulebased Programming and why it will be the future of rulebased programming. From what he presented, we, as rulebased systems professionals, need to plan how to parallelize our products and services. Excellent presentation.

Yaakov Kohen showed up and listened in. Interesting fellow.

Pub Night Three turned out pretty good since about 25 of us went to Bone Daddy's, a popular Texas Bar-B-Que joint in North Dallas. Kind of like Hooters but with much younger girls. The food is so good that my wife takes me there from time to time. I'm not allowed to go by myself. :-)

--- Conference Wrap-up ---

LOOONNNGG session on what we wanted more of, less of, suggestions, questions, etc. I hope Rolando and Greg took good notes because we ran out of film before we got very far into it. Here is what little that I gathered:

What attendees want:
1. More question time
2. More time for talks.
3. Donuts and Bagels for breakfast
(David Butler brought donuts on Thursday)
4. Warmer room / Cooler Room / Dimmer Room / Brighter Room
5. MORE Technical talks and less B.S. about products UNLESS it was applicable
6. Maybe two tracks next time; one for beginners and one for Uber Geeks.
7. BOOKS on the subject - what we have is old
8. How To Books on the subject
9. Field is too hard to get into and understand
10. Three days is just about right, not five and not two.

However, we did point out that even selling the few shirts that we had we would probably lose money on the event so everyone agreed that the event should be between $300 and $500 next year (if there is a next year) to help pay for expenses. Apparently setting the cost to $150 to encourage students backfired on us since not one student from the USA attended and only one from the UK.

BTW, if you are an attendee and did not get a shirt and want one, let me know - for a mere $35 + ($10 S/H USA - $15 for outside USA) we'll send you one. Just let us know your size of S / M / L / XL / XXL / XXXL. Greg and I both wear an XXL and Edson Terelli took a Medium so judge accordingly.


My conclusions: Great presentations, good coffee, nice folks. For once, it was about 90% Geek and 10% marketing / sales rather than the other way around. If you missed, maybe next year at ORF 2009.

Last thing: Only one person had a comment about my photo. The photo is that of person (a really good friend of mine) throwing a flying side-snap kick with perfect form. What you don't see in the picture is that the person is about 6 feet tall and weighs 215 pounds at the time. If you could see the whole photo you would see that his striking foot is about 5'6" above the ground and he is not using a trampoline to get that high - just lots and lots of training and determination. It proves one thing; success is not easy but it can be done with hard work, determination, proper training and an extremely positive mind set. That's why I keep the photo around - to remind me to keep going when the going gets tough. (Yeah, it's corny but it's true.) Most failures happen because people just give up and begin to see how they can salvage the most from a failure.

Our field is not an easy one and entry to the top level will never be easy. Reading and hard study hurts the head. Planning hurts more. But remember the Seven P's: Proper Prior Planning Prevents Piss-Poor Performance. Also, it is not practice that makes perfect but Proper Perfect Practice Makes Matchless Perfect Performance. (Say that one three times fast!)



woolfel said...

Bob McWhirter is actually the person who started drools, so technically it would be incorrect to say Mark invented drools. Bob wrote the first 2 versions of drools. Mark joined the project around drools 2.5, when bob lost interest and wanted to hand it to someone else.

James Owen said...

Well, another case of mistaken identity. Dr. Forgy said in his thesis that he merely extended the Pandomonium system that had been invented before so, technically, he didn't invent it.

What Mark has done is take a non-functional system that was not a true rulebase and make it into something that was a rulebase. Unfortunately, now he is making a perfectly good rulebase into a BRMS and lots of other stuff.

So, while you are probably (don't know for sure) technically correct, Mark did pretty much invent the current incarnation of Drools.


James Owen said...

Peter -

Another comment that probably belongs on your blog: When are you going to open up your blog to the world and permit anonymous responses. Not everyone really wants to belong to Google to comment on a blog.


woolfel said...

Mark deserves a ton of credit for taking a simple forward chaining rule engine and making it a full RETE implementation based on my code donation.

I mention bob for a simple reason. Without bob, drools wouldn't exist. Then again, without dr. forgy, gary, ernest and several others, drools wouldn't exist either. I just feel it's important to give credit where it is due :)

James Owen said...


I asked Mark about your contribution. His comment was that, yes, you did send a lot of code and, yes he did read the code but, no, he did not USE the code. His code is significantly different. I have to take his word for it because I've never seen your code. (Please don't send it - I don't have time to read it right now.)

"Bernard of Chartres used to say that we are like dwarfs on the shoulders of giants, so that we can see more than they, and things at a greater distance, not by virtue of any sharpness of sight on our part, or any physical distinction, but because we are carried high and raised up by their giant size."

Sir Isaac Newton wrote it as: "Pigmaei gigantum humeris impositi plusquam ipsi gigantes vident."

Just because one invents one thing as a follow-on of another person that does not take away from the fact that it takes a lot of thought to make the second event happen.

Bottom line: Why do you want to take credit away from Mark for his work? Personally, I don't care who did it, I'm just glad that we have it. BTW, where is the rulebase that you wrote? I know it's out there somewhere but I just can't find it. Not a slam - I would just like to take a look at it.


woolfel said...

Mark is totally correct that he didn't use any of my code. Drools 2.5 API was incompatible with the design I chose. What I did was study CLIPS, JESS and a half dozen other rule engines including everything I could find about OPS5. My original intent was to write a rule engine that could support distributed RETE and fault tolerance capabilities.

Based on what I learned from OPS5, CLIPS and JESS, I chose to go with a slotted-positional design. You can find it here

It's not production ready by any stretch of my imagination. It's a research play ground for me.

I don't know if mark mentioned this, but I spent 4-5 months analyzing drools 2.5 to figure out where Bob got it wrong. Then I spent the next 8-12 months explaining my engine to mark, so that he could rewrite the core from scratch. I've mentioned this dozens of times on my blog and I clearly state no code from my engine was used. Instead, it was a the over all design. Even then, I've always maintained that CLIPS, JESS and OPS5 deserve credit for the slotted positional design.

the interesting part in jamocha is that I de-couple the indexes used for the memories from the facts. this way, it makes it easier to replicate the working memory across a cluster and employ lazy loading techniques. Even then, I borrowed the lazy loading concept from Peer-to-peer networks, data grids (like coherence) and Hibernate. I've tried to explain this stuff to several people, including mark. You'll see that drools 3, 4 and 5 tightly couple the facts to the memory indexes.

I'm not trying to take credit away from mark. I'm just making sure people don't over state their achievements. Mark's done a great job of growing drools community and the entire team has done a great job of adding a lot of functionality. Kris especially has been the key person on the IDE. Michael is the main guy for Guvnor. Ed's been focusing on temporal operators and constraints.

I understand businesses don't care about proper citation or giving credit, but I do. These things matter to me, because I feel it's disrespectful of those who came before.

for the record, I've also challenged other companies, so I've consistently fought for proper citation and truthful advertising.

Bob McWhirter said...


To clarify the history of the project. There was no version 1 of Drools. It only existed as a sequential predicate evaluator on my local disk.

Version 2 was the first Rete-esque implementation. Figured out (poorly) through 3rd-hand references in academic papers, etc. Then it stalled. And Proctor jumped in and really pushed us to a better understanding of Rete and towards the very first GA release. Due to all of that, I consider him absolutely co-inventor/co-founder of the project.

I've seen Mark do wonders for the project, truly helping it to be what it is today. Sure, he hasn't written all of the code, but his leadership, recognition of patterns, and consistent insight into both prior art and future innovation has been key.

I've personally watched Proctor ensure that anything that is done is right for the project. Not necessarily right for himself personally, or to promote himself.

Someone has to make noise in the community, and the noise-maker is not necessarily being an self-centered egotist. Mark, Michael, Edson and the others all do an awesome job of communicating, both through the blog and through the open and freely-available code.

I think the Drools team and project, under Mark's leadership, represent one of the best examples of transparency in software development.

Sure, we can count lines of code, or dates of first commits, but I completely consider Proctor to be cornerstone of the project. But I also feel he's built an awesome team that could withstand (and maybe celebrate) him getting hit by a bus.

woolfel said...

some one was kind enough to let me know I over stated things. I didn't mean to imply Mark was taking full credit. For that I apologize for the flame fest.

My intent was to correct james' comment that Mark invented drools. As bob stated, Mark has done a tremendous job. I've stated that publicly on numerous occassions on my blog and on My apologies to mark for hurting his feelings.

If would have been nice if mark corrected james, rather than have me point it out. I agree that Mark is the one who has pushed drools into the public and helped grow it. Without him, I doubt drools would have grown to where it is today.

I'm just a nitpicky jerk when it comes to giving credit. for that, there's no excuse. it is what it is.

James Owen said...


For the last time: When you say something like

"I'm not trying to take credit away from mark. I'm just making sure people don't over state their achievements. Mark's done a great job of growing drools community and the entire team has done a great job of adding a lot of functionality."

By this kind of statement you are damning Mark with faint praise. While your give "some" credit you take it all away by saying that you are trying to make "sure people don't over state their achievements." Please, don't ever compliment me in such a faint manner as this.

Bob McWhirter says that Mark Proctor was the Co-Inventor of Drools. He was involved BEFORE the official release according to both Bob and Mark. No more arguments nor clarifications. Please.

Mark Proctor says that looked at what you had done and it did help him somewhat to re-do some of his work. BUT, he did not USE your code. Case closed. Please.

However, Mark also stated that he corrected your code so that it work correctly and that you never acknowledged his work on your code. We will NOT start that discussion here but you can open up your blog to the public and state your position there should you wish to do so. Case closed for this blog. Please.


woolfel said...

actually, on my blog I gave mark full credit for finding the bug. I also thanked him multiple times for finding the bug back in 2005. I always thank people for finding bugs and I explicitly state it on my blog. my blog is private, so I'll state it here again.

Mark found a bug with my NOT node and was kind enough to let me know. After some discussion on IRC, I thanked him for finding the bug and I also gave him credit on my blog. Actually, he also found a few other bugs in my code and I did thank him for it. I also pointed out the stupid bug in my blog and gave him credit.

As a general rule, I always thank people for reporting bugs before I verify it's a bug. After I fix the bug, I credit them with finding it and bringing it to my attention.

thanks for pointing out my comment came across as faint praise. since you have access to my blog, you can see I have praised mark numerous times. Actually, you can see my praise of mark and the team on also. I've recommended drools publicly on several occassions, but I've also pointed out a lot more work is needed. I say the same thing of blaze and jrules, because I feel there's still a lot more needed in BRMS. In fact, you'll see my comments on EDM blog stating that. I've also stated the same thing on tibco's cep blog.

even though the industry has made great strides, many business users still find it lacking. On the unit testing front, all the products still need a lot of work, so I'm always pushing for richer functionality.

woolfel said...

Thanks for pointing out my mistake. Actually, it was Ed that made the statement "if you can't beat them, join them!"

My fault again for getting that wrong. I take responsibility for thinking you made that remark when it was Ed that made it.

I'm not mad at all that you point out my mistakes. I don't take things personal, and I'm not bitter or angry at you guys. I've always maintain my blogs are rants and not accurate, but clearly that's no excuse for attributing Ed's remarks to you. For that I apologize.

Daniel Selman said...


Here is a link to documentation of the JRules "useReteSharing" property:

I think the doc says it all:

"By default the Rete sharing mechanism is turned on. The Rete sharing mechanism has the goal to detect similar tests in rule conditions of a ruleset and it is an essential feature of the RetePlus algorithm. The effect of Rete sharing is a reduced memory usage and faster matching algorithm. However, the Rete sharing may be time consuming at rule compilation time. If you are an expert of the RetePlus algorithm and you know that the tests in your conditions will not share, you could save the time used to compute the sharing by turning the flag off. This flag is to be used with caution."