1Copyright notices
2=================
3
4If you make a contribution substantial enough to add or update a copyright
5notice on a file, such notice must be mirrored in the AUTHORS file. This is
6to make it easy for people to comply to section 6 of the LGPL, which states
7that a "work that uses the Library" must include copyright notices from
8this library. By providing them all in one place, hopefully we save such
9users some time.
10
11
12USB
13===
14
15At the time of development, there are no known consumer fingerprint readers
16which do not operate over the USB bus. Therefore the library is designed around
17the fact that each driver drivers USB devices, and each device is a USB device.
18If we were to ever support a non-USB device, some rearchitecting would be
19needed, but this would not be a substantial task.
20
21
22GLib
23====
24
25Although the library uses GLib internally, libfprint is designed to provide
26a completely neutral interface to it's application users. So, the public
27APIs should never return GLib data types or anything like that.
28
29
30Two-faced-ness
31==============
32
33Like any decent library, this one is designed to provide a stable and
34documented API to it's users: applications. Clear distinction is made between
35data available internally in the library, and data/functions available to
36the applications.
37
38This library is confused a little by the fact that there is another 'interface'
39at hand: the internal interface provided to drivers. So, we effectively end
40up with 2 APIs:
41
42 1. The external-facing API for applications
43 2. The internal API for fingerprint drivers
44
45Non-static functions which are intended for internal use only are prepended
46with the "fpi_" prefix.
47
48
49API stability
50=============
51
52No API stability has been promised to anyone: go wild, there's no issue with
53breaking APIs at this point in time.
54
55
56Portability
57===========
58
59libfprint is primarily written for Linux. However, I'm interested in
60supporting efforts to port this to other operating systems too.
61
62You should ensure code is portable wherever possible. Try and use GLib rather
63than OS-specific features.
64
65Endianness must be considered in all code. libfprint must support both big-
66and little-endian systems.
67
68
69Coding Style
70============
71
72This project follows Linux kernel coding style but with a tab width of 4.
73
74
75Documentation
76=============
77
78All additions of public API functions must be accompanied with doxygen
79comments.
80
81All changes which potentially change the behaviour of the public API must
82be reflected by updating the appropriate doxygen comments.
83
84
85Contributing
86============
87
88Patches should be sent to the fprint bugzilla:
89https://bugs.freedesktop.org/enter_bug.cgi?product=libfprint
90
91Information about libfprint development repositories can be found here:
92http://www.freedesktop.org/wiki/Software/fprint/libfprint
93
94If you're looking for ideas for things to work on, look at the TODO file or
95grep the source code for FIXMEs.
96
97