Specs/FT Isos Maintainance
From FTWiki
Contents |
Maintenance of ISOs for the Freedom Toaster
Summary
Once a Toaster has been set up, new distros, distros versions or content arrive, and there's currently no means for a non-technical user to easily select a new content and install it on an existing Toaster. We should develop a means for someone to easily put new content on a Toaster through the Admin GUI, or for someone who has managed to put new content to propose it for the toaster's community.
It should be some sort of "content package", loosely based on the model of software packaging (deb, rpm packages).
Use Cases
- Joe is a Toaster guardian with no special technical abilities, but he heard that the Toaster of next town is hosting the new Ubuntu distribution. He'd want to have it also on his Toaster, without spending hours in dealing with the Toaster command line. His toaster is online, so he would like to install it from the admin GUI.
- Jack has the same desire as Joe, but he has no means to have his Toaster online. But he has a friend with reasonable bandwidth who could easily browse the FT website, download, burn and send him a CD with the new content. Jack would like to simply put the CD in the Toaster and install the new content.
- Jane has found a new free CD with music specialised software. In her environment, many people are interested by this, so she managed to add it to her Toaster, and customized the interface so that users are able to toast this new product. Now she wants to be able to propose the new content to other Toasters as well, in the simplest possible way, like uploading a description file on a site.
Design
The idea is to create an XML format that can encompass all parameters needed for installing new content on a Toaster. That should include distro/content name, version, description, category, media type, download source, appropriate language, images for the Toaster interface, advantages and disadvantages (like current xml in isos). If necessary, we could provide a Web form to generate the xml file.
The FT website could then be the main source where these xml files for each distros are gathered. But we can imagine other "content sources", in the same concept as apt sources. The following interfaces should then be developped:
- Web browsing (ft.org) of xml files (different distros) for selecting content and downloading them on a CD to be able to put it on an offline toaster.
- New screen on the Toaster admin interface, either to browse and download if online or to install content from local CD if offline.
Implementation
XML structure of package description
Description of XML format of a file describing all aspects of a content package (draft) :
<?xml version="1.0" encoding="UTF-8"?>
<contentPackage>
<name version="1.0">Name of distro/content</name> <!-- the version attribute is the version of the xml file, not of content nor distro -->
<description>Description of distro/content</description>
<categories>
<category>Linux distro</category>
<category>Novice distro</category>
</categories>
<version name="Version name or number">
<addedon>2006-05-25</addedon>
<description>Description of version</description>
<media type="CD">
<source protocol="ftp">
<file number="1" hash="b2e9120f06d70cc076c1852c6c04654e">ftp.somewhere.org/pub/file1.iso</file>
<file number="2" hash="410d766d75a3afaa7f04c0c7dbdfd8da">ftp.somewhere.org/pub/file2.iso</file>
</source>
<source protocol="http"><!-- www... as many sources as possible (mirrors) -->
</source>
</media>
<languages>
<language>en</language>
<language>ge</language>
<!-- ... -->
</languages>
</version>
<version name="">
<!-- ... another version ... -->
</version>
<images>
<imagea>distroA.png</imagea>
<imageb>distroB.png</imageb>
</images>
<advantages>
<advantage>Here is an advantage</advantage>
</advantages>
<disadvantages>
<disadvantage>Here is a disadvantage</disadvantage>
</disadvantages>
</contentPackage>
A file named isoSources.list point to the sources of XML repositories (official ones and some others). This is a simple text files containing urls to packages description locations (see below).
Structure of directories
Local (FT)
The list of all available known content packages are in a .../kiosk/packages directory (list of xml files). This list is used by the admin screens related to content packages. There should be two images (231x71 pixels) along each package description file, in the same directory. The names of these two images is referenced in the package description in the <imagea> and the <imageb> tags.
Distant (Web site)
On a Website, the content packages descriptions are stored in whatever folder is appropriate, in the same organisation described for local structure. Additionally a list.pl or list.php file offers the opportunity to browse the packages list, download individual package description (tar.gz archive containing xml and images files) or a tar.gz archive of all descriptions. Of course, the interface also presents the links to download the isos themselves, according to 'source' tags in the description.
The main official source should be hosted on freedomtoaster.org, e.g. freedomtoaster.org/packages or packages.freedomtoaster.org.
Synchronization between local and distant
When FT is online, the synchronization could be simply achieved by synching through a script.
When FT is offline, the 'download description(s)' feature of the distant repository can be used to put them on a CD that is then inserted in the FT.
FT Admin Screens
There should be a new button in the admin GUI of the FT (eg. Content Packages). Here's the main design:
| Online install | Offline install |
|---|---|
. Fetch Content Pack list . Select FT Content Update Pack . Download and extract . (Optionally allow overide of upstream uri to alternate host) . Fetch upstream ISO/MD5 . Install |
. Insert Offline FT Content Update Pack CD/DVD to Toaster. . Select Offline FT Content Update Pack installation. . Install |
Automatic index?.html generation
The screensaver-like pages that circles on the FT when there is no activity are currently static HTML pages. This is easier to customize for end-users. However we should try to synchronize the content of these pages with the content management described in this spec.
One possibility would be to put some placeholder in the HTML files (like <%category="Linux distro"%>). The HTML should then be parsed before being sent to apache and the placeholders are replaced dynamically by content that is effectively installed on the Toaster.
Other ideas welcome :-)
Charles proposal:
Also, we need to think about a meta-meta structure where we can specify a sequence of pages with loose keyword tags that the system uses to link in the right content. For example, where the slideshow now has pages describing the different distros as beginner, intermediate and advanced, with buttons on each page linking to the respective distros, you would have: 1) Generic text for each page that isn't iso-specific, and 2) A set of tags that the system tries to match against the actual content packs that are loaded (say distro, linux, intermediate). If a content pack as all three of these tags in its meta-data, then the system pulls out the 'blurb' text (NOT advantages/disadvantages ). This text is specifically designed to display on slideshow pages and will be limited in length. If the blurb displays, then so does a button image.
When the slideshow page is built up, the generic text displays, then the blurb of each of the content packs that is installed, then the buttons to each of those content packs.

