It's not good for real temporal tables, but I use AutoAudit for a few tables in some of my DBs where I just want a good history that's easy to review:
github.com/koenmd/AutoAudit - that was copied from codeplex before it was shut down. It uses DDL triggers to update itself if a table is changed. The code isn't huge and complex, and it works reliably for that simple use case.