practicality / gui

in Greasefire
Subscribe to practicality / gui 21 posts, 12 voices



Avindra V.G. Scriptwright

Greasefire seems like a good idea, and I realize that it is quite new, but here's my observations:

a) on the "scripts available" window, the actual script pages are opened.... perhaps the addon can instead take the necessary parts and display them in listboxes or textboxes.
b) the ranking system seems strange... it definitely doesn't use reviews at all, and doesn't seem to use the install count. how does it work?

 
EricB Scriptwright

With all due respect to the author, his ranking system seems insane.

All score components are relative to the other matching scripts. Half your score is who updated their script last, a quarter on who has the most installs, and the final quarter on something he calls "matches" which isn't readily apparent where it comes from.

gfGreasefireService.prototype._rankMatches =
function gfGreasefireService__rankMatches(matches, infos)
{
  var ranks = [];
  var updatedMin = null;
  var updatedMax = null;
  var installsMin = null;
  var installsMax = null;
  var matchMin = null;
  var matchMax = null;

  for (var id in matches) {
    var info = infos[id];
    var match = matches[id];
    if (updatedMin == null || info.updated < updatedMin) {
      updatedMin = info.updated;
    }
    if (updatedMax == null || info.updated > updatedMax) {
      updatedMax = info.updated;
    }

    if (installsMin == null || info.installs < installsMin) {
      installsMin = info.installs;
    }
    if (installsMax == null || info.installs > installsMax) {
      installsMax = info.installs;
    }

    if (matchMin == null || match < matchMin) {
      matchMin = match;
    }
    if (matchMax == null || match > matchMax) {
      matchMax = match;
    }
  }

  var updatedRange = updatedMax - updatedMin;
  var installsRange = installsMax - installsMin;
  var matchRange = matchMax - matchMin;

  for (var id in matches) {
    var info = infos[id];
    var matchCount = matches[id];

    var updated = updatedRange > 0 ?
                  (info.updated - updatedMin) / updatedRange : 1;
    var installs = installsRange > 0 ?
                   (info.installs - installsMin) / installsRange : 1;
    var match = matchRange > 0 ?
                (matchCount - matchMin) / matchRange : 1;

    ranks[id] = (updated * .5) + (installs * .25) + (match * .25);
  }

  return ranks;
}

 
EricB Scriptwright

BTW, we should acknowledge that this is nit-picky stuff. The author has done a ton of work to bring a great add-on to the market. What we're talking about here are tweaks to preferences, not problems.

 
Avindra V.G. Scriptwright

Right, I acknowledge the fact that this is bold, new stuff that I myself would be too lazy to work on.; so a lot of kudos to the author.

 
jerone Scriptwright

I tried it a while ago and its really a great afford to bring easy install to the users.

I have some suggestions:

  • remember window position and width
  • remember chosen columns
  • don't change the GreaseMonkey icon (I like my monkey the way it is :)
  • move the available scripts to the bottom for people who have a lot of active scripts
  • make the URL changeable for better searching
  • support Chinese characters
  • add a script author column

 
Steve Krulewitz User

@EricB -- Yes, the scoring algorithm could use some work :) The "matches" has to do with how well the script's @include matches the URL that you are on. So for example, if you are on "http://reader.google.com", scripts that are more specific to the URL, such as "@include http://reader.google.com/*" will have a greater "matches" than scripts that are less specific, such as "@include http://*.google.com".

I weighed the "updated" signal heavily because it is my suspicion that scripts that have not been updated recently no longer work.

Please let me know if you have some better ideas on how I should rank the scripts!

 
Steve Krulewitz User

@jerone -- Please update to version 1.0.2:

https://addons.mozilla.org/en-US/firefox/addons...

This addresses some of your points. I will try to work on some of your other suggestions. Note that I am not a Chinese speaker so it is not clear to me what needs to be done to support Chinese.

 
Avindra V.G. Scriptwright

what needs to be done to support Chinese

Changing the rendering character set to UTF-8 as opposed to a strictly Western one like ISO-8859-1 should do the trick, I would guess. Also, why is the extension about 2 megabytes? It seems a lot of it is coming from an index file. Is that an index of all the scripts? O__O

 
Yansky Scriptwright

Edit: NM

 
znerp Scriptwright

I first heard of Greasefire a while ago but never tried it. I'm trying to keep up with this topic and I just went to go and install it but there's no link to the add-on anywhere here that I can see. If there's this new subsection in the forum for this add on, shouldn't there be something to explain what it even is? I really hate having to go and find the link myself.

Also, regarding this point...

it is my suspicion that scripts that have not been updated recently no longer work

I actually groaned when I read that. This is sometimes the case, but some of the simpler scripts don't need to be updated. Some of my scripts haven't been updated in a very long time, it doesn't mean they don't work though. Conversely though, some of my old ones that I don't use any more are almost certainly broken.

It's a sweeping statement, but if something's been done right the first time then there should be no need to fix it. An example here is the AutoLoginJ script. It's not site-specific so no change in a site will break it, and the concept is so simple that it shouldn't need to ever be updated. Indeed, it seems to work well on absolutely every login page I use.

 
dob Scriptwright

I agree with znerp.
Usually, one updates their scripts due to changes on the website(s) they run on.
If one has a script for all pages (@include *), there often is no need to update it.

My suggestion would be to focus the script page part of the addon solely on the actual script.
As of the moment, the whole page is shown, which I deem unnecessary. It kind of inflates the whole thing for no reason.
Just show the Script Page, the Review and the Source Code.

 
EricB Scriptwright

@Steve Krulewitz:

Scoring is tricky, as I'm sure you know. :)

Personally I wouldn't attempt to give each script a magical "score". It will never work as expected for the majority of users. Maybe you could just show the script name, the number of installs, the last updated date, and the average review score/number of reviews.

Sometimes less is more.

 
Momentum Scriptwright

I agree with EricB. Perhaps you can simply show that data in columns, then add your own "matches" column for URL specificity. Then users can sort them how they want. Also, allow users to ignore "*" scripts, and/or scripts without the domain name, perhaps. That way poorly written @include data won't make it's way into the top of the rankings if someone is just looking for a specific script for the page (that's the idea of the extension, isn't it?) Specifically, I'm looking at the suggested scripts for this page. The last entry, "Gallery Viewer for Broadband", is suggested because @include *pic* matches userscripts.org/topics/19236. Granted, it's at the bottom of the list in the current ranking system, but with 1,790 installs, it may make its way to the top if a user sorts by installs. I don't think it should be included entirely, I just think users using Greasefire are looking for a way to get much more specific scripts.

 
JoeSimmons Scriptwright
Maybe it uses install count and number of fans? I don't know.
"None are more hopelessly enslaved than those who falsely believe they are free." - Johann Wolfgang von Goethe
My website
 
Steve Krulewitz User

@avg - Regarding the download size, yes, the bulk of the size comes from the index files. However, they do not include the actual scripts (that would be over 300MB!), but rather just an encoding of all the @include and @exclude declarations of all the scripts. There is a third file, scripts.db, that is a sqlite database containing the name, number of installs, and update date of each script.

 
Steve Krulewitz User

@all - Thanks everyone for your input :) I've started a FAQ on the google code site that addresses some of these questions: http://code.google.com/p/greasefire/wiki/FAQ

A few things about ranking. Greasefire currently scrapes data off of userscripts.org, so I am at the mercy of the page layout on us.o for the data I can collect. Greasefire scrapes http://userscript.org/scripts to get the list of new scripts and updated install counts and update dates. Getting information about fans and reviews would require me to start scraping every script's page when I update the index. There are over 17,000 scripts, so this would take too long and put too much pressure on userscripts.org. I am working with jesse to hopefully make more data accessible to Greasefire so I can improve the ranking in the future.

As for weighting freshness as heavily as I do, I acknowledge this might be a mistake. My experience has been that the newer a script is, the more likely it is to work -- that is why I chose to do this. However, weighting freshness so heavily may make it too easy for spammers to get ranked highly just by updating their scripts. Would people be interested if I put the signal weights in a preference so they can be tweaked from about:config?

As to @zernp's comment about AutoLogin and how simple scripts that apply to many sites are not as fragile as site-specific scripts -- yes, this is indeed true, but Greasefire explicitly filters out all scripts that apply to many sites. The goal of Greasefire is to match scripts with the sites they operate on -- the monkey should not light up on every site or it would be useless. I added a FAQ on this topic. Perhaps in the future I will find some way to include these "catch all" scripts in a sensible way. Suggestions are welcome :)

@Momentum - Try downloading the latest version 1.0.2 that is linked earlier in this topic (as well in the sticky topic). You can customize the columns that show up in the script picker to your taste, and the configuration will be saved.

Also, there are currently some scripts in the index I need to remove, such as the one @Momentum mentions. There will be an index update soon.

 
EricB Scriptwright

Has anyone tried to get hold of the folks running userscripts.org to see if you can get an XML feed or something similar? I would have to think tighter integration would be preferred.

 
Jesse Andrews Admin

EricB - I'm working on it - Steve has already done his part - I'm just slow since it is just me.

 
EricB Scriptwright

Excellent. Thanks for the update.

As for being busy, I think we all understand.

 
IzzySoft Scriptwright

@Steve: Maybe you also want to consider the fan count for the ranking? Unfortunately, there's no such field as "first release (date)" and "number of releases", which would make ranking a bit easier: A script with the age of less than a month, having already x downloads and y fans, probably ranks higher than another script which also has x and y, but is already available for two years Ashamed

 
Marti Scriptwright

IzzySoft wrote:
A script with the age of less than a month, having already x downloads and y fans, probably ranks higher than another script which also has x and y, but is already available for two years
While the possibility of the script being abandoned is always a chance, I would disagree with this. Some scripts are written well enough to last the test of time.

Until the rating system here on uso is fully implemented, I think that the rating system in Greasefire is unacceptable in it's current state... don't get me wrong, I do like the idea of Greasefire, but putting that much control into one addons hand is not a good idea and defeats the concept of peer review.

Cross
Presentational HTML allowed.
Use <code> for inline code and <pre> for code blocks. Use &lt; and &gt; for literal < and >.
We help break paragraphs and link your links.
or cancel