-
-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MapLibre Native how to list supported features #391
Comments
@louwers Thank you for creating this issue. Two concerns:
With my rudimentary understanding of the overall architecture, it seems like versioning of MapLibre native core is necessary. The style spec could then document from which version a certain feature is supported. In addition, some metadata for MapLibre platform releases would be needed - defining which version of native core is included in that release. Hope this makes sense. |
@jechterhoff That's a great idea! We can have a versioned core, and let each platform (release) document which version of the core it is based on instead. |
@louwers Great! The Style Spec would then document each feature with an indication regarding the core version(s) that support it? Like |
@jechterhoff Right that sounds sensible. But let's see if others agree and I think we'll also this during the monthly meeting on the 8th of November. |
As said @jechterhoff said, version is very important to know what feature I've can use given a version of maplibre, where you can't upgrade to latest version. |
Is the Metal rendering backend part of the MapLibre Native core or part of the iOS platform binding? Because if it is part of the core, then we have actually 2 cores: an OpenGL ES3 and a Metal one, right? Also, there is an OpenGL ES2 branch I think which @ntadej maintains I think... |
@wipfli The 'platform bindings' are generally thought of as the glue code that enables using MapLibre Native on a particular platform as well as any auxiliary code that makes doing so more ergonomic. From this definition it's unhelpful to think of the Metal rendering backend as a platform binding. It can be used with any platform where Metal can run, so Node.js (on macOS), Qt, macOS (AppKit), iOS (UIKit, SwiftUI), GLFW, maybe even visionOS in the future. The core consists of interfaces and source code shared by multiple platforms. The rendering pipeline is a part of the core. This part was made modular and now has implementations for more than one graphics backend. It is similar to how some core interfaces have platform-specific implementations (e.g. for making HTTP requests), but now the rendering part of the core has more than one implementation (without a default implementation). So from my perspective, there is one core still, but one part of it you can swap out. |
I'm rewriting the docs now. |
Is this something we are planning to push forward, or can we close this issue? I would like to do some housekeeping in the issues in this repo... |
@jechterhoff mentioned that he had to find out with trail and error if
icon-overlap
is not supported with Node.jsIn the style spec docs, only versions for Android, iOS and macOS are listed. But MapLibre Native also has Linux, Windows, Qt and Node.js. What does 'supported' mean?
index-of
andslice
are now part of the core, but we don't have an SDK wrapper for them on iOS. Still, you can use them through a style sheet directly with the next release or the current pre-release.Instead of a version number, I would like to show a boolean value for most options.
So it will show:
When something is supported, or:
When it is not.
Plus, optionally a link to a PR where something is implemented (so users can easily find who did the implementation, what discussion was there, maybe ask some follow-up questions) or a link to an open issue when something has not yet been implemented.
I could only find a single property which has differing support on platforms (fill-extrusion-vertical-gradient), and I'm not even sure if this is correct. But in this case we could use:
❌ Android
Or in the example case of
slice
which I mentioned above, I might document that as:- No SDK wrapper for Android (see issue #xxx)
But only if there was someone that asked for this to be implemented and there was an issue for it.
Why no version number?
Please let me know if you agree or disagree with my proposal.
cc @HarelM @ntadej
The text was updated successfully, but these errors were encountered: