maplibre / maplibre

Documents that span across multiple MapLibre projects
https://www.maplibre.org/
Creative Commons Zero v1.0 Universal
73 stars 37 forks source link

Onboarding repository stadiamaps/maplibre-swiftui-dsl-playground #371

Open ianthetechie opened 1 month ago

ianthetechie commented 1 month ago

Current: https://github.com/stadiamaps/maplibre-swiftui-dsl-playground

Proposed: https://github.com/maplibre/swiftui-dsl (I think we can probably drop "playground" at this point)

Motivation

We started this project because there was no good story for integrating MapLibre into SwiftUI. It was a bit of an experiment, so we started it in our own org, but I believe that the experiment has been successful and we have seen great buy-in from the MapLibre iOS dev community already.

While the project is not a 100% feature-complete wrapper yet, it is very much usable and is progressing as "real-world" users integrate it and submit PRs for new functionality. That makes it a great time to move it under the MapLibre umbrella in my opinion :)

Acceptance

Licensing

Special files

Repo Settings

General page

Access

Branches

Miscelaneous

Community

hactar commented 1 month ago

I'm seconding this proposal. Motivation:

Archdoog commented 1 month ago

I'll add my 👍 and plus 1 to all the motivations and reasoning from @ianthetechie & @hactar.

One additional reason:

This repository is a great proof of concept for approaching a SwiftUI first maplibre-native swift-c++ interop. Meaning we can use the top level SwiftUI architecture, design and how we incrementally built it to approach the next generation of mapblire-native with direct swiftui to c++.

birkskyum commented 1 month ago

I'm approving this. I think it looks great.

Regarding naming, it might be more consistent to go with maplibre-native-swiftui-dsl (or maybe even without -dsl), to align with i.e. maplibre-native-qt.

ianthetechie commented 1 month ago

Thanks!

Your naming suggestion sounds good to me @birkskyum.

I'll update this ticket as we work through the checklist items (might take a few weeks between other stuff; PRs welcome of course :D).

louwers commented 1 month ago

What are the benefits vs downsides of onboarding this repository under the MapLibre organization? From my perspective:

Benefits:

Downsides:

ianthetechie commented 1 month ago

If we onboard this library, we are somewhat buying into the suboptimal setup of having a wrapper library on top of our creaky Objective-C iOS library.

I agree that it is not necessarily optimal wrapping the old Obj-C (+ UIKit) base. However, I do not think that either Obj-C or UIKit are going away. Obj-C is not inherently bad.

I would personally much rather see MapLibre support a new iOS SDK written from the ground up in Swift. Then our SwiftUI story would be: we're working on a new iOS SDK from the ground up ...

I think that what needs "fixing" the most (aside from major perf issues or crashes) is the public APIs. These were inherited from the Mapbox project, and we all know the annoyances, hidden footguns, etc.

Rewriting is Swift is something I support, but I think an incremental transition is a far more realistic goal than a ground-up rewrite. The main goals for such a rewrite would be improving maintainability, attracting new contributors, and making it easier for developers to use.

(Aside: Swift-C++ is also still very new, so it's an open question whether the timing is right for a pure Swift rewrite, but that's for another thread.)

But before we can consider rewriting major chunks in Swift, we need to figure out what the improved public API should look like. The SwiftUI DSL project exists specifically to work toward this goal. Our approach of building on top of the existing library does a few things:

Building on top of the existing library allows us to focus on these goals in isolation. The things we learn there will inform public API evolution in MapLibre Native. There are tradeoffs, but I believe the benefit of being able to make changes quickly in a light wrapper will outweigh the drawbacks. API design is hard, and getting it into the hands of users in "real" apps is the quickest way to identify pain or pleasure.

Fun tech discussions aside, the main reasons to host it under the MapLibre org are better visibility (-> more user feedback) and improving the public image of MapLibre as innovating and trying to integrate with these newer UI paradigms (which most are sadly not).

in the meantime: use this wrapper from (hosted by) Stadia Maps...

I'm also fine with that of course ;) But I think we're all agreed on the benefits of hosting this under MapLibre.

ianthetechie commented 1 week ago

Discussed in the Native TSC meeting today and all interested participants agreed to proceed.

@nyurik can you give the second board sign-off and we'll then work through the rest of the onboarding? :)