A while ago, someone asked, in a comment, "What's KRL?" I realized that while I had lots of snippets that explained KRL and what it could do, there's was no good place to point people who ask that question. Consequently, I put together a white paper that explains, in some technical detail, what KRL is, how it operates, and why we think it's so damn cool. The paper is The Kynetx Rule Language - The First Internet Application Platform (PDF). If that title doesn't pique your interest, maybe a few paragraphs from the intro can:
Imagine walking into Borders and having your smartphone alert you to the fact that the book you put on your Amazon wish list this morning is available right now and on sale. As another example, think about an application that gathers relevant articles from your RSS and Twitter feeds based on searches you've performed or that are related to an email you received from a friend today.
These examples show the power that can be achieved when applications can work across multiple domains and multiple protocols at the same time. We think of this as "programming the Internet" and the results are much more impressive than those achieved by building a mere Web site. There's no reason that clients in different domains, like your smartphone and Web browser, shouldn't be cooperating under your guidance to help you get things done. But to make that happen, we need new architectures and programming paradigms.
One way of viewing the Internet is as a big reactive system. When you browse, tweet, email, and so on the Internet reacts to what you're doing, or so it seems. Thus, programming the Internet requires reacting to user activities. Existing Web programs do this in a fairly ad hoc manner because most Web frameworks provide little support for managing program data and control flow across individual user interactions.
This document describes a new programming language, the Kynetx Rule Language or KRL, and the system that runs it, the Kynetx Network Service or KNS. KRL is designed for programming the Internet and makes it easy for developers to create applications, or apps, that behave like the scenarios imagined above. KRL is a programming language for building reactive systems that respond to complex scenarios across multiple Internet protocols, domains, clients, and devices.
When we invented KRL our goal was to build notational support for the hard things that Web programmers face everyday--especially on the client-side. Our mantra is "let the machine take care of the details." Linguistic expression and abstraction give programmers the tools to do amazing things without making heroic efforts.
After going over the benefits of using KRL, the paper contains a description of the primary components of what entails a new programming model for applications that work across the Internet in behalf of the user--as opposed to the typical Web program that works on a single site on behalf of the site owner. The model and services I describe form a platform for creating Internet applications. In the paper I explore in some detail the primary concepts in this new model: events and rules. I also briefly describe the architecture of the system of services that support this model. The document ends with three examples showing applications built to take advantage of this model.
The paper lays out a fairly audacious vision by describing a system for creating applications that are completely unlike your typical Web application. You can be part of that by trying out KRL today using a free account.