Skip to content

Commit 0a69b51

Browse files
authored
Update on current and future goals
1 parent e799bc6 commit 0a69b51

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

README.md

+8-16
Original file line numberDiff line numberDiff line change
@@ -109,25 +109,17 @@ Xpresso takes these ideas and refines them by:
109109
- Support for [customizing parameter and form serialization].
110110
- Better performance by implementing [dependency resolution in Rust], [executing dependencies concurrently] and [controlling threading of sync dependencies on a per-dependency basis].
111111

112-
## Current state
112+
### Inspiration **to** FastAPI
113113

114-
This project is under active development.
115-
It should not be considered "stable" or ready to be used in production.
116-
It is however ready for experimentation and learning!
114+
When I originally concieved Xpresso I wasn't sure what the goal was. I didn't necessarily want to replace FastAPI, I know how much work open source is and was not and am not willing to commit to something like that. So I always thought of the project more as a testing ground for interesting ideas for ASGI web frameworks in general and FastAPI in particular.
117115

118-
### What is implemented and mostly stable?
116+
I am happy to report that in this sense it has been a _smash hit_. In the time since writing the above differences:
117+
- Starlette added support for middleware on routers.
118+
- The ASGI spec, Starlette and FastAPI added support for returning data from lifespans, which I think may be an even better idea than dependency scopes.
119+
- FastAPI added support for PEP593 annotations, taking direct inspiration from Xpresso's approach.
120+
- I've established a strong working relationship with Sebastián, FastAPI's author, and I foresee more ideas from Xpresso leaking into FastAPI in some way or another.
119121

120-
1. Extraction and OpenAPI documentation of parameters (query, headers, etc.) and request bodies (including multipart requests).
121-
1. Parameter serialization.
122-
1. Routing, including applications, routers and routes.
123-
1. Dependency injection and testing utilities (dependency overrides).
124-
125-
Most of this APIs will be _generally_ stable going forward, although some minor aspects like argument names will probably change at some point.
126-
127-
### What is not implemented or unstable?
128-
129-
1. Low-level API for binders (stuff in `xpresso.binders`): this is public, but should be considered experimental and is likely to change. The high level APIs (`FromPath[str]` and `Annotated[str, PathParam(...)]`) are likely to be stable.
130-
1. Security dependencies and OpenAPI integration. This part used to exist, but needed some work. It is planned for the future, but we need to think about the scope of these features and the API.
122+
So where does that leave Xpresso? It's going to stay around, but it's less likely to become a stable production ready framework: it can provide more value to the community as an exprimental proving ground for ideas than as yet another "production ready" web framework.
131123

132124
[Starlette]: https://github.com/encode/starlette
133125
[Pydantic]: https://github.com/samuelcolvin/pydantic/

0 commit comments

Comments
 (0)