News

Exiv2: Exiv2 v0.27 and v0.28 Discussion Document (2 comments)

Added by Robin Mills about 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

Backlog

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.cpp 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, BuildServer) 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.

Exiv2: Goals for v0.26

Added by Robin Mills over 2 years ago

Scope:

v0.26 is a "maintenance" release of Exiv2. The back-log of open issues has been cleared. Typical response time for new Issues or Forum Questions is hours. There are more engineers in the team. Many new features have been added and expanded. Roadmap: http://dev.exiv2.org/projects/exiv2/roadmap

Presentation to LGM (Libre Graphics Meeting) in Rio on 2017-04-22: https://www.youtube.com/watch?v=3Fv57Lbhmqg

There are 4 active "target versions" in Redmine:

Target About this target Redmine Features Progress Status Summary
0.26 back-log of issues/tasks for this release 100% 100% 100% Released
0.27 Issues deferred due to lack of time and engineers 63 Mostly requests
1.0 Future feature back-log 28 Requests
Review Defunct. Elderly Issues to close, solve, or defer to 1.0 or 0.27 All closed

Calculations for Progress and Features are performed below. Redmine uses an unknown method that involves task estimate and %done.

Features:

1 #1168 5 100% 5.00 User support during v0.26 development
2 #1041 5 100% 5.00 CMake toolchain for windows
3 #1111 3 100% 3.00 The web pages could use an overhaul
4 #1109 3 100% 3.00 User ability to request a build from Jenkins
5 #1074 3 100% 3.00 ICC Profile in APP2 segment.
6 #1034 3 100% 3.00 Camera accessory overflow file
7 #1108 2 100% 2.00 Recursively dump sub-files of an image
8 #1199 2 100% 2.00 WebP file support
9 #1236 2 100% 2.00 Build Exiv2 on MinGW using CMake
10 #1057 1 100% 1.00 Implement target/modifier - (stdin/stdout) for exiv2 options -i (insert) and -e (extract)
11 #1177 1 100% 1.00 Resolve issues in target "Review"
12 #1187 1 100% 1.00 Crash while reading in parallel threads
13 #1193 1 100% 1.00 XMP Specification November 2014 updates
14 #1190 1 100% 1.00 Support for CRS and CRSS XMP namespace and properties
15 #1243 1 100% 1.00 Improved JPEG 2000 Support
Total: 34 100% 34.00

Effort is a guess about the work required (story points). Status is recorded in the associated issue.

Progress:

Forecast is Feature Complete. Release processes such as bug hunting, localisation and change/code review take months.

