One of the things I like most about going to the Business Rules Forum is the people I meet, especial the old school guys who helped founded the technology and the industry. Last year I had dinner with Charles Forgy and this year Paul Haley - both occasions were the highlight of my trip. Paul Haley was involved in the development of ART, which was a hugely powerful state of the art Expert System for it's time (with features we still have yet to do in Drools) and the author of the Eclipse rule engine (not IDE), which formed the tech foundations for Haley Systems Inc - "The Evolution of Rules Languages". Which reminds me, if anyone has any ART or Eclipse manuals hanging around, please do email/post my way :)
What's great about meeting people like Charles and Paul is that they've been thinking about rule engines for 20+ years, while I've just been doing it 5 years, so when I tell them about my latest R&D they already know the various possible solutions and pitfalls - so drawing out nuggets of gold from these guys is immensely beneficial :) For instance I mentioned to Paul that our RuleBases are fully stateless allowing multiple sessions to share the same RuleBase, without concurrency issues, the sessions themseles are light weight negating the need to have any form of pooling. If you have a large number of sessions executing on the same RuleBase, how do you manage a RuleBase update? We currently iterate and lock all sessions, apply the change, and then iterate and unlock all. For most situations this works fine, but if you have a very large number of sessions this can create quite a pause. Paul suggested that instead of locking all the working memories we allow the RuleBase two exist in two states, so sessions don't get locked and only see the updated RuleBase when they are ready, when all sessions are viewing the new state of the RuleBase, we can stop maintain two states in-favour of the most recent. As soon as he said it I realised what he meant, which gave me a doh! moment :) We don't have time to implement this now, but it's certainly gonna simmer away until we do. Thanks Paul, looking forward to extracting more nuggets from you - now where are those thumb screws ;)
While on the subject of Paul the Drools user mailing list today received an email from him, which I take as a huge compliment and I hope he doesn't mind if I share that here:
"Haley Systems (www.haley.com), the company that I founded many years ago (hopefully, some of you have heard of it!), is in the process of being acquired by Ruleburst. I am not going with the acquisition but have started up my own "vendor neutral" business practice in which I anticipate helping improve and support Drools and the emerging standards in rules and web semantics. "
While there I met the infamous "Smart Enough Systems" author James Taylor, who was expectedly as large and entertaining in life as he is in his blogs :) I also met Paul Vincent for the first time, having spoken to him once before and followed his emails on the RIF mailing list, was good to see that Paul's dry humour extended from his online communication to his offline :) Although it seems the thumbscrews didn't work on him and I didn't learn all of Tibco's secrets, heh mental note "more drink needed next time". Although he did give me an interesting insight into a new R&D area where Tibco use ghant charts to represent processes and use cep to effect re-organisation of those changes, sounded kinda cool.
Pega Systems where there as usual. I really like what they do, and have been very much inspired by their "modelling" approach, like them I don't subscribe to a rules or process view of the world that has dogged the current industry main streamers, but a unified "modelling" view where rules and processes are first class citizens. I again met Jon Pellan, who while being very busy, took a few moments to show me over their rule engine (which I really appreciated), it was only a quick glimpse and I didn't gain enough information to draw any conclusions - but their approach looked interesting, and it certainly was different to what anyone else in the industry is doing (I think), it was more like the data flow approach that Stanislav Shor once told me about. At compile time you determine for each change on a fact which are the possible rules to evaluate that fact against, and pull in just those rules for evaluation - PegaRules creates a hash of those rules against the field changes, it then uses subgoaling to match the data against the chained conditions (hope I got that right). I'd really like to learn more about their system, maybe next year, as I was left with not understanding how it would handle joins and a better understand of their subgoaling.
I also spent quite a lot of time with Benjamin Grosof and Said Tabet. Benjamin is the Senior Research Program Manager, from Vulcan and the author of systems like SweetRules, Benjamin was also previously an MIT Sloan Professor - as you can expect he's wickedly smart in real life :) Said Tabet is best known for his RuleML work but also has a huge wealth of experience in the commercial application of production rules systems. We talked a lot about the role that Drools could play in helping with RuleML and Benjamin took me over the SweetRules system and explained his innovative way of deal with the inconsistent way that PR systems deal with 'not' compared to prolog when porting rule syntaxes to different engines. It was a delight spending so much time with these two, and I hope I get to do it again some time.
One of the other events going on, that I really enjoyed, was the RuleML conference - which is where I meet-up with Benjamin and Said. This was a much more academic conference of like minded individuals sharing information. I also finally got to meet the Mandarax author, Jens Dietrich, and the Prova author, Adrian Paschke. Jens is now working on backward chaining derivation rules based system called Take - which I'm going to research for possible integration into Drools this xmas.
I met plenty of other people, but this blog is already getting way too long and its now late, so time for me to draw it to a close and go to bed :)