I seem to have written this during my iBook's time off the 'net:
There are many things to like about Cocoa. One is its glorious lack of minimality. I'm not sure I can really explain that remark. It could be the influence of the C++ performance/size obsession, but sometimes I get the feeling that OOP programmers strive for doing just the minimum.
Or, in XP terminology, "do the simplest thing that can possibly work".
I guess this segues into another thought: XP just doesn't apply for designing a resuable framework like Cocoa. You can't just merrily go on a refactoring spree through a framework (unless you want your users to shoot you when they upgrade). On the other hand, some of the XP maxims *do* apply: you shouldn't just add features without some use case. I guess the reason Cocoa is so comfortable is because the framework has matured while it was NextStep and there was an opportunity to throw lots of cruft out when it became Cocoa (dunno if that actually happened, but if it didn't there's an astonishing lack of historical crap in Cocoa).
Anyway, to contrive a free-software point, when looking for inspiration in framework design, look at Cocoa. Some of its features probably only really make sense in a somewhat dynamic language, so I don't know if (e.g.) Gnome could reach this level of flexibility and power (haven't looked at writing a Gnome app in a long time, admittedly).