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

Get Hyper-Express to feature parity with Express #244

Closed
9 tasks
smolinari opened this issue Apr 2, 2024 · 2 comments
Closed
9 tasks

Get Hyper-Express to feature parity with Express #244

smolinari opened this issue Apr 2, 2024 · 2 comments

Comments

@smolinari
Copy link

smolinari commented Apr 2, 2024

Hi Kartik,

I hope I'm not to intrusive with this issue. But, pursuant to our short discussion, I'd like to start this issue to get the ball rolling and to offer a focal point for any other devs and the Hyper-Express community in general, who wish to help you in the endeavor.

The goal is to get feature parity to Express, so that its ecosystem can also be used with Hyper-Express. This also includes the Nest ecosystem (and my personal interest tbh), which just happened to pass Express in Github stars. Both have over 63k stars.

I'll leave it up to the more knowledgeable of you to work out this list. But, this is a start.

Feature parity work with Express:

  • Middleware
    • Task 1
    • Task 2
  • Routing
    • Task 1
    • Task 2
  • Other minor/ associated features
    • Minor feature 1
    • Minor feature 2

It might even be better to work them into their own issues, if the work can be broken down into smaller tasks. I'd be glad to help with that kind of project work, if desired. Just let me know. 😁

Scott

@kartikk221
Copy link
Owner

Hey, so the next major hurdle for achieving feature parity with Express would be the routes / middlewares system.
Currently, HyperExpress takes a different approach from Express.js where Middlewares are executed in a hierarchical manner (Most shallow path to most deep) and Handlers are not middlewares and cannot be yielded. This system can be re-written to match Express.js but would be a major breaking change and likely make existing applications built on top of hyper-express ineligible for uprade unless major work to validate all routes of an existing application were done since the fundamental execution order changes.

Furthermore, there are other minor / associated features which would need to be added although those are not a big issue and not major blockers.

I initially wrote and actively use hyper-express within my own products and a lot of our earlier user and adopters have been around since v4 since which most major changes have not been extremely breaking but rather property renames, removals, schematic changes etc etc.

With the above in mind, the project has attained its identity as "similar" / "familiar" to Express rather than drop-in replacement.

I have also just been extremely busy with my business hence have not had too much time to put towards the next major version.

I think the first step would be to create a discussion which is strictly maintained to contain missing features or incompatibilities between hyper-express and express as mentioned in #218 (reply in thread)

From here onwards, the community can gradually begin to plan and make PRs which can reduce the gap while ideally prioritizing less / non-breaking features first and lower difficulty vs. the more breaking and relatively complex changes such as re-writing the routing system.

I am not sure If you already have a discussion for the above or would like me to make one but I would be glad to provide as much support as I can within limited available time.

@smolinari
Copy link
Author

You can move this issue to discussions if you like. That would be great.

Would be nice too, if you could at least break down the list of tasks roughly to the best of your knowledge to get the ball rolling. I've enhanced the list from what you wrote above.

Thanks.

Scott

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

2 participants