GSoC Project Final Report
As Google Summer of Code comes to an end, all the participants are making their final changes to their code and drafting their final reports. The code for my project has successfully been finished.
Overview
- Author: Jesus Solis
- Organization: LibreOffice
- Mentor: Xisco Fauli
- Project: Add JPEG XL import support to LibreOffice.
A previous blog post has some more background information on the project as well. In short, the main goal was to add support to LibreOffice for importing JPEG XL image files, in order to solve a bug filed as tdf#156931.
Patchsets
The code changes I made are available for viewing on Gerrit (the code review software used by LibreOffice), and it is spread across 5 separate patchsets.
Adding libjxl and Dependencies to LibreOffice Build System
- https://gerrit.libreoffice.org/c/core/+/207706/14 (external: add highway)
- https://gerrit.libreoffice.org/c/core/+/208008/11 (external: add brotli)
- https://gerrit.libreoffice.org/c/core/+/207085/20 (external: add libjxl)
libjxl (https://github.com/libjxl/libjxl) was the library used to help
with the importing. highway and brotli were dependencies of
libjxl.
Implementation and Tests
- https://gerrit.libreoffice.org/c/core/+/208352/8 (tdf#156931 add import support for JPEG XL image format)
- https://gerrit.libreoffice.org/c/core/+/208999/3 (tdf#156931 unit tests for importing JPEG XL images)
Status of Code Changes
The patchsets are being reviewed and will (hopefully!) be added to the master branch in the future. Some time after that (when the code from the master branch itself undergoes review/testing), the code will be merged into other branches and be included in builds used by end-users.
Some minor changes may be necessary, but in the current state, these patchsets add the ability to import JPEG XL images.
Challenges
I spent most of the first half of the summer trying to add the libjxl library to LibreOffice's build system. This meant navigating a lot of Makefile/shell code, some of which was a little complex to understand. Reviewing the code written for other libraries helped a lot here. I also ended up needing to add two other libraries that were dependencies of libjxl (highway and brotli).
Future Work
The main new feature that would build directly off of the work done for this project would be to add JPEG XL export support.
Conclusion
I enjoyed my time contributing as part of Google Summer of Code. I feel that I have learned a lot this summer, in particular how to navigate such a large codebase.
I would like to thank my mentor Xisco, for his guidance throughout the duration of the program. Of course, I am grateful to the administrators of the LibreOffice project and Google Summer of Code for the opportunity to participate in this program.
Thank you to the LibreOffice community for being welcoming to new contributors, and for fostering a helpful and collaborative environment. I hope to continue contributing to LibreOffice in the future.