Thursday, March 08, 2007

lab 71 - pruning


lab 71 - pruning


I've tried to reduce acme-sac source tree to what I consider the core. I'm cutting out dead wood to encourage new growth. Except that what counts as dead wood is highly debatable. I removed files I tended not to use, but my well traveled paths through inferno are not necessarily going to match yours. So while acme-sac still stands alone, it depends on the larger world of inferno-os for diversity and range of applications.

The smaller mass of code is intended to have less inertia. Not only can a programmer more easily understand it all, but he can also make changes system wide and so turn it to new directions. For example, if a new system library were to be imagined that could be applied to the whole limbo code set, the size of the code should not present so much resistance that an individual would not attempt it.

This reduction effort started in lab 58. The source from that became acme-sac. The recent "right-sizing" removed a lot of code. It's now down to a size I can feel comfortable with. What is the total lines of code a single developer can manage?

Number of lines of C code in acme-sac is 131,930. Compared to over 750,000 lines in the inferno-os distribution. Number of lines of Limbo code in acme-sac is 282,970. About 466,872 lines in inferno-os.

Some of the big changes I made are removing the native os tree; it does not seem relevant to acme-sac at this time. I moved all the C source under /sys, and rewrote all the mkfiles. I removed all libraries acme-sac does not depend on: libtk, libprefab, libdynld, libfreetype, libkern, libnandfs. I also removed a significant amount from /appl/lib and /module.

For a very ambitious project in code reduction, read this (PDF), from Alay Kay and associates at Viewpoints Research.

No comments: