<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE doc [
<!ELEMENT doc (title?,(item|section)*)>
<!ELEMENT item (description,(pro|con)*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT pro (#PCDATA)>
<!ELEMENT con (#PCDATA)>
<!ELEMENT section (#PCDATA)>
]>

<?xml-stylesheet type="text/xsl" href="style-pro-con"?>

<doc>
  <title>Technology use debate</title>

  <section>Web</section>

  <item>
    <description>Dynamic sized page layout instead of fixed sized page
      layout</description>

    <pro>When the font is changed in the browser the page still looks
      fine</pro>
  
    <con>The page will never look exactly like a photoshop design</con>
    
    <pro>The page will always fill the browser window, the user can choose how
      wide to make the tpage</pro>
    
    <pro>When the browser window is narrower than the page design the page will
      still be readable</pro>

    <con>Dynamic sized designs take more work and time to implement than static
      sized designs</con>

  </item>
  
  <item>
    <description>Use XSLT to seperate logic from presentation</description>
    
    <pro>Standard since 16 November 1999 and supported in most web
      browsers</pro>

    <pro>Can be done client side or server side using java or perl</pro>

    <pro>business logic is seperated from presentation allowing a web designer
      to modify the display without touching the logic</pro>

    <pro>the template can process static or dynamic data allowing for easier
      prototyping</pro>
    
    <con>not supported in all web browsers</con>

    <con>requires more server processing than just outputing html</con>

    <con>requires collection of data to be passed on to the template</con>

    <con>the web designer and script writer need to understand XML and
      XSLT</con>

  </item>

  <item>
    <description>
      Use templates to seperate logic from presentation
    </description>

    <pro>only resulting html is sent to the client</pro>

    <con>requires collection of data to be passed on to the template</con>
    
    <pro>The script programmer and web designer can each work on their parts
      without needing to worry about the other</pro>

    <con>the web designer needs to know how the specific template language
      works</con>

  </item>

  <item>
    <description>use mod_perl rather than PERL-CGI</description>

    <pro>does not reqire the launching of a new process</pro>

    <con>the script runs in the web server process and can modify the web
      server's active configuration and access anything the web server
      can (use FastCGI instead)</con>

    <pro>script code is cached in compiled form in the web server giving
      dramatic speedup (speeds comparable to static content)</pro>

    <con>script code is cached in compiled form in the web server increasing
      the memory requirements</con>

    <pro>persistant database connections are available eliminating the
      server-time required to connect to the database on each request</pro>

  </item>

  <item>
    <description>use mod_fastcgi to speed up scripts</description>

    <pro>keeps scripts loaded after the first invocation so that initialization
      time is eliminated, almost as fast as mod_perl</pro>

    <pro>integrates with suexec to allow the scripts to be run as users,
      improving security</pro>

    <con>the scripts stay in memory</con>

    <pro>the pool of waiting scripts in memory is managed according to
      use</pro>

    <pro>allows for multiple versions of php to be available</pro>

    <con>the scripts need to be written for use with FastCGI (easy conversion
      in perl)</con>
    
  </item>
  
  <item>
    <description>use mod_perl to extend web server capability</description>

    <pro>allows for custom authentication methods</pro>

    <pro>allows for generated config files, making configuration easier</pro>

  </item>
  
  <item>
    <description>use SSI (Server Side Includes) instead of copying text into
      each page</description>

    <pro>reduces the person-time required to update the shared content</pro>

    <pro>ensures a consistant appearance on the site</pro>

    <con>requires SSI, not available on the local disk during design</con>

    <con>not every hosting environment allows SSI</con>

    <con>is slightly slower than having the text in every page</con>

  </item>

  <item>
    <description>use Content Negotiation</description>

    <pro>feature available in apache since 1999</pro>

    <con>feature consts money in IIS and not supported in Tomcat</con>

    <pro>even works for jsp pages served through Tomcat through Apache</pro>

    <con>not all hosting providers enable Content Negotiation</con>

    <pro>most hosting providers have the option to use Content
      Negotiation</pro>

    <pro>shortens urls by allowing the extension to be left out in the page
      source and address</pro>

    <pro>allows the implementation of a page to change without changing the url
      to the page, for example changing a html file to a shtml file to a cgi
      script</pro>

    <con>requires a directory scan and quality calculation for each request,
      which is slightly slower than using the full name</con>

    <pro>hides the technology used to implement a dynamic page from possible
      attackers</pro>

    <pro>Supports multiple languages at the same URL, the browser perfereed
      language will be served</pro>

  </item>

  <item>
    <description>use valid HTML Strict</description>

    <pro>the page is more accessable</pro>

    <con>layout may be slightly harder</con>

    <con>browser specific features are not available in html (but may be
      available in javascript)</con>

  </item>

  <item>
    <description>only use javascript for added functionality, do not require
      javascript for the page to perform basic functions like
      navigation</description>

    <pro>the page is more accessable, people with scripting turned off and
      search engines will be able to navigate the page.</pro>

    <con>awareness of the non-script appearance of the page is required</con>

  </item>

  <item>
    <description>accept and use graceful degredation</description>

    <pro>use current features, but do not rely on them, allow the page to look
      acceptable to browsers that do not support them</pro>

    <con>the page may not look identical in all browsers</con>

  </item>
  
  <item>
    <description>use Firefox or Mozilla instead of Internet
      Explorer</description>

    <pro>a more standards based browser</pro>

    <con>not every feature of Internet Explorer is available</con>

    <pro>much less annoyances (spyware)</pro>

    <con>harder to implement annoyances that work with Firefox or Mozilla (why
      you would want to is a mystery)</con>

    <pro>You take control of you web browsing experience, elminate new window
      links, per-site javascript control, and many other things available as
      extensions</pro>

    <con>web page 'Subscriptions' are not available</con>

    <pro>more secure and faster response to security problems</pro>

  </item>

  <section>Security</section>

  <item>
    <description>store password hashes instead of passwords</description>

    <pro>the password can not be viewed and remains safe if the database is
      comprimised</pro>

    <con>can not get the password for password reminders, need to reset
      password instead</con>

    <con>can not move the passwords to a new hash (need to keep verifying
      against old hash, changing the hash when the clear password is
      knwown)</con>

  </item>

  <item>
    <description>Do not allow direct remote access to a database.  in other
      words filter external traffic to the database server ports</description>

    <pro>it is harder for someone to break into the database, they need to get
      onto a system that can access the database first</pro>

    <con>the database is only accessable from the local machine (or allowed
      machine) so desktop clients do not directly work</con>

  </item>

</doc>
