2003-11-14 16:50:39 -05:00
|
|
|
<?xml version="1.0"?>
|
2004-02-28 12:47:37 -05:00
|
|
|
<!--
|
|
|
|
Copyright 2003-2004 The Apache Software Foundation
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
-->
|
|
|
|
|
2003-11-15 13:38:16 -05:00
|
|
|
<?xml-stylesheet type="text/xsl" href="xdoc.xsl"?>
|
2005-02-26 08:11:52 -05:00
|
|
|
<!-- $Revision$ $Date$ -->
|
2003-11-14 16:50:39 -05:00
|
|
|
<document>
|
|
|
|
<properties>
|
|
|
|
<title>Developers Guide</title>
|
|
|
|
<author email="rdonkin@apache.org">Robert Burrell Donkin</author>
|
|
|
|
</properties>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
<section name="Aims">
|
|
|
|
<p>
|
|
|
|
Creating and maintaining a mathematical and statistical library that is
|
|
|
|
accurate requires a greater degree of communication than might be the
|
|
|
|
case for other components. It is important that developers follow
|
|
|
|
guidelines laid down by the community to ensure that the code they create
|
|
|
|
can be successfully maintained by others.
|
|
|
|
</p>
|
|
|
|
</section>
|
|
|
|
<section name='Guidelines'>
|
|
|
|
<p>
|
|
|
|
Developers are asked to comply with the following development guidelines.
|
|
|
|
Code that does not comply with the guidelines including the word <i>must</i>
|
|
|
|
will not be committed. Our aim will be to fix all of the exceptions to the
|
|
|
|
"<i>should</i>" guidelines prior to a release.
|
|
|
|
</p>
|
2003-11-15 13:38:16 -05:00
|
|
|
<subsection name="Contributing">
|
|
|
|
<p>
|
2004-08-21 21:39:35 -04:00
|
|
|
Here are some steps to take to get starting contributing to commons-math:
|
2005-06-26 18:39:42 -04:00
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
<ol>
|
|
|
|
<li>Start by reviewing the overall objectives stated in the
|
|
|
|
<a href="proposal.html">proposal</a> upon which the project is
|
|
|
|
founded.
|
|
|
|
</li>
|
|
|
|
<li>Download the commons math source code. Follow the instructions
|
|
|
|
under the heading "Anonymous Subversion"
|
|
|
|
<a href="http://www.apache.org/dev/version-control.html">here</a> (and
|
|
|
|
also have a look <a href="http://wiki.apache.org/jakarta-commons/UsingSVN">
|
|
|
|
here</a>) to check out the commons math code base from Subversion
|
|
|
|
(Jakarta Commons now uses Subversion as our source control system). The
|
|
|
|
svn url for the current development sources of commons-math
|
|
|
|
is
|
2005-02-28 00:12:42 -05:00
|
|
|
<source>https://svn.apache.org/repos/asf/jakarta/commons/proper/math/trunk</source>
|
2005-06-26 18:39:42 -04:00
|
|
|
</li>
|
|
|
|
<li>Have a look at the new features that users and developers have requested
|
|
|
|
on the <a href="http://wiki.apache.org/jakarta-commons/MathWishList">
|
|
|
|
Math Wish List Wiki Page.</a>
|
|
|
|
</li>
|
|
|
|
<li>Be sure to join the commons-dev and commons-user
|
|
|
|
<a href="mail-lists.html">
|
|
|
|
email lists</a> and use them appropriately (make sure the string
|
|
|
|
"[math]" starts the Subject line of all your postings).
|
|
|
|
Make any proposals here where the group can comment on them.
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="http://issues.apache.org/bugzilla/createaccount.cgi">
|
|
|
|
Setup an account on Bugzilla</a> and use it to submit patches and
|
|
|
|
identify bugs. Read the
|
|
|
|
<a href="http://issues.apache.org/bugwritinghelp.html">
|
|
|
|
directions</a> for submitting bugs and search the database to
|
|
|
|
determine if an issue exists or has already been dealt with.
|
|
|
|
<p>
|
|
|
|
Submitting Issues:
|
|
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li><a href="http://issues.apache.org/bugzilla/enter_bug.cgi?reporter=&product=Commons&version=unspecified&component=Math&rep_platform=All&op_sys=All&priority=Other&bug_severity=normal&bug_status=NEW&assigned_to=&cc=&bug_file_loc=&short_desc=%5Bmath%5D%5Bpatch%5D+%22Your+subject+heading+here%22&comment=Please+provide+details+here.+Its+best+to+submit+patches+that+alter+existing+file%0D%0Acontent+in+%22unified+cvs+diff%22+format.+%0D%0A%0D%0ASubmissions+that+provide+new+files+can+be+supplied+as+direct+file+attachments+or%0D%0Aarchives+in+zip+or+tar.gz+format.+please+be+kind+enough+to+identify+the+format%0D%0Aof+the+attached+archive+as+bugzill+tends+to+strip+these+characterstics+by%0D%0Aremoving+the+files+extension.&maketemplate=Remember+values+as+bookmarkable+template&form_name=enter_bug">
|
|
|
|
Bookmarkable Template for submitting patches.
|
|
|
|
</a></li>
|
|
|
|
<li><a href="http://issues.apache.org/bugzilla/enter_bug.cgi?reporter=&product=Commons&version=unspecified&component=Math&rep_platform=All&op_sys=All&priority=Other&bug_severity=normal&bug_status=NEW&assigned_to=&cc=&bug_file_loc=http%3A%2F%2F&short_desc=%5Bmath%5D+%22Your+subject+heading+here%22&comment=Please+review+the+bug+writing+guidelines+and+supply+as+much+detail+as+possible%0D%0Ato+allow+us+to+diagnose+and+correct+the+existing+issue.+Please+search+the+bug%0D%0Adatabase+to+determine+if+the+bug+has+possibly+been+addressed+in+the+past.&maketemplate=Remember+values+as+bookmarkable+template&form_name=enter_bug">
|
|
|
|
Bookmarkable Template for submitting bugs.
|
|
|
|
</a></li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
Querying the Database:
|
|
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Commons&component=Math&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">
|
|
|
|
New and Existing Issues.
|
|
|
|
</a></li>
|
|
|
|
<li><a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Commons&component=Math&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">
|
|
|
|
Resolved and Closed Issues.
|
|
|
|
</a></li>
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
<li>
|
|
|
|
Generating patches: The requested format for generating patches is the Unified Diff format,
|
|
|
|
which can be easily generated using the svn client or Eclipse IDE.
|
2005-02-28 00:12:42 -05:00
|
|
|
<source>svn diff > patch </source>
|
2005-06-26 18:39:42 -04:00
|
|
|
</li>
|
2004-08-27 11:09:27 -04:00
|
|
|
|
2005-06-26 18:39:42 -04:00
|
|
|
</li>
|
|
|
|
</ol>
|
2003-11-15 13:38:16 -05:00
|
|
|
</p>
|
|
|
|
</subsection>
|
2003-11-14 16:50:39 -05:00
|
|
|
<subsection name='Coding Style'>
|
|
|
|
<p>
|
|
|
|
Commons-math follows <a href="http://java.sun.com/docs/codeconv/">Code
|
|
|
|
Conventions for the Java Programming Language</a>. As part of the maven
|
2004-06-23 12:26:18 -04:00
|
|
|
build process, style checking is performed using the Checkstyle plugin,
|
|
|
|
using the properties specified in <code>checkstyle.xml</code>.
|
|
|
|
Committed code <i>should</i> generate no Checkstyle errors.
|
2003-11-14 16:50:39 -05:00
|
|
|
</p>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='Documentation'>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
Committed code <i>must</i> include full javadoc.</li>
|
|
|
|
<li>
|
|
|
|
All component contracts <i>must</i> be fully specified in the javadoc class,
|
|
|
|
interface or method comments, including specification of acceptable ranges
|
|
|
|
of values, exceptions or special return values.</li>
|
|
|
|
<li>
|
2004-07-25 11:15:55 -04:00
|
|
|
External references or full statements of definitions for all mathematical
|
|
|
|
terms used in component documentation <i>must</i> be provided.</li>
|
2003-11-14 16:50:39 -05:00
|
|
|
<li>
|
|
|
|
Implementations <i>should</i> use standard algorithms and
|
2004-07-25 11:15:55 -04:00
|
|
|
references or full descriptions of all algorithms <i>should</i> be
|
|
|
|
provided.</li>
|
2003-11-14 16:50:39 -05:00
|
|
|
</ul>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='Unit Tests'>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
Committed code <i>must</i> include unit tests.</li>
|
|
|
|
<li>
|
|
|
|
Unit tests <i>should</i> provide full path coverage. </li>
|
|
|
|
<li>
|
|
|
|
Unit tests <i>should</i> verify all boundary conditions specified in
|
|
|
|
interface contracts, including verification that exceptions are thrown or
|
|
|
|
special values (e.g. Double.NaN, Double.Infinity) are returned as
|
|
|
|
expected. </li>
|
|
|
|
</ul>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='Licensing and copyright'>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
All new source file submissions <i>must</i> include the Apache Software
|
|
|
|
License in a comment that begins the file </li>
|
|
|
|
<li>
|
2004-06-23 12:26:18 -04:00
|
|
|
All contributions must comply with the terms of the Apache
|
|
|
|
<a href="http://www.apache.org/licenses/cla.pdf">Contributor License
|
|
|
|
Agreement (CLA)</a></li>
|
2003-11-14 16:50:39 -05:00
|
|
|
<li>
|
|
|
|
Patches <i>must</i> be accompanied by a clear reference to a "source"
|
|
|
|
- if code has been "ported" from another language, clearly state the
|
|
|
|
source of the original implementation. If the "expression" of a given
|
|
|
|
algorithm is derivative, please note the original source (textbook,
|
|
|
|
paper, etc.).</li>
|
|
|
|
<li>
|
|
|
|
References to source materials covered by restrictive proprietary
|
|
|
|
licenses should be avoided.</li>
|
|
|
|
</ul>
|
|
|
|
</subsection>
|
|
|
|
</section>
|
|
|
|
<section name='Recommended Readings'>
|
|
|
|
<p>
|
|
|
|
Here is a list of relevant materials. Much of the discussion surrounding
|
|
|
|
the development of this component will refer to the various sources
|
|
|
|
listed below, and frequently the Javadoc for a particular class or
|
|
|
|
interface will link to a definition contained in these documents.
|
|
|
|
</p>
|
|
|
|
<subsection name='Recommended Readings'>
|
|
|
|
<dl>
|
|
|
|
<dt>Concerning floating point arithmetic.</dt>
|
|
|
|
<dd>
|
|
|
|
<a href="http://www.validlab.com/goldberg/paper.ps">
|
|
|
|
http://www.validlab.com/goldberg/paper.ps
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps">
|
|
|
|
http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf">
|
|
|
|
http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf
|
|
|
|
</a><br/>
|
|
|
|
</dd>
|
|
|
|
<dt>Numerical analysis</dt>
|
|
|
|
<dd>
|
|
|
|
<a href="http://www.nr.com/">
|
|
|
|
Numerical Recipes (NR)
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.mathcom.com/corpdir/techinfo.mdir/scifaq/index.html">
|
|
|
|
Scientific Computing FAQ @ Mathcom
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.ma.man.ac.uk/~higham/asna/asna2.pdf">
|
|
|
|
Bibliography of accuracy and stability of numerical algorithms
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://tonic.physics.sunysb.edu/docs/num_meth.html">
|
|
|
|
SUNY Stony Brook numerical methods page
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://epubs.siam.org/sam-bin/dbq/toclist/SINUM">
|
|
|
|
SIAM Journal of Numerical Analysis Online
|
|
|
|
</a><br/>
|
|
|
|
</dd>
|
|
|
|
<dt>Probability and statistics</dt>
|
|
|
|
<dd>
|
|
|
|
<a href="http://lib.stat.cmu.edu/">
|
|
|
|
Statlib at CMU
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.itl.nist.gov/div898/handbook/">
|
|
|
|
NIST Engineering Statistics Handbook
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.psychstat.smsu.edu/sbk00.htm">
|
|
|
|
Online Introductory Statistics (David W. Stockburger)
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.jstatsoft.org/">
|
|
|
|
Online Journal of Statistical Software
|
|
|
|
</a><br/>
|
|
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='Javadoc comment resources'>
|
|
|
|
<dl>
|
|
|
|
<dt>References for mathematical definitions.</dt>
|
|
|
|
<dd>
|
|
|
|
<a href="http://rd11.web.cern.ch/RD11/rkb/titleA.html">
|
|
|
|
http://rd11.web.cern.ch/RD11/rkb/titleA.html
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://mathworld.wolfram.com/">
|
|
|
|
http://mathworld.wolfram.com/
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://www.itl.nist.gov/div898/handbook">
|
|
|
|
http://www.itl.nist.gov/div898/handbook
|
|
|
|
</a><br/>
|
|
|
|
<a href="http://doi.acm.org/10.1145/359146.359152">
|
|
|
|
Chan, T. F. and J. G. Lewis 1979, <i>Communications of the ACM</i>,
|
|
|
|
vol. 22 no. 9, pp. 526-531.
|
|
|
|
</a><br/>
|
|
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
</subsection>
|
|
|
|
<subsection name='XML'>
|
|
|
|
<dl>
|
|
|
|
<dt>XML related resources.</dt>
|
|
|
|
<dd>
|
|
|
|
<a href="http://www.openmath.org">
|
|
|
|
http://www.openmath.org
|
|
|
|
</a><br/>
|
|
|
|
</dd>
|
|
|
|
</dl>
|
|
|
|
</subsection>
|
|
|
|
</section>
|
|
|
|
</body>
|
|
|
|
</document>
|