Oasis VM 4.0: The OpenACS 4.x Virtual Machine

      Author: John Sequeira - johnseq -=at=- pobox.com - http://www.jsequeira.com/      
Date: September 2001
[ Installation Instructions][[ Download Now [200Meg]]


1. Introduction
2. Who does this approach benefit?
3. How exactly does it VM-based distribution help?
4. Gee, that sounds great. How could it possibly be improved?
5. Open Source and VMWare - quite a match
6. Resources


click to view screenshot

1. Introduction

ArsDigita had this terrific product/service called a Rocket-Start server. The idea is that they will take a stock web hosting server, and set up all of the ACS toolkit components for you, (including database, web server, and ACS source), dev, staging and production CVS source trees, and all the other system bells and whistles. You send them a check, they send you a root password and you start coding. I thought it was a great idea because the ACS project I was leading at the time was just starting out on ACS, and we wanted to concern ourselves with coding (what we're good at) instead of administration (which we're not).

Ultimately we didn't order a Rocket Start server, because my then-employer was able to hire a godlike system admin and we ended up doing the installation ourselves. But I still liked the idea of not subjecting developers to the rigors of n-tier software installation. A month or two into the sales cycle, when the sales team said they wanted to demo the application on their laptops, I was motivated to find a much easy way to clone an ACS installation. We implemented something similar to Rocket-Start for the sales staff and a junior developer or two using VMWare. VMWare allows you to create virtual machines and run them simultaneously with your host operating system. The virtual machine can have nearly any operating system supported by the x86 architecture. In my case, it was a rather mundane Windows 2000 ACS virtual machine running on Windows 2000 laptops. Not exactly exciting cross-platform stuff, but if you've ever installed Oracle before and wrestled with SQLNET, you'll understand that one install is way better than 10.

Anyway, I would install all of the software onto a virtual machine, which they would copy onto their laptops and use as a backup for sales demos. That way if the live site went down or network speed was slow , they'd always be able to show the client our software.

It occurred to me that other users in the ACS community could benefit from the approach of downloading a VM, and testing out the software, but at the time there was no OpenACS, and I didn't think Oracle would appreciated it if I distributed their software (later I asked them - nope, they really don't).

When OpenACS was announced, I realized that now that all the ACS components were free, I had a green light on distributing an openACS VM, so that's what I've created.

A paean to VMWare
VMWare rules. VMWare really really rules. I've used VMWare on almost all of my recent projects to facilitate cross-browser testing, to sandbox development projects, to distribute development environments to newly hired coders, and to deploy n-tier enterprise software demos to salespeople's laptops.

Using VMWare, I was able to set up new team-members at my last dot-com (yes, it failed) in about 10 minutes with their own installation of Oracle, Aolserver, and ACS 4.0. Before my team's linux skills were up to snuff, I'd just have them copy the development environment VM from my machine. Instantly, junior coders with zero experience could mount the source code folders on the VM and begin working through ArsDigita's documentation. Having complete control of the source tree and database meant that they could screw up anything while moving up the learning curve and not impact the rest of the team.

On my primary workstation, I have virtual machines with Windows 95, W2K Advanced Server, W2K Professional, Red Hat 6.2, 7.0, 7.1, Debian and Mandrake 7.0. I have dedicated development environments for Oracle, ACS, and mod_perl, and almost every modern browser for website compatibility testing. All on one box, all potentially running concurrently, and all without any DLL conflicts or uninstallation hassles.

2. Who does this approach benefit?

For consultants, corporate developers, and hobbyists with a Linux or Unix background, I recommend giving ACS a test drive by downloading the RPM/DEB packages, or the source, and installing it according the OpenACS Installation Guide. If you find that the aforementioned software distribution methods work fine for you, then you'll probably only benefit from the VM-based distribution if your company sticks you on a Windows workstation (then you can run the VM in full screen mode and be happy).  I should note, however, that all of the Linux VMs that I created on my Windows box should work on the Linux version of VMWare (though I haven't tested this yet.)

For the Windows developer who is enlightened by the Phil and Alex's guide to web development, and would like to give the ACS platform a try, the standard approach is not so simple. To test drive the current release of ACS, they have to tackle Oracle (a bigger download than my VM) then Java App Server, and then the toolkit itself. Few make it through this installation gauntlet unbruised. Installing OpenACS, the Tcl-based branch of the ACS tree, is certainly a simpler process, but that's only a relative term. Install docs, though exceptionally good, tend to be just a little out of date, or assume just a little bit of platform sophistication. Deployment on Windows is not for those who, like me, fear the bottomless pit of cross platform makefile editing. The assumed sophistication (however slight) in existing docs can easily translate into hours of frustration at some missing library or misconfigured conf file or command line voodoo.


