= !MapGuide RFC 139 - Update version number to 3.0 and remove various cruft and deprecated APIs = This page contains a 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||1 July 2014|| ||Last Modified||25 July 2014|| ||Author||Jackie Ng|| ||RFC Status||Adopted|| ||Implementation Status||Implemented|| ||Proposed Milestone||3.0|| ||Assigned PSC guide(s)||(when determined)|| ||'''Voting History'''||(vote date)|| ||+1||Jackie,Crispin,Zac|| ||+0|||| ||-0|||| ||-1|||| ||no vote||Haris,Kevin,Gordon,Trevor|| == Overview == This RFC proposes to set the version number of the next MapGuide release to be 3.0 and remove several deprecated APIs in the process == Motivation == MapGuide has several bits of accumulated cruft that have existed for a while now: * Clunky MgMap APIs * MgCreateSdfParams superceded by MgFileFeatureSourceParams * DWF eMap support that requires old and specific versions of Autodesk Design Review / DWF viewer plugin to properly consume these APIs and services * MapGuideDotNetApi.dll as a type-forwarding wrapper assembly to ensure old MapGuide applications that referenced MapGuideDotNetApi.dll did not break due to the assembly split in RFC 68. Users and developers have had several years of releases to move to non-deprecated alternatives. This cruft should be safe to remove now. To best communicate the removal of this cruft, we should also bump the version number to 3.0. == Proposed Solution == Set the base version number in MapGuide to 3.0.0.0 Ensure that any doxygen content for APIs introduced in this development cycle are set to `\since 3.0` Demote the following list of deprecated APIs from PUBLISHED_API. Such APIs may still be accessible from C++ code: {{{ MgMap::MgMap(); MgMap::Create(MgResourceService*, MgResourceIdentifier*, CREFSTRING); MgMap::Open(MgResourceService*, CREFSTRING); MgMap::Save(MgResourceService*); }}} Remove these methods and classes {{{ class MgCreateSdfParams; MgMappingService::GenerateMap(MgMap*, CREFSTRING, MgDwfVersion*); MgMappingService::GenerateMapUpdate(MgMap*, INT32, CREFSTRING, MgDwfVersion*); }}} Update Oem build process to not build the DWF EMap toolkit. Remove EMap renderers from the Renderers project. Remove the MapGuideDotNetApi project in the web tier. Since the [http://trac.osgeo.org/mapguide/wiki/MapGuideRfc68 .net assembly split], MapGuideDotNetApi.dll is just a thin type-forwarding assembly that's there so that old MapGuide applications that were built against MapGuideDotNetApi.dll did not break. Being a 3.0 release, we can break free from this cruft and expect .net applications to reference the split assemblies individually. Remove the following operations from the mapagent: {{{ GETMAP GETMAPUPDATE }}} Remove all eMap-related files from the AJAX viewer code. Check and update our various .net/Java/PHP code in web tier and samples to ensure that none of the above deprecated APIs are being used. The following list of deprecated APIs are spared from the chopping block in this RFC {{{ MgFeatureService::DescribeSchema(MgResourceIdentifier*, CREFSTRING); MgFeatureService::DescribeSchemaAsXml(MgResourceIdentifier*, CREFSTRING); MgSpatialContextReader::IsActive(); }}} These changes have been carried out in [http://trac.osgeo.org/mapguide/browser/sandbox/jng/v30 the v30 sandbox]. Upon adoption of this RFC, this sandbox will be merged into trunk. == Implications == Applications using the above deprecated APIs will have to migrate their code to use the suggested alternatives. .net applications that were built against MapGuideDotNetApi will have to reference the split .net assemblies and be re-compiled. This RFC removes DWF eMap support from the MapGuide viewer and its APIs. Affected users should migrate to the current client viewer offerings. == Test Plan == Run existing test suite to ensure no breakages == Funding / Resources == Community