Define goals for the style expression language #36
Replies: 8 comments 27 replies
-
I know the following might not be a favorable stand, but I think it's worth voicing it anyway. Feel free to 👎... While I understand the requirements and the appeal, I generally don't agree with this direction. |
Beta Was this translation helpful? Give feedback.
-
As for defining goals, which I completely ignored in my last comment (and only said what not to do, which is not a great way to define goals), I think the main goals should be:
These might be a more short-term goals, but I believe we should focus on those before trying to look ahead. Edit:
|
Beta Was this translation helpful? Give feedback.
-
I'm quite happy with the expressions in general, but I would find it useful to make more things data-driven. I think there are some layout properties that are not data-driven yet like line cap and line dash array... |
Beta Was this translation helpful? Give feedback.
-
Maybe some criteria for new operators could be something like:
|
Beta Was this translation helpful? Give feedback.
-
Another goal I have is to not break the style spec even if it would make it better. For example I think we should keep support for the |
Beta Was this translation helpful? Give feedback.
-
Other question: should we allow something like |
Beta Was this translation helpful? Give feedback.
-
Somebody told me once that they do not use any expressions in native at all. Instead the implement things with C++ directly. That seemed to be more performant than expressions. I have to ask them again. Just wanted to note here that apparently one also do things in JS and C++ which are done with expressions, I guess at the expense of having to write things in different languages... |
Beta Was this translation helpful? Give feedback.
-
Hi I just want to share my view on this, mostly an eagle eye view on proposals, generally speaking: When we start with a proposal, a project proposal, I think we should state what the end goal is. Initially in the form of a simple statement then detail it until we refine it enough and agree on what we want to achieve. That being said, I think that, the discussions here are too much focused on what to change, how to achieve, before we actually identified/agreed on the clear/tangible goals of the proposal. One thing that will help is, that all of us, in the discussion, are posting their view of the tangible clear goals. |
Beta Was this translation helpful? Give feedback.
-
I recommend that maplibre-gl includes a complete and robust expression API that enables style designers to manipulate tile attributes programmatically, in accordance with the original language vision. This feature would give style designers the flexibility to determine which processing should occur on the tile generation side and which should take place in the user's web browser. A powerful expression language would be a significant capability differentiator that would influence a style implementer to select maplibre-gl over mapbox-gl.
A strong expression language is vital for the sustainable growth of vector tile-based maps, as it enables new use cases. For instance, a community organization can host a vector tile server with a centralized schema, with OpenMapTiles being a leading candidate. Hosting a vector server has been a long-standing vision within the OpenStreetMap project. More recently, the Operations Working Group of the OpenStreetMap Foundation has been investigating the hosting of a vector tile server (openstreetmap/operations#565). The aim is to facilitate community-driven style development providing a tile server with a standard schema that anyone can use. If maplibre-gl incorporates a complete and robust expression language, it will empower such centrally-hosted tile servers to support multiple styles with different requirements without needing to customize the delivered tiles.
Maintainability is a concern when expanding the style specification. However, testing individual style expressions is straightforward since they usually map to single functions in the implementing language. Thus, expressions are easier to maintain compared to other parts of the codebase.
A robust expression language has been a priority for mapbox-gl well before the maplibre fork. Unless there is a compelling reason to change course, we should follow the consensus established by the community when mapbox-gl was still an open project. The following tickets provide evidence of the pre-fork community support for a robust expression language, as well as the ongoing customer demand for it:
While we should have a constructive debate about including individual expressions, it's crucial that maplibre-gl's broadly-stated strategic goal is to enable expression logic on the client side. This will provide style developers with a wider range of options when deciding where to implement different aspects of cartographic decision-making in their technology stack. Let's engage in a healthy discussion on this matter.
Beta Was this translation helpful? Give feedback.
All reactions