* Moved some paragraphs to collapsible sections * Added v4 roadmap
This commit is contained in:
parent
c708f79588
commit
d13bbb2c58
23
README.md
23
README.md
|
@ -1,12 +1,17 @@
|
||||||
# YMFF: Feature management made easy
|
# YMFF: Feature management made easy
|
||||||
|
|
||||||
|
YMFF is a nice little library that makes managing features with feature flags—and managing feature flags themselves—a bliss, thanks mainly to the power of Swift’s [property wrappers](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID617).
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Why & How</summary>
|
||||||
|
|
||||||
Every company I worked for needed a way to manage availability of features in the apps already shipped to users. Surprisingly enough, [*feature flags*](https://en.wikipedia.org/wiki/Feature_toggle) (a.k.a. *feature toggles* a.k.a. *feature switches*) tend to cause a lot of struggle.
|
Every company I worked for needed a way to manage availability of features in the apps already shipped to users. Surprisingly enough, [*feature flags*](https://en.wikipedia.org/wiki/Feature_toggle) (a.k.a. *feature toggles* a.k.a. *feature switches*) tend to cause a lot of struggle.
|
||||||
|
|
||||||
**I aspire to change that.**
|
**I aspire to change that.**
|
||||||
|
|
||||||
YMFF is a nice little library that makes managing features with feature flags—and managing feature flags themselves—a bliss, thanks mainly to the power of Swift’s [property wrappers](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID617).
|
YMFF ships completely ready-to-use, right out of the box: you get everything you need to get started in just a few minutes. But you can also replace nearly any component of the system with your own, customized implementation. The supplied implementation and the protocols are kept in two separate targets (YMFF and YMFFProtocols, respectively).
|
||||||
|
|
||||||
YMFF ships completely ready for use, right out of the box: you get everything you need to get started in just a few minutes. But you can also replace nearly any component of the system with your own, customized implementation. The supplied implementation and the protocols are kept in two separate targets (YMFF and YMFFProtocols, respectively).
|
</details>
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
@ -40,6 +45,9 @@ All you need to start managing features with YMFF is at least one *feature flag
|
||||||
### Firebase Remote Config
|
### Firebase Remote Config
|
||||||
Firebase’s Remote Config is one of the most popular tools to manage feature flags on the server side. Remote Config’s `RemoteConfigValue` requires the use of different methods to retrieve values of different types. Integration of YMFF with Remote Config, although doesn’t look very pretty, is quite straightforward.
|
Firebase’s Remote Config is one of the most popular tools to manage feature flags on the server side. Remote Config’s `RemoteConfigValue` requires the use of different methods to retrieve values of different types. Integration of YMFF with Remote Config, although doesn’t look very pretty, is quite straightforward.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Typical Setup</summary>
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
import FirebaseRemoteConfig
|
import FirebaseRemoteConfig
|
||||||
import YMFFProtocols
|
import YMFFProtocols
|
||||||
|
@ -82,6 +90,8 @@ Now, `RemoteConfig` is a valid *feature flag store*.
|
||||||
|
|
||||||
Alternatively, you can create a custom wrapper object. That’s what I tend to do in my projects to achieve greater flexibility and avoid tight coupling.
|
Alternatively, you can create a custom wrapper object. That’s what I tend to do in my projects to achieve greater flexibility and avoid tight coupling.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
Here’s the most basic way to use YMFF:
|
Here’s the most basic way to use YMFF:
|
||||||
|
|
||||||
|
@ -184,6 +194,13 @@ That’s it!
|
||||||
|
|
||||||
You can browse the source files to learn more about the options available to you. An autogenerated documentation is available at [opensource.ym.dev](https://opensource.ym.dev/YMFF/).
|
You can browse the source files to learn more about the options available to you. An autogenerated documentation is available at [opensource.ym.dev](https://opensource.ym.dev/YMFF/).
|
||||||
|
|
||||||
|
## v4 Roadmap
|
||||||
|
* [[#96](https://github.com/yakovmanshin/YMFF/issues/96)] Support for asynchronous feature-flag stores
|
||||||
|
* [[#104](https://github.com/yakovmanshin/YMFF/issues/104)] Minimum compiler version: Swift 5.5 (Xcode 13)
|
||||||
|
* [[#106](https://github.com/yakovmanshin/YMFF/issues/106)] Minimum deployment target: iOS 13, macOS 10.15
|
||||||
|
|
||||||
|
YMFF v4 is expected to be released in late 2022.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
Contributions are welcome!
|
Contributions are welcome!
|
||||||
|
|
||||||
|
@ -192,6 +209,6 @@ Have a look at [issues](https://github.com/yakovmanshin/YMFF/issues) to see the
|
||||||
If you’d like to discuss something else, contact [me](https://github.com/yakovmanshin) via email (the address is in the profile).
|
If you’d like to discuss something else, contact [me](https://github.com/yakovmanshin) via email (the address is in the profile).
|
||||||
|
|
||||||
## License and Copyright
|
## License and Copyright
|
||||||
YMFF is available under the terms of the Apache License, version 2.0. See the [LICENSE file](https://github.com/yakovmanshin/YMFF/blob/main/LICENSE) for details.
|
YMFF is licensed under the Apache License. See the [LICENSE file](https://github.com/yakovmanshin/YMFF/blob/main/LICENSE) for details.
|
||||||
|
|
||||||
© 2020–2022 Yakov Manshin
|
© 2020–2022 Yakov Manshin
|
||||||
|
|
Loading…
Reference in New Issue