Building CDE in 2023

In 1993, when Sun / Solaris and "workstations" were still a big thing, a consortium of Unix companies created a desktop environment called the "Common Desktop Environment" or "CDE." If you want to read up on the history, see the Wikipedia entry about it. Years ago I created an extensive graphic of what window managers borrowed code or ideas from what other WMs (here). According to it, CDE was based on code from HP's vuewm, and ideas from vuewm and MWM. Visually, it was heavily influenced by the then-current and influential Motif toolkit. CDE had some (but not a lot) of influence on the appearance and behavior of XFCE, and in 2000 Sun phased out CDE in favour of GNOME.

CDE was proprietary. The code would have been useful if they'd open-sourced it in 2000, or even 2003. But they waited until 2012, by which time most people had lost interest. The code was essentially un-buildable because of the ties to dead Solaris toolchains. But in the last few years, someone (or a group of someones) have dug into the code to make it buildable with modern Linux tools. This work is taking place (slowly) at Sourceforge.

I'm about to criticise the current state of CDE: this is not meant to knock the hard work of the people trying to bring CDE up to modern standards, which I dearly hope they'll continue. I'm detailing my own experience, and outlining existing problems.

Out of some strange combination of sentimentality and curiosity (and a nearly three decades-long love of Window Managers in general), I decided to build this antique on a Debian 12 system (they claim it's buildable on multiple other Unixes - you may notice it doesn't mention Debian after version 10). The list of required dependencies is large. It was time-consuming to check through and install, but workable. The most alarming part of this was this lovely notice:


        Security Note

        CDE has had quite a few known security vulnerabilities in it, and
        it is likely that several more unknown ones still exist. Don't
        expose it to the Internet. In fact, never expose any desktop to the
        Internet.

        You should think strongly about enabling the dtspcd and
        rpc.ttdbserver daemons. Unless you know what they do, you almost
        certainly don't need them.

        The following advisories have no traced resolution in this release;

            xxxxxx - 1999-11-xx - http://www.cert.org/advisories/CA-1999-11.html
            179804 - 2004-03-23 - http://www.kb.cert.org/vuls/id/179804

    

Outstanding security advisories from twenty years ago ... gggrrrreeeeaaatttt. I get it though: it makes more sense to work on getting the software to build before you tackle those - they're not a problem in a non-building system! But it being unwise to put the product on the Internet ... well, that's a bit of a blocker for most people, as our systems are never NOT on the Internet. Nevertheless, I proceeded.

    $ time make
    ... [ HUGE SNIP HERE ] ...
    make[3]: Entering directory '/home/giles/Code/cde-2.5.2/doc/en_US.UTF-8/help'
    SGML_SEARCH_PATH=".:.." \
        /usr/bin/ksh ../../../programs/dtdocbook/doc_utils/dtdocbook2sdl -H ../../../progr
ams/dthelp/parser/pass2/parser/dthelp_htag2 -L en_US.UTF-8 \
            -o Appmanager.sdl `basename Appmanager.sdl .sdl`/book.sgm
    In entity PART included from Appmanager/book.sgm:53:0
    onsgmls:/home/giles/Code/cde-2.5.2/programs/dtdocbook/sgml/docbook.dtd:72:30:W: duplicate declaration of parameter entity "local.notations"
    dtdocbook2sdl fatal error:
        Error processing book.out.132640.sdl by ../../../programs/dthelp/parser/pass2/parser/dthelp_htag2
    make[3]: *** [Makefile:1309: Appmanager.sdl] Error 1
    make[3]: Leaving directory '/home/giles/Code/cde-2.5.2/doc/en_US.UTF-8/help'
    make[2]: *** [Makefile:440: all-recursive] Error 1
    make[2]: Leaving directory '/home/giles/Code/cde-2.5.2/doc/en_US.UTF-8'
    make[1]: *** [Makefile:447: all-recursive] Error 1
    make[1]: Leaving directory '/home/giles/Code/cde-2.5.2/doc'
    make: *** [Makefile:587: all-recursive] Error 1

    real    21m39.928s
    user    18m55.440s
    sys 2m32.373s
    

This is a 2 core 4 thread 4th-gen i5 chip with 8G of memory at it's disposal ... but now that I think about it, a build from that period is probably single-threaded and unable to use multiple cores. Back then, a build of this project must have taken several hours. And it failed. This appears to be something to do with the help system, but between this failure and the fact that "you shouldn't use this on the internet," I'm going to let this one lie for a couple releases.