[Originally I wrote this up as a nice set of pages on a Wiki, but the machine
running that Wiki died and I lost everything I had written up there. So, this
version will be done as a few lame, read-only HTML pages. I make no claims at
being an HTML expert, so these pages are going to be pretty simple]
This is my idea of a project to reorganize the files in the FreeBSD ports
collection. There is an ambtious long-term idea behind this project, one
which is so ambitious that I suspect that I could never complete it. So
my intention is to start with a less-ambitious goal, one where there is
at least some chance that it could be finished.
Right now, these are just my ideas, and I am not a ports-developer. This
is not a project that the real ports developers have made any decision on
yet. These web pages are meant to describe the project in enough detail
that other developers can tell whether these ideas are worth pursuing.
The long-term goal would be to convert the ports-collection to storing much of
it's information in an XML-ish format. We could (perhaps) move all of the
ports-specific info out of make variables and into the XML-ish file, and
eventually (I think) end up with a single Makefile which would work for
every port. We might end up with a ports tree that could be more easily
used by other BSD-projects, too. However, there are many questions about
how such a dramatic redesign should look and work, and I doubt that I know
enough about ports to have good answers for all of those questions.
Thus, what I want to do for now is just a short-term goal. That goal is simply
to collapse many ports-specific files into a single new file. I'm calling this
new file "pkg-data", so this is the PkgDataProject. This project will probably
make zero changes to the Makefiles of individual ports, although it will require
some changes to the global files such as bsd.port.pre.mk and bsd.port.post.mk.
While the more-ambitous project could result in many impressive benefits, the
only measurable benefit from this short-term project is that the ports collection
will take up fewer inodes. Given the size of the ports collection, and the fact
that we keep adding more ports to it, I do think this is a worthwhile benefit.
However, I realize that many people do not find that benefit by itself to be very
exciting.
Perhaps I can generate a little more interest if I provide an outline of
how this would work. Here is a list of various aspects of this project: