In the early days of PC networking, Novell was a giant. It understood the value of a dependable network years before Microsoft. Novell made MSDOS into a network server platform and provided MS Windows with a working TCP/IP stack years ahead of our friends in Redmond. Novell was integrating LDAP into their OS before we saw the first ad for “ActiveDirectory”. So, what the hell happened to them?

To answer this question, I direct your kind attention to this white paper at Novell. Novell was always an add-on product, that is, it would co-exist with whatever OS was installed on the machine. Of course, this was frequently Windows, but this strategy still worked well for a long time. Unfortunately, feature creep being what it is, Netware 4 saw the introduction of a real OS kernel and Netware 5 introduced a threading process model and loadable kernel modules. And the best part of their kernel: it’s not POSIX compliant. Why is this problem, you ask?

System programmers are a weird lot. First, they looked at single processor systems and said “gee, we should make the operating system multiplex the hardware so that it can run many programs at once.” In multiprogramming environments, each process thinks it has the whole machine, actually the whole virtual machine, to itself. The OS, like a politician, promises the whole system to all its constituents, lies about its resources and hopes for the best. Odd as multiprogramming is, it works well. So well, that when the hardware boys concocted systems with 2 or more CPUs, system programmers went to great pains to make the machine appear to each process to have only one CPU. The moral of the story is that system programmers attempt to keep systems simple and are loath to introduce new application programming interfaces.

Back to Novell. Netware has always been an add-on product. So, why the kernel? Yes, I understand that some kind of kernel might be needed to share the resources that Netware manages (although how Netware manages this on top of modern Windows in a 32-bit protected environment baffles me), but really loadable kernel modules? Threaded processes? Creating a new OS is a risky business and Novell is in a very poor position to pull this off sucessfully. Choosing to ignore the POSIX standard will attract even fewer developers. Why would a programmer bother to learn yet another proprietary standard for an enviroment with so little market share?

Novell should focus on what the market needs: cross-platform client integration and management tools. Leave the kernels for popcorn and give admins the ability to manage accounts seemless across Windows, Unix and Web platforms. Focus on the small to medium business, because that’s where Microsoft’s predatory licensing fees inflect the most pain.

I’ll say that again.

Microsoft is most vulernable in small to med-size companies for whom client access licenses are like a swarm of angry gnats (not this Gnat, of course). By embracing open source Unix, like FreeBSD and Linux, Novell can get POSIX kernels with threading and forking models and loadable modules and free development. And no licensing fees! What’s not to like?

Novell is going down the path to madness by creating a “application developement framework” or a “protocol engine.” Novell needs to be lean, smart and focused. They aren’t in a position to challenge open standards or Microsoft’s standards. If they adopt open standards, their chances for survival are better and in a few years, I can write an article entitled “What the Hell Happened to Microsoft?”

[Original use.perl.org post and comments.]