= !MapGuide RFC 52 - Remove GD Renderer = This page contains an change request (RFC) for the !MapGuide Open Source project. More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. == Status == ||RFC Template Version||1.0|| ||Submission Date||July 16, 2008|| ||Last Modified||Walt Welton-Lair [[Timestamp]]|| ||Author||Walt Welton-Lair|| ||RFC Status||proposed|| ||Implementation Status||pending|| ||Proposed Milestone||2.1|| ||Assigned PSC guide(s)||Tom Fukushima|| ||'''Voting History'''|| || ||+1|| || ||+0|| || ||-0|| || ||-1|| || ||no vote|| || == Overview == !MapGuide currently has two image-based renderers: GD and AGG. AGG was added in Fall 2007 with [wiki:MapGuideRfc32 MapGuide RFC 40], and is now the preferred image renderer. There is no good reason to continue supporting the GD renderer. == Motivation == The GD renderer was !MapGuide's initial image-based renderer. While it does a good job, the AGG renderer now provides superior image quality, especially when it comes to anti-aliasing. The AGG renderer is now also mature in terms of stability and performance. For this reason AGG is configured as !MapGuide's default image-based renderer. As of today (7/28/2008) there are three reported issues involving AGG (#459, #632, and #634). One of GD renderer's biggest issues is that it doesn't provide full support for the new stylization ([wiki:MapGuideRfc32 MapGuide RFC 14]). In particular it does not support clipped area styles. While support for this could be added, it seems like a waste of time given that AGG already fully supports the new stylization ''and'' provides better image quality. A recent RFC around raster reprojection ([wiki:MapGuideRfc32 MapGuide RFC 51]) also raised the issue as to whether GD renderer would need to be updated. From a SWD point-of-view it's clearly more work to support both AGG and GD renderer. AGG is the renderer we are pushing going forward, and SWD effort should be spent improving it and not GD. == Proposed Solution == Removing GD renderer will be simple. It involves deleting a couple of source files in the Renderers project, and removing support for the "Renderer" setting under "!GeneralProperties" in the serverconfig.ini file. Note that we can't remove the GD library from the Oem area, since AGG renderer still uses it for read/write support of JPG/GIF/PNG8 images. == Implications == After this change, any !MapGuide server which was configured to render using GD will now only render using AGG. This will have a slight impact on partial tile sets which were generated using GD. If the server is updated and the tile sets are migrated, then the existing tiles will continue to be served up, while any new tiles which are generated will be done using the AGG renderer. This will cause discrepancies at boundaries which have a GD tile on one side and an AGG tile on the other. The workaround is to regenerate the tile set using AGG. We should also address the open issues before removing GD renderer. == Test Plan == The code that will be updated to remove support for the "Renderer" serverconfig.ini setting will be tested. No changes / additions to unit tests will be necessary. == Funding/Resources == Provided by Autodesk. == Additional Notes == Here's some additional feedback from Zac Spitzer around AGG vs. GD: http://zacster.blogspot.com/2008/02/mapguide-20-agg-versus-gd-renderers.html. * 4/10/2009 - I've made some changes to AGG which attempt to address this. See the images in the attached file (AGGUpdate.zip). * 4/13/2009 - The modified source for these changes is attached (AGGUpdateSource.zip). This is relative to trunk revision 3818.