Why I invented Kinetic Rule Language (KRL)?

Phil Windley whose blog posts on his startup Kynetx I sometimes mention here, since the company's product is built around a DSL, posted a nice item on reasons for designing a DSL. While partly about why people should go ahead and learn KRL, the post discusses some of the business advantages for building a product around a DSL, and some of the reasons for using and building DSLs that we here take for granted but not everyone else is cognizant of.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Misleading name

I was expecting a Physics DSL.

I'm not familiar with you mentioning Kynetx here; link?

[Note: I hope this doesn't sound too critical, but it is really just me thinking out loud after reading the post.]

As for the language and the blog post's rationale, well, I thought this problem was solved in the 1990s at Stanford by David Luckham, and that most "Enterprise Service Bus" today feature something like it but with procedural action handlers.

In contrast, many modern Web sites—think Twitter, Facebook, and Foursquare—are characterized by streams of data. Real-time data is what makes these sites interesting.

Social graphs are what make these sites interesting. I am not sure the word "modern" adds any value in characterizing these sites, either. "Social" Web sites seems more descriptive.

KRL is a rule-based language that is custom built for the domain of event-based applications that operate on real-time data in the cloud. KRL was designed from the ground up with events and the cloud in mind.

Why mention the cloud? That seems more like a market differentiator of the implementation than an attribute of the language. But the rest of the post doesn't explain the role of the cloud in the language design.

Creating an app that stores data for each user and behaves differently based on the user is trivial in KRL because there’s nothing to do. It’s all done lower down in the system.

Sounds interesting, but no detail sentences explain what he is talking about. And I thought Carl Hewitt's cloud vision was terse! ;-) I think the main issue I've had to deal with in highly personalized applications for our school information management software was figuring out caching, especially cache granularity and what to cache. I don't see where KRL helps with this, so I am a little doubtful the performance side "behaves differently based on the user is trivial". The most trivial challenge is dispatching differently based on an agggregate user role that defines what that user has access to, and this can vary by government regulation contexts e.g. state of Minnesota does not allow the year to be displayed for a birthdate, only month and day for celebratory purposes.

KRL gives developers the ability to bust out of silos and work across multiple Web sites.

How does it handle schematic evolution? What sort of inference engine is it using to guess data integration strategies, etc.? Why should a language have a concrete policy in place for this, anyway? Isn't it more flexible for the language to allow to inject via a "Strategy pattern examples" Library the particular automatic data integration technique they want?

From the example it gives, TomatoFlix, it is at the mercy of managing schema updates manually and there is no quality of service governing your ability to correctly mash-up two sites. There is some research, mostly from Microsoft and Adobe and IBM, about varying points in a continuum of ways for dealing with modeling views with at least some information loss. e.g. most real-world web sites aren't tagged with enough semantic markup to act as Pierce's lenses does.

Bottom line: I am a little lost as to what Kynetx does and what value it provides, and this blog post wasn't really helpful in that regard. For example, how do I analyze social graphs? TomatoFlix is just doing simple map composition, as far as I can tell.

Can you point me to some more useful information? Thanks.

I presume asking this on

I presume asking this on Phil's website will be more productive. Anyway, the Kynetx website has more code examples and may be able to provide the information you seek.