ruby-concurrency/concurrent-ruby

Consider calling it 1.0 sooner?

jrochkind opened this issue · 2 comments

I am already using concurrent-ruby in production apps myself, which I feel comfortable doing based on observed/tested robustness of the code; sufficient features for what I need; observed attention to backwards compat concerns already in your development; and your encouragement that it is indeed suitable for production use already.

I understand that you're waiting on more features for a 1.0 release -- but if people are using it in production already (and I think it makes sense to do so), would it make sense to call it 1.0 already, with the features coming in a future 1.x (if backwards compat) or 2.0?

http://semver.org recommends:

How do I know when to release 1.0.0?

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you're worrying a lot about backwards compatibility, you should probably already be 1.0.0.

But making it 1.0 would be an active commitment to maintain backwards compat until 2.0 -- maybe you're not quite ready to make that commitment? But making that commitment might make people more comfortable using the software in production -- a 0.x release sends the message "not ready for production", which I think is not actually the message you intend to be sending? (And I think intentionally sending the message 'ready for production' does responsibly require a commitment to maintaining backwards compat to some extent)

I think since 0.7.0 was probably when it's realistic to consider a ready-for-production 1.0 release. (Especially with addition of fallback policies for ThreadPools). And I think the API has stabilized a lot in 0.7 and 0.8 for the features that are there, and it may be reasonable now to commit to backwards compat?

Just a suggestion for discussion, I realize there may be reasons!

Thank you, @jrochkind, for the suggestion. I think you make a very good point. Our 1.0 roadmap has been very loose but it's time we get more specific. None of the in-progress features are essential. They are mostly additive. For me, the three big things that are essential for a 1.0 release are:

  • Verify that the new setup for C extensions introduced in 0.8.0 is working for the community and they way we want to keep the gems structured moving forward
  • Complete the internal refactoring of out "future-like" abstractions proposed by @pitr-ch in #176
  • Decide how and when we will merge the thread_safe gem, as per the discussion in #230 (I don't think this merge has to happen before 1.0, but we should all agree first)

Thoughts? @pitr-ch @mighe @chrisseaton @lucasallan @obrok @rkday

Moved to #257