Use inline hypermedia 8. Provide SDKs when appropriate 7. Share messages, not objects 6. Describe services as abstract classes 5. Put workflow in messages 4. Take the "no breaking changes" pledge 3. Use "dark release" 2. Distribute storage and execution 1. Obey the laws of probability and physics