Table of Contents

GSoC Application

Name: Bohdan Vlasyuk
City: Vinnytsia
Country: Ukraine
School: Vinnytsia National Technical University

Title

The project it code-named Manatee. Manatees, also known as sea cows, are large mammals that won’t breed in captivity. That was the best name I could come up with. Heh. :-)

Synopsis

The project is to develop a tool, used to serve and manage binary software distributions on Windows (Portability to other OS-es must be kept in mind. MacOS X, in particular.). It must contain a user-centric component, and automation facilities.

Deliverables

Manatee

Description

A tool, used to serve and manage binary software distributions on Windows (Portability to other OS-es must be kept in mind. MacOS X, in particular.). Must contain an user-centic component, Manatee/ControlCenter, and automation facilities, Manatee/ScriptingEngine.

Primary goals

“The goal is to give the average joe user an easy tool to choose, install and update a selected set of open source apps.”

Secondary goals

Architecture

Terminology

term meaning
distribution a collection of software packages
package a component of a distibution, must be a complete application or some system library (like GTK+ or JRE)
WinLibre the free software collection for windows
Manatee the program, used to manage (install/uninstall/upgrade/launch) packages

Concepts

There is a “current distribution” concept, which is the subset of the distribution components that you have on your system. You can get “reference distribution” from the server, which may contain updated versions of packages you use, or new packages.

Packages usually contain a list of installable files. This is not strictly necessary. There might exist ‘dummy’ packages, that are useful for collecting different stuff togeather. Another use of dummy packages might be a package name transition.

If a package is installed, it is “pinned”. So, each auto-upgrade will try to install its latest version.

Components

Component name rationale
Manatee/Installer very small and simple component, which just installs and runs Manatee/ControlCenter
Manatee/Uninstaller it just erases every trace of Manatee existence
Manatee/Core is a core code set, which does all the work. It is required to prevent code duplication across Manatee/ControlCenter and Manatee/ScriptingEngine
Manatee/ScriptingEngine a code set used for automation tasks
Manatee/Updater an auto-update service
Manatee/ControlCenter is an UI frontend, which allows user to manage a distribution. It uses Manatee/Core to do all the work with packages

Implementation notes and details

Idea pool

OpenSource installers for Windows out there:

Worth a look:

They might benefit from Manatee if they decide to use it to deploy their distribution.

Concerns

Manatee/Installer

Functionality

Manatee/Core

Sub-components

Ideas

Manatee/DistributionXML

I will paste a UML class diagram here, which basically says it all :)
Beware! I'm a complete UML newcomer. I just use it as convenient tool
to visualize my XML structure :).

It's not quite complete yet.

Manatee/ControlCenter

Functionality

Some ideas here may be very complex or simply not required. Those will be moved to a separate list later.

Interface mock-up

A list of installed application

All application in distribution

Winlibre

A short description :

I will implement Manatee, a tool used to deploy WinLibre.

See Appendix A to see what a WinLibreXML file might look like.

Appendix A

WinLibreXML:

<?xml version="1.0"?>
<distribution name="WinLibre" version="2005.06.08-00">
 <category>
  <subcategory name="Office">
   <description>Everything you need at office</description>
   <image>...</image>
  </subcategory>
 </category>
 <image>...</image>
 <description>is a rigorous selection of <link destination="http://www.winlibre.com/en/Logiciel_Libre.php">free, legal software</link> for Windows 98, 2000, XP</description
 <package name="OOo" version="1.1.3" category="Office">
  <description language="en">
   <p> Complete, Microsoft Office compatible, sofware suite.</p>
   <p> Writer, Calc, Impress, Draw</p>
   <p> Web: <link>www.winlibre.com/en/Articles/Office/OpenOffice.Org.php</link></p>
  </description>
  <image>...</image>
  <dependency package="j2re" version="1.4.2-05" match="exact" install="before" />
  <dependency package="DicOOo" version="1.0.1" match="exact" install="after" optional />
  <files>
   <file name="installer" target="Ooo_En_1.1.3.exe" size="47205416" md5sum="6f5902ac237024bdd0c176cb93063dc4">
    <url>http://ftp.belnet.be/pub/mirror/ftp.openoffice.org/stable/1.1.3/OOo_1.1.3_Win32Intel_install.exe</url>
    <url>http://ftp.heanet.ie/mirrors/openoffice.org/stable/1.1.3/OOo_1.1.3_Win32Intel_install.exe</url>
    <url>http://mirrors.sunsite.dk/openoffice/stable/1.1.3/OOo_1.1.3_Win32Intel_install.exe</url>
    <url>ftp://ftp.tu-chemnitz.de/pub/openoffice/stable/1.1.3/OOo_1.1.3_Win32Intel_install.exe</url>
   </file>
  </files>
  <setup_parameter name="installer_name" value="OOo_1.1.3_Win32Intel_install\setup.exe" />
  <setup type="custom" language="python"><![CDATA[
#import manatee.setup as manatee [automated]
manatee.execute(os.path.join(manatee.tmpdir, manatee.files['installer'].target),
    '-o"%s" -y' % manatee.tmpdir )
manatee.execute(os.path.join(manatee.tmpdir, manatee.parameter.installer_name))
]]>
  </setup>
 </package>
 <package name="PDFCreator" version="0.8.0" category="Office">
  <description language="en">
   <p> Virtual Printer to create PDF files. </p>
   <p> Is an Adobe Acrobat Writer alternative. </p>
   <p> Web: <link destination="www.winlibre.com/en/Articles/Office/OpenOffice.Org.php" /></p>
  </description>
  <image>...</image>
  <files>
   <file name="installer" target="PDFCreatorGnu_Int_0.8.0.exe" size="7561382" md5sum="6f5902ac237024bdd0c176cb93063dc4">
    <url>http://belnet.dl.sourceforge.net/sourceforge/pdfcreator/PDFCreator-0_8_0_GNUGhostscript.exe</url>
    <url>http://voxel.dl.sourceforge.net/sourceforge/pdfcreator/PDFCreator-0_8_0_GNUGhostscript.exe</url>
    <url>http://umn.dl.sourceforge.net/sourceforge/pdfcreator/PDFCreator-0_8_0_GNUGhostscript.exe</url>
    <url>http://heanet.dl.sourceforge.net/sourceforge/pdfcreator/PDFCreator-0_8_0_GNUGhostscript.exe</url>
   </file>
  </files>
  <setup type="custom" language="python"><![CDATA[
#import manatee.setup as manatee [automated]
manatee.execute(os.path.join(manatee.tmpdir, manatee.files['installer'].target))
]]>
  </setup>
 </package>
<!-- To be added -->
</distribution>