News: 1060 has released NetKernel 3.0, a RESTful server

  1. 1060 has released NetKernel 3.0, a server product that runs scripts to execute local processes (such as Java classes, perl scripts, etc) or retrieve the results of external processes (i.e., REST URIs), or execute a series of processes. Extension modules can be written in Java for more custom processing, and NetKernel can take advantage of multiple transports and protocols - SOAP, JMS, et al., as well as having various scheduling capabilities.

    A developer kit can be downloaded for free as either GUI installer or a headless version (delivered as a tarball). The product is dual-licensed under a commercial license and the "1060 Public License," summarized on the web site in short form:
    NetKernel is licensed under the 1060 Public License - which like the GPL is viral for distribution of modifications to the Kernel and system components.

    For *use* of the system it mandates OSI licensing, a quick summary is: NetKernel is on the open-source commons, if you use it on the commons (ie open-source your application code) it's free, if you want to take it off the commons (ie keep your source closed) then you must pay. Unlike GPL we let you choose which OSI license you like best if you choose to open-source your application code.

    Hopefully our license represents a business model that's fair to the open source community, fair value to the commercial world and means we get to feed those hungry kids...
    From first looks, NetKernel is more of a business integration tool (like an ESB) than an application server, although it's quite possible (and likely) that it has features Your Humble Editor hasn't seen yet. It's certainly easy to use and the tutorial (hosted from in the application itself) is quite good (again, at first glance only - I haven't stretched the system by any means.)
  2. I've looked at this (some of my friends are really into it) but it has the issue of defying the elevator pitch.

    From what I can make out, the idea is that you have many modules, each mapped to a particular URI.

    Data flows into and out of modules.

    NetKernel coordinates everything. It figures out what can be performed in parallel, and what can be cached.

    A lot of NK is about translation (or transcoding), i.e., "this module needs foo as a PNG but all I have is a SVG" and somehow finds someone to do the translation on the fly and cache the result.

    It looks like there's a LOT to NetKernel, but it's also a second career to figure it out. Aparantly, reaching that stage is some kind of transfoming experience (like Neo at the end of the Matrix).

    Stuff that's important to me, such as putting together web pages and handling form submissions, looked to involve more XML and deployment than I'm comfortable with. But I probably just didn't find the right way.
  3. Which pill do you want?[ Go to top ]

    Hi, Howard, your Matrix reference is valid (as they often are!) because you need to decide which pill you want to take. If you are comfortable with what you are doing and don't want to change your perspective, take the red pill (or the blue one, I can't remember which) and you can forget all about it.

    While NetKernel does fail the elevator pitch, it does not require a whole second career to figure it out. It can be difficult to know where to begin, because it is simultaneously a Floor Wax and a Dessert Topping (http://snltranscripts.jt.org/75/75ishimmer.phtml). But if you take the time to learn what NetKernel has to offer, I do think it will change the way you think about building software.

    Fundamentally, it is a resource-oriented microkernel that makes everything URI addressable. That's a mouthful, but it makes for a scalable, flexible, easy to maintain architecture that works for several domains and types of applications. It creates an environment where it is simple to tie together documents, data and services into a continuum that lacks some of the impedance and disconnects seen in more conventional Java/.NET web frameworks.

    You don't have to buy into everything all at once, but by putting content and services behind the RESTful URIs, it is easy to wrap the content behind AOP-like interception (routing the URIs through logging, security, etc. services) as well as achieving a fine-grained caching mechanism that covers content, computational results and the like.

    I haven't used NetKernel to solve problems that Tapestry does a good job with, but I can imagine that the two would integrate nicely to help with caching, scripting workflows, etc. I can imagine scenarios where NK could be put either in front of or behind Tapestry.

    It can take a while to get your head around it, but I encourage you to spend some more time with it.
  4. Which pill do you want?[ Go to top ]

    Hope I didn't come off too dismissive. Just that talking to Randy and Carlos repeatedly, and nobody could quite describe to me, in practical terms, what NK is. Maybe its an IoC container. Maybe its Cocoon. Maybe its wrappers around scripting languages. Maybe its an AOP system. Maybe its a messaging system. I did start to take a look at it a couple of months ago (installed it, ran some demos, read some documentation) but somehow I got sidetracked :-).

    What I'd like to see is an example where you started with the problem, and the kind of thinking that goes into building a solution on top of NK. And, again, may apologies if that doc is already there (it's not like my schedule has, or ever will, open up!).
  5. Which pill do you want?[ Go to top ]

    No, I didn't think you were dismissive at all. I understand that it is easy to have that kind of a reaction given the head-wrapping that is required.

    I think the answer to your questions is that NetKernel, as a generalized architecture, can be used as all of the examples you listed (IoC container, AOP system, templating XML system, messaging system, etc.)

    If it has been awhile since you've looked at it, give the 3.0 release another go. Between the Preview 4 and final releases they produced a ton of new documentation, examples and tutorials.