Hi gang:
> In the next episode of this post-release fun series, we shall look
> at some developer-related stats...
Firstly, we shall again leave out "generated" files that we store in
CVS, such as PO or RDF files, and we shall look at the commit logs
both by the number of commits and by the number of line changes.
Secondly, it is to be understood that developer-related commit stats
are *not* to be mistaken for any kind of author productivity
measurement tool or anything like that. A frequent committer may be
actively working on many various tasks, or he may simply be repairing
problems he introduced himself. A committer of large chunks of code
may simply be adding a not-yet-ready code that is in need of a later
repair. A commiter of one single line of code may have spent many
hours localizing and fixing a hard problem. Etc. So, please do not
read too much into these and other StatCVS-like "Developer of the
Month" numbers... They are mostly just a fun look at the commit flow,
nothing more.
Can these numbers help us learn something new about the development
process? Can they show us where we apparently spent most of our
coding time? Let us try and find out.
Which committers have contributed code for this release?
>>> Most frequent committers, from 0.92.1 to 0.99.0:
Author # Patchsets # Commits
----------- ---------- --------------
tibor 622 2695
kaplun 491 1131
jerome 360 773
nich 167 253
marko 78 108
ghase 65 111
jkrause 23 24
diane 18 19
greg 10 10
marcusj 10 18
rivanov 2 2
tonyo 2 2
axel 1 11
----------- ---------- --------------
TOTAL 1849 5157
Here, 1 CVS commit changing 50 files at once is counted as 1 common
"patchset" and 50 independent "file commits". (As you know, CVS does
not have a concept of a patchset, but this information can be
reconstructed from the commit time and the commit messages, which is
what the cvs->git converter does via cvsps.)
What about the commited line count?
>>> Commits and LOC changes per author, from 0.92.1 to 0.99.0:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
jerome 773 +60696 -11569 49127
kaplun 1131 +36532 -38682 -2150
tibor 2695 +35626 -108428 -72802
nich 253 +10552 -4974 5578
marko 108 +6895 -759 6136
ghase 111 +5887 -1708 4179
axel 11 +2456 -37 2419
marcusj 18 +2127 -33 2094
jkrause 24 +1170 -272 898
diane 19 +571 -182 389
tonyo 2 +379 -19 360
greg 10 +220 -113 107
rivanov 2 +155 -12 143
----------- ---------- -------------- -------------- --------------
TOTAL 5157 +163266 -166788 -3522
It is interesting to note that Jerome was the most active "line
constructor", while Tibor was the most active "line destructor". This
stems from the WML->webdoc move, where we split the work mostly in a
way that Jerome was converting WML files to webdoc and Tibor was
proofing and cleaning them and then deleting the WML files when done:
.webdoc files only:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
jerome 191 +45258 -2058 43200
tibor 376 +5611 -25055 -19444
kaplun 25 +418 -342 76
nich 2 +192 -67 125
----------- ---------- -------------- -------------- --------------
TOTAL 594 +51479 -27522 23957
.wml files only:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
tibor 216 +2979 -57221 -54242
kaplun 81 +1255 -686 569
jerome 35 +1181 -723 458
marko 9 +297 -271 26
nich 7 +162 -218 -56
----------- ---------- -------------- -------------- --------------
TOTAL 348 +5874 -59119 -53245
What about Python files, a typical representative of where most of our
coding activity goes?
>>> Commits and LOC changes per author, from 0.92.1 to 0.99.0, *.py files only:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
kaplun 832 +30981 -22928 8053
tibor 1353 +17154 -13414 3740
jerome 405 +12336 -7526 4810
nich 163 +9189 -3806 5383
ghase 95 +5691 -1689 4002
axel 8 +2424 -34 2390
marcusj 12 +2063 -22 2041
marko 84 +794 -455 339
diane 19 +571 -182 389
tonyo 2 +379 -19 360
greg 10 +220 -113 107
rivanov 2 +155 -12 143
jkrause 1 +5 -4 1
----------- ---------- -------------- -------------- --------------
TOTAL 2986 +81962 -50204 31758
What about the test suite committers?
- unit test suite authors, from 0.92.1 to 0.99.0:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
kaplun 29 +1031 -407 624
tibor 71 +665 -517 148
jerome 9 +207 -91 116
marko 7 +33 -26 7
----------- ---------- -------------- -------------- --------------
TOTAL 116 +1936 -1041 895
- regression test suite authors, from 0.92.1 to 0.99.0:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
kaplun 39 +2134 -803 1331
tibor 128 +1873 -949 924
jerome 35 +475 -273 202
rivanov 2 +155 -12 143
marko 7 +36 -21 15
----------- ---------- -------------- -------------- --------------
TOTAL 211 +4673 -2058 2615
- web test suite authors, from 0.92.1 to 0.99.0:
Author # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
tibor 16 +744 -20 724
kaplun 1 +132 -0 132
----------- ---------- -------------- -------------- --------------
TOTAL 17 +876 -20 856
What do we obtain when we deduce the proportion of "test" {unit,
regression, web} LOCs versus Python "source" LOCs (other *.py files)?
>>> Commits and LOC additions for U+R+W Test versus Python Source code, from
>>> 0.92.1 to 0.99.0:
Author # T Commits # S Commits # T/S Comm % # T LOCs added # S
LOCs added # T/S LOCs %
----------- -------------- -------------- -------------- --------------
-------------- --------------
tibor 215 1154 18.631 3282
14616 22.455
kaplun 69 764 9.031 3297
27816 11.853
marko 14 70 20.000 69
725 9.517
jerome 44 361 12.188 682
11654 5.852
rivanov 2 0 N/A 155
0 N/A
jkrause 0 1 0.000 0
5 0.000
greg 0 10 0.000 0
220 0.000
tonyo 0 2 0.000 0
379 0.000
diane 0 19 0.000 0
571 0.000
marcusj 0 12 0.000 0
2063 0.000
axel 0 8 0.000 0
2424 0.000
ghase 0 95 0.000 0
5691 0.000
nich 0 163 0.000 0
9189 0.000
----------- ---------- -------------- -------------- --------------
-------------- --------------
TOTAL 344 2659 N/A 7485
75353 N/A
It would seem that only about four authors have spent ~10% or more of
their coding activity in the testing department... And while I'm sure
that there are many minutes and hours of "manual" testing behind every
"0" in the above table, it would be helpful to keep these tests in a
written form in order not to redo the same manual testing over and
over again. ;-)
Where did each developer spend most of his coding time, on which
modules and on which files? (again, Python files only, sorted by
lines added and/or modified)
>>> kaplun, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
webaccess 124 +5841 -3718 2123
websubmit 120 +4377 -3576 801
websession 144 +4188 -2590 1598
bibupload 35 +2921 -1994 927
websearch 76 +2398 -2096 302
miscutil 83 +2156 -848 1308
bibindex 37 +1975 -1911 64
bibformat 32 +1393 -746 647
bibsched 28 +1392 -1114 278
bibrank 40 +1200 -1260 -60
bibharvest 16 +925 -1084 -159
webcomment 15 +341 -296 45
webbasket 5 +326 -313 13
bibedit 10 +325 -320 5
webstyle 18 +253 -148 105
bibclassify 6 +221 -190 31
webalert 13 +209 -222 -13
webstat 5 +193 -123 70
webmessage 4 +131 -83 48
webjournal 8 +68 -68 0
bibmatch 1 +64 -64 0
elmsubmit 7 +55 -101 -46
OTHER 5 +29 -63 -34
----------- ---------- -------------- -------------- --------------
TOTAL 832 +30981 -22928 8053
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
webaccess/lib/webaccessadmin_lib.py 21 +2006
-1725 281
websubmit/lib/bibdocfile.py 18 +1586
-193 1393
bibupload/lib/bibupload_regression_tests.py 14 +1453
-443 1010
bibupload/lib/bibupload.py 18 +1342
-1429 -87
webaccess/lib/access_control_admin.py 16 +1273
-900 373
websubmit/lib/docfile.py 3 +1106
-1106 0
bibsched/lib/bibtask.py 15 +1082
-625 457
bibindex/lib/bibindex_engine.py 18 +1037
-1183 -146
websession/lib/sessiongc.py 10 +988
-988 0
websession/lib/webuser.py 39 +780
-535 245
[...]
>>> tibor, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
miscutil 138 +3274 -1816 1458
websearch 153 +2269 -1834 435
bibupload 25 +1366 -456 910
websubmit 205 +1326 -1409 -83
bibformat 159 +1123 -1123 0
bibrank 85 +883 -884 -1
bibindex 43 +850 -545 305
websession 79 +716 -726 -10
bibharvest 61 +696 -626 70
bibedit 38 +569 -341 228
webstyle 55 +488 -409 79
webjournal 37 +463 -468 -5
elmsubmit 33 +423 -430 -7
bibclassify 15 +379 -153 226
webbasket 27 +352 -374 -22
bibconvert 15 +344 -299 45
webaccess 48 +305 -300 5
webcomment 37 +288 -269 19
webmessage 24 +280 -285 -5
webalert 34 +261 -258 3
OTHER 10 +215 -195 20
webstat 18 +162 -148 14
bibsched 12 +115 -59 56
bibmatch 2 +7 -7 0
----------- ---------- -------------- -------------- --------------
TOTAL 1353 +17154 -13414 3740
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
miscutil/lib/inveniocfg.py 44 +1595
-597 998
bibupload/lib/bibupload_regression_tests.py 8 +808
-233 575
websearch/lib/search_engine.py 35 +637
-511 126
bibupload/lib/bibupload.py 11 +515
-177 338
websearch/lib/websearch_templates.py 23 +406
-330 76
miscutil/lib/dbquery.py 6 +384
-23 361
bibindex/lib/bibindex_engine_stemmer.py 4 +380
-41 339
websearch/lib/websearch_regression_tests.py 21 +355
-197 158
miscutil/lib/mailutils.py 9 +269
-82 187
websubmit/lib/websubmitadmin_templates.py 4 +259
-261 -2
[...]
>>> jerome, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
bibformat 147 +3286 -2749 537
webstyle 55 +2669 -1073 1596
bibharvest 47 +1831 -1126 705
websearch 57 +1642 -799 843
websubmit 29 +719 -552 167
miscutil 8 +677 -72 605
webcomment 15 +490 -350 140
websession 13 +329 -263 66
bibedit 4 +203 -207 -4
webstat 5 +177 -119 58
webbasket 3 +80 -54 26
webalert 6 +71 -45 26
webjournal 2 +42 -33 9
bibconvert 3 +38 -21 17
webmessage 2 +37 -22 15
webaccess 4 +18 -16 2
bibrank 3 +14 -13 1
bibindex 2 +13 -12 1
----------- ---------- -------------- -------------- --------------
TOTAL 405 +12336 -7526 4810
File # Commits # LOCs added # LOCs deleted
# LOCs add-del
----------- ---------- -------------- --------------
--------------
webstyle/lib/webdoc.py 21 +1728 -818
910
bibharvest/lib/oaiarchive_engine.py 13 +1028 -576
452
miscutil/lib/wml2html.py 2 +576 -37
539
bibformat/lib/bibformat_engine.py 21 +511 -279
232
websearch/lib/websearch_templates.py 11 +479 -375
104
websearch/lib/search_engine.py 18 +437 -239
198
bibformat/lib/bibformat_xslt_engine.py 4 +420 -34
386
webstyle/lib/template.py 4 +414 -48
366
websubmit/lib/websubmit_templates.py 6 +395 -340
55
bibharvest/lib/oai_repository.py 8 +309 -270
39
[...]
>>> nich, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
websubmit 121 +5746 -1817 3929
bibedit 38 +3328 -1965 1363
bibconvert 3 +111 -20 91
webstyle 1 +4 -4 0
----------- ---------- -------------- -------------- --------------
TOTAL 163 +9189 -3806 5383
File # Commits # LOCs
added # LOCs deleted # LOCs add-del
----------- ----------
-------------- -------------- --------------
bibedit/lib/refextract.py 31
+2746 -1652 1094
websubmit/lib/websubmit_file_stamper.py 7
+2052 -683 1369
websubmit/lib/websubmit_engine.py 14
+933 -494 439
websubmit/lib/websubmit_dblayer.py 6
+740 -107 633
bibedit/lib/xmlmarc2textmarclib.py 5
+575 -306 269
websubmit/lib/functions/Stamp_Uploaded_Files.py 4
+417 -11 406
websubmit/web/publiline.py 2
+351 -15 336
websubmit/lib/functions/Mail_New_Record_Notification.py 2
+292 -3 289
websubmit/lib/functions/Make_Dummy_MARC_XML_Record.py 1
+144 -0 144
websubmit/lib/websubmit_config.py 4
+111 -12 99
[...]
>>> ghase, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
webjournal 83 +5630 -1650 3980
webstyle 6 +29 -21 8
bibformat 5 +26 -14 12
webaccess 1 +6 -4 2
----------- ---------- -------------- -------------- --------------
TOTAL 95 +5691 -1689 4002
File # Commits # LOCs
added # LOCs deleted # LOCs add-del
----------- ----------
-------------- -------------- --------------
webjournal/lib/webjournal_utils.py 23
+1755 -518 1237
webjournal/lib/webjournal_webinterface.py 23
+1560 -933 627
webjournal/lib/webjournal_config.py 6
+721 -40 681
webjournal/lib/webjournal.py 9
+533 -106 427
webjournal/lib/webjournal_templates.py 7
+478 -27 451
webjournal/lib/widgets/bfe_webjournal_widget_seminars.py 3
+161 -6 155
webjournal/lib/widgets/bfe_webjournal_widget_weather.py 5
+145 -13 132
webjournal/lib/webjournal_washer.py 2
+126 -2 124
webjournal/lib/widgets/bfe_webjournal_widget_latestPhoto.py 2
+105 -1 104
webjournal/lib/bfe_ObjectLanguage.py 3
+46 -4 42
[...]
>>> axel, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
websubmit 8 +2424 -34 2390
----------- ---------- -------------- -------------- --------------
TOTAL 8 +2424 -34 2390
File # Commits #
LOCs added # LOCs deleted # LOCs add-del
----------- ----------
-------------- -------------- --------------
websubmit/lib/websubmit_templates.py 1
+1011 -12 999
websubmit/web/publiline.py 1
+900 -22 878
websubmit/lib/functions/Send_Request_For_Refereeing_Process.py 1
+113 -0 113
websubmit/lib/functions/Send_Request_For_Direct_Approval.py 1
+113 -0 113
websubmit/lib/functions/Send_Request_For_Publication.py 1
+113 -0 113
websubmit/lib/functions/Create_Cplx_Approval.py 1
+70 -0 70
websubmit/lib/functions/Check_Group.py 1
+63 -0 63
websubmit/lib/functions/Print_Success_CPLX.py 1
+41 -0 41
>>> marcusj, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
webstat 5 +2014 -0 2014
bibsched 4 +35 -15 20
webstyle 1 +6 -2 4
websession 1 +5 -3 2
webaccess 1 +3 -2 1
----------- ---------- -------------- -------------- --------------
TOTAL 12 +2063 -22 2041
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
webstat/lib/webstat.py 1 +747
-0 747
webstat/lib/webstat_engine.py 1 +660
-0 660
webstat/lib/webstat_templates.py 1 +279
-0 279
webstat/lib/webstatadmin.py 1 +168
-0 168
webstat/lib/webstat_webinterface.py 1 +160
-0 160
bibsched/lib/bibsched.py 4 +35
-15 20
webstyle/lib/webinterface_layout.py 1 +6
-2 4
websession/lib/websession_templates.py 1 +5
-3 2
webaccess/lib/access_control_config.py 1 +3
-2 1
>>> marko, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
bibrank 53 +548 -293 255
websearch 17 +154 -109 45
bibedit 7 +58 -26 32
webstyle 3 +18 -15 3
bibformat 2 +11 -7 4
webmessage 2 +5 -5 0
----------- ---------- -------------- -------------- --------------
TOTAL 84 +794 -455 339
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
bibrank/lib/bibrank_citation_indexer.py 12 +197
-77 120
bibrank/lib/bibrank_citation_searcher.py 15 +154
-98 56
bibrank/lib/bibrank_record_sorter.py 12 +122
-67 55
websearch/lib/websearch_webinterface.py 4 +56
-29 27
websearch/lib/websearch_templates.py 5 +49
-34 15
websearch/lib/search_engine.py 6 +41
-39 2
bibedit/lib/bibedit_templates.py 2 +33
-7 26
bibedit/lib/bibrecord_tests.py 5 +25
-19 6
bibrank/lib/bibrank_regression_tests.py 4 +22
-11 11
bibrank/lib/bibrank_tag_based_indexer.py 4 +20
-14 6
[...]
>>> diane, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
websubmit 17 +563 -175 388
bibformat 2 +8 -7 1
----------- ---------- -------------- -------------- --------------
TOTAL 19 +571 -182 389
File # Commits # LOCs added
# LOCs deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
websubmit/lib/functions/Move_Files_to_Storage.py 3 +197
-13 184
websubmit/lib/functions/Shared_Functions.py 2 +149
-10 139
websubmit/lib/websubmit_webinterface.py 1 +44
-19 25
websubmit/lib/file.py 1 +42
-16 26
websubmit/lib/websubmit_engine.py 2 +41
-21 20
websubmit/lib/functions/Report_Number_Generation.py 2 +35
-26 9
websubmit/lib/functions/Upload_Files.py 2 +16
-49 -33
websubmit/lib/functions/Create_Modify_Interface.py 1 +14
-5 9
websubmit/lib/websubmit_templates.py 1 +10
-6 4
websubmit/lib/functions/Convert_RecXML_to_RecALEPH.py 1 +9
-5 4
[...]
>>> tonyo, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
bibedit 2 +379 -19 360
----------- ---------- -------------- -------------- --------------
TOTAL 2 +379 -19 360
File # Commits # LOCs added # LOCs deleted #
LOCs add-del
----------- ---------- -------------- --------------
--------------
bibedit/lib/refextract.py 2 +379 -19
360
>>> greg, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
webstyle 1 +81 -42 39
webbasket 2 +72 -28 44
websubmit 3 +33 -27 6
webcomment 1 +20 -2 18
webaccess 1 +7 -8 -1
webmessage 1 +4 -3 1
websession 1 +3 -3 0
----------- ---------- -------------- -------------- --------------
TOTAL 10 +220 -113 107
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
webstyle/lib/webpage.py 1 +81
-42 39
webbasket/lib/webbasket_webinterface.py 1 +47
-22 25
webbasket/lib/webbasket.py 1 +25
-6 19
webcomment/lib/webcomment.py 1 +20
-2 18
websubmit/lib/file.py 1 +19
-11 8
webaccess/lib/access_control_admin.py 1 +7
-8 -1
websubmit/lib/functions/Upload_Files.py 1 +7
-13 -6
websubmit/lib/websubmit_engine.py 1 +7
-3 4
webmessage/lib/webmessage_mailutils.py 1 +4
-3 1
websession/lib/webgroup_dblayer.py 1 +3
-3 0
>>> rivanov, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
webbasket 2 +155 -12 143
----------- ---------- -------------- -------------- --------------
TOTAL 2 +155 -12 143
File # Commits # LOCs added # LOCs
deleted # LOCs add-del
----------- ---------- --------------
-------------- --------------
webbasket/lib/webbasket_regression_tests.py 2 +155
-12 143
>>> jkrause, Python files only, from 0.92.1 to 0.99.0:
Module # Commits # LOCs added # LOCs deleted # LOCs add-del
----------- ---------- -------------- -------------- --------------
bibupload 1 +5 -4 1
----------- ---------- -------------- -------------- --------------
TOTAL 1 +5 -4 1
File # Commits # LOCs added # LOCs deleted # LOCs
add-del
----------- ---------- -------------- --------------
--------------
bibupload/lib/bibupload.py 1 +5 -4
1
So far, this post-release fun series concerned only commits between
0.92.1 and 0.99.0 releases. In the next episode of this series, we
shall look at the numbers from the overall CDS Invenio project
history...
Best regards
--
Tibor Simko ** CERN Document Server ** <http://cds.cern.ch/>