@cindex Philosophy
@node Philosophy
@chapter Philosophy

@c NOTE: We should probably re-use some of the images lynX created
@c for secushare, showing some of the relations and functionalities
@c of GNUnet.
The primary goal of the GNUnet project is to provide a reliable, open,
non-discriminating and censorship-resistant system for information
exchange. We value free speech above state interests and intellectual
monopoly. GNUnet's long-term goal is to serve as a development
platform for the next generation of Internet protocols.

GNUnet is an anarchistic network. Participants are encouraged to
contribute at least as much resources (storage, bandwidth) to the network
as they consume, so that their participation does not have a negative
impact on other users.

@menu
* Design Principles::
* Privacy and Anonymity::
* Practicality::
@end menu

@cindex Design Principles
@node Design Principles
@section Design Principles

These are the GNUnet design principles, in order of importance:

@itemize
@item GNUnet must be implemented as
@uref{https://www.gnu.org/philosophy/free-sw.html, Free Software}
@c To footnote or not to footnote, that's the question.
@footnote{This means that you you have the four essential freedoms: to run
the program, to study and change the program in source code form,
to redistribute exact copies, and to distribute modified versions.
Refer to @uref{https://www.gnu.org/philosophy/free-sw.html, https://www.gnu.org/philosophy/free-sw.html}}
@item GNUnet must minimize the amount of personally identifiable information exposed.
@c TODO: Explain 'fully' in the terminology section.
@item GNUnet must be fully distributed and resilient to external attacks and rogue participants.
@item GNUnet must be self-organizing and not depend on administrators or centralized infrastructure.
@item GNUnet must inform the user which other participants have to be trusted when establishing private communications.
@item GNUnet must be open and permit new peers to join.
@item GNUnet must support a diverse range of applications and devices.
@item GNUnet must use compartmentalization to protect sensitive information.
@item The GNUnet architecture must be resource efficient.
@item GNUnet must provide incentives for peers to contribute more resources than they consume.
@end itemize


@cindex Privacy and Anonymity
@node Privacy and Anonymity
@section Privacy and Anonymity

The GNUnet protocols minimize the leakage of personally identifiable information of participants and
do not allow adversaries to control, track, monitor or censor users activities. The
GNUnet protocols also make it as hard as possible to disrupt operations by participating in the network with malicious intent. 

Analyzing participant's activities becomes more difficult as the number of peers and
applications that generate traffic on the network grows, even if the additional
traffic generated is not related to anonymous communication. This is one of the reasons why GNUnet is developed as a peer-to-peer
framework where many applications share the lower layers of an
increasingly complex protocol stack. The GNUnet architecture encourages many
different forms of peer-to-peer applications.

@cindex Practicality
@node Practicality
@section Practicality

Whereever possible GNUnet allows the peer to adjust its operations
and functionalities to specific use cases. A GNUnet peer running on
a mobile device with limited battery for example might choose not to
relay traffic for other participants.

For certain applications like file-sharing GNUnet allows participants to trade degrees of anonymity in
exchange for increased efficiency. However, it is not possible for any
user's efficiency requirements to compromise the anonymity
of any other user.

