Skip to content

Commit

Permalink
Rename MapLibre GL Native -> MapLibre Native (#1075)
Browse files Browse the repository at this point in the history
  • Loading branch information
birkskyum authored Apr 26, 2023
1 parent 20c43c7 commit 82f3f97
Show file tree
Hide file tree
Showing 47 changed files with 133 additions and 133 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ blank_issues_enabled: true
contact_links:
- name: "🙏 Q&A - GitHub Discussions"
url: https://github.com/maplibre/maplibre-gl-native/discussions/categories/q-a
about: If you have a question about using MapLibre GL Native
about: If you have a question about using MapLibre Native
- name: "💬 Chat with us on Slack"
url: https://slack.openstreetmap.us/
about: "Join #maplibre-native on the Open Street Map Slack"
Expand Down
18 changes: 9 additions & 9 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
This document aims to outline at a high level the various parts that make up MapLibre GL Native and how they work together.
This document aims to outline at a high level the various parts that make up MapLibre Native and how they work together.

# Repository structure

MapLibre GL Native uses a monolithic repository that houses both core C++ code and code that wraps the C++ core with SDKs for Android, iOS, macOS, Node.js, and Qt. A "monorepo" allows us to:
MapLibre Native uses a monolithic repository that houses both core C++ code and code that wraps the C++ core with SDKs for Android, iOS, macOS, Node.js, and Qt. A "monorepo" allows us to:

* Make changes to the core API and SDKs simultaneously, ensuring no platform falls behind.
* Ensure that core changes do not inadvertently break SDK tests.
Expand Down Expand Up @@ -38,7 +38,7 @@ Code and build scripts belonging to platform SDKs are contained in the `platform

# Build system

The MapLibre GL Native build system uses a variety of tools.
The MapLibre Native build system uses a variety of tools.

## Make

Expand All @@ -50,17 +50,17 @@ Git submodules are used to pull in several dependencies: mason (see below) and s

## npm

npm is a package manager for Node.js. MapLibre GL Native uses it to pull in several development dependencies that happen to be packaged as node modules -- mainly for testing needs.
npm is a package manager for Node.js. MapLibre Native uses it to pull in several development dependencies that happen to be packaged as node modules -- mainly for testing needs.

## Mason

[Mason](https://github.com/mapbox/mason) is Mapbox's own cross platform C/C++ package manager. MapLibre GL Native uses mason packages as a source of precompiled binaries for third-party dependencies such as Boost, RapidJSON, and SQLite, and Mapbox's own C++ modules such as [earcut.hpp](https://github.com/mapbox/earcut.hpp) and [geojson-vt-cpp](https://github.com/mapbox/geojson-vt-cpp). It is also used to obtain a toolchain for Android platform cross-compiliation.
[Mason](https://github.com/mapbox/mason) is Mapbox's own cross platform C/C++ package manager. MapLibre Native uses mason packages as a source of precompiled binaries for third-party dependencies such as Boost, RapidJSON, and SQLite, and Mapbox's own C++ modules such as [earcut.hpp](https://github.com/mapbox/earcut.hpp) and [geojson-vt-cpp](https://github.com/mapbox/geojson-vt-cpp). It is also used to obtain a toolchain for Android platform cross-compiliation.

We track mason dependencies for a given platform in the file `platform/<platform>/scripts/configure.sh`. The `configure` script at the root handles sourcing this file during the build, running the appropriate mason commands, and writing configuration settings for the subsequent build to a `config.gypi` in the build output directory.

## gyp

[gyp](https://gyp.gsrc.io/) is a build system originally created for Chromium and since adopted by Node.js. In MapLibre GL Native it's used to build the core C++ static library, the Node.js platform module, and the shared JNI module for Android.
[gyp](https://gyp.gsrc.io/) is a build system originally created for Chromium and since adopted by Node.js. In MapLibre Native it's used to build the core C++ static library, the Node.js platform module, and the shared JNI module for Android.

## Platform-specific subsystems

Expand All @@ -77,9 +77,9 @@ See the relevant platform-specific `README.md` / `INSTALL.md` for details.
## Map
## Style

The "Style" component of MapLibre GL Native contains an implementation of the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), defining what data to draw, the order to draw it in, and how to style the data when drawing it.
The "Style" component of MapLibre Native contains an implementation of the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), defining what data to draw, the order to draw it in, and how to style the data when drawing it.

In addition to supporting styles loaded from a URL, MapLibre GL Native includes a runtime styling API, which allows users to dynamically modify the current style: add and remove layers, modify layer properties, and so on. As appropriate for a C++ API, the runtime styling API API is _strongly typed_: there are subclasses for each layer type, with correctly-typed accessors for each style property. This results in a large API surface area. Fortunately, this is automated, by generating the API – and the regular portion of the implementation – from the style specification.
In addition to supporting styles loaded from a URL, MapLibre Native includes a runtime styling API, which allows users to dynamically modify the current style: add and remove layers, modify layer properties, and so on. As appropriate for a C++ API, the runtime styling API API is _strongly typed_: there are subclasses for each layer type, with correctly-typed accessors for each style property. This results in a large API surface area. Fortunately, this is automated, by generating the API – and the regular portion of the implementation – from the style specification.

The layers API makes a distinction between public API and internal implementation using [the `Impl` idiom](https://github.com/mapbox/mapbox-gl-native/issues/3254) seen elsewhere in the codebase. Here, it takes the form of parallel class hierarchies:

Expand Down Expand Up @@ -132,7 +132,7 @@ One final benefit of this approach of diffing immutable objects: we get "smart"

# Threading

At runtime, MapLibre GL Native uses the following threads:
At runtime, MapLibre Native uses the following threads:

* The "main thread" (or other thread on which a `Map` object is created) handles direct `Map` API requests, owns the active `Style` and its associated objects, and renders the map. Since this thread is usually dispatching events triggered by user input, it's important that these duties not require significant computation or perform blocking I/O that would cause UI jank or hangs.
* Many of the tasks that require significant computation are associated with layout and styling of map features: parsing vector tiles, computing text layout, and generating data buffers to be consumed by OpenGL. This work happens on "worker threads" that are spawned by the main thread, four per `Style` object. The `Style` and its associated objects handle dispatching tasks to the workers, typically on a tile-by-tile basis.
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Documentation

- For a high-level overview of MapLibre GL Native, check out the [MapLibre GL Native Markdown Book](https://maplibre.org/maplibre-gl-native/docs/book/).
- For a high-level overview of MapLibre Native, check out the [MapLibre Native Markdown Book](https://maplibre.org/maplibre-gl-native/docs/book/).
- See [`DEVELOPING.md`](DEVELOPING.md) for getting started with development.

## Source code checkout
Expand All @@ -13,7 +13,7 @@ git clone --recurse-submodules https://github.com/maplibre/maplibre-gl-native.gi

## Building

MapLibre GL Native shares a single C++ core library with all platforms. To build it, we utilize CMake.
MapLibre Native shares a single C++ core library with all platforms. To build it, we utilize CMake.

To build, run the following from the root directory
```bash
Expand All @@ -37,11 +37,11 @@ If you want to contribute code:

4. Prefix your commit messages with the platform(s) your changes affect, e.g. `[ios]`.

Please note the special instructions for contributing new source code files, asset files, or user-facing strings to MapLibre GL Native for [iOS](platform/ios/CONTRIBUTING.md), [Android](platform/android/DEVELOPING.md) or [macOS](platform/ios/platform/macos/DEVELOPING.md).
Please note the special instructions for contributing new source code files, asset files, or user-facing strings to MapLibre Native for [iOS](platform/ios/CONTRIBUTING.md), [Android](platform/android/DEVELOPING.md) or [macOS](platform/ios/platform/macos/DEVELOPING.md).

## Design Proposals

If you would like to change MapLibre GL Native in a substantial way, we recommend that you write a Design Proposal. Examples for substantial changes could be if you would like to split the mono-repo or if you would like to introduce shaders written in Metal.
If you would like to change MapLibre Native in a substantial way, we recommend that you write a Design Proposal. Examples for substantial changes could be if you would like to split the mono-repo or if you would like to introduce shaders written in Metal.

The purpose of a Design Proposal is to collectively think through a problem before starting to implement a solution. Every implementation has advantages and disadvantages. We can discuss them in a Design Proposal, and once we reach an agreement, we follow the guidelines in the Design Proposal and work on the implementation.

Expand Down
2 changes: 1 addition & 1 deletion FORK.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Fork

MapLibre GL Native is a community led fork derived from [mapbox-gl-native](https://github.com/mapbox/mapbox-gl-native) prior to their switch to a non-OSS license. The fork also includes Maps SDK for iOS and MacOS (forked from [mapbox-gl-native-ios](https://github.com/mapbox/mapbox-gl-native-ios)) and Android SDK (forked from [mapbox-gl-native-android](https://github.com/mapbox/mapbox-gl-native-android)). These platform-specific SDKs were merged under platform directory and they reference mapbox-gl-native directly, not as a submodule.
MapLibre Native is a community led fork derived from [mapbox-gl-native](https://github.com/mapbox/mapbox-gl-native) prior to their switch to a non-OSS license. The fork also includes Maps SDK for iOS and MacOS (forked from [mapbox-gl-native-ios](https://github.com/mapbox/mapbox-gl-native-ios)) and Android SDK (forked from [mapbox-gl-native-android](https://github.com/mapbox/mapbox-gl-native-android)). These platform-specific SDKs were merged under platform directory and they reference mapbox-gl-native directly, not as a submodule.

Beside merging in platform specific SDKs, the following changes were made compared to original mapbox projects:

Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[![MapLibre Logo](https://maplibre.org/img/maplibre-logo-big.svg)](https://maplibre.org/)

# MapLibre GL Native
# MapLibre Native

MapLibre GL Native is a free and open-source library for publishing maps in your apps and desktop applications on various platforms. Fast displaying of maps is possible thanks to GPU-accelerated vector tile rendering.
MapLibre Native is a free and open-source library for publishing maps in your apps and desktop applications on various platforms. Fast displaying of maps is possible thanks to GPU-accelerated vector tile rendering.

This project originated as a fork of Mapbox GL Native, before their switch to a non-OSS license in December 2020. For more information, see: [`FORK.md`](./FORK.md).

Expand All @@ -12,11 +12,11 @@ This project originated as a fork of Mapbox GL Native, before their switch to a

## Getting Started

To get started with MapLibre GL Native, go to your platform below.
To get started with MapLibre Native, go to your platform below.

## Documentation

The documentation of MapLibre GL Native is a work in progress. To get an architectural overview and to learn about the current state of the project and its path forward read the [MapLibre GL Native Markdown Book](https://maplibre.org/maplibre-gl-native/docs/book/). See below for platform-specific documentation.
The documentation of MapLibre Native is a work in progress. To get an architectural overview and to learn about the current state of the project and its path forward read the [MapLibre Native Markdown Book](https://maplibre.org/maplibre-gl-native/docs/book/). See below for platform-specific documentation.

## Platforms

Expand All @@ -35,7 +35,7 @@ Platforms with a ⭐️ are **MapLibre Core Projects** and have a substantial am

![image-metal](https://user-images.githubusercontent.com/53421382/214308933-66cd4efb-b5a5-4de3-b4b4-7ed59045a1c3.png)

MapLibre GL Native is being actively developed. Our big goal for 2023 is to modularize the OpenGL renderer and implement a Metal graphics backend (https://developer.apple.com/metal/). This will improve the performance and yield lower power consumption on iOS devices. At the same time, the Metal preparations will help us in the implementation of a Vulkan graphics backend.
MapLibre Native is being actively developed. Our big goal for 2023 is to modularize the OpenGL renderer and implement a Metal graphics backend (https://developer.apple.com/metal/). This will improve the performance and yield lower power consumption on iOS devices. At the same time, the Metal preparations will help us in the implementation of a Vulkan graphics backend.

Your help in preparing the codebase for the latest graphics backends is more than welcome. Feel free to reach out if you are interested in joining the effort!

Expand All @@ -44,7 +44,7 @@ Your help in preparing the codebase for the latest graphics backends is more tha

## Contributing

To contribute to MapLibre GL Native, see [`CONTRIBUTING.md`](CONTRIBUTING.md) and (if applicable) the specific instructions for the platform you want to contribute to.
To contribute to MapLibre Native, see [`CONTRIBUTING.md`](CONTRIBUTING.md) and (if applicable) the specific instructions for the platform you want to contribute to.

### Getting Involved

Expand Down Expand Up @@ -78,4 +78,4 @@ Backers and Supporters:

## License

**MapLibre GL Native** is licensed under the [BSD 2-Clause License](./LICENSE.md).
**MapLibre Native** is licensed under the [BSD 2-Clause License](./LICENSE.md).
2 changes: 1 addition & 1 deletion docs/doxygen/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME = "MapLibre GL Native Core"
PROJECT_NAME = "MapLibre Native Core"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
Expand Down
4 changes: 2 additions & 2 deletions docs/doxygen/MAINPAGE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# MapLibre GL Native Core Documentation
# MapLibre Native Core Documentation

This is the documentation of the public C++ API of MapLibre GL Native Core. You would normally only use this API if you are a contributor to one of the platform specific APIs. If you want to intergrate use MapLibre GL Native in your project, you are better served by [documentation specific to your platform](https://maplibre.org/projects/maplibre-native/), unless you are interested in the internals of MapLibre GL Native.
This is the documentation of the public C++ API of MapLibre Native Core. You would normally only use this API if you are a contributor to one of the platform specific APIs. If you want to intergrate use MapLibre Native in your project, you are better served by [documentation specific to your platform](https://maplibre.org/projects/maplibre-native/), unless you are interested in the internals of MapLibre Native.

The source code can be found [on GitHub](https://github.com/maplibre/maplibre-gl-native) (the `include` directory contains the public API).
2 changes: 1 addition & 1 deletion docs/doxygen/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Doxygen documentation

This directory contains the files needed to generate the documentation of MapLibre GL Native Core using [Doxygen](https://www.doxygen.nl).
This directory contains the files needed to generate the documentation of MapLibre Native Core using [Doxygen](https://www.doxygen.nl).

[Doxygen Awesome](https://jothepro.github.io/doxygen-awesome-css/index.html) is used as a theme and is included as a submodule. To update, simply check out a new version of the submodule.

Expand Down
2 changes: 1 addition & 1 deletion docs/mdbook/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# MapLibre GL Native Docs
# MapLibre Native Docs

## Build Locally

Expand Down
2 changes: 1 addition & 1 deletion docs/mdbook/book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ authors = ["MapLibre Contributors"]
language = "en"
multilingual = false
src = "src"
title = "MapLibre GL Native Documentation"
title = "MapLibre Native Documentation"

[output.html]
additional-css = ["diff.css"]
4 changes: 2 additions & 2 deletions docs/mdbook/src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# MapLibre GL Native Documentation
# MapLibre Native Documentation

[Introduction](./introduction.md)

Expand All @@ -10,5 +10,5 @@
- [Android Map Rendering Data Flow](design/android-map-rendering-data-flow.md)
- [Geometry Tile Worker](design/geometry-tile-worker.md)

- [MapLibre GL Native for Android](./android/README.md)
- [MapLibre Native for Android](./android/README.md)
- [Quickstart](./android/getting-started-guide.md)
4 changes: 2 additions & 2 deletions docs/mdbook/src/android/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# MapLibre GL Native for Android
# MapLibre Native for Android

MapLibre GL Native for Android is a library for embedding interactive map views with scalable, customizable vector maps onto Android devices.
MapLibre Native for Android is a library for embedding interactive map views with scalable, customizable vector maps onto Android devices.
2 changes: 1 addition & 1 deletion docs/mdbook/src/android/getting-started-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
}
```

2. Add the library as a dependency into your module Gradle file (usually `<project>/<app-module>/build.gradle`). Replace `<version>` with the latest MapLibre GL Native version (e.g.: `org.maplibre.gl:android-sdk:10.0.2`). Visit [https://mvnrepository.com/artifact/org.maplibre.gl/android-sdk](https://mvnrepository.com/artifact/org.maplibre.gl/android-sdk) to view the version history of MapLibre GL Native for android.
2. Add the library as a dependency into your module Gradle file (usually `<project>/<app-module>/build.gradle`). Replace `<version>` with the latest MapLibre Native version (e.g.: `org.maplibre.gl:android-sdk:10.0.2`). Visit [https://mvnrepository.com/artifact/org.maplibre.gl/android-sdk](https://mvnrepository.com/artifact/org.maplibre.gl/android-sdk) to view the version history of MapLibre Native for android.

```gradle
dependencies {
Expand Down
2 changes: 1 addition & 1 deletion docs/mdbook/src/design/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Design

This section is dedicated to documenting current state of MapLibre GL Native. [Architectural Problems and Recommendations](./archictural-problems-and-recommendations.md) section notes recommendations for future improvements from an architectural perspective.
This section is dedicated to documenting current state of MapLibre Native. [Architectural Problems and Recommendations](./archictural-problems-and-recommendations.md) section notes recommendations for future improvements from an architectural perspective.
Loading

0 comments on commit 82f3f97

Please sign in to comment.