One of the more silly issues of popularity algorithms is that they do not degrade over time - and it's really simple to fix.
In the context of social media and the internet, the cheap and easy algorithms that people who consider themselves programmers copy and paste into their code, or install as a module or add-on, simply point to things based on statistics on how many views. In some cases, these are prominently displayed on front pages of websites or even in feeds from certain social media sites. It's a red herring - it tells you what has been viewed the most since the items have been posted - but it doesn't tell you what is actually more popular at the moment and what is more popular over time.
As usual, the problem gives away the solution. If a page has so many hits, it could be because of longevity - a well written article can be timeless - but it doesn't mean that it's the most popular, either. What gets the most views per day? That would likely be popular. So rather than popularity being defined by what has been viewed the most (which is almost always inflated by bots!), popularity is defined by what is most viewed per unit time.
Thus, if you can define when things are posted, and you can define what the date is, you suddenly have an idea of how many times something has been viewed over a period of time. However, is it relevant? Relevance degrades over unit time for many items, particularly dated articles that clutter the Internet - but how fast does that relevance degrade? I've seen one Drupal module that attempts to use a sort of 'half-life' argument for relevance - and while it is better than simply counting views, it's a bit too linear for my liking.
So this is what I'm considering (Math notation, not programming notation):
Popularity = (Views/Time) x (1/Time)
Popularity = (Views/Time2)
That's really not too taxing of an algorithm for a server, is it?