Description
There has been increasing activity and demand for a place where UI-Related components and extensions could live in the RxSwiftCommunity eco-system.
This would help:
- Find place for things that are needed by the community but would bloat the main repo (e.g. implementation details not tied to a delegate, etc.)
- Get more community involvement, as there is so many options for new extensions to be added here, this might help get more people involved in contributing.
- Lower entry-barrier for people who are just starting with Rx and want a "Catch all" for UI-related extensions as well.
After a lot of discussion inside the community and with @fpillet , it seems there are three options here.
- Separate library (RxCocoaExt)
- Subspec on RxSwiftExt (e.g. RxSwiftExt - RxSwiftExtCore, RxCocoaExt)
- Separate podspec(s) in the same repo (RxSwiftExt.podspec, RxCocoaExt.podspec). This would follow the main repo's behavior with RxSwift.podspec, RxCocoa.podspec, RxTest.podspec and RxBlocking.podspec.
The last two options seem best to keep things consolidated, and also have more community involvement since this would be a place where more contributors could be involved. but this is one of the reasons for this discussions.
If we do either option we need to discuss several things here:
- Coding standards - we need to have good Swiftlint rules in place
- Naming standards - Right now many operators are named camel-case (e.g.
mapTo
) instead of Class-case (e.g.MapTo
). I guess because its operators vs. classes in this case, but we should make a decision on what makes sense and how to name files across different boundaries. (same for Folder structure here) - PR standards - we need to have something like Danger or Peril set-up to avoid spending contributor/maintainer time on filtering PRs that are missing trivial details (tests, playgrounds page, etc).
- Framework DIfferences - for example, a Playground page for a UIKit extension might not be relevant. Same for Cocoa on macOS. Tests are also harder when it comes to UI Components.
- What goes in - Do we just want to accept any suggestion? Do we want to have a proposal stage (e.g. open an Issue and get clearance from repo owners/collaborators) ?
I'm sure there are many more points to discuss but this would be a great starting point.
I hope to get involvement from @RxSwiftCommunity/contributors, when and if you have some time.
Thanks all!
Shai 🎉