Associate extra data like comments and tags with specific areas of images.
NOTE: THIS MODULE IS CURRENTLY UNDER DEVELOPMENT AS A GSoC 2008 PROJECT |
This module will add the ability to select a portion of an image using a JavaScript user interface and then attach certain forms of data like comments or tags to that area of the image.
Here are a few target use cases:
No usage information yet. This module is still in development.
Currently based on Fotonotes' strategy for storing image annotations.
Field Name | Data Type |
---|---|
id | INTEGER |
g2_itemid | INTEGER |
g2_userid | INTEGER |
added | DATETIME |
modified | DATETIME |
boundingbox | VARCHAR |
title | VARCHAR |
content | TEXT |
Please see the talk page for this module to request a feature. Acknowledged requested features will be listed in this section.
In collaboration with the other developers who have put work into this feature and the core Gallery developers, I will decide on the best implementation strategy for this feature. Major questions to address:
Deliverables for this Phase:
Fotonotes is an open source standard, specification, and collection of scripts for annotating images that provided the inspiration for Flickr’s implementation of image region based tagging.4 In the first week of coding, I will integrate a simple Fotonotes implementation into Gallery2 that provides the default Fotonotes interface and stores the annotations in JPEG EXIF headers (as Fotonotes does by default). This will provide a basic working prototype up-front that can facilitate discussion as development continues.
Deliverables for this Phase:
Fotonotes claims that it provides “stub code for alternate storage strategies (e.g., database).” Using this code and the database schema from Phase 1, I will modify the prototype from Phase 2 such that tags are stored in a database backend. This will involve modification of the PHP callback code in Fotonotes. In the process of doing this, I will begin to modify the Fotonotes code to conform to Gallery standards, which includes details like style and variable names, but also larger issues like conforming to Gallery’s API calling standards and MVC design.
Deliverables for this Phase:
In this phase I will begin work on all of the peripheral tasks needed to make this feature work properly with the rest of the Gallery paradigm. This includes writing code for identifying the presence of tags on images in all of the different available views, creating and checking for user privileges, writing an admin interface, and doing anything else that was identified in Phase 1 to properly integrate this new feature into Gallery. At the end this phase I hope to be able to release a beta version of the new feature to the Gallery community for testing and feedback.
Deliverables for this Phase:
With the bulk of the implementation work done, I will work on getting all of the code well tested and ready for production. This will involve writing unit tests for all code, ensuring they pass, and performing code reviews with other members of the Gallery development community. I will give particular attention to security considerations and potential performance optimizations. If in this Phase I find myself ahead of schedule, I can investigate some of the additional features mentioned in the abstract or ideas that came up during Phase 1 or elsewhere in the process. Incorporating improvements from the code reviews and from user testing and feedback of the Beta Release, I hope to be able to make a Final Release by August 11, 2008, Google’s suggested “pencils down” date.
Deliverables for this Phase: