July 2001
Roxen Web Server
Review by Joe "Zonker" Brockmeier
When it comes to Web servers, Apache rules the Web. However, I just can't resist exploring new software and I've been meaning to give the Roxen Web server a spin for quite a while now.
If you haven't heard of Roxen before, it's no big surprise. Roxen probably accounts for less than 1% of the current Web server market, but that doesn't mean it should be overlooked. Roxen is a surprisingly full-featured Web server with excellent administration tools and a few interesting features that don't come with Apache.
The Roxen Web server is a GPL'ed Web server that you can download and set up in a matter of minutes -- although the more advanced features may take longer to master. Roxen is developed by Roxen Internet Software, a company that specializes in Web Content Management software and consulting and training. Roxen is available as a free download -- no pesky licensing fees -- if you have the technical skills and don't mind learning everything from online docs and trial and error.
On the other hand, people who want handholding, training, and technical support can purchase those services from Roxen Internet Software. Some features aren't available -- such as a search engine -- in the GPL'ed version of Roxen, so if you want those features, you'll also have to purchase the Roxen Platform. Unfortunately, I couldn't find a page on Roxen's Web site that clearly delineated what features are available in the Roxen Platform that aren't available in the Roxen Web Server.
That Pesky LZW
When downloading the Roxen Web Server, you'll need to choose between the version for use in the United States and Canada or the version for use elsewhere. The only difference is the inclusion of the LZW compression software. (LZW stands for Lempel, Ziv, and Welch -- the inventors of the compression scheme.) LZW compression is used to generate GIF and TIFF images on the fly, something that most folks can live without.
The LZW algorithm has been patented by Unisys, which means that users in the United States and Canada are supposed to obtain a license from Unisys in order to use it. Note that you can serve GIF and TIFF files from your server without this software, but your Web server itself is not able to generate these images. For more on the LZW patent silliness, visit Don Marti's Burn All GIFs Web site.
Installation
If you're a Debian GNU/Linux user, Roxen is just an apt-get away, although you'll need to use the version in unstable if you want to use Roxen 2.1. The version in stable is 1.3, which is getting a bit long in the tooth.
Otherwise, installation is as simple as running sh roxen-2.1.247-nolzw-lrh6.2sh, or whatever the appropriate filename is for your *NIX box. Right now there are precompiled versions of Roxen for:
- AIX 4.3
- Digital UNIX 4.0
- FreeBSD 4.0
- HPUX 11
- IRIX 6.5
- Linux (libc6)
- Solaris 2.5.1 for SPARC
- Solaris 7 for SPARC and x86
The installation script asks a few questions -- such as where you want Roxen and Pike installed -- and checks for Oracle, Informix, Sybase, or Java installations. That's really all there is to it. I took less than half an hour to download and install Roxen on a Debian GNU/Linux box.
Here's where Roxen really shines compared to Apache. All the configuration and administration for Roxen can be done from a Web-based interface. Anything you need to do to configure the server, from creating virtual hosts to adding or dropping modules, can be done from the Administration Interface. After completing the installation, simply point your browser to the appropriate hostname and port, and log in as the site administrator. (You will have been prompted for an admin name and password during the installation.)
I know that Web-based administration is something that's here to stay, but it's something I'm not always fond of. Many Web-based interfaces that I've used have been sluggish and generally unpleasant to use. Happily, I found the Admin Interface for Roxen to be fairly intuitive and responsive. It certainly beats editing the Apache httpd.conf by hand.
Anti-Block-System
One of the marks of a successful software company or project is learning to cope with Murphy.
The Roxen Web Server's Anti-Block-System allows you to have the Web server restart automagically after a set number of minutes if the server is unable to accept connections. In other words, if something locks the server up for five or ten minutes, it will automatically restart so that your Web site isn't down indefinitely. This is a real problem for some Web sites, where the server croaks and stays down until someone can locate the admin and have him restart the server. In the time I tested Roxen, it didn't lock up or do anything nasty, so I don't know how useful this feature really is. However, it's a spiffy feature to have -- just in case.
It's also possible to set Roxen to restart every 1-7, 14, or 30 days. According to the docs, Roxen tends to grow in memory usage over time, due to the nature of the server design. This means it's probably not a bad idea to have the server restart every seven days or so. Unfortunately, the Administrative interface doesn't let you set a specific time for the restart. I'd prefer to be able to set the restart time to 2AM, or whenever traffic is at its lightest.
Pike
Pike is Roxen's native programming language. Unlike Perl or CGI scripts, when using Pike with Roxen, it is run by the Web server itself and should offer a performance bonus over other scripts. Of course, allowing a script to be run by the server is also a bit of a security risk, so there's a tradeoff involved.
The Pike language is an interpreted, object-oriented language that has some similarities with C/C++, but is supposed to be easier to learn and use. Pike 7.0 is included with the Roxen WebServer and is also distributed under the GPL. Roxen itself is written in Pike.
If you find Pike interesting, you can use it to create scripts for use with Roxen. If you're already comfortable with Perl, PHP, Java, or CGI/Fast CGI, you can enable them in Roxen as well.
RXML
The Roxen Macro Language is a tag-based scripting language that integrates well with HTML. RXML is XML compliant and extensible if you have a programmer that can add new tags.
The advantage of RXML tags is that they are processed by the Roxen server and translated into regular HTML before being sent to the client, so browser compatibility isn't an issue when integrating RXML into your Web pages.
In addition to regular content tags, there are RXML tags that allow you to manipulate the URL or HTTP headers sent to the client. This is a simple way to set or remove cookies from the client browser, throttle bandwidth, or redirect users. The tag I really love, though, is the <killframe> tag. It does just what it says -- it keeps other Web sites from sticking your site in a nasty frame. I realize that many sites use frames in a useful way, but far too many use them to trap surfers in their sites; other sites simply use frames incorrectly and severely impair the surfing experience.
RXML also enables <if> tags, which will allow developers to create dynamic pages based on predefined conditions. If you'd like to use Pike or Perl directly in your Web pages, you can use the <?Perl ?> or <?Pike > tags, as long as you also have the appropriate modules installed. Roxen even provides a <dice> tag, so gamers could have dynamic Web pages that roll dice for them. (I would have found this feature very compelling in Jr. High...)
Experienced Web developers can probably learn the effective use of RXML tags in a short period of time -- particularly those who've had experience with PHP. RXML and Pike can be used exclusively, or they can be mixed and matched with other scripting languages.
Updates
Roxen has a built-in update feature that is pretty nifty. I downloaded the most recent version, so there were no Roxen updates. However, I used the updater to install a theme package for Roxen, and if the rest of Roxen's updates are as easy to download as the theme package, then Roxen will make admins very happy.
Downloading and installing a package is a two-step process, so you can download new packages or updates and decide to install them later if you wish -- preferably after making a backup.
Modules
Roxen comes with a plethora of preconfigured modules that you can enable or disable from the Web-based admin interface. I've already mentioned that Roxen has a number of modules for popular scripting languages, but it also offers a number of other modules.
If you're running a site for speakers of many languages, there are two modules of particular interest: the Language module and Preferred Language Analyser module. The Language module serves up documents in different languages, so that you could have pages in English, Spanish, Swedish, and Japanese if you wanted to. The Preferred Language Analyzer attempts to guess the client's preferred language and serve it automatically, if possible.
Another very useful set of modules for some settings -- namely, colleges or ISPs -- are the Bandwidth throttling modules. It's possible to control the amount of bandwith by address, hostname, time, type of content, or user -- which means the admin has fairly comprehensive control over bandwidth. I can imagine many settings in which these modules would be very useful.
As I mentioned earlier, GIF and TIFF support are not included in the version of Roxen that is available in the United States and Canada. However, there are a number of graphics modules that can be enabled, including a module that provides a <diagram> tag to be used for drawing bar charts, line charts, and graphs.
Note that if you wish to use PHP as a module, you'll have to download and compile it separately. This isn't a major ordeal, but it will take a little longer to configure.
Included Documentation
The Roxen download comes with a ton of online documentation for the Roxen Web server, the Pike language, a RXML Tutorial, and several other helpful docs.
The documentation is organized in bite-sized infochunks that are easy to follow and absorb while reading them through a browser interface. This format is very handy, since most folks have a limited attention span for reading online documentation. I probably spend ten hours or more a day working on the computer, but I still prefer to do any serious reading on paper. My mind starts to wander after about a page worth of text when I read it on a monitor, but the Roxen docs were just right in length.
Overall, I'm very impressed with the amount of documentation available with the Roxen Web server. And if that's not enough, the Roxen Web site also provides manuals and tutorials and a user community with forums, newsgroups, and chat. I don't know how many people are using Roxen, but there appears to be a fairly active "Roxen Community."
Final Verdict
The Roxen Web server probably won't replace Apache anytime soon. Not because Roxen isn't an excellent Web server with tons of features -- it certainly is. However, Roxen doesn't have the momentum that Apache has, and thus will likely remain a small player in the overall Web server market. Having said that, I still give Roxen a big thumbs up. The server is easy to administer and has some very cool additional features in the form of the RXML and modules. If you're getting ready to deploy a new Web site or intraweb, you might want to take a look at Roxen and see if it meets your needs.
Scorecard
Installation: 5/5
Documentation: 4/5
Ease of Use: 4/5
Effectiveness: 4/5
Overall: 4.5/5
Resources:
Pike
Roxen Docs



