Exiv2 v0.27 and v0.28 Discussion Document

Page Revised: 2018-04-20
Added by Robin Mills almost 2 years ago

To be discussed on May 5 and 6 at the "Exiv2 Developer's Meeting" in England.

Version 0.27 Specification

This project is mostly security fixes.
There are very significant improvements in the build and test architecture.
The project code is on GitHub. https://github.com/Exiv2/exiv2/projects


1) Why did the code-size spike from 100k to 120k in July 2017? Closed
OpenHub mystery. May 2017: 113961 April 2017: 121196
~/gnu/github/exiv2/exiv2 $ git status | grep branch ; finder "*pp | xargs wc | tail -1
2) What's to be done about the duplicated code in tags.src and tags_int.cpp?
3) Why did we migrate canonmn.cpp to canonmn_int.cpp?
4) Unit tests discussion
5) Using safe_op.hpp in elderly versions of MSVC (such as 2005)
6) Remove unwanted test/data files from the repos (eg test/data/bugfixes-test.out)
7) Announce that we plan to deprecate the VIDEO and EPS code in v0.28
8) Remove 'using namespace' in all code.
9) Licensing
10) Binary Output
11) Throwing exceptions from BasicIO::read()
12) Why was printStructure() added? (#1245)
13) Project Tool Discussion (Redmine, GitHub, CMake) https://github.com/Exiv2/exiv2/issues/101
Before the meeting, I'll review 0.27 open/closed bugs. For sure there will be other matters to discuss.

Major Components of Project Exiv2

Group Topic Scope Effort Total
Major User Support Redmine and Github 25% 55%
Lens recognition src/*_mn.cpp and ~/.exiv2 10%
Build Engineering CMake, Autotools and MSVC 10%
Jenkins Build Server daily, weekly and monthly builds 5%
Test Harness bash and python scripts 5%
Normal Sample Applications exiv2, exifprint, exiv2json,... 5% 35%
I/O BasicIO, FileIO, MemIO, RemoteIO,... 5%
Tiff Parser Tiff, Exif, Raw and MakerNote Parsers 5%
Image formats TIFF, JPEG, PNG,... 5%
Metadata formats Exif, IPTC, XMP, ICC 5%
Release Engineering Releases, website, documentation,... 5%
Security/Fuzzing Parsing, arithmetic, memory, threading 5%
Minor Project Management Redmine 5% 10%
Miscellaneous Unexpected Issues, Licensing 3%
Video and EPS formats QT, AI,... 1%
Localisation po/*.po files 1%

v0.28 Desirable Features

1 Improved raw image code and test (#992) GSoC
2 Update to latest Adobe XMPsdk (#941)
3 Coverity Scan (#883)
4 Unified Metadata Container (#585)
5 Harden or remove the video code (#1068)
6 Additional image formats.
6.1) WebM: #1048
6.2) multi-page tiff: #1124
6.3) BigTiff: #1186
6.4) HDR: #885
6.5) SVG: #1086
6.6) PDF: #1138
6.7) CR3: https://github.com/Exiv2/exiv2/issues/236
6.8) IIQ: #1342
7 Build projects:
7.1) Mobile (iOS and Android) build and test support GSoC
7.2) C++11 #1188
7.3) Additional MSVC support: #1174
8 Other Feature Requests
8.1) Editing thumbnails
8.2) Support for thumbnails embedded in IPTC and XMP
8.3) Enhanced Lens Recognition (#1034)
8.4) RemoteIO Object with Memory Mapping (#1245)
8.5) mpfTagInfo in ExifTags::taglist (#1337)
8.6) Turbo TimeStamp Editor (http://dev.exiv2.org/boards/3/topics/3004)
8.7) PNG Metadata (in addition to Exif, XMP and IPTC) https://github.com/Exiv2/exiv2/issues/147
8.8) Refactor 64bit IO http://dev.exiv2.org/issues/1292#note-7
8.9) More JSON support discussion
8.10) Remove Video and EPS code discussion
8.11) RedBalance and Levels http://dev.exiv2.org/boards/3/topics/3108

Google Summer of Code (GSoC)

Google sponsor students to work on approved open-source projects for 12 weeks during the summer vacation. I would like to recruit two GSoC students to work on the raw and mobile tasks. I'd like students to work on those tasks for the following reasons:

1) The projects are well defined and isolated.
2) Mentoring/supervision demands should be modest.
3) No complex dependencies.
4) Allows me to have sufficient time to support users.


Added by Andreas S. 12 days ago

You might want to look into https://github.com/google/oss-fuzz

Added by Robin Mills 8 days ago

Andreas: Fuzzing is getting 100% of the team's efforts at the moment. The Linux Security Police have been flooding us with broken files since September 2017. Very depressing.

Redmine Appliance - Powered by TurnKey Linux