Fixed package callers tracking.
[www.jankratochvil.net.git] / project / captive / doc / About.pm
1 # $Id$
2 # Captive project doc About page Perl template.
3 # Copyright (C) 2003-2005 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
4
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; exactly version 2 of June 1991 is required
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
19 package project::captive::doc::About;
20 require 5.6.0;  # at least 'use warnings;' but we need some 5.6.0+ modules anyway
21 our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
22 our $CVS_ID=q$Id$;
23 use strict;
24 use warnings;
25
26 use My::Web;
27 require CGI;
28
29
30 sub handler
31 {
32         BEGIN { Wuse 'project::captive::doc::Macros'; }
33 project::captive::doc::Macros->init(
34                 "__PACKAGE__"=>__PACKAGE__,
35                 "title"=>'Captive NTFS Developer Documentation: About',
36                 "rel_prev"=>'./',
37                 "rel_next"=>'Architecture.pm',
38                 );
39
40
41 print <<"HERE";
42
43
44 <h1>About</h1>
45
46         <h2 id="reasons">Reasons for the Implementation</h2>
47
48                 <p>Currently there is no possibility to any of the available $freespeech
49                         ($freespeech used in the following text in the meaning of
50                         &quot;@{[ a_href 'http://www.gnu.org/philosophy/free-sw.html','free as in speech' ]}&quot;)
51                 operating systems to reliably write to the most common disk partition
52                 filesystem type &ndash; <span class="productname">Microsoft NTFS</span>. It would
53                 be already supported a long time ago but there is no proper documentation of
54                 <span class="productname">NTFS</span> filesystem data structures available.
55                 Since <span class="productname">Microsoft</span> corporation continues in its
56                 propagation of <span class="productname">Microsoft Windows NT</span>
57                         (<span class="productname">NT</span> identifier used in the following text
58                         applies to all the products of <span class="productname">Microsoft</span>
59                         <span class="productname">NT</span> series such as
60                         <span class="productname">NT&nbsp;4.0</span>,
61                         <span class="productname">2000</span> as NT-5.0
62                         and
63                         <span class="productname">XP</span> as NT-5.1.)
64                 based operating systems <span class="productname">NTFS</span> is the default
65                 disk file system type for vendor preinstalled <span class="productname">Microsoft Windows</span>.</p>
66
67                 <p>Unfortunately the <span class="productname">NTFS</span> filesystem has too
68                 complex data structure to allow a complete reverse enginnering process in
69                 reasonable time. Currently available $freespeech solutions such as $LinuxNTFS
70                 filesystem have already implemented reliable reverse
71                 engineered read-only access. However <span id="reliability">reliabile</span>
72                 read-write part of the access would require much better
73                 knowledge of the <span class="productname">NTFS</span> data structures.
74                 Currently only rewriting of already existing file data blocks is supported
75                 by $LinuxNTFS &mdash; no file creation, no file deletion, no directory operations etc.
76                 Also any future versions of <span class="productname">NTFS</span> filesystem
77                 would require another major reverse engineering effort.</p>
78
79
80         <h2 id="challenges">Challenges of the Project</h2>
81
82                 <p>The <span id="NTFSgoal">ultimate goal</span> of this project is definitely the
83                 free implementation of @{[ a_href '#reliability','reliable' ]} read-write <span
84                 class="productname">NTFS</span> filesystem driver. This project chose to
85                 solve this problem in the style of $Wine project by using the original binary
86                 <span class="fname">ntfs.sys</span> and emulating all the required layers of
87                 <span class="productname">Microsoft Windows NT</span> for it.</p>
88
89                 <p>Unfortunately this effort is tainted by only partial and generally
90                 insufficient documentation of API between filesystem driver
91                 (<span class="fname">ntfs.sys</span>) and the
92                 <span class="productname">Microsoft Windows NT</span>
93                 (&quot;@{[ a_href 'http://mail.gnu.org/archive/html/libtool/2000-09/msg00000.html','W32' ]}&quot;
94                 in the following text) kernel <span class="fname">ntoskrnl.exe</span>. Note
95                 that this API is a different than the one being used in the $Wine project
96                 since <span class="productname">Wine</span> implements only the user space
97                 part of W32.</p>
98
99
100         <h2 id="versions">Microsoft Windows Versions Compatibility</h2>
101
102                 <p>Currently this project supports only driver files of
103                 <span class="productname">Microsoft Windows XP</span> (NT-5.1)
104                 in the following releases:</p>
105
106                 <ul>
107                         <li>Microsoft Windows XP Service Pack 1a Checked Build U.S.</li>
108                         <li>Microsoft Windows XP Service Pack 1a Free Build U.S.</li>
109                         <li>Microsoft Windows XP (No Service Pack) Checked Build U.S.</li>
110                         <li>Microsoft Windows XP (No Service Pack) Free Build U.S.</li>
111                 </ul>
112
113                 <p>The latest list of supported driver files can be found in:
114                 @{[ captive_srcfile 'src/install/acquire/w32-mod-id.captivemodid.xml' ]}</p>
115
116                 <p>Microsoft Windows NTFS filesystem driver is capable of accessing even
117                 the older formats of the filesystem. Porting to Microsoft Windows 2003
118                 Server is expected to be done soon. There can be also a danger of Microsoft
119                 Windows upgrading NTFS disk filesystem where you would no longer be able
120                 to access your NTFS disk by your original
121                 <span class="productname">Microsoft Windows</span> version.
122                 This upgrade does not happen as it occurs only during complete CD-ROM
123                 Microsoft Windows system installation &ndash; such operation is not performed
124                 by this project.</p>
125
126                 <p>There is no problem technically obtaining the needed driver files of
127                 <span class="productname">Microsoft Windows XP</span> as they are freely
128                 downloadable at:
129                 @{[ a_href 'http://www.microsoft.com/WindowsXP/pro/downloads/servicepacks/sp1/checkedbuild.asp' ]}</p>
130                 <p>There may be @{[ a_href 'Architecture.pm#law','legal reasons' ]} you would not be allowed
131                 to use there files if you own license to a different version of
132                 <span class="productname">Microsoft Windows</span>. Legal rights will very
133                 depending on your country.</p>
134
135
136 HERE
137
138
139 project::captive::doc::Macros->footer();
140 }
141 1;