This ticket is a placeholder for describing the roadmap for Airframe 2019 releases.
Milestone: Airframe 20 #839
Airframe 19
airframe-http
[x] Filter support #540
e.g., adding authentication filters before the router
~[ ] Add MultiMap for http request/response headers~ We usually don't use generic request/response for now
[ ] Add http logging #399
~[ ] Add JMX metrics like TwitterServer~ -> airframe-http-finagle supports it
[x] Static content (e.g, html, CSS) provider #843
http server backend
[x] finagle
akka-http
[x] Convenient factories to initialize servers.
The current implementation provides designs. Factory methods like HttpServer.newXXXServer(...) will be more useful. => Added FinagleServerFactory.newFinagleServer
[ ] OpenAPI YAML/JSON generator
Add a very simple annotation for OpenAPI.
~[ ] gRPC support (idea)~ No urgency in our use cases
[ ] giter8 template (@smdmts)
airframe-http-finagle
[x] Upgrade to Finagle 19.6.0 #531
Admin server (Having an example Admin server would be good)
[ ] Configure JMX parameters (e.g., log level)
[ ] monitoring logs
[ ] monitoring stats
~[ ] Factory methods for building Finagle Requests~ (@takezoe) => FinagleRequestBuilder can be used
airframe-http-recorder
[x] http support #527
[x] programmable http recorder. #529
Recording pairs of http request/response without actual web services
[x] record/replay proxy #557
[x] Support the expiration of recorded responses #559
~Custom http request matcher~ (headerExclude option seems sufficient for now)
~Custom http request handler~
airframe-http-client
[x] Default http client bindings. It seems we have no strong need to support multiple http clients.
[ ] Generate client-side code from a server definition (e.g., sbt-plugin?)
[ ] Minimize the client binding interface used for HttpException retry patterns
[x] JSON chuncked encoding support
airframe-di
[x] Design-time lifecycle hooks
[x] Show line numbers of bind[X] #530
~- [ ] Show dependency graph~
Visualization with external tools (e.g., graphviz) will not solve issues that are happening at the source code level.
~[ ] Rename the module to airframe-di (keep the package name as wvlet.airframe)~ No urgency for this
[x] Rename airframe-macros to airframe-di-macros #560
Integrating with famous Scala libraries
examples:
[ ] Using Airframe with Spark. We already have this example in production.
[x] Using Airframe with JDBC drivers
Using Airframe with Play!
Using Airframe with Akka
Using Airframe for Dataflow
[x] In-class bind[X] support #816
airframe-surface
[x] Support Surface.objectFactory in Scala.js
[x] Support inner classes #635
airframe-metrics
[x] Compute the most succinct TimeWindow from a time range #736
[x] Calculate diff TimeWindow between start and end (@smdmts)
airframe-jmx
~[ ] Support JSON output for complex parameters~ -> Admin server can do a better job for HTTP server diagnosis
[x] Update doc on how to register JMXMBean
~[ ] Simplify the usage (e.g., just expose all public methods)~
airframe-codec
[x] AnyCodec #536
[x] Strict mode for validating the presence of all parameters => added @required parameter #779
MessageHolder -> CodecdContext
~[ ] Custom error handling: Add a parsing context-based error handling. Using default values (zero)~ Added @required #779 annotation so that we can enforce having a value.
~[ ] Custom parameter name normalization: snake_case, CamlCase input/output~ Using a safe default configuration is better.
[x] Scala.js support. See airframe-msgpack
[ ] Optimize the pack/unpack performance when input/output types are known
~[ ] TimeWindow codec (e.g., retain the original duration strings)~ Relative time string (e.g., 1d) doesn't match with the absolute TimeWindow. Won't work on this.
[x] Use base64 encoding for binary -> string conversion (json, StringCodec) #634
This ticket is a placeholder for describing the roadmap for Airframe 2019 releases.
Airframe 19
airframe-http
airframe-http-finagle
airframe-http-recorder
airframe-http-client
airframe-di
airframe-surface
airframe-metrics
airframe-jmx
airframe-codec
@required
parameter #779@required
#779 annotation so that we can enforce having a value.airframe-msgpack
airframe-json
airframe-tablet (deprecated)
airframe-sql
airframe-log
airframe-jdbc
airframe-config
airspec
airframe-launcher
Scala 2.13
Miscellaneous