I would like to point out that TDD isn't really about tests, it's about design of your program. It forces you from the very beginning to deal with really important questions: how do one use a piece of your program? Is it easy, clear and simple? Can it be tested? What do you expect from the program? Is your program or component overcomplicated?
Design your programs from top to bottom fleshing out details as you go. Deal with one abstraction at a time. And when you're finished you can throw away non-critical tests so that they don't outlive their purpose.
Do remember that tests are code too and that they have to be maintained and that they can become a part of technical debt. Do not use TDD for prototypes when you really don't know how or why implement your program. Create a prototype, explore possibilities, throw the prototype away and write a production version with TDD.
Docker is modular, actually. They've got a plugin system, stable RESTy API and packages to work with various parts of their stack (libcontainer, libchan, libswarm etc).
> Docker and Joyent are businesses, and they're selling an idea to make money.
And how is it different for CoreOS, Inc? They depend on a external product and they want to remove the dependency. That's fine. Smearing their ex-vendor isn't.