
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.
| Functional | Versatile | Simple | Totals | |
|---|---|---|---|---|
| Advanced | -2 | 0 | 1 | -.33 |
| Intermediate | 3 | 2 | -1 | -1.33 |
| Basic | 1 | -3 | 3 | .33 |
| Totals | .67 | -.33 | 1 | .44 |
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.