I'm in the middle of running an API study this week with an API that makes heavy use of attributes throughout. Basically, much of the functionality that the API supports is largely exposed through the use of attributes. The API requires that you decorate classes, member variables and properties with attributes to implement some functionality. If you want to customise that functionality, you set various optional parameters on the attributes. There is very little (almost nothing) that you need to do in actual imperative code.

We're half way through the study and are starting to see a pattern in the way that participants respond to the use of attributes throughout the API (once the study is over, I'll let you in on more of the details...).

I'm interested in hearing what others think of such a use of attributes in an API. What advantages and disadvantages do you think such an API would offer? And do the advantages outweigh the disadvantages or vice versa? In your opinion, is the heavy use of attributes throughout an API a good or a bad thing?