[Greasemonkey] Greasemonkeyed.com, userscript.org, forums,
source code, and the future of our community
zboogs at gmail.com
Sun Jul 31 22:12:24 EDT 2005
Sorry for the dramatic post title. Actually my nit is rather quite small.
I was just out taking the new beta Greasemonkey for a spin and I
wanted to try out Greasemonkeyed.com. Fully half of the scripts I
chose at random were broken, and not because of changes in
Greasemonkey. Upon inspection, I found that sites had just changed
Annotate Google  seems to have fallen prey to a change to the
<title> of Google's search results. I checked to see if GMaps Add
Waypoint ever got fixed, and it hadn't. 
The problem here is that although user scripts are easy to write, they
are hard to maintain. Typically the original author has lost interest
and doesn't keep them up to date.
Here's where it gets interesting though: I am perfectly happy to
update somebody else's script when it doesn't work for me. From my
point of view, they already did the hard part. It's way easier for me
to simply fix their script than start from scratch.
But I need somewhere to put this script. And I don't want to upload it
to my server, give it a new name, etc. It's just a tiny variation -- a
patch -- of the original.
So I propose that Greasemonkeyed.com or userscript.org or whatever
evolve into this forum-like, flickr groups-like, deviantART-like
community. Where people have avatars or signatures and identities that
they care about. Where long threads of user scripts develop, each one
an optimization, improvement, or fix on the same original idea. Where
people can install something and be more reasonably confident that
something will work because it was updated an hour ago.
So here's a use case:
* I'm browsing the scripts and run across one which adds del.icio.us
tags to Google search results.
* I install the script but see that it doesn't work.
* After a quick debug, I find the assumption which was broken and fix it.
* I go back to the site, go to the script, and click [post fix].
Another option might be [post branch].
* I log if not already logged in.
* I add a little description of the fix, "Removed title check since it
was failing. It wasn't really necessary since it was just preventing
the code from running an xpath which would return zero results in
cases where the title check failed."
* I pasted my new script (or upload from local file) and press [submit].
* Since I am a long time user, maybe my update immediately goes into
effect. If I were a "new" user, maybe it would have to be reviewed,
unless I were fixing my own script.
* I go back to the page and see that my revision is posted. I can
click [diff] to see a diff against the previous version, and also
examine the complete revision history.
This effectively makes the pool of scripts the community's property,
not the individuals. We all keep them up to date together. It also
reduce the amount of garbage in two ways: first, it reduces the number
of duplicates which are just bug fixes. Second, it decreases the
chance of a broken script staying that way for long.
Of course, some people will still feel strongly about their personal
work and not want it to become community property this way, even
though they would always retain credit for the original
implementation. I feel that this minority is small enough that we
could just punt on it initially. But there could also be a checkbox on
the submit form that allows you to disable fixing and branching.
A system like this is also interesting legally. I don't recall
anything like this ever existing before. I would imagine the rate of
code evolution would be really quite amazing, and that you'd quickly
see versions of scripts which look basically nothing like the
original. "Credit" would come more for the number of fixes, knowledge,
and visibility in the community than that one magic script idea you
came up with.
What do you guys think?
I know it's rude to suggest features for projects which you aren't
contributing to. And I really can't say when I'd have time to help on
either of these sites. But I do feel strongly that this would really
strengthen the community and user scripting in general.
Just my random-ass thoughts.
More information about the Greasemonkey