Hi
A quote from Google.
That's a blanket statement and as such it's not a something that can, neither should, be applied as is.
As I said above, I would gladly add automatic canonical to all pages. If I could. But there's only one thing worse than Google not picking the right URL amongst several duplicates (which is the only use of canonical), and that is: providing the wrong canonical.
Mueller points at pages being duplicated because they have parameters such as utm=xxx or sort_by=yyy. That's a great use of canonical. However, problem with Joomla and its extensions is that URLs
can have parameters:
/cities/europe/paris?detailed=1
vs
/cities/europe/paris?summary=1 for instance
And those 2 pages are entirely different, with different content, etc It'd be wrong to set a canonical to /cities/europe/paris in that case because /cities/europe/paris might be another entirely different page actually.
So we do not do that unless we know exactly the content: for Joomla main view of a single article, sh404SEF adds a self-referencing canonical.
To dig even more, it turns out that Joomla already has an automatic canonical feature (you can use it to force a different domain, for instance www vs no www or http vs https or even an entirely different domain). It's now a little bit better but for a long time (like only a few months ago), it would force a canonical on all pages with a query string (?param=xxx in the URL) by simply stripping the query string.
This was so bad and got the wrong canonical so often that we added a feature to always remove Joomla canonical from all pages.
Having a canonical is fine, even if not useful, getting the right one automatically is very hard, getting the wrong one is very easy and usually disastrous consequences.
Best regards