Annotated CHANGES/RELEASE with issue these changes fix
[scons.git] / doc / python10 / future.xml
blobd7c79328a8aca2decfa0cb266f10ddcab192af45
1 <?xml version='1.0'?>
2 <!DOCTYPE sconsdoc [
3     <!ENTITY % scons SYSTEM "../scons.mod">
4     %scons;
5 ]>
7 <section id="sect-future"
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>Future Directions</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   There are a number of things we would like to do to continue to
41   improve &SCons; in the future.
43 </para>
45 <section>
46   <title>Distutils Cooperation</title>
48   <para>
50     There is a certain amount of overlap between what &SCons; does
51     to search out and make use of various compilers on a system, and
52     the impressively complete job that the Distutils do of describing
53     much the same thing. Collaborating to provide some sort of common
54     interface between the two tools would benefit both tools.
56   </para>
58 </section>
60 <section>
61   <title>Additional Builder Support</title>
63   <para>
65     Adding additional builders would broaden the
66     potential user base. In rough order of importance:
68   </para>
70   <variablelist>
72     <varlistentry>
73       <term>Java</term>
74       <listitem>
75         <para>
77           Given the popularity of Java, support for it would greatly
78           increase the appeal of &SCons; in the large community of Java
79           users.
81         </para>
83         <para>
85           Good support for Java is, however, a tricky
86           proposition. Because the Java compiler can make decisions
87           about compiling other files based on what classes it finds
88           in a file, it behaves "unpredictably" from the point of
89           view of an outside build tool like &SCons; or &Make;. Some
90           sort of sophisticated scanning of Java source code to
91           identify what other classes are likely to be compiled
92           would be an obvious first step, but notice that here
93           &SCons; would be scanning the file to find additional
94           targets to be built. This is the inverse of the sort of
95           <literal>#include</literal> scanning performed
96           for C files, in which &SCons; is looking for additional
97           <emphasis>dependencies</emphasis>.
99         </para>
100       </listitem>
101     </varlistentry>
103     <varlistentry>
104       <term>Documentation toolchains</term>
105       <listitem>
106         <para>
108           A number of early adopters
109           are using &SCons; to
110           build documents
111           from TeX or DocBook source files.
112           Built-in support for
113           various documentation toolchains
114           would be an obvious boon
115           for many people.
117         </para>
118       </listitem>
119     </varlistentry>
121     <varlistentry>
122       <term>C#</term>
123       <listitem>
124         <para>
126           The reality is that anything that Microsoft does will doubtless
127           have a wide audience. Turning &SCons;' back on that would be
128           cutting off its nose to spite its face.
129     
130         </para>
131       </listitem>
132     </varlistentry>
134     <varlistentry>
135       <term>Fortran</term>
136       <listitem>
137         <para>
139           Despite the fact that &SCons; is no longer directly
140           associated with Software Carpentry, it still shares the
141           same goal: to make programming easier for more than just
142           programmers. To that end, good Fortran support would
143           help a great many physical scientists and other computer
144           <emphasis>users</emphasis> out there who still rely on Fortran
145           for a great deal of their work.
147         </para>
148       </listitem>
149     </varlistentry>
151   </variablelist>
153 </section>
155 <section>
156   <title>Database Interface</title>
158   <para>
160     The Nodes in an &SCons; dependency graph aren't only restricted to
161     files. Creating an interface to mSQL or MySQL databases would allow
162     the possibility of updating external files in response to changes in
163     database fields, or vice versa. This could be handy, for example,
164     for generating a cache of static web pages from a database that only
165     need re-generating when the appropriate database objects change.
167   </para>
169 </section>
171 <section>
172   <title>Tool Integration</title>
174   <para>
176     &SCons; should work well with as many popular Integrated Development
177     Environments (IDEs) and tool chains as possible: Komodo, Microsoft
178     Visual Studio, ClearCase, etc. Suggestions for additional tools are
179     welcome.
181   </para>
183 </section>
185 <section>
186   <title>Makefile Interface</title>
188   <para>
190     Because the &SCons; Build Engine can be embedded in any Python
191     interface, there isn't any technical reason why a &Makefile;
192     interpreter couldn't be written in Python and use the &SCons; Build
193     Engine for its dependency analysis.
195   </para>
197   <para>
199     Proof-of-concept for the idea already exists. Gary Holt's
200     <literal>make++</literal> (also known as <literal>makepp</literal>)
201     is a Perl implementation of just such a &Makefile; interpreter. It
202     could possible serve as a model for a Python version, in much the
203     same way the &Cons; design served as the prototype for &SCons;.
205   </para>
207 </section>
209 </section>