/*! \page api_break Backwards Incompatible Changes \tableofcontents The API of QGIS libraries is allowed to be changed just between major versions of QGIS. For example, there are various planned backwards incompatible changes between QGIS 1.8 and 2.0 because the version 2.0 is a new major version. After a release of a major version of QGIS (e.g. 2.0) the developer team is committed to maintain stable API for all subsequent minor releases (2.2, 2.4, ...). That roughly means we do not rename classes and methods, remove them nor change their semantics. Existing code should keep working when the user updates QGIS to another minor version (e.g. from 2.0 to 2.2), so all extensions of existing classes should be done in a manner that third party developers do not need to adjust their code to work properly with newer QGIS releases. Sometimes, however, we may need to break the API as a result of some code changes. These cases should be only exceptions and they should happen only after consideration and agreement of the development team. Backwards incompatible changes with too big impact should be deferred to a major version release. This page tries to maintain a list with incompatible changes that happened in previous releases. \section qgis_api_break_3_0 QGIS 3.0 \subsection qgis_api_break_3_0_removed_classes Removed Classes \subsection qgis_api_break_3_0_global General changes \subsection qgis_api_break_3_0_Qgis Qgis \subsection qgis_api_break_3_0_QgsProject QgsProject \subsection qgis_api_break_3_0_QgsVisibilityPresetCollection QgsVisibilityPresetCollection \subsection qgis_api_break_3_0_QgsAuthConfigUriEdit QgsAuthConfigUriEdit \subsection qgis_api_break_3_0_QgsAtlasComposition QgsAtlasComposition \subsection qgis_api_break_3_0_QgsComposerLegendItem QgsComposerLegendItem \subsection qgis_api_break_3_0_QgsComposerMap QgsComposerMap \subsection qgis_api_break_3_0_QgsComposerNodesItem QgsComposerNodesItem \subsection qgis_api_break_3_0_QgsComposerTable QgsComposerTable \subsection qgis_api_break_3_0_QgsComposition QgsComposition \subsection qgis_api_break_3_0_QgsCoordinateReferenceSystem QgsCoordinateReferenceSystem \subsection qgis_api_break_3_0_QgsCoordinateTransform QgsCoordinateTransform \subsection qgis_api_break_3_0_QgsCoordinateTransformCache QgsCoordinateTransformCache \subsection qgis_api_break_3_0_QgsCptCitySelectionItem QgsCptCitySelectionItem \subsection qgis_api_break_3_0_QgsCRSCache QgsCRSCache \subsection qgis_api_break_3_0_QgsDataDefinedSymbolDialog QgsDataDefinedSymbolDialog \subsection qgis_api_break_3_0_QgsDataItem QgsDataItem \subsection qgis_api_break_3_0_QgsDiagramLayerSettings QgsDiagramLayerSettings \subsection qgis_api_break_3_0_QgsDatumTransformStore QgsDatumTransformStore \subsection qgis_api_break_3_0_DataProviders Data Providers \subsection qgis_api_break_3_0_QgsFeature QgsFeature \subsection qgis_api_break_3_0_QgsGeometry QgsGeometry \subsection qgis_api_break_3_0_QgsGeometryAnalyzer QgsGeometryAnalyzer \subsection qgis_api_break_3_0_QgsGroupWMSDataDialog QgsGroupWMSDataDialog \subsection qgis_api_break_3_0_QgsHighlight QgsHighlight \subsection qgis_api_break_3_0_QgsVectorDataProvider QgsVectorDataProvider \subsection qgis_api_break_3_0_QgsLabelingEngineInterface QgsLabelingEngineInterface \subsection qgis_api_break_3_0_QgsLayerTreeGroup QgsLayerTreeGroup \subsection qgis_api_break_3_0_QgsLayerTreeNode QgsLayerTreeNode \subsection qgis_api_break_3_0_QgsMapCanvas QgsMapCanvas \subsection qgis_api_break_3_0_QgsMapLayer QgsMapLayer \subsection qgis_api_break_3_0_QgsMapOverviewCanvas QgsMapOverviewCanvas \subsection qgis_api_break_3_0_QgsMapRenderer QgsMapRenderer \subsection qgis_api_break_3_0_QgsMapRendererJob QgsMapRendererJob \subsection qgis_api_break_3_0_QgsMapSettings QgsMapSettings \subsection qgis_api_break_3_0_QgsPalLabeling QgsPalLabeling \subsection qgis_api_break_3_0_QgsOSMElement QgsOSMElement \subsection qgis_api_break_3_0_QgsOWSSourceSelect QgsOWSSourceSelect \subsection qgis_api_break_3_0_QgsOWSConnection QgsOWSConnection \subsection qgis_api_break_3_0_QgsRasterDataProvider QgsRasterDataProvider \subsection qgis_api_break_3_0_QgsRasterInterface QgsRasterInterface \subsection qgis_api_break_3_0_QgsRelation QgsRelation \subsection qgis_api_break_3_0_QgsRenderChecker QgsRenderChecker \subsection qgis_api_break_3_0_QgsRenderContext QgsRenderContext \subsection qgis_api_break_3_0_QgsRubberBand QgsRubberBand \subsection qgis_api_break_3_0_QgsPalLayerSettings QgsPalLayerSettings \subsection qgis_api_break_3_0_QgsSnapper QgsSnapper \subsection qgis_api_break_3_0_QgsTolerance QgsTolerance \subsection qgis_api_break_3_0_QgsJSONExporter QgsJSONExporter \subsection qgis_api_break_3_0_QgsVectorLayer QgsVectorLayer \subsection qgis_api_break_3_0_QgsVectorLayerEditBuffer QgsVectorLayerEditBuffer \subsection qgis_api_break_3_0_QgsVectorLayerEditUtils QgsVectorLayerEditUtils \subsection qgis_api_break_3_0_QgsVectorLayerImport QgsVectorLayerImport \subsection qgis_api_break_3_0_QgsVectorLayerUndoCommand QgsVectorLayerUndoCommand \subsection qgis_api_break_3_0_QgsPointLocator QgsPointLocator \subsection qgis_api_break_3_0_QgsMapSettings QgsMapSettings \subsection qgis_api_break_3_0_QgsGraphBuilderInterface QgsGraphBuilderInterface \subsection qgis_api_break_3_0_QgsNumericSortTreeWidgetItem QgsNumericSortTreeWidgetItem \subsection qgis_api_break_3_0_QgsSymbolV2 QgsSymbolV2 \subsection qgis_api_break_3_0_QgsSymbolLayerV2Utils QgsSymbolLayerV2Utils \subsection qgis_api_break_3_0_QgsTreeWidgetItem QgsTreeWidgetItem \subsection qgis_api_break_3_0_QgsUnitTypes QgsUnitTypes \subsection qgis_api_break_3_0_QgsVectorLayer QgsVectorLayer \subsection qgis_api_break_3_0_QgsRasterProjector QgsRasterProjector \subsection qgis_api_break_3_0_QgsVectorFileWriter QgsVectorFileWriter \subsection qgis_api_break_3_0_QgsVectorLayerEditBuffer QgsVectorLayerEditBuffer \subsection qgis_api_break_3_0_QgsWMSLegendNode QgsWMSLegendNode \section qgis_api_break_2_4 QGIS 2.4 \subsection qgis_api_break_mtr Multi-threaded Rendering \section qgis_api_break_2_6 QGIS 2.6 \subsection qgis_api_break_legend_refactoring Legend Refactoring */