It depends on what you build. Generally you should require signin for things that need signin - requiring them for things that don't will drive users away. You can still uniquely identify users if you need to, and then convert them to an actual account if/when they signup.
Browser fingerprinting fails for cases where a computer is shared. That includes both home and public terminals. Not to mention it creeps people out and lacks any type of security.