Все пых-фреймворки - говно. Чтобы лучше понять, каким должен быть веб-фреймворк, нужно смотреть на фреймворки в других языках, например, на RoR (хотя, он не идеален, конечно). Там люди совсем по-другому мыслили и не были стеснены пых-парадигмой. Также хорош django, отражена суть реакции фреймворка на запрос.
Чтобы написать фреймворк нужно понять, какие задачи он решает, а значит эти задачи должны в вашей трудовой деятельности возникнуть в достаточно актуальном виде, и не все сразу, а по отдельности. Чтобы вы поняли, какой шаблонизатор лучше и почему, какая модель для работы с данными лучше и почему, какой обработчик событий лучше и почему и т.д.
Начинать нужно с обработки командной строки. Ваш фреймворк должен уметь работать с данными, таблицами, сетью, уметь обрабатывать ошибки (например, отвалившуюся БД) из командной строки. Потом, когда вы сформируете внутреннее API, можно навешивать роутинг и вьюхи.
Ну и не следует забывать, что первый вариант всё равно пойдёт в /dev/null