Abstract data types, locales and encryption
This is the first weekly report about the development of the GNU PDF project. We plan to release this kind of report so that people can be aware of the progress and on-goings of the project.
New Library Module for Cryptography
David Vazquez has submitted the initial implementation of the crypt module. The module implementation makes use of libgcrypt to provide encryption and decryption of memory buffers. We will use those functions to write the support for encryption filters in the stream module.
After the installation of the new module in the trunk we had some fun determining the minimum required version of libgcrypt that we needed to build the library. The conclusion was to require libgcrypt >= 1.2.4 and we think it is a reasonable requirement.
Abstract Data Types
We also created a new section in the GNU PDF Hackers Guide containing some conventions about how to implement Abstract Data Types. We did some work to adapt the existing code to the conventions.
Autobuild and Portability
Zac Brown sent an email to the development mailing list showing the convenience of using some kind of autobuild system to automatically build the library and run the test suite on several different target architectures. Ralph Giles came with the idea to use a solution named buildbot. Zac is now looking into it. If we finally decide to use buildbot then we will search for people willing to donate some machine power to build a kind of compilation and testing farm. That kind of setup would be really useful for any GNU package willing to be portable to non-GNU machines.
Zac also spent a three-day weekend adapting GNU PDF to compile for FreeBSD, OpenBSD and NetBSD. Currently compilation and unit tests succeed on FreeBSD and OpenBSD, however NetBSD is not currently linking with libiconv. His modifications also added a proper setting for timezone and GMT offset. This made GNU PDF compliant with AST/ADT standards, which represents time West of Greenwich Mean Time in negative intervals. Zac’s next goals include enabling compilation on OpenSolaris/Solaris as well as fixing support on NetBSD.
Tons of Usage Examples (and some missing)
The GNU PDF Library Reference Manual is getting large (currently more than 9000 lines of texinfo). For each public function in the library we are including usage examples. We believe that those examples will be quite useful for the people using the reference manual.
Unfortunately a lot of existing function entries (more than 90 actually) are lacking proper usage examples. We are looking for a volunteer to take over this task. If you have some spare time that you would like to donate to do this task please write to the development mailing list.
Text Module and Locales
At some point in this week the unit tests for the text module suddenly started to fail.
After some inquiries Gerardo E. Gidoni came with the reason: this week we installed the maintainer-makefile module from gnulib. The module provides a maint.mk file providing useful targets for the maintenance of the code (like syntax-check). The problem is that maint.mk sets the locale of the build process to POSIX and the text module is not prepared to work for that locale.
We are discussing this issue on the mailing list about how to manage the locale POSIX/C and what encoding/language/country to use.
Would be really good to have the opinion of a localization guru, so if you read this and know the answer, please drop a note in the mailing list :).
The Big Picture
We are getting close to completing the base layer of the library. After that milestone we will start working in the next layer, the object layer.