3. How exactly does it VM-based distribution help?

VM-based software distribution eliminates almost all installation learning curves. Someone interested in discovering the benefits of the OpenACS platform can do it in less than a day, without resorting to the bulletin boards for support. They can begin walking through the tutorial documentation on a sandbox virtual machine that will not impact their primary system's integrity. Conceivably they can do it without developing the mistaken impression that the software is difficult to configure (which is ordinary a risk). 

As an added benefit, during this evaluation process, the developer will be supported by VMWare's global undo capability. At any point during their exploration of the platform, the VMWare user can restore their system to it's last saved state. There's no need to learn a separate rollback mechanism for PostgreSQL, AOLServer or the Linux file system - it's all encapsulated in a big, friendly button named 'Discard Changes.' (see VMWare docs for more info)

This method of bootstrapping test-drives is a crutch, and eventually the crutches will come off. A busy developer, having decided that they want to code a project using OpenACS, can start evaluating and coding today, and defer installation of the platform until after they've had a chance to get comfortable with the system. From personal experience, this is a vastly simpler process than tackling all foreign systems at once. It's possible that the only installation with be on the staging and production servers, which in a managed hosting situation (i.e. OpenForce) this means that you've put it off forever.

4. Gee, that sounds great. How could it possibly be improved?

4.1. Downloading Speed

I figure that there are two ways to improve the download experience. Shrinking the download and using a alternative file distribution network.

Shrink the download The VM file is definitely bigger than it has to be. As a non-Linux system administrator, I'd like to request the assistance of someone who'd like to recommend modifications to my Red Hat 7.1 kickstart file to shrink the download.
P2P file distribution network Akamai has a truly amazing method of speeding up file transfers. They distribute your file to several thousand peering servers across the world, and then use geographic load balancing so that when you click a link to download a file, you're redirected to the closest server to you. It's very cool technology, very expensive, and no longer cutting edge. Newer distribution networks like Swarmcast,BitTorrent use a peer to peer architecture and employ the downloaders' machines as content repeaters - if someone in your office has already downloaded a big file from Swarmcast, for example, you'll download all (or a large chunk) of the file from them, without even going out of the LAN. At the risk of stating the obvious, this has a huge impact on the download speed and significantly alters the economics of large file distribution. So hopefully if this experiment takes off I stand a chance at not saturating my generous host's (TBD) monthly bandwidth allotment.

4.2. Installed Features

Out of the box, the OpenACS installation is interesting, but not inherently instructive. ArsDigita's documentation was and is absolutely *AMAZING*, and a big part of why I fell in love with the platform. With fewer dedicated resources, the OpenACS is currently struggling to keep up documentation-wise, like pretty much every open source project. What exists is still top tier, but as the original ACS Tcl docs gathers dust, so too the OpenACS's borrowed docs grow more and more out of date.

In the very near future, the community will need docs that go a bit beyond how to install the software, and which module does what. It would be a great feat of advocacy to produce a tutorial meeting the needs of platform neophytes then release a VM with both tutorial and software installed and ready to run.

Power users would benefit most from having the more advanced (read 'time-consuming') and potentially useful configurations packaged up in VM form, like possibly

  1. Subversion or CVS source code control (set up like ArsDigita's Rocket Start server)

  2. Jabber integration

  3. openLDAP/Ganymede integration

  4. Apache, Apache/mod_proxy, Squid, and Apache/FastCGI as front-ends to Aolserver

  5. TclPro debugging (would require X)

  6. some sort of p2p file synchronization software which could synch source code trees among subscriber machines (I think StarTeam does this), so that one could provision an entire distributed workforce with OpenACS development environments without a single dedicated server resource. Aaaah.

  7. Alternate database drivers (ODBC connectivity).
  8. Alternate language support ( esp. Perl or python

  9. Any other related project combining utility, community interest and installation complexity

5. Open Source and VMWare - quite a match

Because all the software contained in this release is distributed on a permissive open source basis, I don't have to consult my legal team (ahem) before posting the file. For a moment, just think about how improbable it would be for all of the commercial entities of a competing app server stack (Oracle/Sun/WebLogic, Microsoft, etc.) to collaborate on a license that would let me do this. It won't happen.

I would like to see many, many more VMs released for prominent open source packages, particularly the server-based ones which can be a pain to setup. Taking binary snapshots of server installation which reflect industry best-practices is definitely an inelegant approach to documentation and knowledge transfer, but dammit - it works for me! For high bandwidth users there is no other way to avoid actually dedicating a server and subjecting yourself to documentation in order to try out enterprise software.

6. Resources

Copyright John Sequeira. All Rights Reserved.
Generated with Makespec  1.8.15 and REBOL on 5-Sep-2001 at 1:49:48







Click Here!