Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌟 Roadmap 🌟 #1510

Open
11 of 63 tasks
Lancetnik opened this issue Jun 7, 2024 · 2 comments
Open
11 of 63 tasks

🌟 Roadmap 🌟 #1510

Lancetnik opened this issue Jun 7, 2024 · 2 comments
Assignees

Comments

@Lancetnik
Copy link
Member

Lancetnik commented Jun 7, 2024

Roadmap

We know that some users are waiting for new broker support (like SQS/MQTT/etc.), but please be patient a bit longer.

Due to the inner project structure becoming much harder to change with each new broker, we are now focusing on stabilizing the inner and outer API. Then we will be able to promote new broker support in an easier way (like we used to do before).

Road to 1.0.0

Polish Current Features

First of all, we should polish already existing brokers and core features:

Inner Structure Refactoring

The next step is making Context non-global: we should pass it throughout the whole application from FastStream object -> Broker -> Subscriber -> Call. This step is also related to FastDepends 3.0 migration, and we can refactor dependency_overrides as well, and finally make Pydantic replaceable in serialization cases.

  • Optional Pydantic (0.6.0 #1779)
    • Migrate to FastDepends 3.0 (0.6.0 #1779)
    • Provide an option to use custom Serializer Protocol implementation (0.6.0 #1779)
  • Local dependency-overrides (0.6.0 #1779)
    • Migrate to FastDepends 3.0 (0.6.0 #1779)
    • Pass dependecy-overrides container from FastStream to the final consumers (0.6.0 #1779)
    • Complete Depends documentation by overrides section
  • Local context (0.6.0 #1779)
    • Refactor all parsers to get regex in init instead of using context
    • Refactor ContextType to use local context (0.6.0 #1779)
    • Pass context to FastDepends as kwargs (0.6.0 #1779)
    • Pass context from FastStream to the final consumers (0.6.0 #1779)
    • Refactor logging to not use raw context (0.6.0 #1779)
  • Finally, after all these steps, we can finalize the Middleware Public API (0.6.0 #1779)

New in Testing

We plan to refactor the In-Memory TestClient to make it side-effect-less (currently, it has some problems with reusing).

New Brokers Support

Finally, we can take a break from refactoring and add new broker support:

1.0.0 Finalization

At the end of the year (hopefully), we plan to release the first major version - 1.0.0

  • Public Multi-broker support (Using multiple brokers #526)
    • AsyncAPI schema merging
    • Cross-brokers In-Memory Tests
    • Correct logging resolution
  • Extended subscriber API

Community

Additionally, we are planning to start our Experts activity and provide users with a roadmap to study FastStream, a form to approve your expertise, and a public page with all approved experts to encourage people to help each other (and boost their resumes with the FastStream expert mark).

  • Launch Experts initiative

AsyncAPI

Last but not least, we should migrate to the new major AsyncAPI version

1.0.0 +

We are not looking too far ahead, but we have few thoughts:

Eventhough brokers are good, brokerless is much better, so ZMQ support looks promising to us

And the last thing - we want to provide you with some persistence layer (like Faust table or smth) to allow windowing incoming messages stream.

  • Incoming stream windowing

P.S. This plan is still pretty raw, and we can swap any of these points, but this is the general direction.

@Lancetnik Lancetnik pinned this issue Jun 7, 2024
@Lancetnik Lancetnik mentioned this issue Jun 12, 2024
13 tasks
@Lancetnik Lancetnik changed the title Roadmap 🌟 Roadmap 🌟 Aug 7, 2024
@r0kk
Copy link

r0kk commented Sep 4, 2024

Hi thank you for sharing the roadmap, I would like to point out that community can already use MQTT protocol since RabbitMQ broker supports MQTT protocol via plugin. This means that FastStream can be used for with MQTT protocol. Maybe tutorial or announcement could inform community about this option.

Thank you for all contributions.

@Lancetnik
Copy link
Member Author

@r0kk thank you for your kind words! But I am not sure, that plugin is full-MQTT compatible. Is it suitable for all MQTT cases? Did you test FastStream with it?
Anyway, we plan to implement MQTT support right after 0.6.0 release (it should be in a few months), it's not too long to wait

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Backlog
Development

No branches or pull requests

4 participants