Rescuing Resque again (2015)
words.steveklabnik.com
words.steveklabnik.com
Bringing outside "funding" can work for a while (see JRuby), but when the funding stops, it only underlines that the financial engine should really be carefully "designed" at the core of the OSS project, for things to be maintainable on the very long run. Otherwise history is bound to repeat itself.
Large projects can enjoy a large pool of contributors, sometimes with less risks of burn-out (often seen on small OSS projects around me at least), each contributing marginally, with a few paid core members (either directly or indirectly via by-products of a well paid activity), but for smaller projects like Resque, it's more likely a single individual full-time, paid by the project.
Again Sidekiq is really a great inspiration here for me (disclaimer: I plan to launch a "pro" offering for an OSS project I manage at http://kiba-etl.org/, and maintained another open-source for a while before which ultimately went to the cesspit).
That said, as you mentioned, this is pretty much the default state for the large, large part of open source projects. Something's got to give somewhere, eventually.
I see a number of people around me currently thinking about putting a "fair salary" at the core of their future open-source work. Often it completely changes what the delivered value should ultimately be etc (something I think Mike did think about - I believe).
Do you have thoughts on that approach?
I would also think that for a language, this is probably the best model (even if it failed with IronRuby, or if JRuby funding sources moved over time etc).
This is a fairly large endeavour, so it makes sense (at least I believe it!).
I feel for libraries & components (unlike languages maybe, as we said), at that specific scale, it can work very well.
Something I've wondered for awhile: what are the benefits of continuing Resque development, rather than focusing on making the migration path to Sidekiq as painless as possible? Put another way, what do you hear from users of Resque (like Shopify, as you mentioned in another comment) as the reason that they don't want to migrate off of it?
I was curious about this way back in 2012 when you announced work on Resque 2.0, and I had already made the switch to Sidekiq. I thought there must be a good reason to keep working on it, but I wasn't sure what it was, and I'm still not sure, so I figured I'd just ask.
Threading vs process-based jobs is a tradeoff. Threads are not universally better.
One employee has mentioned that they're willing to work on it: https://github.com/resque/resque/issues/1372#issuecomment-17...
Resque has been an example of how not to run an open source project for a while now. (3+ years).
We were working with Resque for a long while and had a lot of issues with performance.
Sidekiq is awesome and it's being well managed and releases are frequent.
But, after thinking about it, I think that Resque has it's place in the community, I definitely think that more than a single project doing this task is needed.
Many people are already familiar with Resque and trust it, those people should be taken care of.
I wish everyone involved a lot of luck with it.
Having said all that, one of the things that is most exciting to me about Elixir/Phoenix is that this sort of thing doesn't even come up, because a great and mature solution is built directly into the runtime.
> Resque has been an example of how not to run an open source project
> for a while now. (3+ years).
Resque is the story of a gem that _everyone_ uses, yet nobody invests in. So the maintainers burn out, and burn out, and burn out. Chris, Terence, Me... trying not to do that again ;)I remember you commented on my open source project (Resque plugin), I was impressed with the reach of how deep you want to go with this.
I agree with what you said 100%, everyone is using it and no one invests in it. That's why it's hard to maintain and that's why Sidekiq is "winning". Since money is a justified investment to any company for that project and it keeps the project going.
The threading model (LWPs vs. forking) should have no impact whatsoever on how quickly a CPU-intensive task completes.
Reading this: "Que's job table undergoes a lot of churn when it is under high load, and like any heavily-written table, is susceptible to bloat and slowness if Postgres isn't able to clean it up. The most common cause of this is long-running transactions, so it's recommended to try to keep all transactions against the database housing Que's job table as short as possible." I wonder what consistutes "high load". I throw hundreds of thousands of jobs atop Sidekiq often; if you're using the same database to manage your jobs, it seems that would dogpile your database (since each of those jobs is likely making db calls, and if it's a Rails app, you're typically using the same database)