winapt / docs / design / Icehamster-Executive-Summary.html

Full commit
<?xml version="1.0" encoding="utf-8"?>
    html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
<html xmlns="" xml:lang="en-US">
        <title>"Icehamster" - an Executive Summary</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="author" content="Shlomi Fish" />
        <meta name="description" content="Executive summary for Icehamster" />
        <meta name="keywords" content="Shlomi Fish, Icehamster, Apt, Windows, Microsoft, Win32, urpmi, rpm, dpkg, Linux, packages" />
        <h1>"Icehamster" - an Executive Summary</h1>
        The Microsoft Windows line of operating systems suffers from inadequate
        package management. Generally, programs are downloaded as 
        self-contained executables, installed using a manual process, and often
        break other applications or the entire system. Compare this to the
        state of the art in most modern Linux distributions (such as 
        <a href="">Debian GNU/Linux</a>, 
        <a href="">Mandriva Linux</a> and 
        <a href="">Fedora Linux/Red Hat Enterprise Linux</a>
        , where one can install packages in an automated processes, and each
        package encompass functionality that can be used by many other 
        dependant packages. 
        The aim of the "Icehamster" (temporary name) project is to provide the 
        same functionality for Microsoft Windows, in an open-source 
        (BSD-licensed), flexible, and reliable way.

        <h2>What Icehamster will do?</h2>

        Icehamster will provide:
            A way for developers to package their software (and similar 
            content) in packages. As opposed to traditional 
            "Next &rarr; Next &rarr; Install" Win32 packages, each of these
            would contain a self-contained and possibly dependant 
            functionality that can later be re-used by other packages.
            Allow developers to publish their packages online, or in re-usable
            media such as CD-ROMs.
            Allow users to install an Icehamster client which will allow them
            to retrieve Icehamster packages from remote sources or from media.
            All of this will be fully automatable, open source, and flexible.
        <h2>Source of Revenue</h2>

        The Icehamster software being open-source will not generate a profit
        stream by itself. The Icehamster developers will instead offer
        the software free of charge for people to download and install on their
        computers. Furthermore, developers will be able to prepare their own
        Icehamster packages for easy installation and maintenance of their 
        software. So what will we profit from? 
        Simple. We will provide a hosting service for Icehamster packages. 
        Instead of configuring and maintaining their own source of packages,
        the interested developers would be able to set up an account on our
        server, and upload new versions of their packages whenever they are
        ready. We will charge them for the hosting, and for any extra bandwidth
        It is possible similar providers of services will spring up. That's
        perfectly acceptable, as we will still have a large percentage of the
        total market, assuming we stay competitive enough.


        We plan to use <a href="">Perl</a>, a powerful
        , popular and cross-platform dynamic language for writing most of
        Icehamster. While being very high-level and allowing a programmer
        to construct a lot of working code very quickly, it also supports
        many low-level primitives, and platform-specific APIs.
        We plan to use PAR - the Perl Archiver, as a way to package Icehamster
        in self-contained executables that contain the Perl Virtual Machine
        and all the third-party APIs. This is done in order to facilitate the 
        installation by the user.

        We will make use of many of the 
        <a href="">Comprehensive Perl Archive Network</a>
        (or CPAN) modules that we find appropriate. CPAN provides a lot of
        ready made and fully usable functionality, that can make a dramatic
        improvement in development time and cost. We may also make use of 
        external tools written in other languages (especially C and C++)
        if they also prove useful.