Open ianthetechie opened 4 months ago
I'm seconding this proposal. Motivation:
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++.
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
.
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).
What are the benefits vs downsides of onboarding this repository under the MapLibre organization? From my perspective:
Benefits:
Downsides:
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.
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? :)
Ok; sorry for the delay on this, but I just did all the remaining admin work that's necessary pre-merge (can enable funding at the repo level once it moves orgs).
Can someone remind me what the next steps are to properly transfer the repo?
@ianthetechie You should give owner rights to one of the board members, then they can do the transfer.
Ahh ok! @lseelenbinder should have access ;)
I just transferred.
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
Copyright (c) <year> MapLibre contributors
in license file(s) and in the readme.Special files
/README.md
Description, link to the main maplibre.org page, name of the OSM-US Slack channel for discussions and an invite link, etc/LICENSE
Dual-licensed repos may have additional files likeLICENSE-MIT
andLICENSE-APACHE
/SECURITY_POLICY.txt
Add the text:/CONTRIBUTING.md
/.github
dir./.github/FUNDING.yml
file copied from maplibre-gl-js/funding/CODE_OF_CONDUCT.md
This file should only link to our primary code of conduct. Use this markup for consistency:# Contributor Covenant
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/maplibre/maplibre/blob/main/CODE_OF_CONDUCT.md)
Repo Settings
General page
Sponsorships
checkbox (see also FUNDING.yaml above).Preserve this repository
.squash merge
. Disable other merge types if possible.Automatically delete head branches
.Access
Branches
main
.Miscelaneous
maplibreorg nyurik klokan lseelenbinder wipfli
nyurik klokan lseelenbinder wipfli
Community
#maplibre
OSMUS slack channel.@maplibre
twitter.