Clarify licensing.
[gnutls:gnutls.git] / README
1 GnuTLS README -- Important introductory notes.
2 Copyright (C) 2000-2011  Free Software Foundation, Inc.
3 See the end of this document for copying conditions.
4
5 GnuTLS implements the TLS/SSL (Transport Layer Security aka Secure
6 Sockets Layer) protocol.  GnuTLS is a GNU project.  Additional
7 information can be found at <http://www.gnu.org/software/gnutls/>
8 and <http://www.gnutls.org/>.
9
10
11 README
12 ------
13 This README is targeted for users of the library who build from
14 sources but do not necessarily develop.  If you are interested
15 in developing and contributing to the GnuTLS project, please
16 see README-alpha and visit
17 http://www.gnu.org/software/gnutls/manual/html_node/Contributing.html.
18
19
20 COMPILATION
21 -----------
22 A typical command sequence for building the library is shown below.
23 A complete list of options available for configure can be found
24 by running './configure --help'.
25
26     cd gnutls-2.10.3
27     ./configure --prefix=/usr
28     make
29     sudo make install
30
31 The commands above build and install the static archives (libgnutls.a
32 and libgnutls-extra.a), the shared object (libgnutls.so  and
33 libgnutls-extra.so), and additional binaries such as certtool and
34 gnutls-cli.
35
36 The library depends on libnettle and p11-kit. Versions
37 2.10.3 and prior used libgcrypt as the default cryptographic library.
38 Nettle can be found at http://www.gnu.org/software/nettle/, while
39 p11-kit can be found at <http://p11-glue.freedesktop.org/p11-kit.html>.
40
41 To configure libnettle for installation and use by GnuTLS, a typical
42 command sequence would be:
43
44     cd nettle-2.2
45     ./configure --prefix=/usr --disable-openssl --enable-shared
46     make
47     sudo make install
48
49 For the Nettle project, --enable-shared will instruct automake and
50 friends to build and install both the static archive (libnettle.a)
51 and the shared object (libnettle.so).
52
53 In case you are compiling for an embedded system, you can disable
54 unneeded features of GnuTLS.  In general, it is usually best not to
55 disable anything (for future mailing list questions and possible bugs).
56
57 Depending on your installation, additional libraries, such as libtasn1
58 and zlib, may be required.
59
60
61 DOCUMENTATION
62 -------------
63 See the documentation in doc/ and online at
64 http://www.gnu.org/software/gnutls/manual/html_node/index.htm.
65
66
67 EXAMPLES
68 --------
69 See the examples in doc/examples/ and online at 'How To Use GnuTLS in
70 Applications' at http://www.gnu.org/software/gnutls/manual/html_node/How-
71 to-use-GnuTLS-in-applications.html#How-to-use-GnuTLS-in-applications.
72 The examples include client, server, and multi-threaded examples.
73
74
75 SECURITY ADVISORIES
76 -------------------
77 The project collects and publishes information on past security
78 incidents and vulnerabilities.  Open information exchange, including
79 information which is [sometimes] suppressed in non-open or non-free
80 projects, is one of the goals of the GnuTLS project.  Please visit
81 http://www.gnu.org/software/gnutls/security.html.
82
83
84 MAILING LISTS
85 -------------
86 The GnuTLS project maintains mailing lists for users, developers, and
87 commits.  Please see http://www.gnu.org/software/gnutls/lists.html.
88
89
90 LICENSING
91 ---------
92 Since version 0.4.2, the GnuTLS library has been released under the GNU
93 Lesser General Public License (LGPL).  Previous versions were licensed
94 under the GNU General Public License (GPL).
95
96 We changed the license for most of the GnuTLS components because other
97 free libraries exist and offer similar functionality with lax licenses.
98 We want GnuTLS to be usable in the same places as those other libraries.
99 We kept some parts of GnuTLS under the GPL because they are unique, and
100 the terms of the license under GPL provides free software projects (which
101 deserve our help) an advantage over non-free projects (which do not
102 deserve our help, since they refuse to share with us).  For information, see
103 http://www.gnu.org/philosophy/why-not-lgpl.html.
104
105 The GNU LGPL applies to the main GnuTLS library, while the
106 gnutls-extra and gnutls-openssl libraries are under the GPL.  The
107 gnutls library is located in the lib/ directory, while the
108 gnutls-extra and gnutls-openssl library is at libextra/.
109
110 For the GnuTLS version 3.0.0 release we upgraded the license of the
111 core library to LGPL version 3 or later.
112
113 For any copyright year range specified as YYYY-ZZZZ in this package
114 note that the range specifies every single year in that closed interval.
115
116
117 BUGS
118 ----
119 Currently GnuTLS needs testing.  Thorough testing is very important and
120 expensive.  Often times, the developers do not have access to a particular
121 piece of hardware or configuration to reproduce a scenario.  Notifying
122 the developers about a possible bug will greatly help the project.  
123
124 If you believe you have found a bug, please report it to bug-gnutls@gnu.org
125 together with any applicable information.  A web interface for the system
126 is available at http://savannah.gnu.org/support/?group=gnutls.
127
128 Applicable information would include why the issue is a GnuTLS bug (if
129 not readily apparent), output from 'uname -a', the version of the library or
130 tool being used, a stack trace if available ('bt full' if under gdb), and
131 perhaps a network trace.  Vague queries or piecemeal messages are difficult
132 to act upon and don't help the development effort.
133
134 Additional information can be found at the project's Bug Report page at
135 http://www.gnu.org/software/gnutls/manual/html_node/Bug-Reports.html.
136
137
138 PATCHES
139 -------
140 Patches are welcome and encouraged.  Details of contributing can be found
141 at http://www.gnu.org/software/gnutls/manual/html_node/Contributing.html.
142
143 Patches are submitted through the bug tracking system or to the
144 mailing list.  When submitting patches, please be sure to use sources
145 from the git repository, and preferrably from the master branch.  To
146 create a patch for the project from a local git repository, please use
147 the following commands.  'gnutls' should be the local directory of a
148 previous git clone.
149
150     cd gnutls
151     git add the-file-you-modified.c another-file.c
152     git commit the-file-you-modified.c another-file.c
153     git format-patch
154
155 For more information on use of Git, visit http://git-scm.com/
156
157 ----------------------------------------------------------------------
158 Copying and distribution of this file, with or without modification,
159 are permitted in any medium without royalty provided the copyright
160 notice and this notice are preserved.