Why, how and what.

This commit is contained in:
Roberto Abdelkader Martínez Pérez
2019-05-17 10:59:58 +02:00
parent 8fdd1eac96
commit 5c6f0a11de
+22 -12
View File
@@ -1,11 +1,18 @@
# Kapow! # Kapow!
Why is it named Kapow!. You can pronounce it and it is short and ## Why?
meaningless... like every good UNIX command ;-)
TODO: Too hard to jump Because we think that:
## Rationale - UNIX is great and we love it
- The UNIX shell is great
- HTTP interfaces are convenient and everywhere
- CGI is not a good way to mix them
## How?
So, how we can mix the **web** and the **shell**? Let's see...
The **web** and the **shell** are two different beasts, both packed with The **web** and the **shell** are two different beasts, both packed with
history. history.
@@ -38,11 +45,11 @@ Any tool designed to give an HTTP interface to an existing shell command
- "Stdout" to "Response body" - "Stdout" to "Response body"
Kapow! is not opinionated about the different ways you can map both worlds. Kapow! is not opinionated about the different ways you can map both worlds.
Instead it provides a concise language used to express the mapping and a set Instead it provides a concise set of tools used to express the mapping and a
of common defaults. set of common defaults.
### Why not tool...? ### Why not tool "X"?
All the alternatives we found are **rigid** about how they match between HTTP All the alternatives we found are **rigid** about how they match between HTTP
and shell concepts. and shell concepts.
@@ -62,11 +69,11 @@ only)
Tools with a rigid matching **can't evade** *[impedance Tools with a rigid matching **can't evade** *[impedance
mismatch](https://haacked.com/archive/2004/06/15/impedance-mismatch.aspx/)*. mismatch](https://haacked.com/archive/2004/06/15/impedance-mismatch.aspx/)*.
Resulting is an easy-to-use software, convenient in some scenarios but Resulting in an easy-to-use software, convenient in some scenarios but
incapable in others. incapable in others.
### Why not my good-old programming language...? ### Why not my good-old programming language "X"?
* Boilerplate * Boilerplate
* Custom code = More bugs * Custom code = More bugs
@@ -74,11 +81,14 @@ incapable in others.
* Dependency on developers * Dependency on developers
* **"A programming language is low level when its programs require attention to * **"A programming language is low level when its programs require attention to
the irrelevant"** *Alan Perlis* the irrelevant"** *Alan Perlis*
* **There is more Unix-nature in one line of shell script than there is in ten
thousand lines of C** *Master Foo*
Kapow! aims to be halfway from one of the mentioned tools and a general
programming language. A limited scripting language. Think of *awk*, 20 years
later, for HTTP.
## What?
We named it Kapow!. It is pronounceable, short and meaningless... like every
good UNIX command ;-)
TODO: Definition TODO: Definition
TODO: Intro to Architecture TODO: Intro to Architecture