NOM the Netlabs Object Model
NOM is the object model on which the Voyager desktop is based.
The main feature of NOM is a release to release binary compatibility of classes. This means that classes may be enhanced or added to the framework without breaking other classes. These other classes may even be subclasses of the modified class. Thanks to this feature it's possible to create binary only extensions to the object model which won't break when the object model is updated. NOM allows to do object oriented programming with languages which are not designed as OO languages, e.g. C.
How to use NOM
Classes are described in an Interface Definition Language (IDL). An IDL compiler interprets the file and outputs binding and template files for the programming language in question. Right now only C is supported but other bindings are possible e.g. C++ or Pascal.
Getting the source
The source is available in the netlabs.org SVN repository. All development is done in the trunk atm.
You have to install a subversion client:
- For OS/2 get it from http://silk.apana.org.au/subversion/. Just put the binaries in your path and set your HOME directory in config.sys (you need a home dir anyway for most *nix programs).
- For Darwin you're set if you run OS X 10.5.x (Leopard). It comes with a svn client preinstalled.
For 10.4 (Tiger) get the client using Macports: sudo port install subversion. See the Darwin page for information about installing Macports.
- For Linux you will find it among the development packages in more recent distros.
- For FreeBSD see ports.
- For Windows get it from http://subversion.tigris.org/project_packages.html.
Create a working directory on your system, cd into it and check out the source. Note for OS/2: I strongly recommend to put the sources on the same drive your *nix tree is located.
This will get all the stuff including everything what's deprecated.
See this page for building it on OS/2.
See this page for building it on Darwin (OS X).
See this page for building it on Windows.
See this page for building it on Linux.