airframe icon indicating copy to clipboard operation
airframe copied to clipboard

Milestone: Airframe 21

Open xerial opened this issue 4 years ago • 0 comments

2020 Development plan of Airframe

  • Airframe 20 Milestone: #839
  • Airframe 19 Milestone: #528

Documentation

airframe-http-rx

  • [ ] Add demo code with documentation
  • Basic RxElement rendering
    • [ ] nesting & composing
    • [ ] set (->) and add (+=) attributes
    • [ ] Setting CSS stlyles
    • [ ] Use .map[RxElement] for conditional rendering
    • [ ] RxComponent
    • [ ] adding elements
    • [ ] disabled.when(true)
    • [ ] How to access DOM elements (Actually it can't so we need to register event handlers)
  • [x] Reactive processing using Rx
  • [ ] Composing elements using Airframe DI

airframe-rpc

  • [x] Defining RPC interfaces
  • [x] Generating Scala.js client with sbt-airframe
  • [x] Creating RPC servers
  • [x] RPC response handling
  • [ ] Versioning RPC services. Similar https://docs.microsoft.com/en-us/aspnet/core/grpc/versioning?view=aspnetcore-3.1
  • [x] Internal protocol. Related https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md

Dotty (Scala 3) support

  • #1077

airframe-msgpack

  • [ ] Nested cursor support for the better error handling
  • [ ] Use InfiniteCanvas #386 as a backend buffer
  • [ ] Support InputStream/OutputStream
  • [ ] Handle EOF without using EOFException for stream RPC support
  • [ ] Guess a schema of msgpack data #516

airframe-codec

  • [ ] Clarify error handling of MessageCodec.unpack #1162
    • Adding an error handling option in MessageContext?
  • [ ] Performance improvement by switching to pure-Scala msgpack. 10%~20% performance improvement can be achieved compared to the current version
  • [ ] Switch json -> msgpack conversion algorithms depending on data size #741
  • [ ] Optimize the pack/unpack performance when input/output types are known
  • [ ] Check the presence of non-serializable types #836
  • [ ] toJson - unquoted string #1084
  • [ ] PackSupport/UnpackSupport #511
  • [ ] Type specialization #288

airframe-control

  • [ ] RateControl (e.g., leaky bucket) with retry budget #1078
  • [ ] Retry throttling #1027
  • [ ] copy between streams #396
  • [ ] Cache (e.g., https://github.com/ben-manes/caffeine)
  • [ ] I/O utility methods #346

airframe-di

  • [ ] bindConfig { (D1, D2, ...) => C } #650
  • [x] constructor injection bug fix #586
  • [x] cyclic dependency #582
  • [ ] Improve the error message for missing dependency for abstract types #554
  • [ ] Logger injection #190

airframe-http

  • [x] HttpMessage.Request/Response filter #1133
  • [x] Use RetryContext filter for client configurations #1135
  • [x] Add circuit breaker to http client #874
  • [ ] Input object validation #978
  • [ ] ETag support #1041
  • [x] airframe-http: Add / (slash) to client request if missing #1354
  • [x] Http.client.get/post/put #1355
  • [ ] Rx[X] response type #1240
  • [ ] Support stream response in StaticContent #1208
  • [x] Remove redundant import statements #1176
  • [ ] Client-side logging
  • [ ] Codec for Router #987
  • [x] Custom error response #697
  • [ ] shutdown order #693

airframe-rpc

  • [ ] Add standard error objects #1211
  • [x] gRPC access logging #1444
  • [x] gRPC metadata access example
  • [ ] gRPC reflection #1420
  • [ ] RPC test helper #1130

airframe-surface

  • [ ] Support refined types #1046
  • [ ] Show warnings when ClassNotFound error occurred #923

sbt-airframe

  • [ ] Generate server stub #1026
  • [x] ~Generate clients for test scope #1253~
  • [x] Remove redundant import #1176

airframe-http-recorder

  • [ ] Recording snapshots in YAML or JSON local files for human-readability #1071
  • [ ] chunked response #1169
  • [ ] big-data backend #1199
  • [ ] custom matching rule #1466 #618

airframe-jdbc

  • [ ] Support inserting case class instances as table records #1132
  • [ ] Lazy connection creation #454

airframe-jmx

  • [ ] json output for complex types #462
  • [ ] remote method call #463

airframe-launcher

  • [ ] Allow passing global option objects to child command #309
  • [ ] before/afterCommand hooks #1043
  • [ ] Creating launcher without using annotations
  • [ ] Include -h by default #298

airframe-sql

  • [ ] SQL filter evaluation for msgpack stream
  • SQL support
    • [ ] SQL decomposer
  • SQL processing code generator
    • [ ] Scala target

airframe-http-rx

  • [x] Rerendering upon attribute value update #1341
  • [ ] CSS tags #1062
  • [ ] onUpdate #1050
  • [x] Add Monaco facade #1058

airspec

  • [ ] Full-fledged launcher command-line interface #1352
  • [ ] Power assertion for test failures (e.g., show the condition expression and data differences)
  • [ ] Use function return values to record test results. There might be more meaningful usage of function return values (e.g., storing test data to DB, sending metrics to fluentd, etc.)
  • [ ] Asynchronous tests, returning Future type for Scala.js
  • [ ] IntelliJ plugin #646
  • Applications to runtime testing
    • [ ] smoke testing
    • [ ] active monitoring

xerial avatar Dec 04 '20 19:12 xerial