An Open Letter to the UW IT Review Committee

November 10, 2002

To:
Review Committee
David Barnard, President, University of Regina
Larry Symes, University of Regina
John Mather, Manulife Financial

UW Administration
David Johnston, President, University of Waterloo
Amit Chakma, Vice President (Academic) and Provost, University of Waterloo
Jay Black, Associate Provost, Information Systems & Technology, University of Waterloo
Anne Wagland

Student Senators
Adrian Chin, Jesse Helmer, Jenny Lin, Nayan Gandhi, Stephen Skrzydlo, Jesse Waltman, Douglas Stebila, Igor Ivkovic, Jeannette Byrne, Justin Wozniak, Brenda Koprowski, Shannon Puddister, Melissa Conrad

Media
Imprint, The Gazette, uwstudent.org

Over the past decade, the University of Waterloo's Information Systems & Technology department has faced many challenges and has been handed many opportunities. In every case it has struggled and failed to live up to the expectations of the UW community, particularly students.

  • The Student Information Systems Project was late, expensive and fraught with problems. Initiated in 1992, it did not launch until nine years later. When it finally became available, QUEST was slow, difficult to use and inconvenient. These problems have still not been addressed.
  • Six years after it was promised, a replacement for Student Access is still not in place. This despite a system that was out of date when it was introduced in 1993, two failed attempts at a web-based system and the rejection of offers of help from several student groups.
  • Trellis, the library system, is slow and difficult to use.
  • The new payroll system is inflexible.
  • The "preferred high speed Internet provider," Bell Canada, was chosen in a back room deal that put Waterloo at a disadvantage compared to other schools.
  • On-campus bandwidth is woefully inadequate. The current link is insufficient for 20,000 people. Today, you can buy one megabit of home DSL for $45/month.
  • Campus computing facilities rely on a chaotic assortment of incompatible login systems. Math has one system for Unix, another Macintoshes and a third for Windows; Engineering has its own Unix systems; IST has another for Windows.

Information Technology at UW is now at a crucial point: it can continue on its current path into irrelevancy and disorder, or it can turn the corner and become a leading innovator once again.

I hope you'll choose the latter.

With that in mind, here are four principles to guide IST into the twenty-first century.

  1. Serve the Community. Just as Plant Operations' job is to provide heating and clean buildings, IST's job is to provide bandwidth, write software and install hardware.

    IST should not be dictating to its masters — students, faculty and staff — what computing platforms they can and cannot use. It should not force insecure, virus-prone Microsoft-based systems on people. It should not arbitrarily cap bandwidth or block network ports.

  2. Be a good citizen. IST should be a good member of the Internet and open source communities from which it draws so much. Waterloo should provide mirrors for software such as Debian Linux, BSD, The GNU Project, CPAN and Apache.

    The University of Washington created PINE and an IMAP server. MIT created Kerberos. Washington University created WU-FTPD. Berkley created BSD. UIUC created the Mosaic web browser and httpd. Cambridge created the exim mail server.

    What has Waterloo — allegedly Canada's most innovative university — done? Nothing.

    Waterloo should start, fund and provide ongoing support for open source/free software projects beneficial to the community at large.

  3. Involve students. University students are hardworking, ambitious individuals. The University of Waterloo has thousands of talented computer science and engineering majors who have much to contribute. UW and IST should:

    • Solicit student input on all projects in a meaningful manner, and incorporate their suggestions into the final product.
    • Let student volunteers help build UW's systems. You get free labour, high quality work and a big public relations win. And the students get experience building large, real-world systems and products they can show off to future employers.
  4. Innovate, don't wait. UW likes to call itself an innovator. Twenty years ago, it was among the first to give students access to computers. But recently, it was among the last to provide network access in residence rooms and the last to provide wireless access on campus.

    Waterloo should embrace new technologies and experiment to discover their potential — like Case Western Reserve University's "Gigabit Everywhere" initiative and the wireless campuses at Carnegie Mellon University and the Richard Ivey School of Business at the University of Western Ontario.

    Instead of restricting access due to paranoid worries about potential abuses, UW should take risks and look for opportunities.

Sincerely,
Paul Schreiber
BMath (Computer Science) 2001

Installing WebObjects 5 on Linux

I installed WebObjects 5.0 successfully on debian 2.2 (testing).

Here's what I did:
* download jdk 1.3.1 from sun and put it in /usr/local
  -- available from http://java.sun.com/j2se/1.3/download-linux.html

* install webobjects after renaming the files 
  (they were mounted as all lowercase for me) using install.sh

* set up my NEXT_ROOT and PATH environment variables in my .profile
   -- export NEXT_ROOT=/var/Apple
   -- export PATH=${PATH}:/usr/local/jdk1.3.1/bin 
   (this is bash syntax; for tcsh, try setenv NEXT_ROOT /var/Appple, etc.)

* compile the apache adaptor
  -- we want to change the default OS to HPUX
