While this approach still retains its value today, there's a lot of machines that don't exist physically anymore, let alone have a physical console.
GUIs in one form or another rule the world of the administrators and developers these days. For me most of them are toys, good looking toys that are aimed at selling the product but otherwise get into the way of the real business. If I can avoid them they are never used beyond the first day/demo.
So my first opinion of nCoDE went along the lines of ... nice, they finally got a product selling tool out, this will help big time to get NetKernel in the mainstream. And then I ignored it.
I was wrong.
nCoDE fits the second C of Construct - Compose - Constrain, the three stages of ROC development, like a glove.
Lets look at a couple of questions that nCoDE can answer :
- You've developed the toolkit, but who's going to do the testing ? Well, obviously the testteam. In a regular environment they'd have to be at least as language proficient as you. With nCoDE they can just compose the tests they want without even knowing or caring what language you wrote the tools in.
- And why stop at testing ? You've developed the toolkit, but who's going to put the system together ? Who better than the enduser ? Sure, a technically savvy enduser that you might have to sit next to during the process, but how many filtering/interpreting/scheming elements are between you and the enduser today ? And what is the outcome ? Exactly ...
Do not take my word for it.
I do not want you to and you do not have to. But do try it yourself. What follows is a minimal module.xml that I borrowed from Chapter 8 of the Practical NetKernel book. Once you have it up and running you can go Explore your very own nCoDE instance. Take care, you will come back but you will be a changed person !
<?xml version="1.0" encoding="UTF-8"?>
<module version="2.0">
<meta>
<identity>
<uri>urn:org:netkernelbook:chapter8:ncode</uri>
<version>1.0.0</version>
</identity>
<info>
<name>Chapter 8 nCoDE</name>
<description>NetKernelbook Chapter 8 nCoDE</description>
</info>
</meta>
<system>
<dynamic/>
</system>
<rootspace
name="Chapter 8 nCoDE"
public="true"
uri="urn:org:netkernelbook:chapter8:ncode">
<fileset>
<regex>res:/etc/system/SimpleDynamicImportHook.xml</regex>
</fileset>
<endpoint>
<name>Chapter 8 nCoDE Endpoints</name>
<prototype>nCoDERuntime</prototype>
<operator>res:/resources/endpoints/ncode-state.xml</operator>
</endpoint>
<!-- Mutable fileset to save the nCoDE programs -->
<fileset>
<regex>res:/resources/endpoints/.*</regex>
<mutable>true</mutable>
<poll>100</poll>
<private/>
</fileset>
<!-- Needed for the nCoDERuntime prototype -->
<import>
<uri>urn:org:netkernel:lang:ncode</uri>
<private/>
</import>
<!-- Underneath here come the imports of the tools you -->
<!-- want to use. -->
</rootspace>
</module>