The image management plugin for Wordpress will allow content authors to quickly and easily perform common tasks on their images without the need for an external image editor. A javascript based interface will empower the user to process images intuitively as if they were in their favourite desktop application. Trivial but often necessary tasks including resizing and cropping are not possible in the current upload management system. These would be implemented, along with a thumbnail creator and tagging manager. An API will allow other plugins to interface with the image management plugin. The Project --- The image editor component comprises a back-end library of PHP functions (using the GD library) and a front-end javascript editor. The two are linked by an API which would allow other plugins to use the image management facilities. For example, the thumbnail generator could use the API directly to create different sized thumbnails on the fly, using predefined favourite sizes, without any input required from the user. Manual cropping, resizing, colour adjustment and other operations will use the javascript interface to mark-up images and/or specify parameters. AJAX requests will send the commands to the API and return the manipulated image. The system will create temporary images and store them on the server, to allow an undo/redo function. The operations I propose to implement are listed below: Crop Resize (Both free and fixed proportions) Colour conversion (B&W, Sepia) Rotation Light / Brightness Fixing There are others which may be useful. Proof of concepts exist in both Pixenate (http://pixenate.com/) and Snipshot (http://snipshot.com/) which use javascript interfaces. A javascript library will be used to solve browser differences and speed development. A library such as jQuery, YUI or Prototype should be used. As Prototype is already bundled with Wordpress, it may be a natural choice. Given the wide variation in versions of GD libraries on webhosting, the plugin will need to manage and abstract some of the differences. For example, it may be necessary that all GIFs are processed as JPEGs to avoid problems where GD libraries do not have GIF write support, or PHP is lacking GIF support. (See http://www.php.net/Image for the specific issues.) Both the image editor and the thumbnail manager could be integrated components or plugins. I believe plugins are more appropriate as some users will not have the capacity to use their features, or a desire to. Some work may be required to add 'plugability' to the upload manager so that the plugins can be integrated well. Proposed Timetable (assuming 10 weeks of programming) --- Pre-summer: Familiarisation with WP code, guidelines and style, structure of plugins. Weeks 1-2: Create image API with a subset of operations. Crop and resize. Weeks 3-4: Build extensible javascript interface (toolbar?) to allow addition of more operations Alpha prototype - integrate javascript interface and API. This should represent the basic architecture of the API. Weeks 5-7 Implement remaining image manipulation operations. Weeks 8-end Beta prototype - test plugin as a part of wordpress. Build thumbnail plugin Document API Document plugin(s) Eligibility & Experience --- I have been programming with PHP for approximately 5 years, after wondering how websites work and how I could create my own dynamic pages. This grew into a personal interest for all things internet and web-development related, with most of my experience gained from working for a webdesign consultancy in the holidays while at university. I have also completed freelance work which was managed in my own time, working from home. Much of my focus in the last 18 months has been on rich web applications, and in particular the use of javascript. I have extensively used theYUI javascript library and have some experience of using the prototype library. I recently led a day of training at my employer on the usage of javascript and theYUI library in building modern web applications. My studies during my degree in Computer Science have given me a solid academic grounding to go with my professional experience. Development Process --- I can easily be reached via telephone, Skype, email, instant messenger or email as means of staying in contact with my mentor. I am familiar with Subversion and my work would be version controlled on the wordpress svn server, or my own repository, whichever is most appropriate. It would be beneficial to have a discussion forum for the development of the plugin. This would allow the Wordpress community to direct the development of the plugin, suggest features, and provide testing and feedback.