Jacob Gillespie

I am a 19-year-old Computer Science student at the University of Texas at Dallas. I started learning programming at age ten and began web development at age eleven, so I’ve been learning for eight years now. I have had the opportunity to work on several web development projects like the Texas Beekeepers Association and Desert Creek Honey Co.  Web development is my main hobby, but yes, I am also a beekeeper. My website can be found at jacobwg.com.

The Project

My project goal is to upgrade WordPress’s multi-file uploader and bring it up to par with the current uploading improvements. The existing uploader uses Adobe Flash to handle uploading, however my project will attempt to improve the uploader by integrating an existing open source project with additional, more modern features, while keeping the existing underlying APIs constant in order to not break compatibility with existing code and plugins.

Potential additional features include, depending on browser support:

  • Multiple file transports, starting with HTML5, with a fallback to Flash, then fallback to HTML4
  • Drag and drop uploading
  • On-the-fly image resizing
  • Hooks for in-browser image processing (so that a plugin could add pre-upload sepia tone, for example)

My proposed project consists of three stages:

  1. Researching and evaluating existing open source uploader projects in terms of how well they satisfy the requirements
  2. Adapting, if necessary, the chosen uploader for WordPress integration
  3. Performing the integration – writing backend PHP code and any required frontend glue code to integrate the uploader into WordPress

The goal of this project is to improve the overall user experience of the file uploader, allowing for an uploader that “just works” and progressively enhances based on the user’s browser and environment. The revamped uploader should also “just work” for developers, keeping existing WordPress hooks intact.

Project Mentors

  • Daryl Koopersmith
  • Andrew Ozz

The Schedule

  • May 9 – 15: Finish my last school final, complete research on file uploader, start coding
  • May 16 – 22: Add new uploader assets to WordPress (adding script includes, resources in wp-includes, etc.), remove any swfupload-specific code to clean up codebase, begin rewriting the new equivalent of the swfupload-handler scripts
  • May 23 – 29: Complete the JavaScript code gluing the uploader with the other WordPress admin HTML / JavaScript
  • May 30 – July 5: Make any required changes to the uploader page HTML or CSS in order to preserve the current uploader UI in the absence of swfupload – uploader should now look and act visually as the current uploader
  • June 6 – 12: Investigate any changes required to the backend PHP script that receives the upload – some uploaders upload in chunks, so I’ll have to see if we need that support, make those PHP changes
  • June 13 – 20: Finalize the integration between the frontend and backend – the uploader should now work in Firefox 4 (my development browser)
  • June 21 – July 5: Unavailable for GSoC due to Joni and Friends volunteering
  • July 6 – 17: Test in Internet Explorer (7, 8, 9) and fix any bugs encountered – uploader now works in IE
  • July 18 – 31: Test in Firefox 3, Google Chrome (stable, beta, dev, Canary), Safari 5 (and 4?) and fix any bugs encountered – uploader should now work in Firefox, Chrome, and Safari
  • August 1 – 22: Finalize any testing and bug fixing – uploader should now work in all browsers.

Project Status

I’ll be posting weekly updates to the blog, however here’s a short list of what has happened so far:

  • April 27, 2011 – I have posted my introduction post to the blog and have edited this page. Previously, I have been looking into Plupload and its backend API and have started a very rough integration of Plupload into the uploader in order to better understand the inner workings of the existing uploader.
  • May 3, 2011 – I connected with my mentors this past week on Skype and improved the above schedule. This next week, I’m going to be looking into existing uploaders (Plupload) and investigating what other CMSs are doing. I’m also hoping to discover what in-browser image processing might do to EXIF data.
  • May 10, 2011 – Investigated the uploaders in Joomla and Drupal (they still use Flash), updated my schedule at the request of Jane Wells
  • May 17, 2011 – Chose Pluploader, got LOTS of coding done. :)
  • May 24, 2011 – Got lots more coding done, started summer school, started testing (status post).
  • May 31, 2011 – Testing
  • June 7, 2011 – More testing, discussed the use of Silverlight in Pluploader here.