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

Robyn's plan for 2023! ✨ #366

Open
sansyrox opened this issue Jan 19, 2023 · 6 comments
Open

Robyn's plan for 2023! ✨ #366

sansyrox opened this issue Jan 19, 2023 · 6 comments

Comments

@sansyrox
Copy link
Member

sansyrox commented Jan 19, 2023

Hey All πŸ‘‹

2022 was an amazing year for us and we hope that 2023 will be even better. I recently wrote an article telling about our plans for 2023, you can check it out here(https://sanskar.wtf/posts/robyns_plans_for_2023)

In this issue, I would like to talk about a more technical part

- improve how you get body data
~ - when you access the response body, we still need to decode the byte array. I feel that this is an unnecessary step ~
~ and we should be returning a saner response type by default.~

- add some sort of performance benchmark integration
~ - I want to add a performance benchmark in our CI. This way we are certain if the project is becoming slower or faster~
in everychange. I have been given an early access to codspeed(https://codspeed.io/) and I would like to enable the python integration for it.

  • Fix the testing and deployment pipelines(remove the preview build and implement a better version of preview build by building on every merge on main)

    • Right now, I hate how we don't have a version to test before releasing it to the public PyPi.
      Plan for correction:
      - Delete the test PyPi action
      - Build a package on every merge to main, and be able to download it
      - Publish to PyPi on every release
  • fix the default port

    • Apple has unfortunately taken over the port 5000 . It is very annoying to change the port every time we test for
    • the default settings. I plan to moving the default port to 8080 as 3000 is the default port for various front end
    • frameworks.
  • openapi support

    • More or less self explanatory. I want to be able to have a route that automatically generates openapi spec for a web framework.
  • add support for yields

    • I want to allow yields in the framework. That way we can do some processing after the response has been returned
  • complete Strawberry GraphQl support

    • We have an initial integration with Strawberry but we need to create three things
    • Implement class views
    • Implement functional views
    • Add code to the strawberry-graphql repo
  • allow dependency injection
    -~ I love how we can have dependency injection in FastAPI, I would love to add it in Robyn too.~

  • then add a first class support for the database orm

    • The lack of database support is something that I don't enjoy. I want to add a first class orm support for a database but since Robyn is also a microframework, we would still want to allow the ability swap it out. Like our jinja templates.
    • After this, we can work on create an end to end template for robyn and frontend frameworks like asked for here([Feature Request] A project scafold or boilerplate of a Robyn APIΒ #360)
  • improving the educational content around Robyn

    • A project is only as good as its documentation. Improve the documentation and video content around Robyn.
  • ASGI ;)

  • Improve support for windows

    • The support for windows has been a bit lacklustre in the past. Improve support.
  • add cors support

  • -m flag should add some sort of documentation or helpers

    • This is a good to have experiment. Can we have an ability to run Robyn as a module that will give us a link to
    • thedocumentation or the entire documentation itself?
  • allow different mime types

    • Also, inspect how static files are being handled here.
  • Improve websockets

    • Web sockets are not the fastest right now. Need to improve the speed.
    • allowing blocking options in async web sockets
  • Implement SSE

  • Default authorization and authentication

    • Add the ability to add default authorization and authentication. But like the templating support, this needs to hot swappable.
  • route splitting across multiple files

    • Currently the only way to add routes in Robyn is through a single file. It is not scalable for a large codebase. We need to allow the ability to add multiple routes.
  • Automatic const request optimization

  • middlewares:

Somethings left to do from 2022:

  • Make a community of plugins
  • Improve docs website
  • Better jsonify method

Feel free to comment with what you think of it and if there are any features that you'd like to have in this roadmap.

@sansyrox sansyrox pinned this issue Jan 19, 2023
@XChikuX
Copy link

XChikuX commented Feb 11, 2023

Better jsonify method

Please use a highly efficient json serializer and de-serializer like: Orjson
If you are planning to do it in pure python.


Please keep pydantic data validation in mind wherever it makes sense.

@baseplate-admin
Copy link

Better jsonify method

Please use a highly efficient json serializer and de-serializer like: Orjson If you are planning to do it in pure python.

Please keep pydantic data validation in mind wherever it makes sense.

Why not use serde-json for even faster json parsing ?

@sansyrox
Copy link
Member Author

@baseplate-admin , because the last time I checked serde-json required types in the rust side/compile side. However, we want to have an ability to serialize and deserialize without having compile-time typing.

Are you aware if it is possible to achieve this now?

@baseplate-admin
Copy link

Apologies. My knowledge in rust is modest at best.

My finds came from OrJSON. As OrJson uses serde_json

https:/ijl/orjson/blob/c2514ab9ecdb9d42945f3fc6e18475b88bef8ec2/Cargo.toml#L59-L60

I was thinking to apply the logics at rust backend level to remove the python overhead.

@StandinKP
Copy link

@sansyrox Is this Roadmap updated for this year? What are we planning on adding this year?

@sansyrox
Copy link
Member Author

Hey @StandinKP πŸ‘‹

I have an updated Roadmap, will publish by next week :D

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

No branches or pull requests

4 participants