#! /usr/bin/perl
# 
# $Id$
# Captive project doc About page Perl template.
# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; exactly version 2 of June 1991 is required
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


package project::captive::doc::About;
require 5.6.0;	# at least 'use warnings;' but we need some 5.6.0+ modules anyway
our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
our $CVS_ID=q$Id$;
use strict;
use warnings;

BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
use My::Web;
require CGI;
BEGIN { Wuse 'project::captive::doc::Macros'; }


project::captive::doc::Macros->init(
		"__PACKAGE__"=>__PACKAGE__,
		"title"=>'Captive NTFS Developer Documentation: About',
		"rel_prev"=>'Index.html.pl',
		"rel_next"=>'Architecture.html.pl',
		);


print <<"HERE";


<h1>About</h1>

	<a name="reasons"><h2>Reasons for the Implementation</h2></a>

		<p>Currently there is no possibility to any of the available $freespeech
			($freespeech used in the following text in the meaning of
			&quot;@{[ a_href 'http://www.gnu.org/philosophy/free-sw.html','free as in speech' ]}&quot;)
		operating systems to reliably write to the most common disk partition
		filesystem type &ndash; <span class="productname">Microsoft NTFS</span>. It would
		be already supported a long time ago but there is no proper documentation of
		<span class="productname">NTFS</span> filesystem data structures available.
		Since <span class="productname">Microsoft</span> corporation continues in its
		propagation of <span class="productname">Microsoft Windows NT</span>
			(<span class="productname">NT</span> identifier used in the following text
			applies to all the products of <span class="productname">Microsoft</span>
			<span class="productname">NT</span> series such as
			<span class="productname">NT&nbsp;4.0</span>,
			<span class="productname">2000</span> as NT-5.0
			and
			<span class="productname">XP</span> as NT-5.1.)
		based operating systems <span class="productname">NTFS</span> is the default
		disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.

		<p>Unfortunately the <span class="productname">NTFS</span> filesystem has too
		complex data structure to allow a complete reverse enginnering process in
		reasonable time. Currently available $freespeech solutions such as $LinuxNTFS
		filesystem have already implemented reliable reverse
		engineered read-only access. However <a name="reliability">reliabile</a>
		read-write part of the access would require much better
		knowledge of the <span class="productname">NTFS</span> data structures.
		Currently only rewriting of already existing file data blocks is supported
		by $LinuxNTFS &mdash; no file creation, no file deletion, no directory operations etc.
		Also any future versions of <span class="productname">NTFS</span> filesystem
		would require another major reverse engineering effort.</p>


	<a name="challenges"><h2>Challenges of the Project</h2></a>

		<p>The <a name="NTFSgoal">ultimate goal</a> of this project is definitely the
		free implementation of @{[ a_href '#reliability','reliable' ]} read-write <span
		class="productname">NTFS</span> filesystem driver. This project chose to
		solve this problem in the style of $Wine project by using the original binary
		<span class="fname">ntfs.sys</span> and emulating all the required layers of
		<span class="productname">Microsoft Windows NT</span> for it.</p>

		<p>Unfortunately this effort is tainted by only partial and generally
		insufficient documentation of API between filesystem driver
		(<span class="fname">ntfs.sys</span>) and the
		<span class="productname">Microsoft Windows NT</span>
		(&quot;@{[ a_href 'http://mail.gnu.org/archive/html/libtool/2000-09/msg00000.html','W32' ]}&quot;
		in the following text) kernel <span class="fname">ntoskrnl.exe</span>. Note
		that this API is a different than the one being used in the $Wine project
		since <span class="productname">Wine</span> implements only the user space
		part of W32.</p>


	<a name="versions"><h2>Microsoft Windows Versions Compatibility</h2></a>

		<p>Currently this project supports only driver files of
		<span class="productname">Microsoft Windows XP</span> (NT-5.1)
		in the following releases:</p>

		<ul>
			<li>Microsoft Windows XP Service Pack 1a Checked Build U.S.</li>
			<li>Microsoft Windows XP Service Pack 1a Free Build U.S.</li>
			<li>Microsoft Windows XP (No Service Pack) Checked Build U.S.</li>
			<li>Microsoft Windows XP (No Service Pack) Free Build U.S.</li>
		</ul>

		<p>The latest list of supported driver files can be found in:
		@{[ captive_srcfile 'src/install/acquire/w32-mod-id.captivemodid.xml' ]}</p>

		<p>Microsoft Windows NTFS filesystem driver is capable of accessing even
		the older formats of the filesystem. Porting to Microsoft Windows 2003
		Server is expected to be done soon. There can be also a danger of Microsoft
		Windows upgrading NTFS disk filesystem where you would no longer be able
		to access your NTFS disk by your original
		<span class="productname">Microsoft Windows</span> version.
		This upgrade does not happen as it occurs only during complete CD-ROM
		Microsoft Windows system installation &ndash; such operation is not performed
		by this project.</p>

		<p>There is no problem technically obtaining the needed driver files of
		<span class="productname">Microsoft Windows XP</span> as they are freely
		downloadable at:
		@{[ a_href 'http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp' ]}</p>
		There may be @{[ a_href 'Architecture.html.pl#law','legal reasons' ]} you would not be allowed
		to use there files if you own license to a different version of
		<span class="productname">Microsoft Windows</span>. Legal rights will very
		depending on your country.</p>


HERE


project::captive::doc::Macros->footer();
