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