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

Release 5.0 #2237

Open
wants to merge 57 commits into
base: 4.x
from

Conversation

Projects
None yet
@dougwilson
Member

dougwilson commented Jul 14, 2014

This is a tracking issue for release 5.0.

5.0.0-alpha.6 published on npm

I am trying to give better visibility for upcoming changes and so am trying out making a PR for a release here, pulling from the official next release branch into 4.x. This allows for the current pending changes to be easily visible.

Please keep feature requests in their own issues

I'm also leaving this PR unlocked so people can make comments/etc. and we'll see how it goes :) If you want to make a comment on a particular change, please make the comment in the "Files changed" tab so comments are not lost during a rebase (they will occur frequently has 4.x progresses).

The goal of Express 5 is to be API tweaks & the removal of all code from the Express repository, moving into components in the pillarjs project (https://github.com/pillarjs), providing at least basic support for promise-returning handlers and complete HTTP/2 functionality. Express 5 would become a "view into pillarjs" and would be an arrangement of these components.

List of changes for release:

  • Add support for Promises in all handlers #2259
  • Bring back app.router which is just generally useful for directly calling to the router
    • Make sure 3.x-style app.use(app.router) does not explode
  • Fix views to resolve paths async #2653
  • Make query parser option default to 'simple' #3361
  • Make req.host actually return the host #2179
  • Make req.query a getter instead of added by middleware #2215
  • Make res.render always async callback, to hide sync view engines #2668
  • Make res.render use the default engine even when an extension was found #2708
  • Make res.sendFile use the "etag" application setting #2294
  • Make res.status throw on invalid argument type #2795 #2797 #3111 #3137
  • Make express.static use the "etag" application setting #2317
  • New path matching syntax #2057 #2173
  • Provide separate locals and options to view engine #2648
  • Remove Express 3.x middleware error stubs #3217
  • Support Node.js core HTTP/2 implementation
  • Support non-core HTTP prototypes (e.g. http2, shot and others)
  • Use mime-types instead of mime
  • Use path-is-absolute module for absolute path detection #2620

List of deprecated things removed:

  • Leading : in name for app.param(name, fn)
  • app.del
  • app.param(fn)
  • req.acceptsCharset
  • req.acceptsEncoding
  • req.acceptsLanguage
  • res.json(obj, status)
  • res.json(status, obj) #2939
  • res.jsonp(obj, status)
  • res.jsonp(status, obj) #2940
  • req.param()
  • res.redirect(url, status) #2941
  • res.send(body, status)
  • res.send(status)
  • res.send(status, body) #2942
  • res.sendfile
  • res.vary() (i.e. no arguments) #2943

List of things to refactor (still provided by express):

  • Better res.cookie and general cookie reading/setting (new keygrip and cookies modules; new req.cookies or such)
  • Have router use path-match extraction instead of path-to-regexp directly
  • Move all related logic using proxy-addr to new module (ex host, ip, etc.) jshttp/proxy-addr#2
  • Move prototype properties to own repo #2432
  • Move Router to it's own repo #2411
  • Move View and related to own repo #2217

Testing this release

If you want to try out this release, you can install it with the following command:

$ npm install expressjs/express#5.0

Owners/collaborators: please do not merge this PR :)

@dougwilson dougwilson added 5.x labels Jul 14, 2014

@onidnalbj

This comment has been minimized.

Show comment
Hide comment
@onidnalbj

onidnalbj commented Jul 14, 2014

Great~!!

@jonathanong

This comment has been minimized.

Show comment
Hide comment
@jonathanong

jonathanong Jul 14, 2014

Member

here's some mostly refactor-based changes i'd like to see. AFAIK you've got this covered @dougwilson, but let me know if you need help:

  • refactor the router to a separate repository
  • refactor the view system to a separate repository. maybe templation, maybe something else more backwards compatible
  • finish next versions of cookies and keygrip and use them in Express
  • finish refactoring body-parser into the request-body module before including it here
  • refactor the router to use path-match or something else between path-to-regexp and the router itself
  • refactor proxy-addr. i just emailed npm to ask for the trust package
Member

jonathanong commented Jul 14, 2014

here's some mostly refactor-based changes i'd like to see. AFAIK you've got this covered @dougwilson, but let me know if you need help:

  • refactor the router to a separate repository
  • refactor the view system to a separate repository. maybe templation, maybe something else more backwards compatible
  • finish next versions of cookies and keygrip and use them in Express
  • finish refactoring body-parser into the request-body module before including it here
  • refactor the router to use path-match or something else between path-to-regexp and the router itself
  • refactor proxy-addr. i just emailed npm to ask for the trust package
