[#107] Updated `README` (#108)

* Moved some paragraphs to collapsible sections
* Added v4 roadmap
This commit is contained in:
Yakov Manshin 2022-10-05 11:06:00 +02:00
parent c708f79588
commit d13bbb2c58
No known key found for this signature in database
GPG Key ID: DA3328AA3609559B
1 changed files with 20 additions and 3 deletions

View File

@ -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 Swifts [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 Swifts [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
Firebases Remote Config is one of the most popular tools to manage feature flags on the server side. Remote Configs `RemoteConfigValue` requires the use of different methods to retrieve values of different types. Integration of YMFF with Remote Config, although doesnt look very pretty, is quite straightforward. Firebases Remote Config is one of the most popular tools to manage feature flags on the server side. Remote Configs `RemoteConfigValue` requires the use of different methods to retrieve values of different types. Integration of YMFF with Remote Config, although doesnt 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. Thats what I tend to do in my projects to achieve greater flexibility and avoid tight coupling. Alternatively, you can create a custom wrapper object. Thats what I tend to do in my projects to achieve greater flexibility and avoid tight coupling.
</details>
## Usage ## Usage
Heres the most basic way to use YMFF: Heres the most basic way to use YMFF:
@ -184,6 +194,13 @@ Thats 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 youd like to discuss something else, contact [me](https://github.com/yakovmanshin) via email (the address is in the profile). If youd 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.
© 20202022 Yakov Manshin © 20202022 Yakov Manshin