MapLibre GL JS возник как прямой ответ на изменения в экосистеме веб-картографии, связанные с переходом Mapbox GL JS к более ограничительной модели лицензирования. История появления обеих библиотек тесно переплетена: они разделяют общий кодовый фундамент, концепции рендеринга векторных тайлов и подход к декларативному описанию стиля карты через JSON-спецификацию.
Изначально Mapbox GL JS развивался как часть платформы Mapbox и представлял собой высокопроизводительный WebGL-рендерер векторных карт. Его ключевой задачей было отображение геоданных без растеризации тайлов на сервере, что позволило переносить значительную часть вычислений на клиентскую сторону.
Архитектурно библиотека опиралась на:
До определённого момента проект распространялся как open-source, что позволило сторонним разработчикам активно интегрировать его в GIS-системы, аналитические панели и веб-приложения с интерактивными картами.
Ключевой перелом произошёл при переходе Mapbox GL JS к лицензии, ограничивающей использование библиотеки в некоторых сценариях коммерческого характера. Это вызвало значительную реакцию в сообществе разработчиков, использовавших библиотеку как фундамент для независимых картографических решений.
Ограничения затронули:
В результате возникла необходимость создания полностью открытого форка, который сохранил бы API-совместимость и архитектурную модель, но был бы юридически независимым.
Форк был создан под названием MapLibre GL JS и изначально базировался на последней версии Mapbox GL JS с открытым кодом. Основной целью стало сохранение экосистемы, которая уже сформировалась вокруг декларативного рендеринга карт.
Ключевые принципы нового проекта:
Таким образом, MapLibre GL JS стал не просто копией, а инфраструктурным продолжением существующего стандарта, но в независимой форме.
Обе библиотеки используют схожую архитектурную модель, основанную на концепции слоёв и источников данных.
Основные общие элементы:
Рендеринг осуществляется через WebGL, где каждый слой компилируется в набор GPU-операций. Это обеспечивает высокую производительность даже при большом количестве геометрических объектов.
Несмотря на общую базу, дальнейшее развитие проектов пошло по разным траекториям.
Mapbox GL JS стал частью закрытой экосистемы с контролируемым развитием. Обновления привязаны к стратегии компании и её продуктовой линейке.
MapLibre GL JS напротив развивается как community-driven проект под управлением открытого сообщества и независимых организаций. Это означает:
После форка развитие MapLibre GL JS включило:
Mapbox GL JS продолжил развиваться в рамках собственной платформы, интегрируя функции, ориентированные на платные сервисы и облачную инфраструктуру.
На уровне API обе библиотеки долгое время оставались практически идентичными. Это было критически важно для миграции проектов.
Совместимость включала:
map.addSource()map.addLayer()Однако со временем появились расхождения:
Обе системы основаны на WebGL, но подход к оптимизациям начал расходиться.
Общие принципы:
MapLibre GL JS активно фокусируется на:
Mapbox GL JS, в свою очередь, оптимизируется под собственную инфраструктуру доставки данных и серверные сервисы.
После появления MapLibre сформировалась целая экосистема библиотек:
Эта экосистема стала полностью независимой от Mapbox и позволила использовать стек в автономных GIS-решениях, включая офлайн-карты и корпоративные геоплатформы.
Разделение проектов привело к появлению двух разных стратегий развития веб-картографии:
Первый подход ориентирован на комплексную коммерческую платформу с интегрированными данными и API. Второй — на универсальную библиотеку, которую можно встроить в любую архитектуру без ограничений по лицензированию.
Такое расхождение закрепило MapLibre GL JS как де-факто стандарт open-source WebGL-картографии, сохранив при этом историческую совместимость с исходной кодовой базой Mapbox GL JS.