Code growth

Note: This is an old post in a blog with a lot of posts over a long span of time. The world has changed, technologies have changed, and I've changed. It's likely this is out of date, the code doesn't work, the ideas haven't aged well, or the ideas were terrible to begin with. Let me know if you think this is something that needs updating.

I was working on identifying and removing dead code in the Miro tree today when I decided to do some stats on the Miro codebase over the last bunch of versions.

version

sloccount

.tar.gz size

1.0

python:
    44700 (94.91%)
cpp:
      1313 (2.79%)
ansic:
       790 (1.68%)
xml:
       264 (0.56%)
sh:
        30 (0.06%)

12.3mb

1.1.2

cpp:
    58403 (58.71%)
python:
    39985 (40.20%)
ansic:
       790 (0.79%)
xml:
       264 (0.27%)
sh:
        30 (0.03%)

13.4mb

1.2.8

cpp:
    58491 (58.53%)
python:
    40187 (40.21%)
ansic:
       796 (0.80%)
xml:
       265 (0.27%)
sh:
       196 (0.20%)

14.6mb

2.0.5

cpp:
    73663 (58.74%)
python:
    49198 (39.23%)
ansic:
      1831 (1.46%)
xml:
       438 (0.35%)
sh:
       282 (0.22%)

7.3mb

2.5.4

cpp:
    73808 (57.63%)
python:
    51631 (40.31%)
ansic:
      1874 (1.46%)
xml:
       432 (0.34%)
sh:
       328 (0.26%)

10.0mb

3.0.2

python:
    52869 (95.73%)
cpp:
       832 (1.51%)
ansic:
       692 (1.25%)
xml:
       432 (0.78%)
sh:
       403 (0.73%)

9.7mb

git master

python:
    53305 (95.98%)
cpp:
       832 (1.50%)
ansic:
       692 (1.25%)
xml:
       432 (0.78%)
sh:
       279 (0.50%)

9.6mb

There are a couple of interesting things here. First is that we switched to libtorrent in Miro 1.1. We had libtorrent code in the tarball in Miro 1.1 and removed it in Miro 3.0--that's the bulk of the cpp code.

Second, we did a ui overhaul for Miro 2.0. In doing that, we switched all three platforms to using gettext and thus only had to have one set of translations. We also ditched a bunch of binary data. That reduced the tarball size significantly.

Third, the number of lines of Python code has been going steadily up since Miro 1.1. This is the number I'm most concerned with. In adding more Python code version after version after version, we're adding more complexity and a larger domain of things to test. This adds to the maintenance work we have to do between versions, too.

We sure could use some help coding, fixing, maintaining, testing, documenting and translating.

Want to comment? Send an email to willkg at bluesock dot org. Include the url for the blog entry in your comment so I have some context as to what you're talking about.