Skip to content

Commit 0769c49

Browse files
authored
Add Roadmap to Readme (#1054)
* Add Roadmap to Readme Propsed roadmap is now included in the readme. * Make clear which changes are breaking Added additional context to Retry and Async tasks to indicate that these features will be breaking changes.
1 parent d7db804 commit 0769c49

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,41 @@
66

77
Feign is a Java to HTTP client binder inspired by [Retrofit](https://github.com/square/retrofit), [JAXRS-2.0](https://jax-rs-spec.java.net/nonav/2.0/apidocs/index.html), and [WebSocket](http://www.oracle.com/technetwork/articles/java/jsr356-1937161.html). Feign's first goal was reducing the complexity of binding [Denominator](https://github.com/Netflix/Denominator) uniformly to HTTP APIs regardless of [ReSTfulness](http://www.slideshare.net/adrianfcole/99problems).
88

9+
---
10+
# Roadmap
11+
## Feign 11 and beyond
12+
Making _API_ clients easier
13+
14+
Short Term - What we're working on now. ⏰
15+
---
16+
* Response Caching
17+
* Support caching of api responses. Allow for user's to define under what conditions a response is eligible for caching and what type of caching mechanism should be used.
18+
* Support in-memory caching and external cache implementations (EhCache, Google, Spring, etc...)
19+
* Complete URI Template expression support
20+
* Support [level 1 through level 4](https://tools.ietf.org/html/rfc6570#section-1.2) URI template expressions.
21+
* Use [URI Templates TCK](https://github.com/uri-templates/uritemplate-test) to verify compliance.
22+
* `Logger` API refactor
23+
* Refactor the `Logger` API to adhere closer to frameworks like SLF4J providing a common mental model for logging within Feign. This model will be used by Feign itself throughout and provide clearer direction on how the `Logger` will be used.
24+
* `Retry` API refactor
25+
* Refactor the `Retry` API to support user-supplied conditions and better control over back-off policies. **This may result in non-backward-compatible breaking changes**
26+
27+
Medium Term - What's up next. ⏲
28+
---
29+
* Metric API
30+
* Provide a first-class Metrics API that user's can tap into to gain insight into the request/response lifecycle. Possibly provide better [OpenTracing](https://opentracing.io/) support.
31+
* Async execution support via `CompletableFuture`
32+
* Allow for `Future` chaining and executor management for the request/response lifecycle. **Implementation will require non-backward-compatible breaking changes**. However this feature is required before Reactive execution can be considered.
33+
* Reactive execution support via [Reactive Streams](https://www.reactive-streams.org/)
34+
* For JDK 9+, consider a native implementation that uses `java.util.concurrent.Flow`.
35+
* Support for [Project Reactor](https://projectreactor.io/) and [RxJava 2+](https://github.com/ReactiveX/RxJava) implementations on JDK 8.
36+
37+
Long Term - The future ☁️
38+
---
39+
* Additional Circuit Breaker Support.
40+
* Support additional Circuit Breaker implementations like [Resilience4J](https://resilience4j.readme.io/) and Spring Circuit Breaker
41+
42+
---
43+
944
### Why Feign and not X?
1045

1146
Feign uses tools like Jersey and CXF to write java clients for ReST or SOAP services. Furthermore, Feign allows you to write your own code on top of http libraries such as Apache HC. Feign connects your code to http APIs with minimal overhead and code via customizable decoders and error handling, which can be written to any text-based http API.

0 commit comments

Comments
 (0)