@ms4py: Beim "Hallo Welt"-Beispiel als Klasse steht dass es etwas komplexer ist, aber die Vorteile der Objektorientierung bietet. Da sollte man IMHO näher drauf eingehen was die Vorteile sind. Ich meine jetzt ausser das Java-Jünger glücklich sind, wenn sie etwas in eine Klasse stecken können.
`Middleware` würde ich entweder an der Stelle erklären wo der Begriff das erste mal vorkommt, oder dort auf den Abschnitt mit dem Titel verweisen. Bei der Abbildung gibt's IMHO bessere Möglichkeiten. In der Django-Doku gibt's irgendwo ein Bild wo statt des Servers links "Request" und rechts "Response" steht und ein Pfeil durch die "Zwiebeldarstellung" der Schichten von einem zum anderen läuft. Das macht deutlicher das es sich aus Sicht der Anwendung eigentlich um "aroundware" handelt, also die Daten beim Eingang wie auch beim Ausgang durch die Middleware laufen. Wenn man mehr als eine Middleware in dem Bild zeigt wird ausserdem deutlich wie die Reihenfolge der Verarbeitung ist, wenn man mehrere Middlewares kombiniert.
Beim `Capitalizer` sehe ich übrigens den Sinn einer Klasse nicht. Den hätte man Problemlos als Funktion implementieren können.
Der erste Absatz zu CherryPy sollte dringend überarbeitet werden. Das liest sich als wenn man unter Windows keine Webserver laufen lassen kann.
Es werden eine Menge "Füllworte" verwendet. Geh da noch mal durch und schau ob man "Eigentlich", "selbstverständlich", "typisch", "auch" usw. wirklich an jeder Stelle braucht, oder ob der Sinn der Sätze ohne diese "schwammigen" Worte nicht genauso erhalten bleibt. Zum Beispiel "Selbstverständlich antwortet eine Webapplikation auch auf Anfragen…". Ist das selbstverständlich? Wenn nein warum nicht, wenn ja, muss das Wort da wirklich stehen? Und warum "auch"? Was tut sie sonst noch? Ist das nicht eine der Hauptaufgaben? In nächsten Absatz mit den Requests und Responses bist Du IMHO ungenau mit Klassen und Exemplaren davon. Das Rahmenwerk stellt Klassen zur Verfügung, die Applikation *verarbeitet* die aber nicht.
Abschnitt `Scaffolding`: Vielleicht besser "Testdatenbestände" statt "Testbestände".
Ich weiss das ist jetzt nicht inhaltlich, aber warum sind `URL-Routing` und `Template-Engine` im `Bottle`-Abschnitt fett gesetzt? Damit stechen die unheimlich ins Auge und fallen aus dem Rahmen.
Und noch eine technische Frage zu `erm2py`/`elixir`: Warum wird die `__str__()`-Methode überschrieben und nicht die `__repr__()? Das was da zurückgegeben wird ist IMHO eher was für Programmierer als für Endanwender!? Und ist das so viel besser als die normale `__repr__()` auf die `__str__()` ja zurückfällt wenn's nicht überschrieben wurde!? Also muss man da überhaupt was überschreiben? Was ist der Vorteil von *dieser* Lösung?