Development Personal Web

Abstractions always leak

A quote of a quote in a InfoQ article on the release of GWT 1.5:

Key point: GWT gives you a lot of leverage, but it isn’t intended to be a “walled garden” in any way. Abstractions always leak, so it’s better to embrace that fact. We intentionally make it easy for you to punch through the abstractions and get down to the nuts and bolts JavaScript environment so that you can integrate with any other technology you like. That flexibility is a sort of insurance policy for both GWT itself and GWT users: you can be sure that you’ll be able to combine any client-side technology you want with GWT, and we (the GWT development team) don’t feel as if we have to explicitly provide integrations for an open-ended set of things, because you can always do it yourself without waiting on us. For an example of the kind of flexibility I’m talking about, check out Ray Cromwell’s Syndroid work.

This is a key aspect for good frameworks. Not only because abstractions leak, but also because sooner or later someone will discover a bug or a missing feature. Making it easy to fix or extend the framework for those special cases is essential for a good framework to live and to be adopted.