>># Define the OS.
>>ifeq "" "${OS}"
>>OS = HPUX
>>endif

  -- and change the adaptors built for HPUX
  -- make sure to set the correct path for apxs
>>ifeq "HPUX" "$(OS)"
>>ADAPTORS = CGI Apache
>>APXS = /usr/bin/apxs
>>endif

  -- change CGI/Makefile to eliminate the annoying warning messages
     during compile
>>#ifeq "HPUX" "$(OS)"
>>#CFLAGS += -nopdolib
>>#endif

* install the module like so
	apxs -i -n WebObjects mod_WebObjects.so

* add this line to httpd.conf:
    Include /var/Apple/Library/WebObjects/Adaptors/Apache/apache.conf 
  -- change the LoadModule line to /usr/lib/apache/1.3/mod_WebObjects.so 
     (it may be different for RedHat, SuSE, etc.)

* start up wotaskd:
    /var/Apple/Library/WebObjects/Executables/WOServices start

* start up JavaMonitor:
  /var/Apple/Library/WebObjects/JavaApplications/JavaMonitor.woa/JavaMonitor &

notes
-----
I had to install a few weird debian packages (using apt-get instal XXX). These included:
* libdb3-dev (to compile the apache adaptor)
* libstdc++2.9-glibc2.1_2.91.66 (for java)
* apache-dev (to get apxs)

MySQL, PHP and Apache on a Raq2

Originally published 11 October 1999

** update 12 March 2000
**
** these instructions have been tested with the following versions:
** Apache 1.3.9, 1.3.11 and 1.3.12
** PHP 3.0.12, 3.0.14 and 3.0.15
** MySQL 3.22.27 and 3.22.32 
**   in step [8], i was able to use --with-debug with MySQL 3.22.27
**   but not with 3.22.32
**



thanks to Sinisa Milivojevic  for the MySQL info.

part 1: install MySQL
---------------------
This is the longest part. In particular, compiling MySQL takes forever.

[1] Download MySQL:
    http://www.mysql.com/Downloads/MySQL-3.22/mysql-3.22.27.tar.gz
    
    A mirror list is at:
    http://www.mysql.com/mirrors.html

[2] Uncompress MySQL and delete the tarball:
    tar xzf mysql-3.22.27.tar.gz
    rm mysql-3.22.27.tar.gz

[3] Edit the configure file:
    ***
    *** NO LONGER NECESSARY WITH 3.22.32 ... only needed for 3.22.27 ****
    ***
    cd mysql-3.22.27/
    vi configure
    
    Delete these lines: (starts at line 6290 in 3.22.32)
    
    # Big file support ? (Solaris 2.6 style)
    # This may have to be commented on Relient (Siemens) unix
    echo $ac_n "checking "for Sun style big file support"""... $ac_c" 1>&6
    echo "configure:4853: checking "for Sun style big file support"" >&5
    LFS_CFLAGS=`getconf LFS_CFLAGS 2>/dev/null`
    if test $? = 0 -a "$SYSTEM_TYPE" != "sni-sysv4"
    then
      CFLAGS="$CFLAGS $LFS_CFLAGS"
      CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
      #
      LFS_LDFLAGS=`getconf LFS_LDFLAGS`
      LDFLAGS="$LDFLAGS $LFS_LDFLAGS"
      #
      LFS_LIBS=`getconf LFS_LIBS`
      LIBS="$LIBS $LFS_LIBS"
      echo "$ac_t"""Found. Using C $LFS_CFLAGS LD $LFS_LDFLAGS LIB $LFS_LIBS"" 1>&6
    else
      echo "$ac_t"""No"" 1>&6
    fi

[4] Get the new glibc:
    ftp://ftp.cobaltnet.com/pub/experimental/
        glibc-profile-2.0.7-29C2.mips.rpm
        glibc-debug-2.0.7-29C2.mips.rpm
        glibc-devel-2.0.7-29C2.mips.rpm
        glibc-2.0.7-29C2.mips.rpm

[5] Install the new glibc:
    cd
    rpm -Uvh --force --nodeps glibc-*-29C2.mips.rpm

[6] Run ldconfig:
    /sbin/ldconfig

[6] Get egcs and libstdc++:
    (Alternately you could downnload and compile get gcc 2.95.1 and libstdc++.)

    ftp://ftp.linux.sgi.com/pub/linux/mips/mipsel-linux/RPMS/mipsel/
        egcs-1.0.2-9.mipsel.rpm
        egcs-c++-1.0.2-9.mipsel.rpm
        egcs-g77-1.0.2-9.mipsel.rpm
        egcs-objc-1.0.2-9.mipsel.rpm
        libstdc++-2.8.0-9.mipsel.rpm
        libstdc++-devel-2.8.0-9.mipsel.rpm

