summaryrefslogtreecommitdiff
path: root/doc/user/preface.in
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/preface.in')
-rw-r--r--doc/user/preface.in426
1 files changed, 0 insertions, 426 deletions
diff --git a/doc/user/preface.in b/doc/user/preface.in
deleted file mode 100644
index aa8eaf4..0000000
--- a/doc/user/preface.in
+++ /dev/null
@@ -1,426 +0,0 @@
-<!--
-
- Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be included
- in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--->
-
- <para>
-
- Thank you for taking the time to read about &SCons;.
- &SCons; is a next-generation
- software construction tool,
- or make tool--that is, a software utility
- for building software (or other files)
- and keeping built software up-to-date
- whenever the underlying input files change.
-
- </para>
-
- <para>
-
- The most distinctive thing about &SCons;
- is that its configuration files are
- actually <emphasis>scripts</emphasis>,
- written in the &Python; programming language.
- This is in contrast to most alternative build tools,
- which typically invent a new language to
- configure the build.
- &SCons; still has a learning curve, of course,
- because you have to know what functions to call
- to set up your build properly,
- but the underlying syntax used should be familiar
- to anyone who has ever looked at a Python script.
-
- </para>
-
- <para>
-
- Paradoxically,
- using Python as the configuration file format
- makes &SCons;
- <emphasis>easier</emphasis>
- for non-programmers to learn
- than the cryptic languages of other build tools,
- which are usually invented by programmers for other programmers.
- This is in no small part due to the
- consistency and readability that are hallmarks of Python.
- It just so happens that making a real, live
- scripting language the basis for the
- configuration files
- makes it a snap for more accomplished programmers
- to do more complicated things with builds,
- as necessary.
-
- </para>
-
- <!--
-
- <section>
- <title>Why &SCons;?</title>
-
- <para>
-
- &SCons; is a response to a perennial problem:
- building software is harder than it should be.
- In a nutshell: the old, reliable model of the
- venerable and ubiquitous &Make; program
- has had a hard time keeping up with
- how complicated building software has become.
- The fact that &Make; has kept up as well as it has is impressive,
- and a testament to how the simplicity.
- But anyone who has wrestled with &Automake; and &Autoconf;
- to try to guarantee that a bit of software
- will build correctly on multiple platforms
- can tell you that it takes a lot of work to get right.
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>&SCons; Principles</title>
-
- <para>
-
- There are a few overriding principles
- we try to live up to in designing and implementing &SCons;:
-
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term>Correctness</term>
-
- <listitem>
- <para>
-
- First and foremost,
- by default, &SCons; guarantees a correct build
- even if it means sacrificing performance a little.
- We strive to guarantee the build is correct
- regardless of how the software being built is structured,
- how it may have been written,
- or how unusual the tools are that build it.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Performance</term>
-
- <listitem>
- <para>
-
- Given that the build is correct,
- we try to make &SCons; build software
- as quickly as possible.
- In particular, wherever we may have needed to slow
- down the default &SCons; behavior to guarantee a correct build,
- we also try to make it easy to speed up &SCons;
- through optimization options that let you trade off
- guaranteed correctness in all end cases for
- a speedier build in the usual cases.
-
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>Convenience</term>
-
- <listitem>
- <para>
-
- &SCons; tries to do as much for you out of the box as reasonable,
- including detecting the right tools on your system
- and using them correctly to build the software.
-
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- <para>
-
- In a nutshell, we try hard to make &SCons; just
- "do the right thing" and build software correctly,
- with a minimum of hassles.
-
- </para>
-
- </section>
-
- <!--
-
- <section>
- <title>History</title>
-
- <para>
-
- &SCons; originated with a design
- that was submitted to the Software Carpentry
- design competition in 2000.
-
- </para>
-
- <para>
-
- &SCons; is the direct descendant
- of a Perl utility called &Cons;.
- &Cons; in turn based some of its ideas on &Jam;,
- a build tool from Perforce Systems.
-
- </para>
-
- <para>
-
- XXX history of SCons
-
- </para>
-
- </section>
-
- -->
-
- <!--
-
- <section>
- <title>Conventions</title>
-
- <para>
-
- XXX conventions used in this manual
-
- </para>
-
- </section>
-
- -->
-
- <section>
- <title>A Caveat About This Guide's Completeness</title>
-
- <para>
-
- One word of warning as you read through this Guide:
- Like too much Open Source software out there,
- the &SCons; documentation isn't always
- kept up-to-date with the available features.
- In other words,
- there's a lot that &SCons; can do that
- isn't yet covered in this User's Guide.
- (Come to think of it,
- that also describes a lot of proprietary software, doesn't it?)
-
- </para>
-
- <para>
-
- Although this User's Guide isn't as complete as we'd like it to be,
- our development process does emphasize
- making sure that the &SCons; man page is kept up-to-date
- with new features.
- So if you're trying to figure out how to do something
- that &SCons; supports
- but can't find enough (or any) information here,
- it would be worth your while to look
- at the man page to see if the information is covered there.
- And if you do,
- maybe you'd even consider contributing
- a section to the User's Guide
- so the next person looking for
- that information won't have to
- go through the same thing...?
-
- </para>
-
- </section>
-
- <section>
- <title>Acknowledgements</title>
-
- <para>
-
- &SCons; would not exist without a lot of help
- from a lot of people,
- many of whom may not even be aware
- that they helped or served as inspiration.
- So in no particular order,
- and at the risk of leaving out someone:
-
- </para>
-
- <para>
-
- First and foremost,
- &SCons; owes a tremendous debt to Bob Sidebotham,
- the original author of the classic Perl-based &Cons; tool
- which Bob first released to the world back around 1996.
- Bob's work on Cons classic provided the underlying architecture
- and model of specifying a build configuration
- using a real scripting language.
- My real-world experience working on Cons
- informed many of the design decisions in SCons,
- including the improved parallel build support,
- making Builder objects easily definable by users,
- and separating the build engine from the wrapping interface.
-
- </para>
-
- <para>
-
- Greg Wilson was instrumental in getting
- &SCons; started as a real project
- when he initiated the Software Carpentry design
- competition in February 2000.
- Without that nudge,
- marrying the advantages of the Cons classic
- architecture with the readability of Python
- might have just stayed no more than a nice idea.
-
- </para>
-
- <para>
-
- The entire &SCons; team have been
- absolutely wonderful to work with,
- and &SCons; would be nowhere near as useful a
- tool without the energy, enthusiasm
- and time people have contributed over the past few years.
- The "core team"
- of Chad Austin, Anthony Roach,
- Bill Deegan, Charles Crain, Steve Leblanc, Greg Noel,
- Gary Oberbrunner, Greg Spencer and Christoph Wiedemann
- have been great about reviewing my (and other) changes
- and catching problems before they get in the code base.
- Of particular technical note:
- Anthony's outstanding and innovative work on the tasking engine
- has given &SCons; a vastly superior parallel build model;
- Charles has been the master of the crucial Node infrastructure;
- Christoph's work on the Configure infrastructure
- has added crucial Autoconf-like functionality;
- and Greg has provided excellent support
- for Microsoft Visual Studio.
-
- </para>
-
- <para>
-
- Special thanks to David Snopek for contributing
- his underlying "Autoscons" code that formed
- the basis of Christoph's work with the Configure functionality.
- David was extremely generous in making
- this code available to &SCons;,
- given that he initially released it under the GPL
- and &SCons; is released under a less-restrictive MIT-style license.
-
- </para>
-
- <!--
-
- <para>
-
- &SCons; has received contributions
- from many other people, of course:
- Matt Balvin (extending long command-line support on Windows),
- Allen Bierbaum (extensions and fixes to Options),
- Steve Christensen (help text sorting and function action signature fixes),
- Michael Cook (avoiding losing signal bits from executed commands),
- Derrick 'dman' Hudson (),
- Alex Jacques (work on the Windows scons.bat file),
- Stephen Kennedy (performance enhancements),
- Lachlan O'Dea (SharedObject() support for masm
- and normalized paths for the WhereIs() function),
- Damyan Pepper (keeping output like Make),
- Jeff Petkau (significant fixes for CacheDir and other areas),
- Stefan Reichor (Ghostscript support),
- Zed Shaw (Append() and Replace() environment methods),
- Terrel Shumway (build and test fixes, as well as the SCons Wiki)
- and
- sam th (dynamic checks for utilities).
-
- </para>
-
- -->
-
- <para>
-
- Thanks to Peter Miller
- for his splendid change management system, &Aegis;,
- which has provided the &SCons; project
- with a robust development methodology from day one,
- and which showed me how you could
- integrate incremental regression tests into
- a practical development cycle
- (years before eXtreme Programming arrived on the scene).
-
- </para>
-
- <para>
-
- And last, thanks to Guido van Rossum
- for his elegant scripting language,
- which is the basis not only for the &SCons; implementation,
- but for the interface itself.
-
- </para>
-
- </section>
-
- <section>
- <title>Contact</title>
-
- <para>
-
- The best way to contact people involved with SCons,
- including the author,
- is through the SCons mailing lists.
-
- </para>
-
- <para>
-
- If you want to ask general questions about how to use &SCons;
- send email to &scons-users;.
-
- </para>
-
- <para>
-
- If you want to contact the &SCons; development community directly,
- send email to &scons-devel;.
-
- </para>
-
- <para>
-
- If you want to receive announcements about &SCons;,
- join the low-volume &scons-announce; mailing list.
-
- </para>
-
- </section>