On the value of the RAA, and some statistics
$13,604,673. That's the value of an older RAA subset*1 I analyzed, according to the basic COCOMO model (more on that below).
More interestingly, I gathered some statistics relative to the sizes of the corresponding codebases.
| Total | Average | Standard dev | |
|---|---|---|---|
| Files | 3136 | 24.0 | 39 |
| LOCs | 416929 | 3207 | 4331 |

Cost estimate
The aggregate figures are:
- man months: 1094.6
- cost: $13,604,673
The cost was estimated using the basic COCOMO model as

with revised updated salary figures from [JMBar01]*2.
Individual statistics
| Name | Files | LOCs | Cost | Man months |
|---|---|---|---|---|
| BlueCloth-1.0.0 | 11 | 4132 | $132315 | 10.6 |
| FXRuby-1.0.29 | 269 | 35183 | $1253983 | 100.9 |
| Linguistics-1.02 | 16 | 6811 | $223621 | 18.0 |
| PluginFactory-1.0.0 | 7 | 480 | $13802 | 1.1 |
| PrettyException-0.9.3 | 4 | 2441 | $76135 | 6.1 |
| RHDL-0.4.3 | 24 | 2295 | $71361 | 5.7 |
| RedCloth-3.0.0 | 5 | 2435 | $75939 | 6.1 |
| Ruby-HashSlice-1.03 | 3 | 202 | $5562 | 0.4 |
| RubyInline-3.1.0 | 8 | 1247 | $37609 | 3.0 |
| SpeedReader-0.5 | 17 | 1616 | $49374 | 4.0 |
| Test-Unit-Mock-0.03 | 5 | 1289 | $38941 | 3.1 |
| actionmailer-0.3.0 | 26 | 6278 | $205283 | 16.5 |
| actionpack-0.9.0 | 69 | 7167 | $235910 | 19.0 |
| activerecord-1.1.0 | 67 | 9174 | $305723 | 24.6 |
| aeditor-1.9 | 26 | 10939 | $367763 | 29.6 |
| amrita-1.0.2 | 83 | 11215 | $377512 | 30.4 |
| ansicolor-0.0.3 | 4 | 196 | $5389 | 0.4 |
| archive-tar-minitar-0.5.1 | 6 | 2475 | $77249 | 6.2 |
| arrayfields-3.4.0 | 4 | 729 | $21404 | 1.7 |
| aspectr-0-3-5 | 5 | 681 | $19927 | 1.6 |
| bdb-0.5.4 | 41 | 5802 | $188972 | 15.2 |
| bdbxml-0.5.2 | 29 | 1917 | $59073 | 4.8 |
| bitset-0.6.2 | 5 | 720 | $21127 | 1.7 |
| borges-1.1.0 | 158 | 9978 | $333916 | 26.9 |
| builder-1.2.2 | 9 | 1017 | $30361 | 2.4 |
| bz2-0.2.2 | 7 | 998 | $29766 | 2.4 |
| cache-0.1.0 | 2 | 379 | $10769 | 0.9 |
| captcha-0.1.2 | 6 | 1887 | $58103 | 4.7 |
| cgikit-1.2.1 | 62 | 11426 | $384974 | 31.0 |
| copland-1.0.0 | 119 | 12696 | $430024 | 34.6 |
| copland-lib-0.1.0 | 23 | 2836 | $89121 | 7.2 |
| copland-remote-0.1.0 | 20 | 3036 | $95732 | 7.7 |
| copland-webrick-0.1.0 | 18 | 2792 | $87670 | 7.1 |
| criteria-1.1a | 13 | 1139 | $34197 | 2.8 |
| crypt-fog-0.1.0 | 4 | 145 | $3927 | 0.3 |
| cstemplate-0.5.1 | 2 | 124 | $3332 | 0.3 |
| dbdbd-0.2.2 | 6 | 597 | $17354 | 1.4 |
| dbus-0.1.7 | 19 | 2538 | $79315 | 6.4 |
| dev-utils-1.0.1 | 12 | 2583 | $80792 | 6.5 |
| diff-0.4 | 8 | 550 | $15922 | 1.3 |
| diff-lcs-1.1.2 | 12 | 2971 | $93581 | 7.5 |
| djb-netstrings-ruby-0.1.0 | 3 | 129 | $3473 | 0.3 |
| dpklib-1.0.6 | 134 | 8461 | $280824 | 22.6 |
| drbfire-0-1-0 | 6 | 1827 | $56165 | 4.5 |
| entryCache-1.1 | 6 | 363 | $10293 | 0.8 |
| extensions-0.6.0 | 37 | 4637 | $149345 | 12.0 |
| extmath-2.3 | 3 | 1443 | $43840 | 3.5 |
| flattenx-0.1.0 | 3 | 97 | $2574 | 0.2 |
| flexmock-0.0.3 | 5 | 280 | $7837 | 0.6 |
| formvalidator-0.1.3 | 10 | 1632 | $49888 | 4.0 |
| fsdb-0.4 | 29 | 3342 | $105888 | 8.5 |
| gemfinder-1.9.6 | 17 | 1385 | $41991 | 3.4 |
| gurgitate-mail-1.4.1 | 7 | 684 | $20019 | 1.6 |
| hobix-0.3 | 26 | 3806 | $121376 | 9.8 |
| html-parser-19990912p2 | 5 | 1117 | $33504 | 2.7 |
| ikko-0.1 | 2 | 291 | $8160 | 0.7 |
| instiki-0.9.1 | 34 | 3786 | $120706 | 9.7 |
| interface-0.1.0 | 7 | 231 | $6403 | 0.5 |
| iterator-0.8 | 18 | 2557 | $79939 | 6.4 |
| jabber4r-0.6.0 | 13 | 2861 | $89946 | 7.2 |
| kirbybase-1.6 | 4 | 1246 | $37578 | 3.0 |
| lafcadio-0.4.0 | 133 | 6989 | $229762 | 18.5 |
| libgnucap-ruby-0.1 | 4 | 296 | $8308 | 0.7 |
| libxml-0.3.4 | 25 | 1350 | $40878 | 3.3 |
| lingua-0.5 | 6 | 465 | $13349 | 1.1 |
| log4r-1.0.5 | 48 | 2988 | $94143 | 7.6 |
| madeleine-0.6.1 | 19 | 3090 | $97521 | 7.8 |
| mahoro-0.1 | 4 | 68 | $1773 | 0.1 |
| math-const-1.0.1 | 3 | 307 | $8632 | 0.7 |
| metatags-1.0 | 9 | 515 | $14860 | 1.2 |
| midilib-0.8.3 | 21 | 2812 | $88330 | 7.1 |
| mime-types-1.13.1 | 3 | 1635 | $49984 | 4.0 |
| mw-template-0.9.1 | 13 | 2961 | $93250 | 7.5 |
| narray-0.5.7p4 | 51 | 3385 | $107319 | 8.6 |
| needle-1.2.0 | 66 | 7405 | $244142 | 19.6 |
| needle-extras-1.0.0 | 11 | 1954 | $60271 | 4.8 |
| net-sftp-0.5.0 | 75 | 6565 | $215148 | 17.3 |
| net-ssh-0.6.0 | 123 | 15628 | $534861 | 43.0 |
| nora-0.0.20041021 | 45 | 5081 | $164395 | 13.2 |
| objectgraph-1.0.1 | 3 | 250 | $6957 | 0.6 |
| objectpool-0.2.0 | 5 | 325 | $9164 | 0.7 |
| pqa-1.3 | 3 | 837 | $24745 | 2.0 |
| purple-0.5.1 | 22 | 1415 | $42947 | 3.5 |
| raggle-0.3.2 | 7 | 5705 | $185656 | 14.9 |
| railties-0.8.0 | 20 | 848 | $25087 | 2.0 |
| rake-0.4.9 | 28 | 3778 | $120439 | 9.7 |
| rand-0.9.0 | 2 | 421 | $12026 | 1.0 |
| rb-gsl-1.5.2 | 214 | 14596 | $497837 | 40.1 |
| rb2html-1.1 | 7 | 707 | $20726 | 1.7 |
| rbmhshow-0.4.1 | 17 | 2417 | $75349 | 6.1 |
| rbtree-0.1.2 | 3 | 838 | $24776 | 2.0 |
| redcloth-2.0.11 | 4 | 1280 | $38655 | 3.1 |
| regexp-engine-0.12 | 32 | 8162 | $270413 | 21.8 |
| rgl-0.2.2 | 26 | 3114 | $98316 | 7.9 |
| rice-0.0.0.2 | 19 | 2164 | $67090 | 5.4 |
| rlimit-1.0 | 3 | 34 | $856 | 0.1 |
| rubilicious-0.1.0 | 5 | 640 | $18669 | 1.5 |
| ruby-aes-1.8.0 | 9 | 1119 | $33567 | 2.7 |
| ruby-bsearch-1.5 | 4 | 221 | $6112 | 0.5 |
| ruby-crypt-random-1.3 | 5 | 441 | $12627 | 1.0 |
| ruby-dict-0.9.2 | 3 | 896 | $26580 | 2.1 |
| ruby-gettext-package-0.8.0 | 38 | 3597 | $114387 | 9.2 |
| ruby-progressbar-0.8 | 3 | 286 | $8013 | 0.6 |
| ruby-romkan-0.4 | 3 | 385 | $10949 | 0.9 |
| ruby-termios-0.9.4 | 8 | 289 | $8101 | 0.7 |
| rubymail-0.17 | 25 | 7848 | $259501 | 20.9 |
| rubypants-0.2.0 | 3 | 661 | $19313 | 1.6 |
| rubyzip-0.5.5 | 19 | 7051 | $231902 | 18.7 |
| runt-0.2.0 | 14 | 2922 | $91961 | 7.4 |
| ruvi-0.4.12 | 35 | 10701 | $359366 | 28.9 |
| ruwiki-0.9.0 | 43 | 7651 | $252665 | 20.3 |
| sds-0.3 | 17 | 4891 | $157946 | 12.7 |
| session-2.1.9 | 10 | 1680 | $51430 | 4.1 |
| simplemail-0.3 | 5 | 624 | $18179 | 1.5 |
| snmp-0.3.0 | 20 | 4161 | $133290 | 10.7 |
| sqlite-ruby-2.2.2 | 19 | 3239 | $102464 | 8.2 |
| statistics-020920 | 3 | 311 | $8750 | 0.7 |
| stream-0.5 | 8 | 985 | $29359 | 2.4 |
| sympop-0.9.1 | 2 | 96 | $2546 | 0.2 |
| sys-host-0.5.0 | 5 | 384 | $10919 | 0.9 |
| sys-proctable-0.6.4 | 20 | 1362 | $41259 | 3.3 |
| sys-uptime-0.4.0 | 5 | 253 | $7045 | 0.6 |
| test-report-0.3.0 | 10 | 2465 | $76921 | 6.2 |
| tex-hyphen-0.2 | 4 | 4990 | $161305 | 13.0 |
| text-format-0.64 | 7 | 3099 | $97819 | 7.9 |
| tmail-0.10.8 | 43 | 10839 | $364234 | 29.3 |
| webfetcher-0.5.5 | 3 | 1401 | $42501 | 3.4 |
| webgen-0.2.0 | 31 | 4395 | $141172 | 11.4 |
| xhtmldiff-1.2.1 | 3 | 1520 | $46299 | 3.7 |
| xmlresume2x-0.2.1 | 7 | 1850 | $56907 | 4.6 |
You might recognize some of your favorite libs in the above list. At least in my case the predicted cost doesn't correspond to the perceived value (but my metrics are nonstandard).
methodology - Pat Eyler (2006-03-24 (Fri) 07:19:09)
Interesting. I agree that some of the libraries I find interesting/useful have much lower costs than I'd imagine.
One question on your metric. Are you including the LOC from unit tests? Given recent studies suggesting that tests are free when doing test first development (when doing test first development), it might make sense to exclude some or all of the test code.
mfp 2006-03-24 (Fri) 08:42:42
Unit tests are included in the LOC counts given above, but I believe they don't make much of a difference anyway: most projects are far from the 50:50 (or 60:40 as I hear elsewhere) test:code ratio I've seen reported. Tests might only take 10-15% of the total LOCs (for every lib properly tested, there's another without a single test...). A fortiori, I believe most of the projects listed above were not TDD. If tests are only free when going TDD, only a few projects have benefitted from that. hmm I'm thinking that it would probably make sense to change the coefficients used in the basic COCOMO model (more than the LOCs) to reflect the effect of TDD and such methodologies.
*1 a bit under 10% by project count
*2 J.M.González-Barahona et al. 'Counting potatoes: the size of Debian 2.2', Upgrade Magazine, vol.II, issue no. 6, Dec 2001, http://www.upgrade-cepis.org/issues/2001/6/up2-6Gonzalez.pdf
- 14 http://www.artima.com/forums/flat.jsp?forum=123&thread=152591
- 12 http://planetruby.0x42.net
- 6 http://www.artima.com/buzz/community.jsp?forum=123
- 2 http://rubyriver.org
- 1 http://www.artima.com/buzz/community.jsp?feed=547
- 1 http://www.artima.com/forums/flat.jsp?forum=123&thread=153478
- 1 http://www.google.com/custom?hl=en&lr=&client=pub-6699214427597032&cof=AH:left;S:http://www.rubyinside.com/;CX:Ruby%20Search;L:http://www.petercooper.co.uk/images/rubylogo.gif;LH:50;LW:47;LP:1;LC:#CC0000;VLC:#663399;&q=community statistics&cx=005711913906221599786:gq5z1mmqveq
- 1 http://www.rubyriver.org
- 1 http://search.live.com/results.aspx?q=www.google.com raa&form=QBRE3
Keyword(s):[blog] [ruby] [RAA] [codebase] [locs] [COCOMO] [cost] [statistics] [frontpage]
References:[CPAN vs. RAA: costs]