Thanks for taking the initiative on this.
On Oct 8, 2009, at 5:51 PM, dstrelau wrote:
> - Setup a canonical GitHub repository (delayedjob/delayed_job) and
> give commit
> access to those who have made significant improvements already. This
> would
> become _the place_ to file issues and make pull requests to. It
> would also be
> the repository from which the delayed_job gem is created.
It'd be ideal if tobi could just add committer to his repo. But if he
doesn't want to be involved, maybe a separate account is the best
option. Although I'd prefer that the account be called "delayed_job"
to keep the naming consistent.
> - Figure out what fork is currently considered the "best" starting
> point for
> future work. It seems that both collectiveidea[1] and weplay[2] have
> done a
> fair amount of work, but there are probably others I have
> overlooked. Does it
> seem like a good idea to start from tobi's repo and merge others in
> after
> review or should we start with something more recent?
We've tried to be intentional about pulling in the stuff we liked into
the collectiveidea fork. I'd be up for using that as a starting
point, but I'm obviously biased. :)
> Obviously, this is not an overnight project, but it would be very
> beneficial to
> the long-term maintenance of the project. While GitHub forks are
> great, they
> become chaotic if there is no "blessed" repository that actually
> merges things
> back in. Having a central repository will allow users to more easily
> keep track
> of bugfixes and enhancements and upgrade to newer versions.
> Please let me know your thoughts. I will gladly organize the effort to
> make this
> happen, but I want to work with as many people as are interested in
> helping.
> Likewise, if this all seems like a terrible idea, please speak up!
I'd be happy to help you spearhead this. I own the gem on
gemcutter.org, and the mailing list, so I can add whoever needs access
to those.
Thanks,
Brandon
First, thanks for writing delayed_job, and second, thanks for joining
this conversation.
On Oct 9, 2009, at 1:43 PM, Tobi wrote:
> I support this idea.
>
> Having started the project i'd like to communicate some of my thoughts
> about the project in this space though:
>
> Delayed Job isn't as good as people think. It's convenient and it
> works, this puts it above a lot of competing projects but it's still
> not great. The biggest issue is my mistake of adding priority to the
> project. I suggest scrapping this feature.
The great thing about delayed_job is that it is easy for small to
medium sized projects. There are plenty appropriate queues for large
scale apps, but almost nothing for simple background processing on
smaller apps.
Personally, I would prefer to see delayed_job (or a fork of it) be
intentional about not sacrificing simplicity in the interest of
scaling. If we can solve all of the issues you outlined without
making that sacrifice, then I'm on board!
Thanks,
Brandon
I think so too. Tobi, is this something you'd be up for or do you
prefer to keep your own fork your own? (And just out of curiosity, is
Shopify still using tobi/delayed_job as is or have you made more
modifications?)
> We've tried to be intentional about pulling in the stuff we liked into the
> collectiveidea fork. I'd be up for using that as a starting point, but I'm
> obviously biased. :)
> I'd be happy to help you spearhead this. I own the gem on
> gemcutter.org, and the mailing list, so I can add whoever needs
> access to those.
Awesome. The collectiveidea fork looks like it has lots of good
changes, so I am up for starting from there too. I didn't realize you
owned the gem and list as well. Sounds like you've been trying to keep
dj organized by yourself so far. Maybe I will be the one helping you
:)
> The great thing about delayed_job is that it is easy for small to medium
> sized projects. There are plenty appropriate queues for large scale apps,
> but almost nothing for simple background processing on smaller apps.
Agreed. Maybe the delayed_job docs just need to be more explicit in
explaining the "there be dragons" factor.
I appreciate the feedback, everyone. This afternoon I'm going to look
at all the forks (hooray 'gh network fetch') and see if I can't
organize a list of what changes everyone has contributed. I'll report
back once I have a better idea of where everything stands.
Dean
I haven't had a chance to check out the 100+ forks on GitHub so it
would be great if someone could summarize the major advantages of some
of the third party work. I tend to decide against adding features.
Unless a new feature makes every users life better it will have
subtracted value from the project as a whole. In other words I only
want to add things that "most of the people need most of the time".
That's the philosophy behind all the software I write. If I give out
commit keys I can no longer enforce this.
I already said that I would take DJ in a different direction if I had
time to work on it. Unfortunately the success of Shopify means that I
don't get to do a lot of coding anymore. I would make DJ a lot simpler
by removing priorities and focusing on a grade A daemon runner. I
would also make DJ self migrating so that on the first use it will
create the necessary tables or apply table modifications from an old
version so that users don't have to worry about this stuff. I highly
doubt that I would add a single feature to the code base form the
state it's at in Shopify's codebase.
Shopify still uses DJ excessively, our version is only slightly different.
Regards
-- tobi
CEO Shopify
I've started a list of forks and features:
http://wiki.github.com/tobi/delayed_job/forks
I'll update this as I continue to sort through the forks. Hope
you don't mind me starting a page on your wiki.
If your fork is missing or if I've missed features, incorrectly
attributed features/fixes, or insufficiently explained something,
please feel free to step in and fix it.
Dean
> Personally, i think that if we're going to focus as a group on a
> feature to add to dj I think Tobi's idea of a better daemon that
> manages processes like unicorn would probably benefit everyone the
> most, plus be an awesome and unique feature to have for a
> backgrounding library.
I agree. I'm fascinated by this idea and plan to play around with it
this week.
Brandon
In my case, I want to maintain a queue for each type of job as I don't
want a sudden influx of one job type to hog the queue. Instead of
picking arbitrary numbers and assigning those numbers to different
workers, I added support for assigning specific job types to workers:
http://github.com/ezpub/delayed_job/commit/6eba7750532f52f4bb9b806977bcba45bd065141
This too could probably benefit from an index, but I'm curious if my
use case is at all similar to any of yours.
Ian
> I'm curious what people use the priorities for.
I've only used it in one application. When a new record is created, it
uses delayed_job to update the search index and then send out email
notifications. Determining who receives the email notification
depends on the search index, so I schedule the search index job with a
higher priority than the email notifications to make sure that happens
first. I could probably just schedule the email notification job for
1 minute later and use the run_at time as a form of priority, but if
the queue were to get backed up, I would really want that priority
field to make sure the important jobs get processed before the trivial
ones.
I'm also curious to see how other people are using it.
Brandon