Target: 1.0 0.27 0.26
Date: Total Total Total Closed Open Resolved Remaining Redmine % Unassigned Progress % Forecast Comment
2017-04-28 28 0/63 235 225 0 0 0 100% 0 / 0% 100% Released
2017-03-18 27 0/61 229 225 4 2 2 99% 0 / 0% 100% Release Candidate 2
2016-11-18 28 0/48 211 208 3 2 1 100% 0 / 0% 100%
2016-11-05 28 0/47 208 205 3 2 1 99% 0 / 0% 100%
2016-10-23 28 0/47 204 201 3 2 1 99% 0 / 0% 100% Release Candidate 1
2016-10-15 28 0/45 203 195 8 4 4 98% 0 / 0% 98% JP2 and EXV_HAVE_MMAP
2016-10-06 28 0/44 200 192 8 3 5 97% 0 / 0% 98% MinGW build/test issues
2016-09-29 28 0/43 197 189 8 3 5 97% 0 / 0% 97% Bug Hunting
2016-09-22 27 0/42 193 186 7 2 5 97% 0 / 0% 97% MinGW/32/Qt from buildserver
2016-09-15 27 0/42 190 183 7 2 5 97% 0 / 0% 97% Feature Complete
2016-09-08 28 0/31 196 176 20 3 17 92% 5 / 2% 91% Sept 15 Support eats all my time
2016-09-01 28 0/30 194 173 21 3 18 91% 6 / 3% 90% Sept 5 ICC/JPEG fixed
2016-08-25 28 0/22 196 167 29 4 25 89% 7 / 3% 87% August 31 Feature Creep
2016-06-25 28 19 181 153 28 2 26 87% 7 / 3% 85% June 30 Almost there
2016-06-13 28 0 182 145 37 2 35 81% 15 / 8% 81% June 30 Closing
2016-05-30 35 0 182 139 43 3 40 77% 15 / 8% 78% June 28 Redmine consuming lots of time
2016-05-14 35 0 182 139 43 3 40 76% 15 / 8% 78% June 18
2016-04-30 36 0 179 130 49 6 43 74% 15 / 8% 75% June 7 Working hard!
2016-04-17 35 25 153 94 59 11 48 67% 18 / 11% 68% June 4
2016-04-02 33 25 153 93 60 9 51 66% 18 / 11% 66% June 1
2016-03-27 30 28 148 85 63 12 51 63% 18 / 12% 65% June 4 Break over
2016-03-08 27 28 147 85 62 10 52 59% 18 / 12% 61% June 29 Having a break
2016-02-15 27 28 139 84 55 6 49 57% 18 / 12% 64% June 15 Slipped! Having a break
2016-02-01 27 28 138 82 56 6 50 57% 18 / 13% 64% April 18 Slipping. Must work harder!
2016-01-16 27 28 133 73 60 10 50 56% 18 / 13% 63% April 2 Deferred #1138
2016-01-02 23 28 131 65 66 11 55 49% 21 / 16% 58% April 4 Added #1034
2015-12-19 22 28 124 56 68 13 55 48% 21 / 17% 56%
2015-12-06 23 28 121 55 66 11 55 47% 21 / 17% 54% Added #1109
2015-11-23 23 28 121 45 76 21 55 44% 21 / 17% 54%
2015-11-11 23 28 119 44 75 13 62 39% 22 / 18% 48%
2015-10-29 23 28 117 36 81 21 60 38% 23 / 20% 49%
2015-10-10 23 28 113 30 83 20 63 37% 31 / 27% 44%
2015-09-27 20 32 107 29 79 11 68 35% 31 / 29% 36%
2015-09-12 20 32 105 29 76 10 66 35% 31 / 29% 37%

Progress = 1.0 - Remaining/Total

Remaining work for Robin:

Issue Done Size Left Description
Total 0 0 weeks

Contributors:

Engineer Issues Hours
Andreas Huggel 13 62
Alan Pater 14 46
Ben Touchette 5 104
Mahesh Hegde 1 4
Niels Kristian Bech Jensen 7 5
Robin Mills 190 1641
Sridhar Boovaraghavan 1 2
Thomas Beutlich 4 16
Total 235 1880

Response to Issues:

76% of issues reported in the last 90 days were closed within 30 days (90/118). We have totally clearly the backlog of "legacy" issues.

Days Count Total
0 37 37
7 28 65
14 14 79
30 25 104
90 32 136
180 8 144
365 12 156
>365 79 235

Deferred:

The following development issues could not be undertaken for v0.26 due to insufficient engineers.

Priority Scope Issue
1 External Adobe XMPsdk #941
2 Video Code Umbrella #1068
3 Coverity Scan #883
4 Better raw file support and test #992
5 PDF Support in exiv2json #1138
6 Exiv2 man page structural enhancements #1165
7 Fails to build without XMP #1130
8 Visual Studio support for v0.27 #1121
9 Exiv2 manpage overhaul #1061
10 Tagging RAW images for Canon EOS-1Ds corrupts them #977

At the end of May 2016, v0.26 had consumed about 1300 hours, of which about 1100 have been contributed by Robin Mills over 7 months (Sept 2015, Oct, Nov, Dec, Jan 2016, April, May). 157 hours/month. 36hrs/week. So, if your favourite request isn't in v0.26, please volunteer. Volunteers are always welcome.

Scripts:

I've written a script to read JSON from Redmine and generate the tables in this report. Checked into svn://dev.exiv2.org/svn/team/contrib/redmine

Also available in: Atom

Redmine Appliance - Powered by TurnKey Linux