In-Depth

Redefining How Software Works

The work that 1060 Research is doing might have a dramatic impact on how we think about building software. CEO Peter Rodgers provides the details in this exclusive interview.

\

1060 Research CEO Peter Rodgers wouldn't say that his company is redefining software development. His low-key and understated style keeps you listening for some time before you realize that he is speaking of some really significant concepts. But when he's done, there is no question that what he's describing can have a dramatic impact on how we think about building software.

The concept seems simple enough, if a little disconcerting for someone who has spent the last 20 years in software. All resources are abstracted from their physical locations and instead referenced as Uniform Resource Identifiers, or URIs. That concept is at least partially true with many Web-based systems today, and is not particularly revolutionary. The surprising part is that everything, including code, is treated as a resource. The product, NetKernel, might be thought of as a REST (Representational State Transfer) microkernel. At one level, it facilitates the development of applications using the REST architectural pattern. But at another level, it describes a paradigm for building and executing software that is quite radical.

The Origins of NetKernel
NetKernel is, at its heart, a message-passing system. It has characteristics similar to a message-passing operating system, in that the messages are used to call specific functions within a single service, as well as between services. The functions aren't called directly, however, but rather through the URI. The term Rodgers uses for this concept is "SOA inside."

"The idea for 1060 Research came out of research I was doing for HP Labs in the late 1990s," explained Rodgers. "It involved looking at how to make use of XML as a data-passing mechanism. It came together with HP's acquisition of Bluestone in 2001, when we started integrating it with the Bluestone application server. When HP made the strategic decision to focus on management software, I asked if I could take the IP [intellectual property] outside the company and continue developing it."

Rodgers, trained as a physicist, is used to breaking down technical problems into their fundamental elements. In the context of his research at HP, this meant looking at how calls and data were dispatched and received as a part of normal software execution, rather than simply as a communication system between loosely coupled software components.

The audacity of this approach to building and running software would seem to be little more than an intellectual curiosity, except for one thing—it works, and by all accounts, works well. Rodgers said that a high priority was to solve the key problem they had identified: that SOA messages are flexible but the code that we use to implement the services is brittle. The goal was to build malleable software that flexes to accommodate change with a stable and scalable foundation that could be used reliably in real-world applications.

Rodgers identified three advantages of NetKernel. First, it allows for extremely fast development of software. "Most applications turn out to be composed largely of code making sure that messages and data get from one location to another," he said. The result is that sophisticated applications can be constructed in days or even hours.

The second advantage is in adaptability. Many software systems can't easily adapt to data model changes; even modular code is often built with certain expectations concerning data formats and calling conventions. Because NetKernel is built upon the principles of message-passing, with the message format often defined by XML, it is exceptionally simple to modify, enhance, and adapt for new purposes.

Last, NetKernel is highly scalable. "We expected that because we were using abstractions, performance would take a hit," Rodgers continued. "But something remarkable happened. It turns out that in most systems at least 30 percent of processed data is reusable. The problem is you don't know which 30 percent, and in a dynamic system it is not always the same 30 percent! Because everything has a URI—even the results of running a piece of code—we can cache it. The cache algorithm we use provides us with the best possible performance, and makes applications very scalable. Our customers find that NetKernel's performance is at least three to four times better than a traditional application server, so the abstraction cost actually gets repaid many times over."

Rodgers had another trick up his sleeve. The system recognizes that there is a cost to changing the form of a piece of data, for example serializing and deserializing data (such as parsing and serializing XML) or dynamically compiling code. This is a fundamental operation in any system, but in NetKernel it has been generalized into something the company calls "transrepresentation," a process that is analogous to Just-In-Time (JIT) compilation. This is also an advantage for production applications. The performance and scalability of applications running on NetKernel are both high and predictable, making it easy to do capacity planning and scaling to meet peak demand.

Rodgers highlighted another important benefit: There is no need to begin applications from scratch to take advantage of using URIs and NetKernel. "You can work at whatever granularity is appropriate for your needs." This is a critical point for anyone who is interested in applying NetKernel in the real world. You can ease your way into the concept simply by writing applications using the REST design pattern, using the NetKernel XML message-passing for communications between services or other application components. As you become more used to the model, you might find yourself using XML message-passing and URI representations more and more.

The Future of Software
Will NetKernel redefine how we think of software and software development? The most interesting and even the best technologies often don't make it commercially. But 1060 Research has some things going for it. First, its fundamental approach has been independently validated in practice in some large-scale applications. The trend in building Web software is toward using URIs to define resources, and technologies such as XQuery make it possible to use XML as the message-passing paradigm for database access.

Second, NetKernel is not vaporware that exists only in the minds of its creators. The system today is third-generation and production-proven, and is intended for real application development and use. NetKernel is downloadable for evaluation at http://www.1060research.com/netkernel/download/index.html. You can test out how this application platform works, and use it in building new types of applications.

Last, and most fundamentally, NetKernel is middleware, so in the future you might be using it without even realizing you are doing so. If you write REST applications in the future, take a look at what foundation they are running on. You might be surprised.

About the Author

Peter Varhol is the executive editor, reviews of Redmond magazine and has more than 20 years of experience as a software developer, software product manager and technology writer. He has graduate degrees in computer science and mathematics, and has taught both subjects at the university level.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube