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:
- Researching and evaluating existing open source uploader projects in terms of how well they satisfy the requirements
- Adapting, if necessary, the chosen uploader for WordPress integration
- 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.
Jane Wells 3:50 pm on May 8, 2011 Permalink |
Jacob , with two weeks of unavailability, you will need to start coding two weeks early.
Jacob Gillespie 5:58 pm on May 9, 2011 Permalink |
Do you know when we will get access to our SVN repos?
Jane Wells 3:52 pm on May 8, 2011 Permalink |
Also, please provide a more detailed week-by week schedule. Thanks.
Jacob Gillespie 1:28 pm on May 9, 2011 Permalink |
I’ve updated the schedule to be more detailed – I’ll try to get in touch with my mentors today for their input. Thanks!
Dave Martin 1:13 pm on May 9, 2011 Permalink |
Hey Jacob,
Have you looked at https://github.com/blueimp/jQuery-File-Upload/
Jacob Gillespie 1:32 pm on May 9, 2011 Permalink |
I have – it was one of those that was on my initial list of candidates. At the moment, Plupload is looking pretty good as it has a Flash fallback – I believe that this jQuery file uploader will fallback to an IFrame, thus losing the upload progress bar. I’ll do some more looking into it.
Ali 9:19 pm on May 16, 2011 Permalink |
Hey Jacob,
Have a look at my WordPress Drag & Drop File Uploader http://www.ali.dj/wordpress-plugin-drag-drop-file-uploader/ . I will improve it vastly soon.
Jacob Gillespie 9:22 pm on May 16, 2011 Permalink |
I was actually looking at your plugin earlier today… 🙂 Looks nice.
At the moment, do you have a way to detect a drag-and-drop in progress? I’m looking into mimicking what Gmail does with its “drop zone.”
Erlend 8:34 pm on May 17, 2011 Permalink |
Was there any conclusion on the jQuery-File-Upload?
Jacob Gillespie 8:40 pm on May 17, 2011 Permalink |
The jQuery File Upload project looked really nice but unfortunately lacked the Flash fallback – that would mean that a large majority of users (IE and Safari) would have no upload progress indicators at all.
Also, while we may not currently use it, Plupload has support for things like Sliverlight and Gears.
Dave Martin 12:30 pm on June 6, 2011 Permalink |
Hey Jacob. Just checking in to see how things are going.
Jacob Gillespie 10:28 pm on June 8, 2011 Permalink |
Hey! Going well – I should probably update this page’s “Project Status” section sometime soon. 🙂
Marvin 5:58 pm on July 18, 2011 Permalink |
Hope you have seen http://wordpress.org/extend/plugins/wplupload/
Jacob Gillespie 2:49 pm on July 21, 2011 Permalink |
I’ve seen it – our projects are similar, although that plugin uses Plupload’s uploader widget (and is a plugin), while my plugin keeps the WP UI intact and only uses Plupload as a backend (and is a core modification).