-
-
Notifications
You must be signed in to change notification settings - Fork 16.2k
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
io.js support #2539
Comments
3.20.0, the last 3.x that will ever have an enhancement like this, will be released 2/18. This will not make it into the 3.x series, but that series does support Node.js 0.12, so it'll support io.js as long as it functions with Node.js 0.12 code. |
Referenced io.js ticket was closed. Express may never officially support io.js now. |
@dougwilson I'm not really sure that was the correct issue for this? I read through the discussion throughly and nothing there was either actionable or a good choice, were you thinking of nodejs/node#493 / nodejs/node#491?
Why, are we doing anything that dirty in the internals? |
Yeah, why does this block support? What does support entail? |
That line of reasoning means that Express clearly functions on Node.js 0.4, since there's no practical reason Express would need to express supported versions. |
Realistically as long as Node.js and io.js ship with built-in modules (like |
@Fishrock123 for my above statement, is this a failure of io.js or npm? Though I have been bringing up this issue since November, I have never gotten a real answer and basically refuse to have anything to do with io.js if I cannot declare the versions of those built-in modules I support (I don't care about the runtime, only those built-ins). |
And if nodejs/node#943 is merged, that just removed the "Backwards-compatibility is guaranteed." from the Stable modules, basically re-enforcing that I now need to declare the versions of those built-ins I am compatible with. |
Probably an oversight of both npm and node/io.js
Versions of the modules isn't exactly possible. Is there a good reason to not support io.js if you support node 0.12? Is this just an issue of what you mean by "support"? If you are always going to be supporting node anyways, wouldn't
Not really, all that is doing is clarifying long ambiguous language. See the revised stability definition:
(Just like API Frozen is a silly idea in userland, it is also usually a silly idea in core.) |
Only if there is a statement somewhere from Joyent saying there will never be a >= 1.0.0 of Node.js or from npm saying they will never allow Node.js to be >= 1.0.0. Otherwise, all that is is a declaration of a Node.js version, nothing to do with io.js.
I can read, yes. It still stand: how can I declare that I don't work with io.js 2.x (or, the more important, that eventually I don't work with io.js 1.x)? All I can do is declare Node.js versions in |
By the way, "support" means "I care"; as in, if I don't support it, I don't care about it. I won't test anything with io.js, I don't run io.js, I don't particularly care about issues filed were it doesn't work on io.js, etc. |
Express will absolutely never support io.js in any near-term time frame: nodejs/node#491 (comment) |
Doug, this is angrysadmaking. iojs is compatible. It just works. It'd be nice to express this dependency, but ... the fine grains aren't there yet. But the 'it just isn't supported' is upsetting. (doubly so because 'support' means 'works' in most people's minds) |
I'm planing to talk with @Fishrock123 today, so we'll see how it plays out. For now, you'll have to go by the "if io.js supports Node.js 0.12 code, then yes, express works on io.js as long as that's the case". |
For now, we will trust that Node.js 0.12 code is compatible with io.js 1.x. I will work on a more extensive plan for the future, but the unfortunate thing is Express depends on a lot of intricate internal details of core modules (like which events fire when and exactly what order do they fire in, which exactly do boolean flags flip, etc.) that with the high speed at which core modules are being refactored, it's hard to keep with with the current io.js support policy as "just upgrade to the latest version". I plan to get together a repo that will contain Express and every single dependency in a way where all tests can be run together. I can then run this against the target versions and have a better idea what the support is like. As an example, io.js 1.4 just came out today. As it stands, there would be no reasonable way to know if Express worked with that version without a few day's work. With the above repo plan, it should only take a few minutes. |
Hm. Tests pass = works? But if io.js breaks backward compat, it will be 2.0.. |
Right, but there isn't a way to assert on that, so I'll probably just note what the tested versions of io.js are somewhere in the readme. |
But otherwise yes, tests pass for Express + every single sub dependency will = works, because io.js releases too often for me to read through all their source code every release to know if stuff works or not by that means. |
@aredridel I am concerned with this comment and have talked to @Fishrock123 today and am trying to put together some kind of plan on io.js support. |
Thank you! Even if it's just "we test against io.js latest and tests stay it works", that seems pretty reasonable. |
Perhaps :) If you were going to "support io.js" what would your method be :)? |
Add |
Adding |
How about all our tests pass, and we can start working to get iojs testing going on for all those dependencies? And the promise to actually take iojs bugs on the latest iojs seriously, as seriously as on node? |
I think it mostly comes down to "will we accept the bug report?" |
Yes, bug reports are accepted, as in the first post (#2539 (comment)). The tests pass the last time I ran them (on 1.2.0). |
Yeah. It might be a lot more useful to explain what support for io.js looks like. And, in fact, equivalent for node. What's tested? What's not? On what versions? Give people the information they need for themselves, and accept bug reports as support. |
FYI as an update here, I have completely tested express and every single dependency against io.js 1.2.0 and everything seemed fine, tests passed, etc., so I think we can now say at least 1.2.0 works fine. |
Oh that's awesome! |
Also (sorry, it was so busy today I didn't have time to write this up until now) I have been able to determine what an io.js support policy will look like. Since we as a module cannot declare what version of io.js we are compatible with, at this current time we will simply be compatible will all versions. This means from a testing perspective, since io.js says it follows semver, we will always test against 1.0.x, to ensure we do not end up requiring a feature added afterwards (since we cannot declare a minimum version). We will also test again the latest 1.x.x at the time to reduce the needed testing matrix. This means that if I were to add io.js testing to Express right now, I would add v1.0 and v1.5 to the matrix and leave it at that. We will also accept all io.js bug reports and will check to ensure that any new code works on v1.0 and v1.latest. |
Alright, support landed and we are even testing in the two CIs. |
This is a tracking issue for when "official" io.js support comes to Express 4.x and 3.x. As of now, support for io.js is not completely known, but if there are issues, please open a new issue and they will be fixed, even before "official" support.
Official support will not arrive until nodejs/node#269 or something similar is resolved; Express needs to be able to specify engine compatibility on installation.
The text was updated successfully, but these errors were encountered: