From a317cb9d5f69575bd85b9dac85b9baa83e8d7c7f Mon Sep 17 00:00:00 2001 From: Carl Jackson Date: Sat, 1 Mar 2014 15:53:27 -0800 Subject: [PATCH] Initial commit Also some philosophy. Because why not. --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d6629d --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +Goji +==== + +Goji is a minimalistic web framework inspired by Sinatra. + + +Philosophy +---------- + +Most of the design decisions in Goji can be traced back to the fundamental +philosopy that the Go standard library got things Mostly Right, and if it +didn't, it at least is good enough that it's not worth fighting. + +Therefore, Goji leans heavily on the standard library, and in particular its +interfaces and idioms. You can expect to be able to use most of Goji in exactly +the manner you would use a comparable standard library function, and have it +function in exactly the way you would expect. + +Also in this vein, Goji makes use of Go's `flag` package, and in particular the +default global flag set. Third party packages that have global state and squat +on global namespaces is something to be suspicious of, but the `flag` package is +also the closest thing Go has to a unified configuration API, and when used +tastefully it can make everyone's lives a bit easier. Wherever possible, the use +of these flags is opt-out, at the cost of additional complexity for the user. + +Goji also makes an attempt to not be magical -- explicit is better than +implicit. Goji does make use of reflection and `interface{}`, but only when an +API would be impossible or cumbersome without it.