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
Project Organization & Submodules #479
Comments
I agree with the needs here, a few questions:
Beside a few unclear points, I'm totally ok for introducing API breaking change since it will really improve the usage. We will have a big work on installation / migration documentation. Also, it would be great to list all the modules we need to create to make this real. |
Let me address the 4 points you brought up:
eg) Firebase currently uses a structure like this:
** If for some reason
|
I globally agree with you, I think we can go ahead and make adjustments with the PRs review! About Carthage: it will simply compiles every shared frameworks schemes found in a xcworkspace / xcodeproj to generate a dedicated framework. Once that done, the user can choose which frameworks to add in its projects. Since designable is broken using Carthage (#354), I don't think we have that much users, but we still need to support it as well as submodules. |
Second though: I'm wondering if we shouldn't do a feature release before starting this. Otherwise, let's keep make a temporary branch |
I agree that would probably be the best approach 👍 |
Project Organization & Submodules
Recently, we have been discussing the current organization of the project on Slack.
Basis for the Discussion:
IBAnimatable is a large codebase and will continue to grow as we add more features.
We want to limit the amount of unused imported code and decrease the size of the dependency.
e.g) Using IBAnimatable solely for
Transitions
yet still having to import allActivityIndicators
Proposed Solution:
One possible approach would be to split the project using CocoaPods subspecs.
For example:
IBAnimatable
would import the entire framework.IBAnimatable/Core
would import core protocols/components required by other subspecs.IBAnimatable/Transitions
imports transitions andIBAnimatable/Core
IBAnimatable/ActivityIndicators
imports activity indicators andIBAnimatable/Core
I won't continue listing possible subspecs because they're a rough draft and likely to change.
I do think the inheritance hierarchy for
UIKit
could be a good guideline for this:e.g)
IBAnimatable/UIControls
orIBAnimatable/Controllers
Pros:
Decreases the size of the dependency for IBAnimatable users and reduces unused imported code.
A more modular project is easier to debug, test, maintain, and optimize performance.
Working with more modular components would let us take each individual component further without bloating the code base and opens up the possibility for IBAnimatable plugins.
It could make supporting other platforms such as tvOS even easier.
Cons:
The text was updated successfully, but these errors were encountered: