Skip to content

Initial Release #28

Description

@mikeal

In the TC meeting today we came up with a vision for the first release.

First, a few assumptions we've internalized that probably need to be stated for this to make sense.

  • Node is pretty damn stable already. There are huge companies with it in production, 100K+ modules, etc. It is already far more stable that its pre-1.0 release tag suggests.
  • Releasing more frequently leads to a more stable product, not a less stable product.
  • The entire ecosystem uses semver while node uses a confusing even/odd release structure.

If people disagree with any of those assumptions then they certainly won't agree with anything the TC determined for the initial release.

So, first release of io.js:

  • January 13th (Fedor's Birthday!) target date.
  • Will be 1.0-alpha1, with alpha releases continuing until 1.0.0.
  • Switching to semver.
  • We will be taking new v8 releases as fast as possible moving forward.
  • Trying to get to a weekly release cycle. Which version number is incremented each week is determined by the changes and whether or not they are breaking. Again, following semver.

Some questions still left open:

  • Are there any changes other than dep upgrades and fixes required for 1.0?
  • Is build confident we can have enough automation in place to hit this date.
  • Is the plan to have the installer install an iojs binary and an alias to node?

Activity

  1. SomeoneWeird commented on Dec 2, 2014

    @SomeoneWeird
    Member
    We will be taking new v8 releases as fast as possible moving forward.
    

    Absolutely +1.

    Is the plan to have the installer install an iojs binary and an alias to node?
    

    I think this should work, but it should check if node is already installed and not alias if it is.

  2. creationix commented on Dec 2, 2014

    @creationix
    Contributor

    I have a concern and a question.

    First to me it seems that weekly is too often. I understand you're trying to balance the insanely slow pace of recent node development, but don't flip to the other extreme. How much effort is it to cut a release? I know for me a luvi release takes a couple hours, iojs is a bit more involved, but also has a lot more supporting scripts.

    Second, I love the idea of pulling in V8 changes as fast as possible. What ever happened to the idea to create a new C API layer that shields addon authors from V8 API changes? I could offer some help here but I thought Trevor has some ideas here and was farther along. Would this need to get in before a 1.0.0 release or could it just be a 1.1.x thing or 2.0.x thing?

  3. domenic commented on Dec 2, 2014

    @domenic
    Contributor

    Will be 1.0-alpha1, with alpha releases continuing until 1.0.0.

    I am curious what differentiates 1.0.0-alpha.1 from 1.0.0? Perhaps that is your

    Are there any changes other than dep upgrades and fixes required for 1.0?

    I am leery of a long series of alpha/beta/gamma releases before a true, semver-ful 1.0.0 is released. All in all I would prefer a 1.0.0 release as the initial release---unless the TC anticipates actually making breaking changes in the subsequent releases.

  4. indutny commented on Dec 2, 2014

    @indutny
    Member

    @creationix the idea with shielding C API was rejected. V8 should stay more stable in next versions, as they have finished their major API migration.

  5. mikeal commented on Dec 2, 2014

    @mikeal
    ContributorAuthor

    How much effort is it to cut a release?

    The goal is zero and that everything is entirely automated. Without that I don't think weekly releases are practical at all.

  6. cjihrig commented on Dec 2, 2014

    @cjihrig
    Contributor

    Wasn't nan at least partially blessed in node-forward for shielding addon developers as well?

  7. chrisdickinson commented on Dec 2, 2014

    @chrisdickinson
    Contributor

    If people disagree with any of those assumptions then they certainly won't agree with anything the TC determined for the initial release.

    Curious: what does this mean for changing core primitives, like streams, going forward? Are they effectively locked now?

    Other questions / concerns:

    • How many prior major versions will be supported by core?
    • How much lead time will the community have before a new major version drops? Is it possible to move towards a canary release system where one week's release is last week's canary, so we give folks who are instrumenting Node (cough cough @wraithan) enough time to adapt?
  8. mikeal commented on Dec 2, 2014

    @mikeal
    ContributorAuthor

    @domenic I would be cautious about a brand new build, release and test system. I'd like to put out some alphas that people can use just to shake out any bugs and build confidence before we stamp something 1.0.

  9. espadrine commented on Dec 2, 2014

    @espadrine

    I wonder what the plan is regarding the adoption of ES6 features. Specifically, modules and promises. iojs currently has competing technologies, and it could potentially transition. Would that trigger a major version increment, and therefore, be the 2.0.0 version?

  10. ghostbar commented on Dec 2, 2014

    @ghostbar
    Contributor

    @mikeal agreed, I think the -alpha makes sense for watching out for new bugs, even a -rc0,1,2,3...

  11. therebelrobot commented on Dec 2, 2014

    @therebelrobot
  12. mikeal commented on Dec 2, 2014

    @mikeal
    ContributorAuthor

    @chrisdickinson well... the last few changes to streams required full backward compatibility (or at least what we thought was fully compatible) because of the mountain of existing dependencies. I would expect additional changes to run through the same gamut, although with semver we do have a way to signal that a compatibility break is happening, but there is still going to be a big cost benefit analysis on breaking something so depended upon.

    that said, you could see a future where moving toward or being more compatible with the upcoming streams work @domenic is doing as being the kind of benefit that might push a breaking change over the edge.

  13. basicallydan commented on Dec 2, 2014

    @basicallydan

    I think an alias to node would be useful but not by default. An uneducated user who doesn't know about the relationship between iojs and Node might not be expecting it.

  14. creationix commented on Dec 2, 2014

    @creationix
    Contributor

    Regarding the locked primitives. I highly recommending splitting the code into core and sugar like I did for luvit. The luv module is just libuv bindings for lua. We could have just libuv bindings for v8. Then the luvi project is luajit + luv + openssl + other C libraries, but zero API sugar. Very C-like APIs. This would be the mythical no.js project. Then luvit is the full node.js style APIs with node streams, event emitters, etc all implemented in pure lua on top of luvi. That's the equivalent to node.js/iojs level of abstraction.

    I know this is harder for node because of how optimization was done mixing the lines between bindings and sugar, but I still think it's the only viable future to preserve the current APIs that everyone uses and enable a clean way to explore other styles while still reusing the C core of node.

  15. mikeal commented on Dec 2, 2014

    @mikeal
    ContributorAuthor

    How many prior major versions will be supported by core?

    This is going to end up depending on the level of adoption in each version and how many contributors we end up bring on board. It's not something we should commit to now except to say that "until we say we're deprecating support of a release all releases are supported."

    How much lead time will the community have before a new major version drops? Is it possible to move towards a canary release system where one week's release is last week's canary, so we give folks who are instrumenting Node (cough cough @wraithan) enough time to adapt?

    We want nightly builds, and this weekly swap is probably also a good idea.

  16. 78 remaining items

  17. guybrush commented on Dec 9, 2014

    @guybrush

    looking forward to use my n-semver with semver'ed io.js :)

  18. Nicolab commented on Dec 13, 2014

    @Nicolab
    Contributor

    io.js takes a good direction, exciting!

  19. Solido commented on Jan 8, 2015

    @Solido

    I was in doubt with node.js but I started to learn ES6 just by confidence in IO.JS to be the next platform

  20. siliconprime-tung commented on Jan 14, 2015

    @siliconprime-tung

    will it be released today?

  21. mathiasbynens commented on Jan 14, 2015

    @mathiasbynens
    Contributor

    @siliconprime-tung: It has been released already! Get io.js v1.0.1 here: https://iojs.org/

  22. MoOx commented on Jan 14, 2015

    @MoOx

    This issue should be closed.

  23. chrisdickinson commented on Jan 14, 2015

    @chrisdickinson
    Contributor

    Congrats all! Closing this as fixed. ❤️

  24. davidhuang3 commented on Jan 14, 2015

    @davidhuang3

    Glad to see it.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions