Advanced Namespace Tools blog

03 January 2018

A new, restructured ANTS repository and ending Bell Labs support

A new year always seems like a nice time for making a break with the past, and in that spirit, I have initialized a new, 9front-specific ANTS repository. It is located at https://bitbucket.org/mycroftiv/ants9front and will be the primary repository going forward from the next .iso release in a few days. I believe I will create another repository for development, paralleling the plan9ants/antsexperiments split that has been used for the past few years. I'm not sure yet what the unstable/dev repository will be called.

Why a new repo?

The most important reason is that the hg history of the plan9ants/antsexperiments repo is full of binary junk that should never have been committed in the first place. When I started developing ANTS in 2013 (based on other Plan 9 projects going back to 2009) it was my first time using a version control system and it took me awhile to get the hang of managing a rather complex project. As a result, the early weeks have a lot of random binary junk that got committed and rebuilt and tracked. The major contributors to the size of the repo are things that don't even belong there. This is rather unsatisfactory. Megabytes are pretty cheap nowadays, but still shouldn't be wasted.

Another reason for a repo reset is that I am removing all Bell Labs specific code from ANTS going forward. On initial release in 2013, only Bell Labs was supported. In 2015, 9front support was added, contained within the "frontmods" subdirs which were then bound on top of the default Labs-based directories by the build script. As time has gone on, I have gradually stopped using the original distribution in favor of 9front, because 9front is an improvement in pretty much every way. I also added support for 9legacy, and I appreciate the work done to maintain 9legacy as an attempt to stay as close to the original version of Plan 9 as possible, but I have received no feedback from any 9legacy users that they have interest in using ANTS, so it seems to make sense to leave the 9legacy support patches in the now-static repos containing the labs specific code.

Changing to a 9front-only model of development and support simplifies testing and documentation as well as the organization of the repository. With so much code being moved and removed, a re-initialization from a new commit 1 seems to be appropriate.

New repository organization

Previously, the "frontmods" subdirectory contained many of the same dirs as the base level of the repo, and the build script would do

bind -c frontmods/grio grio
bind -bc frontmods/patched patched
bind -bc frontmods/bootdir bootdir.extras
bind -bc frontmods/cfg cfg

prior to its other actions. After reorg, the base level "grio" directory is now 9front-specific, and the frontmods/grio dir has been removed. A similar pattern applies to the others, with a dir like "cfg" having labs specific things removed and the 9front versions moved into it. The "frontmods" dir now contains only folders containing patched versions of 9front distro code. The labs patches used to live in a series of dirs in the base level named

src.9.boot
src.9.pc
src.9.port

which are now removed, along with the "legacymods" dir. The "build" script is now about half as long, due to all of the labs specific targets being removed. Perhaps it should be changed into a conventional mkfile, but the build process is complex and I find mkfiles somewhat difficult to parse mentally past a certain point. There is still some work to be done updating webpages and improving repo organization, but the current structure should be more maintainable and also more comprehensible to anyone browsing it.