Merge pull request #4668 from adamscott/template-pool-to-scons_pool
[scons.git] / doc / design / intro.xml
blob36946e6a77c68a927f5f1fdcbf5509fad4911b4d
1 <?xml version='1.0'?>
2 <!DOCTYPE sconsdoc [
3     <!ENTITY % scons SYSTEM "../scons.mod">
4     %scons;
5 ]>
7 <chapter id="chap-intro"
8          xmlns="http://www.scons.org/dbxsd/v1.0"
9          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10          xsi:schemaLocation="http://www.scons.org/dbxsd/v1.0 http://www.scons.org/dbxsd/v1.0/scons.xsd">
11 <title>Introduction</title>
13 <!--
15   __COPYRIGHT__
17   Permission is hereby granted, free of charge, to any person obtaining
18   a copy of this software and associated documentation files (the
19   "Software"), to deal in the Software without restriction, including
20   without limitation the rights to use, copy, modify, merge, publish,
21   distribute, sublicense, and/or sell copies of the Software, and to
22   permit persons to whom the Software is furnished to do so, subject to
23   the following conditions:
25   The above copyright notice and this permission notice shall be included
26   in all copies or substantial portions of the Software.
28   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
29   KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
30   WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32   LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 -->
38  <para>
40    The &SCons; tool provides an easy-to-use, feature-rich interface
41    for constructing software.  Architecturally, &SCons; separates
42    its dependency analysis and external object management into an
43    interface-independent Build Engine that could be embedded in any
44    software system that can run Python.
46  </para>
48  <para>
50    At the command line, &SCons; presents an easily-grasped tool
51    where configuration files are Python scripts, reducing the need
52    to learn new build-tool syntax. Inexperienced users can use
53    intelligent methods that ``do the right thing'' to build software
54    with a minimum of fuss. Sophisticated users can use a rich set
55    of underlying features for finer control of the build process,
56    including mechanisms for easily extending the build process to new
57    file types.
58    
59  </para>
61  <para>
63    Dependencies are tracked using digital signatures,
64    which provide more robust dependency analysis than file time
65    stamps. Implicit dependencies are determined automatically by
66    scanning the contents of source files, avoiding the need for
67    laborious and fragile maintenance of static lists of dependencies in
68    configuration files.
69    
70  </para>
72  <para>
74    The &SCons; tool supports use of files from one or more central code
75    repositories, a mechanism for caching derived files, and parallel
76    builds.  The tool also includes a framework for sharing build
77    environments, which allows system administrators or integrators to
78    define appropriate build parameters for use by other users.
80  </para>
82 <section id="sect-document">
83  <title>About This Document</title>
85  <para>
87    This document is an ongoing work-in-progress to write down the ideas
88    and tradeoffs that have gone, and will go into, the &SCons; design.
89    As such, this is intended primarily for use by developers and others
90    working on &SCons;, although it is also intended to serve as a
91    detailed overview of &SCons; for other interested parties.  It will
92    be continually updated and evolve, and will likely overlap with other
93    documentation produced by the project.  Sections of this document
94    that deal with syntax, for example, may move or be copied into a user
95    guide or reference manual.
97  </para>
99  <para>
101    So please don't assume that everything mentioned here has been
102    decided and carved in stone.  If you have ideas for improvements, or
103    questions about things that don't seem to make any sense, please help
104    improve the design by speaking up about them.
106  </para>
108 <!--
109 Sections marked like this
110 (prefixed with <literal>RATIONALE:</literal> in the HTML,
111 surrounded by <literal>BEGIN RATIONALE:</literal>
112 and <literal>END RATIONALE:</literal>
113 in the printed documentatio)
114 are DocBook REMARKs,
115 comments about the document
116 rather than actual document.
117 I've used these to mark sections that need work,
118 but also to cite some open design issues.
119 If you have input on any of these marked issues,
120 I'm especially eager to hear it.
123 </section>
125 </chapter>