This is a page about a rating system or developer guide for libs based on the, Sim Golf, golf hole rating system. This system will use experience and opinion along with and in the absence of metrics. Following the pattern of thought given by the Selfish Design Pattern you would note that getting people to use/reuse your software is indeed a game.
I choose the following points on which to score libs.
1. Functionality (includes Specialty) (means lack of specialty vs. specialty that is far too unique or poor examples, and reflects amount of work that could be done vs. time to completion.)
2. Simplicity (includes Complexity) (means simplicity vs. complexity, and over effectiveness vs. under effectiveness)
3. Versatility (includes Extendibility and Heuristics) (means re-usability vs. limited usability and, options vs. lack of options)
Each of these will be scored between -3 and positive 3. Each score will be the average score of 3 scores for basic, intermediate and advanced use. Then there would be a total score for the entire lib in question. If the total score is 3 then you have a winning lib. If the total score is -3 then you have an immature lib that might grow up to be a winning lib some day.
Each point is scored on 3 kinds of use.
1. Advanced is specialization's with more options for behavior and strong designs.
2. Intermediate are generalized abstractions and general designs with average options for behavior.
3. Basic is plug and play ability and basic options for behavior where design complexity is encapsulated.
Lets look at an example of scoring
* Weak (-3) means the user must do a lot of work in order to meet his needs. It also means that he must study more, do more research and experiment more before accomplishing his goals. Might also mean that is possible the lib does not solve or could not solve the problem. Would also reflect absence of examples, directions and demo's. It would be difficult to distinguish levels of features with little encapsulation and hard to visualize patterns and strategies of use.
Zero (0) score Means average or nothing exceptional or nothing bad. But not good. Only above 0 ratings are good.
* Strong (+3) is the opposite of weak. Little work needs to be done to extend or use the lib and to recognize its patterns or possible extensions and strategies of use. Means good encapsulation and separation of basic, intermediate and advanced issues mostly within documentation. Strong might also mean sufficient demonstrations and directions. Could mean how obvious naming conventions are used vs. obscure naming and other conventions.
It is my opinion that if you use this rating system on your own libs you would produce libs that are far more widely used and useful, for use within your own organization by you or others, and for release to the public as commercial libs and especially with open source libs.