Add debug.
[libidn.git] / README
blob68ae4f8064139d45284f19d2793f11c9af7d7512
1 Libidn README -- Important introductory notes.
2 Copyright (C) 2002, 2003 Simon Josefsson
3 See the end for copying conditions.
5 GNU Libidn is an implementation of the Stringprep, Nameprep, Punycode
6 and IDNA specifications, licensed under the LGPL.  See ANNOUNCE for an
7 overview, and libidn.{info,ps,pdf} for the manual.
9 Things left to do below.  If you like to start working on anything,
10 please let me know so work duplication can be avoided.
12   - Optimize stringprep, the table searching is slow (but does it
13     matter?).  Optimize for speed?  The stringprep tables can be
14     compressed _alot_ (most map entries are simply zeroes).
15   - Port applications to use libidn.
16   - Include more stringprep profiles.
17   - Add IDNA tools
18   - Rename package?  Stringprep useful outside of IDN.  Separating
19     into libstringprep + libidn was considered, but libidn would
20     be so small it would be wasteful to create it.  libunicodenames?
22 Anticipated Frequently Asked Questions:
24 Q#1: Why doesn't Libidn use a separate library for the Unicode
25      operations?
27 A#1: Separate libraries (Glib, QT, libiconv) seldom mark the Unicode
28      tables with the corresponding Unicode version they implement, nor
29      do they provide a interface where a specific version can be
30      requested.  This violates the stringprep specification which
31      requires that a specific version is used.  Also, some of these
32      third party libraries depend on non-portable behavior
33      (e.g. threads).
35 Q#2: Why do Libidn include several stringprep profiles? They waste space!
37 A#2: The stringprep profiles included are derived from the generic
38      stringprep tables, and doesn't waste more than say a few hundred
39      bytes (see profiles.c).  The Unicode normalization tables and the
40      generic stringprep tables are roughly equivalent in size,
41      although the latter tables can surely be compressed much further.
43 Q#3: I thought GNU was encouraging libraries to be licensed under the GPL?
45 A#3: The reasoning for this was for libraries that provide unique
46      functionality to encourage more free programs.  Since there are
47      several IDN libraries out there, using the GPL for Libidn would
48      only encourage people not to use Libidn which would not help the
49      spread of free software.
51 Q#4: How do I add a new stringprep profile?
53 A#4: Add the profile definition to profiles.c, create a new
54      stringprep_PROFILENAME.h header file, and add it to
55      Makefile.am. For the texinfo documentation document the header in
56      libidn.texi and for the GTK-DOC manual, add it to
57      reference/libidn-docs.sgml and document the header definitions in
58      reference/dummy.c.  If you want to add self tests, include the
59      header file in internal.h and add the self tests (easiest through
60      tst_stringprep.c).  Mention it in NEWS.
62 ----------------------------------------------------------------------
63 Copying and distribution of this file, with or without modification,
64 are permitted in any medium without royalty provided the copyright
65 notice and this notice are preserved.