1. <ul>
      <li>
        <strong>one app to find them all, and in the darkness bind them.</strong>
        <ul>
          <li>open to anyone. dependent on no one.</li>
          <li>like mac os x's <a href="http://www.apple.com/macosx/upgrade/softwareupdates.html">Software Update</a>
          </li>
          <li>extensible</li>
        </ul>
      </li>
      <li>
        <strong>simple plugin interface</strong>
        <ul>
          <li>format<br>
            <code>
              <pre>
                &lt;?xml version="1.0" encoding="utf-8"?&gt;
                &lt;application&gt;
                &lt;name&gt;Delicious Library&lt;/name&gt;
                &lt;host&gt;delicious-monster.com&lt;/host&gt;
                &lt;updateInfoURI&gt;http://delicious-monster.com/softwareUpdate/update.xml&lt;/updateInfoURI&gt;
                &lt;/application&gt;
              </pre>
            </code>
          </li>
          <li>optional nodes<br>
            <code>
              <pre>
                &lt;updateFrequency&gt;daily&lt;/updateFrequency&gt;
                &lt;updateFrequency&gt;weekly&lt;/updateFrequency&gt;
                &lt;updateFrequency&gt;monthly&lt;/updateFrequency&gt;
    
                &lt;requiredMinimumVersion&gt;2.0&lt;/requiredMinimumVersion&gt;
                &lt;requiredMinimumUpdated&gt;20040118&lt;/requiredMinimumUpdated&gt;
              </pre>
            </code>
          </li>
          <li>plugins by users or developers (partying together)</li>
        </ul>
      </li>
      <li>
        <strong>server side : update.xml</strong>
      </li>
      <ul>
        <li>single app<br>
          <code>
            <pre>
              &lt;host name="delicious-monster.com"&gt;
              &lt;application&gt;
              &lt;name&gt;Delicious Library&lt;/name&gt;
              &lt;updated&gt;20041118&lt;/updated&gt;
              &lt;version&gt;1.0.5&lt;/version&gt;
              &lt;updateURI&gt;http://delicious-monster.com/downloads/DeliciousLibrary.dmg&lt;/updateURI&gt;
              &lt;/application&gt;
              &lt;/host&gt;
            </pre>
          </code>
        </li>
        <li>multiple apps<br>
          <code>
            <pre>
              &lt;host name="ranchero.com.com"&gt;
              &lt;application&gt;
              &lt;name&gt; NetNewsWire&lt;/name&gt;
              &lt;updated&gt;20041022&lt;/updated&gt;
              &lt;version&gt;2.0b6&lt;/version&gt;
              &lt;updateURI&gt;http://ranchero.com/downloads/NetNewsWire2.0b6.dmg.gz&lt;/updateURI&gt;
              &lt;/application&gt;
              &lt;application&gt;
              &lt;name&gt;MarsEdit&lt;/name&gt;
              &lt;updated&gt;20041116&lt;/updated&gt;
              &lt;version&gt;1.0b12&lt;/version&gt;
              &lt;updateURI&gt; http://ranchero.com/downloads/MarsEdit1.0b12.dmg.gz &lt;/updateURI&gt;
              &lt;/application&gt;
              &lt;/host&gt;
            </pre>
          </code>
        </li>
        <li>optional nodes<br>
          <code>
            <pre>
              &lt;updateFrequency&gt;daily&lt;/updateFrequency&gt;
              &lt;updateFrequency&gt;weekly&lt;/updateFrequency&gt;
              &lt;updateFrequency&gt;monthly&lt;/updateFrequency&gt;
    
              &lt;requiredMinimumVersion&gt;2.0&lt;/requiredMinimumVersion&gt;
              &lt;requiredMinimumUpdated&gt;20040118&lt;/requiredMinimumUpdated&gt;
    
              &lt;endOfLife&gt;true&lt;/endOfLife&gt;
              &lt;endOfLife&gt;false&lt;/endOfLife&gt;
            </pre>
          </code>
        </li>
      </ul>
      <li>
        <strong>download prefs</strong>
      </li>
      <ul>
        <li>respect server side unless overwritten client side by user</li>
        <li>update frequency : all items</li>
        <ul>
          <li>daily</li>
          <li>weekly</li>
          <li>monthly</li>
          <li>manually</li>
        </ul>
        <li>enable / disable : item specific</li>
        <li>auto download : item specific</li>
        <li>auto download : item specific</li>
        <li>admin password : save in keychain (BOOL)</li>
      </ul>
      <li>
        <strong>auto open files</strong>
      </li>
      <ul>
        <li>resolve decompression</li>
        <ul>
          <li>if zip, gz, tar, et al : decompress internally</li>
          <li>if sit, sitx : farm out to stuffitexpander</li>
        </ul>
        <li>replace old version</li>
        <li>backup older version pref (BOOL)</li>
        <li>keep originals pref (BOOL)</li>
      </ul>
      <li>
        <strong>issues to work out</strong>
      </li>
      <ul>
        <li>initial lastUpdated date for each app</li>
        <ul>
          <li>from the app's 'date modified' data?</li>
          <li>sounds like good enough to me</li>
        </ul>
        <li>xml namespaces</li>
        <ul>
          <li>are namespaces necessary?</li>
          <li>beneficial?</li>
        </ul>
      </ul>
      <li>
        <strong>benefits</strong>
      </li>
      <ul>
        <li>for users</li>
        <ul>
          <li>easy maintenance</li>
          <li>stay up to date</li>
          <li>open to all apps</li>
          <li>
            <a href="http://growl.info/">growl notifications</a>
          </li>
        </ul>
        <li>for developers</li>
        <ul>
          <li>can easily migrate existing check for update systems</li>
          <li>inexpensive deployment</li>
          <li>inexpensive maintenance</li>
          <li>inexpensive bandwidth</li>
          <li>keeps user base up to date</li>
        </ul>
      </ul>
    </ul>