Refinement of support for PSD files in GIMP
This is a project for the 2013 Google Summer of Code with GIMP. I will be improving GIMP on PSD support. Included is a description of what I think should be achieved with the time I have, and a possible timeline of that as well. It will be updated (hopefully) semi-regularly with progress.
The PSD support in GIMP for me personally using GIMP was adequate enough as a casual user of the program. It will and does do some weird things at times that are pretty unpredictable and at times it wouldn't work at all for some files. It has been the focus of several users who do use PSD files extensively and the somewhat incomplete support of PSD files is a negative aspect of the program I wish to fix so that less people would be turned away by GIMP and make more users turn to GIMP for their PSD file needs.
Proposed Work To Be Done
The current GIMP Bugzilla buglist for PSD at the moment has 12 bugs in it at the moment. In the order of severity, there is 1 bug that is critical, 5 bugs that are normal, and 6 bugs that are enhancements. Fixing these bugs may or may not be the entire project itself but it is a good starting point on what to code or fix as they are the issues that have been publicly discovered and filed into Bugzilla. The list of things to do based upon those bugs include:
- Fixing nested layer groups on importing
- Fixing undo history import and export
- Fixing mask positions upon importing
- Fixing layer group structures upon import
- Fixing metadata saving upon exporting
- Support PSD stroke import
- Support Duotone import
- Support layer effects
- Support gradiants properly (personal experience bug)
- Support fully path data import (mostly completed) and export (not completed?)
- Support CMYK PSD files import (may be dependent on CMYK native support in GIMP)
- Support other files that PSD depends on that are not present in the plugin at this time according to specifications.
The list of those tasks are not comprehensive nor complete, and it may be necessary to do more testing to see if there are any more bugs to add or if there are invalid bugs in the buglist that would remove tasks or if there are overlapping tasks. I plan to split the above tasklist into "fixing" and "add support" tasks, and they shall be done respectively in that order. Test cases in the form of PSD files will be made in order to ensure that the code being put in will be correct and will not cause problems. I plan to do development by keeping a Github branch of the development version of GIMP and committing there occasionally before getting someone to look and review my code formally to get it committed to the project.
May 27 - June 16th: Independently verify the various bugs in bugslist to solidify the list of tasks to do. Also use the Community Bonding period to get to know my mentor and community, and read up more on the documentation for GIMP and find any documentation for PSD that I can and its auxiliary files.
June 17th - August 20th: I will be available to work on this pretty much everyday for around 8 hours, hopefully, from Monday to Friday with weekends off like a standard job. I will be at my parents' house most of the time during this period and will probably occasionally go out once in a while to do some housekeeping/chores or other things, but it should not hinder me too much. I do not forsee any actual vacation traveling either. The things to complete during this time:
- June 17th - July 29th: Get all the "fixing" tasks for the PSD plugin done, hopefully, in time for the mid-term evaluations.
- July 30th - August 21st: Get most of the " add support" bugs done.
August 21st - September 15th: University's autumn semester starts. My weekly schedule consists of classes on Monday,Wednesdays, and Fridays. Tuesdays and Thursdays will be off days but suggested schedule is to work on this for 2-3 hours time permitting each Tuesday, Thursdays. Saturdays and Sundays, I would be willing to give up around 3-4 hours there also if needed. The plan for this period of time is to finish up the "add support" bugs.
September 16th - September 23rd: Pencils down on any new code writing. Do a systematic sweep of code that has been written and rigorous testing to make sure that the code works well and polish it.
After September 23rd: Pencils down officially on the project. I hope to try and keep supporting whatever I can from what I did for GSoC. Time to "wind down" on the project, but I will still be active on IRC to contact and do fixes.
Background on applicant:
I am a 20-year-old university student from The Ohio State University studying for a bachelor's degree in Electrical Engineering. I have been fascinated with the concept of open source for quite some time ever since I had discovered the phrase when I first downloaded Firefox back in 2007. Ever since then, I've been fascinated with the community in general and would hopefully be able to give back in some way that would benefit everyone.
IRC handle: Crystallis on #gimp
Working Hours: Around 09:00 to 18:00, maybe, for the summer. From around 15:00 to 18:00 maybe, for the remaining time after.
Final Project Summary:
The following were a list of things that I was able to achieve during GSoC.
1.) Documentation was updated to reflect updated specifications from Adobe inside the plugin.
2.) Plugin was ported to use GEGL
3.) > 8 bit color depth PSD files support was added.
4.) Parsing support for layer effects which can't be implemented yet.
5.) Header code changes including structures for slices and text which can't be implemented yet.
The following code sample is my modified PSD plugin source files from my branch of GIMP in plug-ins/file-psd. Only the plugin source files are included, to save space and to reduce redundancy since I did do any changes to any other part of GIMP. My git branch changelog may be viewed directly at https://git.gnome.org/browse/gimp/log/?h=soc-2013-psd.
|File name||Size||Date submitted|
|soc-2013-psd.tar.gz||57.7 KB||September 27 2013 23:24 UTC|