This thought is long overdue. I wanted to write this up nearly a year ago. Since there are more interesting problems to work on than the subject of this post, let me keep this brief.
Don’t follow models like Richardson’s Maturity Model to decide whether your app is RESTful or not.
Why not? The reason is quite simple. We build software to do something of value while accounting for some quality attributes (or "ilities"). In the case of RESTful apps, how you prioritize a given set of quality attributes can help you choose the right set of constraints. Period. Judging an app based on what REST constraints it supports and not based on whether it chose the right constraints to meet the desired quality attributes is a pointless exercise. It is like criticizing an application because it chose to use an RDBMS and not a NoSQL store without looking at the qualities that lead to that choice. It is equally silly to conclude that your RESTful app achieved the "glory of REST" with its choice to use the hypertext constraint – what matters is whether it met any ilities that matter for that app.
Update: In addition Jeromy’s blog post in his comment below, see him explain in this video.