What Makes Neocities' "Special Sauce" Sort So Special
Somewhat recently, Neocities changed the default sorting algorithm from the most followed sites, to what they call "Special Sauce". Special Sauce has been a sorting algorithm on Neocities for a few years now, dating back as far back as August 2015. However, only about a month ago was it fully implemented as the default sorting algorithm.
You may be wondering, why's it so special? How does it sort? I know I was when I found out about the change. I decided to do some poking around on the Neocities GitHub repo (thanks for keeping things open source here Kyle!) and I found the code that determines your score. (It's in models/site.rb and can be found from lines 1481 to 1618.
However, for those less interested in deciphering the code, here's my understanding of how it works. Your score is calculated based on a multitude of statistics, as well as your account's general standing, and it maxes out at 100 points.
The calculation starts with 0 points. First, you're granted 0.1 points for every follower that you have, maxing out at 30 points, or 300 followers. After this, you are granted 0.0001 points for every view your site has, maxing out at 20 points, or 200,000 views. Afterwards, you are granted 20 bonus points if your website has been "featured" ever in its history. The "featured sites" are the top 12 Specialest, Sauciest websites on Neocities. As in, the first 12 you see when you sort with Special Sauce. After this, you are granted 0.01 points for every like on your posts, updates, and comments, maxing out at 20 points, which is the equivalent of 2,000 likes. Finally, you are granted 1 point for every comment someone else has made on your profile, maxing out at 10 points, equal to 10 comments. The sum of these five factors makes what I'm going to call the base score, which can range anywhere from 0 points to 100 points.
Next, there are 4 rounds of penalties applied to your website.
The first penalty is almost definitely for people who excessively troll, or who spam the Neocities API. This penalty has 3 criteria:
- more than 500,000 API calls (in a certain time frame? all time? I'm not 100% sure, I don't know if your API calls are reset so often.)
- have no followers, AND more than 5 users have blocked you
- your ratio of users who have you blocked to users who follow you is greater than 6%.
If you meet any of these criteria, your score is divided by 10. These do not stack with each other, so even if you meet all three, you will only be divided by 10.
The second penalty is most likely to prevent new, mostly-default websites from flooding the top. There are two criteria for this:
- Have followed less than 5 users
- Have less than 10 files in your alloted space
This criteria is less harsh than the previous one, only halving your score. Again, while this will stack on top of the previous division by 10, it does not stack with itself.
The third penalty has only one criterion, that being having less than 20 comments on your site. This one is most likely to encourage websites that spark discussion.If people have made less than 20 comments on your site, your score is halved again.
Finally, the last penalty is a little more complicated, but not by much. Let me break it down:
There are two factors you need to consider here: the constant "gravity factor," which is equal to 0.3, and the "time factor", which is equal to however many days it's been since the last time you updated your website.
First, Neocities will multiply your time factor by the gravity factor (0.3). We'll call this number the "penalty factor". The next step is to divide your total score so far by your penalty factor. This doesn't harm your site too much in the first few days, even giving it a slight boost for the first three. However, by the fourth day, your site has less points than it would otherwise, having divided by 1.2. After 50 days without update, your score has been divided in fifteen. After a full year without updating, your website would most likely not rank very high in the list, having been divided by a full 109.5.
The final step is to simply look at your score. Is it greater than 100? If so, your score is automatically dropped back down to 100. Now the database can be updated with your score.
So what's the best way to keep your site's score high? Here are a few tips I can offer:
- Make sure your site has content. You're penalized for having <10 files, and a site worth visiting is a site worth following, a site worth liking, and a site worth discussing, all of which also help boost your score.
- Be friendly to your fellow Neocities users. People won't block you if you're saying nice things about them, and they might even go and check out your website!
- Follow sites you like. Again, you're penalized for following very few sites.
- Keep your site regularly updated, so that gravity doesn't drag you down into the depths.
- Don't abuse the API. It's hard on the Neocities servers, and wastes bandwidth other sites could use.
Post a Comment
Leave a comment, please. I eat them as a snack.