[7] Install egcs & libstdc++
    rpm -e gcc-objc
    rpm -e gcc-c++
    rpm -e gcc
    rpm -Uvh egcs*-1.0.2-9.mipsel.rpm

    rpm -e libg++-devel-2.7.2.8
    rpm -i libstdc++*-2.8.0-9.mipsel.rpm


[8] Install mysql:
    cd mysql-3.22.27/
    ./configure --with-low-memory --disable-assembler --disable-shared \
    --with-mysqld-ldflags="-all-static" --with-client-ldflags="-all-static" \
    mipsel-unknown-linux-gnu

    make
    make install

[9] Run the MySQL install script
    ./scripts/mysql_install_db
    
[10] Copy the MySQL start script:
     cp ./support-files/mysql.server /etc/rc.d/init.d/mysql
     chmod a+x /etc/rc.d/init.d/mysql
     
[11] Modify rc.local to start the MySQL server automatically:
     vi /etc/rc.d/rc.local 
    
     put "/etc/rc.d/init.d/mysql start" at the very end.
     
[12] Start MySQL:
     /etc/rc.d/init.d/mysql start
     
[13] Give the root account a password:
     /usr/local/bin/mysqladmin -u root password 'new-password-goes-here'
     

part 2: install Apache and PHP
------------------------------

[14] Download Apache:
     http://www.apache.org/dist/apache_1.3.9.tar.gz

     A mirror list is at:
     http://www.apache.org/dyn/closer.cgi

[15] Download PHP:
     http://www.php.net/distributions/php-3.0.12.tar.gz

     A mirror list is at:
     http://www.php.net/download-php.php3
     
[16] Uncompress Apache and delete the tarball:
     tar xzf apache_1.3.9.tar.gz
     rm apache_1.3.9.tar.gz
     
[17] Uncompress PHP and delete the tarball:
     tar xzf php-3.0.12.tar.gz
     rm php-3.0.12.tar.gz
     
[18] The Raq2 needs mod_auth_pam to be installed with Apache.
     Download it:
     http://blank.pages.de/pam/mod_auth_pam.c
     
[19] Edit the mod_auth_pam.c file.
     vi mod_auth_pam.c

    Change line 120 so it reads:
     *pam_servicename = "ahttpd",

[20] Copy mod_auth_pam into the Apache modules directory:
     cp mod_auth_pam.c apache_1.3.9/src/modules/extra/
     

     
[21] Configure Apache initially:
     cd
     cd apache_1.3.9/
     ./configure --prefix=/etc/httpd

[22] Configure PHP:
     cd
     cd php-3.0.12/
     ./configure --with-mysql --with-apache=../apache_1.3.9/ --enable-track-vars
     make
     make install

[23] Configure Apache. The easy way to do this is to replace your config.status
     file with this:

     cd
     cd apache_1.3.9/
     vi config.status

     #!/bin/sh
     ##
     ##  config.status -- APACI auto-generated configuration restore script
     ##
     ##  Use this shell script to re-run the APACI configure script for
     ##  restoring your configuration. Additional parameters can be supplied.
     ##

     ./configure \
     "--with-layout=Apache" \
     "--prefix=/etc/httpd" \
      "--enable-module=rewrite" \
     "--enable-module=so" \
     "--enable-module=mmap_static" \
     "--enable-module=log_agent" \
     "--enable-module=log_referer" \
     "--enable-module=mime_magic" \
     "--enable-module=info" \
     "--enable-module=speling" \
     "--enable-module=auth_anon" \
     "--enable-module=auth_dbm" \
     "--enable-module=auth_db" \
     "--enable-module=digest" \
     "--enable-module=cern_meta" \
     "--enable-module=expires" \
     "--enable-module=headers" \
     "--enable-module=usertrack" \
     "--enable-module=example" \
     "--enable-module=unique_id" \
     "--activate-module=src/modules/php3/libphp3.a" \
     "--activate-module=src/modules/extra/mod_auth_pam.o" \
     "$@"


     Now run config.status and make Apache:
     ./config.status
     make
     
     Do *NOT* do a make install.
     
[24] Install the PHP configuration file:
     cd
     cd php-3.0.12/
     cp php3.ini-dist /usr/local/lib/php3.ini

[25] Edit the PHP configuration file:
     vi /usr/local/lib/php3.ini

[26] Edit your srm.conf:
     vi /etc/httpd/conf/srm.conf
    
    Uncomment the line that says
      AddType application/x-httpd-php3 .php3
    Add a line that says:
      AddType application/x-httpd-php3 .php

[27] Backup the old Apache daemon:
     cp /usr/sbin/httpd /usr/sbin/httpd.old

[28] Stop the http daemon:
     /etc/rc.d/init.d/httpd.init stop

[29] Install the new http daemon:
     cd
     cd apache_1.3.9/
     cp src/httpd /usr/sbin/httpd

[30] Restart the http daemon:
     /etc/rc.d/init.d/httpd.init start