docs/diploma

view thesis/attic/old/3-FreeSoftwareProjects.tex @ 329:c4d78cd40827

new ipc state diagram pic
author meillo@marmaro.de
date Fri, 23 Jan 2009 21:55:37 +0100
parents 3b5ba7331eb5
children
line source
1 \chapter{About \freesw\ projects}
3 % http://www.faqs.org/docs/artu/
5 There are several differences between \freesw\ projects and projects about proprietary software.
6 To understand \freesw\ projects, one needs to understand \freesw\ itself first.
8 \section{About \freesw}
9 The term ``Free Software'' was coined by the \name{Free Software Foundation} (short: \NAME{FSF}), founded by Richard~M.\ Stallman (known as ``RMS'') in 1985.
10 Although various licenses make software free, none of them represents the thinking of \freesw\ like the the \GNU\ \gpl\ (short: \GPL). Its first version was written by Stallman in 1989.
11 One could say, the \GPL\ catalized the \name{Free Software movement}.
13 % http://www.fsf.org/about/what-is-free-software
15 After all, the \GPL\ was not the first \freesw\ license used.
16 The \name{MIT License} (or \name{X Consortium License}) for example is older; published in 1988.
17 Licenses providing the same rights have been used since long time ago.
18 But none of them was so often (re)used by other projects---thus gattering less awareness.
19 Further more was the \GPL\ created to be a \emph{general} license for all kinds of programs, unlike most other licenses written for one particular program.
21 \freesw\ gives freedoms to its users.
22 In contrast to proprietary software restricting the users freedom.
23 The freedoms (or rights) the user has are stated in the \name{Free Software Definition} of the \NAME{FSF}. Namely these are:
24 % http://www.gnu.org/philosophy/free-sw.html
25 % http://www.fsf.org/licensing/essays/free-sw.html
26 \begin{enumerate}
27 \item The freedom to run the program, for any purpose (freedom 0).
28 \item The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
29 \item The freedom to redistribute copies so you can help your neighbor (freedom 2).
30 \item The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
31 \end{enumerate}
34 \section{The term ``Open Source''}
35 \name{Open Source Software} often stands for the same as \freesw.
36 But there is an essential difference: \name{Open Source} focuses on the availability of source code, while \freesw\ is about freedoms for people.
38 \name{Open Source Software} is a subset of \freesw, meaning: All \freesw\ is \name{Open Source}, but there exists \name{Open Source Software} that is not free.
40 % http://www.gnu.org/philosophy/open-source-misses-the-point.html
41 % http://catb.org/~esr/open-source.html
44 \section{Development of \freesw}
45 Having source code available and the right to modify it, encouridges programmers to actually do so.
46 Their modifications are manifoldly.
47 Some tailor the software to their needs.
48 Some add features.
49 Some do it just for fun.
50 There are no limitations---whoever wants to, may work on it.
52 Since the boom of the internet, \freesw\ typically is developed by an open community of programmers interested in the software.
53 The process of development is watchable by everyone.
55 The other, now less common, method is a more closed group, developing in a ``sealed'' room, but releasing finished versions to the public.
57 Eric~S.\ Raymond discusses about these methods, which he named \name{the bazaar} and \name{the cathedral} \cite{catb}.
59 The following text will focus on the ``bazaar'' model.
62 \section{The role of the community}
63 \freesw\ projects rise and fall with their community!
65 Most \freesw\ programs are developed by a very small group of programmers, often only one person.
66 But they are used by many people.
67 In between the programmers and the users, are people located who are a bit of both.
68 These are the ones that write documentation, find bugs and probably even fix it.
69 They discuss on mailing lists, bulletin boards and \NAME{IRC} chats.
70 The program is often spread by their ``advertising''.
72 The \emph{community} consists of the actual developers and all users that contribute to the program.
73 Contribution can be one of the described ways, or others like providing a server for the project website for example.
75 \emph{Community} is everyone who is in contact through the project.
76 Be it on the mailing list, the discussion board, or by telling the developers about a new feature wanted.
78 There will hardly be a community if no communication channels are available.
79 If the development team does not provide them, there is a chance that encouraged users set them up on their own.
80 But this is rare and the program needs to be very popular. %TODO: maybe include an example here (w3m?)
82 Projects without a good community tend to die sooner or later.
85 \section{Evolution of a community}
86 Let us look at the process a community establishes: In most times it's only one who has an idea, in the beginning.
87 He starts developing.
88 When others get in contact with the project, there may be some who are so much interested that they start co-developing.
89 Others report bugs, and some only use the program.
91 After some time, one will find a small group of core developers, a larger group of contributers (bugs, patches, documentation) and a very large group of users.
92 The size ratio of the groups vary by type of project.
94 One should have that in mind, when starting a \freesw\ project.
97 \section{Creating a strong community}
98 Building up a good community needs some effort of the main developers.
99 %TODO: search for documents about this topic
101 First communication channels need to be set up, to enable the growth of a community.
103 Second, development should be visible by everyone who is interested in it.
104 Time between work done on the project and its visibility to the public should be kept short.
105 This makes it interesting for other developers to join.
106 Developers are the core of a community.
108 Third, there is a rule of thumb that should be followed: ``Release early, release often!'' \cite{catb}.
109 Releases are (more) stable versions, primary for users.
110 They should be created, frequently.
111 People will more likely use programs of active projects.
113 Fourth, the developers should try to get the users ``in the boat''.
114 Good communities have a large group of users that do not only receive, but also give something back to the project.
115 The project leaders should motivate users to contribute.
116 This unlocks a big work force and gets lot of unexiting work done.
118 Fifth, documentation matters.
119 Good documentation makes it easy for users and developers to start.
120 And it helps to avoid a lot of unsatisfaction.
121 Documentation is something that shows quality and that people care about the project.
123 And sixth, project leaders should be good souvereigns.
124 They should try to be fair, to motivate, be visionaires and try to put power and work on many shoulders.
126 Not to forget: Every work that was done, every contribution that was made and every idea received needs to be honored in an appropriate way!
127 Volunteer work lives by acknowledgement of the effort spent.