Convert the F-Spot editing operations to use GEGL ================================================= NOTE: This proposal is essentially the "One click Touch-ups" idea, with a bit more emphasis on infrastructure, as I think it will benefit the project more in the long run. F-Spot often gets the request to add more editing features. This can be seen in the GSoC idea "One click Touch-ups". This work is complicated by the fact that we need to implement all operations ourselves, which is a very time intensive work. For this reason, I propose to abstract the F-Spot editing operations and refactor them into using GEGL [1]. GEGL is an image processing library, which implements a wide array of image modification operations. By switching to GEGL, the F-Spot developers would be freed from the burden of maintaining the image processing operations for each of the formats it supports. This would greatly improve the speed by which we can implement new features, as well as the stability of our code (provided the GEGL interop is stable). This would introduce a new dependency for F-Spot, but given that the GIMP is currently changing it's image processing backend to GEGL as well, this library will soon be found on almost all Linux Desktops. GEGL currently has C# bindings, but there are, as far as I know, no big C# apps using GEGL yet. As such, problems might appear, but these should be minor. Deliverables ============ * Rock solid gegl-sharp bindings. * A version of F-Spot, using GEGL for all of it's image processing operations. In a second phase (if we don't run into too much problems): * Abstract the editing tools to provide an extension point. This means we can add new editing operations easily through add-ins. This is also part of the "One click Touch-ups" idea [2]. If time permits it: * New image editing operations Timeline ======== A proposed timeline (but highly flexible depending on the time needed): * Week 1 & 2 (May 26 - June 8): Getting started with gegl-sharp, implement the image modification operations seperate from F-Spot. * Week 3 & 4 (June 9 - June 22): Study the F-Spot architecture, figure out where the editing code resides (it's currently spread over multiple locations). Work out a solid architecture to integrate GEGL. * Week 5 & 6 (June 23 - July 6): Combine the GEGL operations with F-Spot. * Week 7 & 8 (July 7 - July 20): GUADEC Hacking sprint, finish GEGL integration. * Week 9 & 10 (July 21 - Aug 3): Break editing tools into an extension point, convert operations to extensions. * Week 11 & 12 (Aug 4 - Aug 17): Wrap-up, bug fixing & stability work. About me ======== My name is Ruben Vermeersch and I'm am currently pursuing my masters degree in software engineering at the Katholieke Universiteit Leuven. I have been a long time user of GNOME. The GNOME community (and all the cool things happening in the 2.4 days) was one the main reasons why I started my studies in computer science. Participation in Google Summer of Code would allow me to spend a full summer working on GNOME. More about me can be found on my website: http://www.savanne.be References ========== [1]: http://gegl.org/ [2]: http://www.f-spot.org/Soc2008