The best abstractions I've seen have always come into being only after a significant amount of particularized code had already been written. It is only then that you can identify the actual common properties and patterns of use.
Early Ruby On Rails comes to mind as a great generalization of web applications in the era of Web 2.0.
Early Ruby On Rails comes to mind as a great generalization of web applications in the era of Web 2.0.