4 ms·
I wrote Sidekiq, which Oban is based on. Congratulations to Shannon and Parker on shipping this! I had to make this same decision years ago: do I focus on Ruby
by mperham 8mo ago
I wrote Sidekiq, which Oban is based on. Congratulations to Shannon and Parker on shipping this!
I had to make this same decision years ago: do I focus on Ruby or do I bring Sidekiq to other languages? What I realized is that I couldn't be an expert in every language, Sidekiq.js, Sidekiq.py, etc. I decided to go a different direction and built Faktory[0] instead, which flips the architecture and provides a central server which knows how to implement the queue lifecycle internally. The language-specific clients become much simpler and can be maintained by the open source community for each language, e.g. faktory-rs[1]. The drawback is that Faktory is not focused on any one community and it's hard for me to provide idiomatic examples in a given language.
It's a different direction but by focusing on a single community, you may have better outcomes, time will tell!
[0]: https://github.com/contribsys/faktory https://github.com/contribsys/faktory
[1]: https://github.com/jonhoo/faktory-rs https://github.com/jonhoo/faktory-rs
- semiquaver 8mo agoIsn’t it more accurate to say that they are both based on Resque?
- simonw 8mo agoSidekiq credits BackgrounDRb and Delayed::Job and Resque as inspiration here: https://www.mikeperham.com/2022/01/17/happy-10th-birthday-sidekiq/#prehistory https://www.mikeperham.com/2022/01/17/happy-10th-birthday-si...
- bdcravens 8mo agoThe API is very close, but architecturally it's different. Additionally, delayed_job came before resque.
- mperham 8mo agoResque was the main inspiration, Sidekiq still provides compatibility with some of its APIs to this day. https://github.com/sidekiq/sidekiq/blob/ba8b8fc8d81ac8f57a556c3ba1c02252d9a672c7/lib/sidekiq/client.rb#L210 https://github.com/sidekiq/sidekiq/blob/ba8b8fc8d81ac8f57a55...
- enraged_camel 8mo agoMaybe you didn’t intend it this way, but your comment comes across as an attempt to co-opt the discussion to pitch your own thing. This is generally looked down upon here.
- BowBun 8mo agoKnowing Mike and his work over the years, that is not the case. He is a man of integrity who owns a cornerstone product in the Ruby world. He is specifically the type of person I want to hear from when folks release new software having to do with background jobs, since he has 15 years of experience building this exact thing.
- mperham 8mo agoIt was an off-the-cuff comment and probably not worded ideally but the intent was to discuss how Oban is branching off into a new direction for their business based on language-specific products while I went a different direction with Faktory. Since I came to the exact same fork in the road in 2017, I thought it was relevant and an interesting topic on evolving software products.
- ai_critic 8mo ago"based on" is sorta a stretch here. Sidekiq is pretty bare bones compared to what Oban supports with workflows, crons, partitioning, dependent jobs, failure handling, and so forth.
- mperham 8mo agoBy “based on” I don’t mean a shared codebase or features but rather Parker and I exchanged emails a decade ago to discuss business models and open source funding. He initially copied my Sidekiq OSS + Sidekiq Pro business model, with my blessing.
- sorenone 8mo agoYou got the beer. We got the pen. ;)
- sorentwo 8mo agoThis is absolutely true (except we went OSS + Web initially, Pro came later). You were an inspiration, always helpful in discussion, and definitely paved the way for this business model.
- ai_critic 8mo agoThank you for the clarification!
- sorenone 8mo agoThanks Mike! You are an inspiration. Parker and I have different strengths both in life and language. We're committed to what this interop brings to both Python and Elixir.
- nlnn 8mo agoFaktory was a big influence/inpiration for Ocypod[0], a job queuing system I wrote a few years back (similarly language agnostic). Much appreciated for making it all open source. [0]: https://github.com/davechallis/ocypod https://github.com/davechallis/ocypod