@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Jul 14, 2014

Member

All great stuff @jonathanong :) I added all but the body-parser one up there, because I really want to add that in a 4.x release, but time-dependent :D

Member

dougwilson commented Jul 14, 2014

All great stuff @jonathanong :) I added all but the body-parser one up there, because I really want to add that in a 4.x release, but time-dependent :D

@Fishrock123 Fishrock123 added this to the 5.x milestone Aug 1, 2014

@Fishrock123 Fishrock123 added the pr label Sep 29, 2014

@ilanbiala

This comment has been minimized.

Show comment
Hide comment
@ilanbiala

ilanbiala Oct 20, 2014

How close is this to a prerelease? I just want to know if you think it's stable enough to start playing around with for future projects.

ilanbiala commented Oct 20, 2014

How close is this to a prerelease? I just want to know if you think it's stable enough to start playing around with for future projects.

@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Oct 20, 2014

Member

So you're always welcome to play around with npm install visionmedia/express#5.0 (and you can add "express": "visionmedia/express#5.0" to your package.json if you really wish). If you are looking for something published to npm, just ask :) No one has really ask for it yet is all. Would you like an alpha or something published to npm? I can do it right after 4.10 (which is due something this week) so it'll include 4.10 stuff.

Member

dougwilson commented Oct 20, 2014

So you're always welcome to play around with npm install visionmedia/express#5.0 (and you can add "express": "visionmedia/express#5.0" to your package.json if you really wish). If you are looking for something published to npm, just ask :) No one has really ask for it yet is all. Would you like an alpha or something published to npm? I can do it right after 4.10 (which is due something this week) so it'll include 4.10 stuff.

@rlidwka

This comment has been minimized.

Show comment
Hide comment
@rlidwka

rlidwka Oct 20, 2014

Member

If you are looking for something published to npm

I'm looking for the router to be published to npm for the looong time now. :)

Member

rlidwka commented Oct 20, 2014

If you are looking for something published to npm

I'm looking for the router to be published to npm for the looong time now. :)

@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Oct 20, 2014

Member

@rlidwka the docs are just about complete and I was just porting the recent changes to the router in here over yesterday :) I also really want it, haha

Member

dougwilson commented Oct 20, 2014

@rlidwka the docs are just about complete and I was just porting the recent changes to the router in here over yesterday :) I also really want it, haha

@Fishrock123

This comment has been minimized.

Show comment
Hide comment
@Fishrock123
Member

Fishrock123 commented Oct 20, 2014

👍

@ilanbiala

This comment has been minimized.

Show comment
Hide comment
@ilanbiala

ilanbiala Oct 20, 2014

Can someone link me to the docs for the new router?

ilanbiala commented Oct 20, 2014

Can someone link me to the docs for the new router?

@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Oct 20, 2014

Member

@ilanbiala the 5.x router is the same as the 4.x router, so the main docs can be found at http://expressjs.com/4x/api.html#router ; the documentation talked about above is basically a rewrite of them to live with the extracted router.

Member

dougwilson commented Oct 20, 2014

@ilanbiala the 5.x router is the same as the 4.x router, so the main docs can be found at http://expressjs.com/4x/api.html#router ; the documentation talked about above is basically a rewrite of them to live with the extracted router.

dougwilson added some commits Sep 25, 2017

@vvo

This comment has been minimized.

Show comment
Hide comment
@vvo

vvo Oct 19, 2017

thanks to IBM

Wat?

@dougwilson is doing amazing work I saw commits recently.

vvo commented Oct 19, 2017

thanks to IBM

Wat?

@dougwilson is doing amazing work I saw commits recently.

@alamin3000

This comment has been minimized.

Show comment
Hide comment
@alamin3000

alamin3000 Oct 19, 2017

I think the issue isn't about who is doing or not doing good job on this project. I am sure everyone involved in this project is doing their best since it is backed by big players in the industry. And it is indeed very important project in this community.

However the issue is as a normal developer it is very frustrating when we can't use latest features and don't know how long to wait. I have complained about this before that we don't even know the timeline (dates) for releases. Even nodejs has timeline roadmap.

Honestly technologies are moving too fast, specially in ES and Node realm. So progress in the ExpressJS is in that prospective is disappointing. Again, from our (developers) prospective. NOT from the team who is involved in it assuming they are doing their best.

I'm not looking for alternative to Express or even how to start working and Express 4 and then migrate to version 5.... I'm strictly talking about/referring to Express 5.

alamin3000 commented Oct 19, 2017

I think the issue isn't about who is doing or not doing good job on this project. I am sure everyone involved in this project is doing their best since it is backed by big players in the industry. And it is indeed very important project in this community.

However the issue is as a normal developer it is very frustrating when we can't use latest features and don't know how long to wait. I have complained about this before that we don't even know the timeline (dates) for releases. Even nodejs has timeline roadmap.

Honestly technologies are moving too fast, specially in ES and Node realm. So progress in the ExpressJS is in that prospective is disappointing. Again, from our (developers) prospective. NOT from the team who is involved in it assuming they are doing their best.

I'm not looking for alternative to Express or even how to start working and Express 4 and then migrate to version 5.... I'm strictly talking about/referring to Express 5.

@stigok

This comment has been minimized.

Show comment
Hide comment
@stigok

stigok Oct 19, 2017

Please stop unnecessary discussion in this PR. It would be nice to be notified of actual updates to the progress.

stigok commented Oct 19, 2017

Please stop unnecessary discussion in this PR. It would be nice to be notified of actual updates to the progress.

@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Oct 19, 2017

Member

Please, I'm sure there is a better forum to have this conversation in. If you want to know what is currently happening with Express 5 at this very moment, the router module, which is the basis of Express 5 routing engine, is currently building up the 2.0 release, which is what Express 5.0 will be based on (PR pillarjs/router#60). This encountered a bug in path-to-regexp, which got fixed and working through that upgrade for the 2.0 router (PR pillarjs/router#42). I pinged about the state of the path-to-regexp PR just a couple hours ago.

Member

dougwilson commented Oct 19, 2017

Please, I'm sure there is a better forum to have this conversation in. If you want to know what is currently happening with Express 5 at this very moment, the router module, which is the basis of Express 5 routing engine, is currently building up the 2.0 release, which is what Express 5.0 will be based on (PR pillarjs/router#60). This encountered a bug in path-to-regexp, which got fixed and working through that upgrade for the 2.0 router (PR pillarjs/router#42). I pinged about the state of the path-to-regexp PR just a couple hours ago.

@alanpurple

This comment has been minimized.

Show comment
Hide comment
@alanpurple

alanpurple Oct 19, 2017

sorry for disturbs, all deleted

alanpurple commented Oct 19, 2017

sorry for disturbs, all deleted

@alamin3000

This comment has been minimized.

Show comment
Hide comment
@alamin3000

alamin3000 Oct 19, 2017

Is it even remotely possible to give update on dates when express 5 will be RC or release?. All I get is feature updates. I thought express is under node foundation incubator program and would have better management outside of just doing coding. Call me jerk or what, just an approximate time when we can expect to get released. Please.

alamin3000 commented Oct 19, 2017

Is it even remotely possible to give update on dates when express 5 will be RC or release?. All I get is feature updates. I thought express is under node foundation incubator program and would have better management outside of just doing coding. Call me jerk or what, just an approximate time when we can expect to get released. Please.

@dougwilson

This comment has been minimized.

Show comment
Hide comment
@dougwilson

dougwilson Oct 19, 2017

Member

I'm not sure anyone is getting paid to work on this, and so it just falls under whenever there is time to do the next task. If there is a better methodology to do this or you have some tips on how to do release planning and such, please let us know! For example, how do we come up with a date to release?

Member

dougwilson commented Oct 19, 2017

I'm not sure anyone is getting paid to work on this, and so it just falls under whenever there is time to do the next task. If there is a better methodology to do this or you have some tips on how to do release planning and such, please let us know! For example, how do we come up with a date to release?

@alamin3000

This comment has been minimized.

Show comment
Hide comment
@alamin3000

alamin3000 Oct 19, 2017

If this is for sure, that this project is not under some kind of organization where compensation is available for developers and it is as you say whenever there is time, then I drop all my complain. Honestly if is just another open source side project by some smart developers, then I don't expect timeline or anything. I will delete my comments soon.

alamin3000 commented Oct 19, 2017

If this is for sure, that this project is not under some kind of organization where compensation is available for developers and it is as you say whenever there is time, then I drop all my complain. Honestly if is just another open source side project by some smart developers, then I don't expect timeline or anything. I will delete my comments soon.

@vkarpov15

This comment has been minimized.

Show comment
Hide comment
@vkarpov15

vkarpov15 Oct 19, 2017

@dougwilson it really sucks you're not getting paid to work on express. I'd love to help out with managing the project and figuring out how how to monetize if you're interested. So many companies, mine included, depend on express and want to see the project succeed.

vkarpov15 commented Oct 19, 2017

@dougwilson it really sucks you're not getting paid to work on express. I'd love to help out with managing the project and figuring out how how to monetize if you're interested. So many companies, mine included, depend on express and want to see the project succeed.

@mikeal

This comment has been minimized.

Show comment
Hide comment
@mikeal

mikeal Oct 19, 2017

Member

I wouldn't assume that just because Doug doesn't have job working on express full-time that it's what he wants :)

Doug is a very accomplished developer who has a lot of options.

Just because other people want Doug to work on the thing they need doesn't mean that it's the best thing for Doug to be doing with his life. Open source is people, and people get to make the decisions that are going to make them the most happy and fulfilled, not what is best for you :)

If you want the release to get out quicker, contributions are welcome 😃

Member

mikeal commented Oct 19, 2017

I wouldn't assume that just because Doug doesn't have job working on express full-time that it's what he wants :)

Doug is a very accomplished developer who has a lot of options.

Just because other people want Doug to work on the thing they need doesn't mean that it's the best thing for Doug to be doing with his life. Open source is people, and people get to make the decisions that are going to make them the most happy and fulfilled, not what is best for you :)

If you want the release to get out quicker, contributions are welcome 😃

@vkarpov15

This comment has been minimized.

Show comment
Hide comment
@vkarpov15

vkarpov15 Oct 19, 2017

Just putting a possible option out there, no pressure, but I'd appreciate if Doug spoke for what Doug wants rather than a third party. No way Express should be a full-time job, lib is not nearly complex enough to justify that, but the lib is stuck in 2014 and I'm happy to help :)

vkarpov15 commented Oct 19, 2017

Just putting a possible option out there, no pressure, but I'd appreciate if Doug spoke for what Doug wants rather than a third party. No way Express should be a full-time job, lib is not nearly complex enough to justify that, but the lib is stuck in 2014 and I'm happy to help :)

@wesleytodd

This comment has been minimized.

Show comment
Hide comment
@wesleytodd

wesleytodd Oct 19, 2017

Member

NOTE: @dougwilson I think once this conversation has run it's course it would be worth just deleting all of these comments, including mine.

For anyone wondering, there is a TON of active work happening in the express community. If you are interested you can follow some of the more active repos (links below). Also, feel free to check out the discussions repo for past meetings of the CTC (which admittedly has not happened in a while). Supporting such a large community is a big job, and luckily @dougwilson is nice enough to commit a ton of time to it. But that being said, it is an open community that is welcome to new people. So if you have suggestions or PR's you want to open, then BRING IT :)

We all need to make sure we focus on more than just the major version number, and the "shiny new things". The strength of express it not in it's speed of feature development, but in it's reliability for its users. So lets make sure to focus on if it serves it users, not how fast the major versions increment.

Repos to follow:
https://github.com/expressjs/express
https://github.com/pillarjs/router
https://github.com/pillarjs/path-to-regexp
https://github.com/expressjs/session

Member

wesleytodd commented Oct 19, 2017

NOTE: @dougwilson I think once this conversation has run it's course it would be worth just deleting all of these comments, including mine.

For anyone wondering, there is a TON of active work happening in the express community. If you are interested you can follow some of the more active repos (links below). Also, feel free to check out the discussions repo for past meetings of the CTC (which admittedly has not happened in a while). Supporting such a large community is a big job, and luckily @dougwilson is nice enough to commit a ton of time to it. But that being said, it is an open community that is welcome to new people. So if you have suggestions or PR's you want to open, then BRING IT :)

We all need to make sure we focus on more than just the major version number, and the "shiny new things". The strength of express it not in it's speed of feature development, but in it's reliability for its users. So lets make sure to focus on if it serves it users, not how fast the major versions increment.

Repos to follow:
https://github.com/expressjs/express
https://github.com/pillarjs/router
https://github.com/pillarjs/path-to-regexp
https://github.com/expressjs/session

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment