devel-ideal-proj.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sat, 04 Dec 2010 23:31:54 +0200
changeset 737 e0b618d34942
parent 736 9b962c4c86e3
child 738 969b166d66ce
permissions -rw-r--r--
with contact info

-*- mode: outline; coding: utf-8; fill-column: 80 -*-

* Ideal software development model.

This file mainly discuss about open source software project.

* Open source.

Open source software project have freedom how develop project and which
development toolchains use.

* Close source.

Close source projects have proprietary nature because of:

 * interest to make money (another parties can not easily reproduce project or
   steal realisation ideas/code, allowing another party get same product and get
   company money)
 * low code quality (to stop stain company good name or to stop malicious
   attacks based on code analysis)
 * security consideration (to hide protocols and data format to make harder
   malicious attack)
 * business model (closed data formats allow vendor lock)

Disadvantage of closed source project (in many case):

 * you can not directly contact with developers (only through support)
 * low support quality
 * paid support (and you have no enough money)
 * can not access to product bug tracing system (you only can submit bug via
   crash report application or technical support, publicly appear internal bug
   tracing can damage product reputation

* Component of software project.

 * Src (sources).
 * Doc (documentation).
 * VCS (version control system).
 * BTS (bug tracking).
 * News (project news/history/changelog).

* Project sources.

** README file.

Assumed that users first read this file before start using project.

 * Project name.
 * Project goal.
 * Point to license statements.
 * Point to build instructions.
 * Point to documentations.

** INSTALL file.

 * List of supported platform.
 * Build dependencies/prerequisites.
 * Build instructions.

** COPYING/LICENSE file.

COPYING usually used for GNU GPL like license. Another license put in LICENSE
file.

If some component comes with different license put it into file with name like:

  LICENSE.libmy LICENSE.regex LICENSE.doc

** AUTHORS file.

Usually regular contributors.

 * List of project members with contact info (email/phone/home page/address/etc).

** THANKS/CREDITS file.

Usually casual/non-regular contributors.

 * List of contributors with contact info (email/phone/home page/address/etc).

** NEWS/CHANGES file.

Here goes news and descriptions of user visible changes:

 * Important project news.
 * New features.
 * Obsolescense/deprecation of UIs/APIs/protocols/formats.
 * Incompatibilities with previous version.

** HISORY file.

 * Project history in long perspective.

** FAQ file.

 * List of frequency asked questions with answers.

* Docs.

* Project home page.

Project home page must provide:

 * project name
 * short info about project goal
 * project license
 * current project status
 * links to binary release
 * links to source release, how to get latest source from VCS
 * links to online/printed docs
 * how report bug (BUGS)
 * where send patch
 * contact info

Additionally:

 * help welcome, requirement to join to project
 * mail/news list for users/developers, how to subscribe/unsubscribe, where
   find archive, how search for keyword in archive
 * project history (NEWS, ChangeLog)
 * project policy (HACKING)
 * how build project (README, INSTALL)
 * list of contributor with contact info (MAINTAINERS, AUTHORS)
 * who use project

* VCS.

TAGS: VCS, version control system, SCM, source code management, DVCS,
      distributed version control system.

 * CVS
 * SVN
 * Mercurial (hg)
 * git
 * bazaar