-
Notifications
You must be signed in to change notification settings - Fork 416
Final 1.0 Roadmap #257
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
Comments
Have you thought about setting a timescale on this? Do we want 1.0 in a month? Three months? A year? I think the most important part of 1.0 will be correctness. We need to set our reputation from our 1.0 release. I'm going to do what I've been saying I'll do for a while and set up some stress tests (and maybe some performance tests). I have some compute resources I can dedicate to this full time to help us catch the one-in-a-billion synchronisation errors I'm worried about. |
No specific timeline yet, but setting one is a good idea. My main goal here was to provide focus and clarity on what will be included. Having said that:
|
@tenderlove when is the next Rails release which would possibly use I agree I would also aim for correctness and quality. To achieve that I am toying with and idea to split concurrent-ruby into two parts. Rock solid core which we release as 1.0, moving rest (like actors since it still evolves, and agents since they are incomplete, parts still lacking documentation if left, etc.) to another gem
What do you think? What hidden problems are lurking here? I would like to go over every code going into 1.0 to see what problems I may find. After that I would like to bring up again the ack-ing process of PRs to keep core very stable. More eyes more problems caught. I am already reviewing all the PRs but sometimes they are merged before I get to them and that sometimes leads to more PRs being created which makes it harder to track. I think longer opened PRs are fine. I'll have some time in April. Could we postpone 0.9 to the end of April? I would like to use the time finish few undone things and to fix bugs we have reported in the issues. I am also thinking that I am postpone some of the actor updates (erlang supervisor) in favor of the Future/Promise #139 I would very much like to see that in 1.0 which means it must be in 0.9 too. @chrisseaton great you are starting with the performance testing. Are you also planning to compare Ruby vs C/Java extensions? I saw once some weird numbers around Ruby vs Java pools, I've forgot about that since then :/ I've filled few new issues for 0.9 and 1.0. I am excited that we will go 1.0 👍 |
Unknown. I haven't broached the subject with the rest of the team yet, but we need thread safe hashes (for caches), latch classes (for doing streaming stuff), and a LIFO queue would be really nice too (though I haven't checked if there is one in here). I think it will be an easy sell. I don't think any of us are interested in maintaining that stuff. Anyway, the soonest would be with Rails 5 which is sometime this year. IMO 1.0 isn't that important to us since I think at first we'd just use the gem to rm our Latch implementation. |
@pitr-ch Thoughts, in no particular order:
|
@pitr-ch How about I've also begun thinking about moving |
@jdantonio I agree to move Channel to the edge gem. |
@pitr-ch I've pushed back the target release dates. Again, these aren't written in stone. We'll push back as often as necessary to make sure we are confident in the code. The current release dates correspond to this summer's Marvel superhero movie release dates. :-) |
I am not native English so I may get it wrong but edge implies for me 'same stuff but newer and maybe unstable' where incubator implies 'making/trying out new stuff for core' the second seems more accurate to me. Thanks for pushing it back. About integration of #139 and #176. We already felt the pain of the scattered implementations with @iNecas when porting dynflow to |
I think the choice of the name for the edge/incubator/experimental gem should not be based on strict English-language semantics, but should be based on what will be most intuitive to most users. A quick search of Rubygems show that there are many gems with "edge" and "experimental" variants but none with "incubate" or "incubator" variants. Based on that trend I think Edge Variants:
Experimental Variants:
|
Edge sounds more 'stable' to me than 'experimental'. The experimental feels like "it's not in core, because it's kind of unstable', while the 'edge' means to me something like "here is where we're going with this gem. The API is not ready yet, but you can start trying that in your production: just don't expect API not changing". So +1 on the |
Ok lets follow the convention agreeing with @iNecas, |
I don't think that 4 May is a reasonable target for releasing 0.9. I've pushed it back to 15 May. |
Hi everyone - I said I'd be doing things for this release but haven't - I have a full time project that I manage now plus I'm up against my PhD deadline so there is little spare time. Let me know if there is something that you particularly need me to do and I'll make space for it. |
@chrisseaton No sweat. I appreciate how busy you are. I think @pitr-ch and I have a handle on this next release. What will be most valuable will be if you are able to help us stress test prior to the v1.0 release. |
It's been suggested (#246) that we're ready for a 1.0 release. People are using this gem in production and the Rails team is considering making
concurrent-ruby
a dependency of Rails (#251). I believe we've reached a level of maturity, stability, and performance that warrants a 1.0 release. Our community deserves it. So with that in mind I would like to set a final 1.0 roadmap. Because of the major refactoring of the global configuration object (#255) being undertaken--and the number of method calls this will deprecate--I want to have one more major release before 1.0. The goals for these releases will be:v0.9 (codename Ultron)
Target Date: 18 May 2015
This goal of this release is to stabilize the API. The core update in this release is the refactor of the global configuration object and the renaming of the global thread pools (#255). Other features are merged/in-progress updates (monotonic clock) and bug fixes.
Time.now
with new monotonic clock #256 -- @jdantonio)Depend onref
gem version 2.0 (@lucasallan)unlock
s outside of ensure block (unlock
s outside of ensure block #244 -- @jdantonio)Promise
becomes subclass ofIVar
(@jdantonio, @pitr-ch)v1.0.pre1 (codename Fury Road)
Target Date: 29 May 2015
The goal of this pre-release is to clean up everything that is being removed and create the first build of the edge gem. Pre-release and release candidate builds of the edge gem will occur simultaneously with pre-release and release candidate builds of the core gem. Only the version number will be different.
Actor
andChannel
to the edge gemthread_safe
gem #230 -- @jdantonio)concurrent-ruby-edge
v0.1.0.pre1 (PR Edge Gem #268)v1.0 (codename Ant-Man)
Target Date: 17 July 2015
This release will have no major API updates (with the possible exception of Actor). It will focus on stability, performance, and documentation.
Post 1.0
These items are not a priority right now. We will revisit them once 1.0 has been released. However, should any of these features get implemented before the 1.0 release we will consider merging them, so long as they are stable, well documented/tested, and we are comfortable with the API.
IVar
childen into one object (Consolidate IVar childen into one object #139)Target Dates
The target dates listed above are soft targets. Quality and correctness are tantamount. Everything else is secondary. We will adjust these target dates as necessary to ensure quality and correctness.
The text was updated successfully, but these errors were encountered: