Fossil SCM

fossil-scm / www / foss-cklist.wiki
Source Blame History 112 lines
34177b0… drh 1 <title>Checklist For Successful Open-Source Projects</title>
34177b0… drh 2 <nowiki>
34177b0… drh 3
1fd407f… wyoung 4 This checklist is loosely derived from Tom "Spot" Callaway's Fail Score
34177b0… drh 5 blog post <a href="http://spot.livejournal.com/308370.html">
34177b0… drh 6 http://spot.livejournal.com/308370.html</a> (see also
a59af25… danield 7 <a href="http://www.theopensourceway.org/book/The_Open_Source_Way-How_to_tell_if_a_FLOSS_project_is_doomed_to_FAIL.html">[1]</a>).
34177b0… drh 8 Tom's original post assigned point scores to the various elements and
b78ca10… drh 9 by adding together the individual points, the reader is supposed to be able
34177b0… drh 10 to judge the likelihood that the project will fail.
34177b0… drh 11 The point scores, and the items on the list, clearly reflect Tom's
34177b0… drh 12 biases and are not necessarily those of the larger open-source community.
34177b0… drh 13 Nevertheless, the policy of the Fossil shall be to strive for a perfect
1fd407f… wyoung 14 score.
34177b0… drh 15
1fd407f… wyoung 16 This checklist is an inversion of Tom's original post in that it strives to
34177b0… drh 17 say what the project should do in order to succeed rather than what it
1fd407f… wyoung 18 should not do to avoid failure. The point values are omitted.
34177b0… drh 19
1fd407f… wyoung 20 See also:
34177b0… drh 21 <ul>
34177b0… drh 22 <li><a href="http://offog.org/articles/packaging/">
34177b0… drh 23 http://offog.org/articles/packaging/</a>
34177b0… drh 24 <li>
34177b0… drh 25 <a href="http://www.gnu.org/prep/standards/standards.html#Managing-Releases">
34177b0… drh 26 http://www.gnu.org/prep/standards/standards.html#Managing-Releases</a>
34177b0… drh 27 </ul>
34177b0… drh 28
34177b0… drh 29 <hr>
34177b0… drh 30
34177b0… drh 31 <ol>
1fd407f… wyoung 32 <li>The source code size is less than 100 MB, uncompressed.
34177b0… drh 33
1fd407f… wyoung 34 <li>The project uses a Version Control System (VCS).
34177b0… drh 35 <ol type="a">
34177b0… drh 36 <li>The VCS has a working web interface.
34177b0… drh 37 <li>There is documentation on how to use the VCS.
34177b0… drh 38 <li>The VCS is general-purpose, not something hacked together for this
34177b0… drh 39 one project.
34177b0… drh 40 </ol>
34177b0… drh 41
1fd407f… wyoung 42 <li>The project comes with documentation on how to build from source
34177b0… drh 43 and that documentation is lucid, correct, and up-to-date.
34177b0… drh 44
1fd407f… wyoung 45 <li>The project is configurable using an autoconf-generated configure
34177b0… drh 46 script, or the equivalent, and does not require:
34177b0… drh 47 <ol type="a">
34177b0… drh 48 <li>Manually editing flat files
34177b0… drh 49 <li>Editing code header files
34177b0… drh 50 </ol>
34177b0… drh 51
1fd407f… wyoung 52 <li>The project should be buildable using commonly available and
34177b0… drh 53 standard tools like "make".
34177b0… drh 54
1fd407f… wyoung 55 <li>The project does not depend on 3rd-party proprietary build tools.
34177b0… drh 56
1fd407f… wyoung 57 <li>The project is able to dynamically link against standard libraries
34177b0… drh 58 such as zlib and libjpeg.
34177b0… drh 59 <ol type="a">
34177b0… drh 60 <li>The project does not ship with the sources to standard libraries.
34177b0… drh 61 <i>(On the Fossil project, we will allow the SQLite library sources
34177b0… drh 62 to be included in the source tree as long as a system-installed
34177b0… drh 63 SQLite library can be used in its stead.)</i>
34177b0… drh 64 <li>The project does not use slightly modified versions of standard
34177b0… drh 65 libraries. Any required bug fixes in standard libraries are pushed
34177b0… drh 66 back upstream.
34177b0… drh 67 </ol>
34177b0… drh 68
34177b0… drh 69
1fd407f… wyoung 70 <li>"make install" works and can be configured to target any
34177b0… drh 71 directory of the installer's choosing.
34177b0… drh 72 <ol type="a">
34177b0… drh 73 <li>The project contains no unconfigurable hard-coded pathnames like
34177b0… drh 74 "/opt" or "/usr/local".
34177b0… drh 75 <li>After installation, the source tree can be moved or deleted and
34177b0… drh 76 the application will continue working.
34177b0… drh 77 </ol>
34177b0… drh 78
34177b0… drh 79
1fd407f… wyoung 80 <li>The source code uses only \n for line endings, not \r\n.
34177b0… drh 81
1fd407f… wyoung 82 <li>The code does not depend on any special compiler features or bugs.
34177b0… drh 83
1fd407f… wyoung 84 <li>The project has a mailing list and announces releases on
34177b0… drh 85 the mailing list.
34177b0… drh 86
1fd407f… wyoung 87 <li>The project has a bug tracker.
1fd407f… wyoung 88
1fd407f… wyoung 89 <li>The project has a website.
34177b0… drh 90
1fd407f… wyoung 91 <li>Release version numbers are in the traditional X.Y or X.Y.Z format.
34177b0… drh 92
1fd407f… wyoung 93 <li>Releases can be downloaded as tarball using
34177b0… drh 94 gzip or bzip2 compression.
34177b0… drh 95
1fd407f… wyoung 96 <li>Releases unpack into a versioned top-level directory.
34177b0… drh 97 (ex: "projectname-1.2.3/").
34177b0… drh 98
1fd407f… wyoung 99 <li>A statement of license appears at the top of every source code file
34177b0… drh 100 and the complete text of the license is included in the source code
34177b0… drh 101 tarball.
34177b0… drh 102
1fd407f… wyoung 103 <li>There are no incompatible licenses in the code.
34177b0… drh 104
1fd407f… wyoung 105 <li>The project has not been blithely proclaimed "public domain" without
f47b705… jan.nijtmans 106 having gone through the tedious and exacting legal steps to actually put it
34177b0… drh 107 in the public domain.
34177b0… drh 108
1fd407f… wyoung 109 <li>There is an accurate change log in the code and on the website.
34177b0… drh 110
1fd407f… wyoung 111 <li>There is documentation in the code and on the website.
34177b0… drh 112 </ol>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button