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