diff options
author | Hui Lan <lanhui@zjnu.edu.cn> | 2020-03-04 17:08:51 +0800 |
---|---|---|
committer | Hui Lan <lanhui@zjnu.edu.cn> | 2020-03-04 17:08:51 +0800 |
commit | 7e8b759ffd083af2bc305e51802f01018b4740cd (patch) | |
tree | bd05a5a11d488dcf8e164aa3e8122477a12e4af9 | |
parent | 632ee6e28a43c4b6e32c8ddad95677df53c9598a (diff) |
spm-slides.tex: Starting a New Project
-rw-r--r-- | spm-slides.tex | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/spm-slides.tex b/spm-slides.tex index 8b35b09..2a5c412 100644 --- a/spm-slides.tex +++ b/spm-slides.tex @@ -673,12 +673,6 @@ Word processor. Customer acquisition. %A record of the past activities for future reference. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\foilhead{Choosing a license and applying it} - - - - %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% \foilhead{The nature of software engineering} @@ -1097,8 +1091,8 @@ The Apache Hadoop software library is a framework that allows for the \end{verbatim} } -You mission statement is mainly aimed at people with some knowledge -about the related technique. ``cluster'', ``high-availability''. +Your mission statement is mainly aimed at people with some knowledge +about the related technique. ``Cluster'', ``high-availability''. {\bf State that the project is free}. The front page must make it \underline{unambiguously} clear that the project is open source. @@ -1130,7 +1124,7 @@ See the files GPL2.txt and GPL3.txt for the full license text. \end{verbatim} } -{\bf Demos, screenshots, videos, and example output}. Show that the software works. A short video (less than 4 minutes) and {\em say} this video is short. +{\bf Demos, screenshots, videos, and example output}. Show that the software works. Prepare a short video (less than 4 minutes) and {\em say} this video is short. {\bf Features and requirements list}. @@ -1160,7 +1154,7 @@ REQUIREMENTS \end{verbatim} } -{\bf Development status}. How is the project doing? Promise vs. reality. Are the people there, getting things done? {\em How active} is the project (developed or maintained)? How activity is the community. Show News, near-term goals and needs, past releases (with feature lists), timeline of recent releases, bug tracker, discussion forum, mailing list. Examples: \url{https://launchpad.net/drizzle}, \url{https://launchpad.net/inkscape}, \url{https://launchpad.net/schooltool}. +{\bf Development status}. How is the project doing? Promise versus reality. Are the people there, getting things done? {\em How active} is the project developed or maintained? How active is the community. Show News, near-term goals and needs, past releases (with feature lists), timeline of recent releases, bug tracker, discussion forum, and mailing list. Examples: \url{https://launchpad.net/drizzle}, \url{https://launchpad.net/inkscape}, \url{https://launchpad.net/schooltool}. Release notes: \url{http://wiki.inkscape.org/wiki/index.php/Release\_notes} @@ -1170,23 +1164,24 @@ Conservativism pays off in the long run; it's always better for the software to be more stable than the user expected than less. Alpha (first release, with known bugs). Beta (serious known bugs fixed, asking users for detailed feedback). {\bf Downloads}. Downloadable as source code. Conforming to standard build and installation methods. -Otherwise: someone visits a web site, downloads the software, tries to build it, fails, gives up and goes away. +Otherwise, someone visits a web site, downloads the software, tries to build it, fails, gives up and goes away. {\bf Version control and bug tracker access}. -You need a version control repository (e.g., a repo at github, a repo at savannah). +You need a version control repository (e.g., a repo at github, a repo at savannah, a repo on your own server). \begin{itemize} \item Create an account at github. New an empty repo there. \item Clone that empty repo to your local machine. \\ - \url{git clone https://github.com/accountname/reponame.git}. + \texttt{git clone https://github.com/accountname/reponame.git}. \item Inside Git Bash, change directory to that local repo. \item After you have added files into that repo, issue the following commands, \texttt{git add .}, \texttt{git commit -m 'message'}, \texttt{git push origin}. \end{itemize} -You also need a bug tracker (visible from the homepage of the -project). For example, Bugzilla. The {\em higher} the number of bugs +We also need a bug tracker (visible from the homepage of the +project). For example, Bugzilla. Anyone tried \href{http://www.fogbugz.com/}{FogBugz}? +The {\em higher} the number of bugs in the database, the {\em better} the project looks. It indicates the size of user pool and the convenience for reporting bugs. Things to avoid: (1) no bug database, (2) a nearly empty bug database. @@ -1242,29 +1237,34 @@ index 84e3f68..fd54c16 100644 } -{\bf Communication channels}. Your presence on the list/forum does not imply a commitment to answer all questions or implement all feature requests. +{\bf Communication channels}. IRC is good. Try \href{http://lanlab.org/course/2020s/spm/irc-instruction.txt}{IRC}. Your presence on the list/forum does not imply a commitment to answer all questions or implement all feature requests. -{\bf Developer guidelines}. For potential contributors. Basic elements: * -pointers to forums * instructions on how to report bugs and submit patches -* some indication of how development is usually done and how decisions are -made — is the project a benevolent dictatorship (veto power), a democracy, -or something else. Good examples: +{\bf Developer guidelines}. For potential contributors. + +Basic elements: \begin{itemize} -\item \url{https://wiki.documentfoundation.org/Development}. -\item \url{https://subversion.apache.org/docs/community-guide/} -\item \url{https://www.apache.org/foundation/how-it-works.html} -\item \url{https://www.apache.org/foundation/voting.html} +\item Pointers to forums. +\item Instructions on how to report bugs and submit patches. +\item Some indication of how development is usually done and how decisions are made — is the project a benevolent dictatorship (veto power), a democracy, or something else. \end{itemize} + +Good examples: +\begin{itemize} +\item \href{https://wiki.documentfoundation.org/Development}{Document Foundation} +\item \href{https://subversion.apache.org/docs/community-guide/}{Apache Subversion} +\item \href{https://www.apache.org/foundation/how-it-works.html}{Apache Foundation - How it Works} +\item \href{https://www.apache.org/foundation/voting.html}{Apache Foundation - Voting} +\end{itemize} + Contrast Developer Guidelines with Developer Documentation. {\bf Documentation.} Essential. People need something to read about your project. Make people's -lives easier. Maintain FAQs (both online and in the distribution). An all-in-one page so that +lives easier. Maintain FAQs (both online and in the distribution). Provide an all-in-one page so that people can search. Fine to be rudimentary and incomplete. The most important documentation for initial users is the basics: how to quickly set up the software, an overview of how it works, perhaps some guides to doing common tasks (tutorial). Plain text, HTML, Markdown, {\em -reStructuredText}, Read The Docs (an online documentation tool at \url{https://readthedocs.org}). -Tell the readers the {\bf known deficiencies}, issues. {\bf Put everything in one page}. Hard to -see things from the reader's point of view. +reStructuredText}, \href{https://readthedocs.org}{Read The Docs} (an online documentation tool). +Tell the readers the {\bf known deficiencies}, issues. {\bf Put everything in one page}. See things from the reader's point of view (hard). {\bf Developer documentation}. Developer guidelines tell programmers how to get along with each @@ -1273,7 +1273,7 @@ actively maintained.) {\bf Hosting}. A website for users and a website for developers (code repo, bug tracker, development wiki, mailing lists, etc). Two sites link to each other. Not important in the beginning. -Canned hosting. +Use canned hosting. {\bf Choosing a license and applying it}. @@ -1291,12 +1291,12 @@ Two kinds of open-source licenses: FSF-approved, OSI-approved. There is a big The ``Do Anything'' licenses: MIT-style. Assert nominal copyright and no warranty. -Don't allow proprietary programs to use my code: GPL (the GNU General Public License). +Forbid proprietary programs to use my code: GPL (the GNU General Public License). -GNU Affero GPL. With one extra clause compared to GPL. For code running in cloud. +GNU Affero GPL. With one extra clause in addition to GPL. For code running in cloud. How to apply a license? 1. State the license clearly on the project's -front page. 2. Include the license (LICENSE or COPYING) in the +front page. 2. Include the license in file LICENSE or COPYING in the software distribution itself. 3. Include a short notice at the top of each software source file. |