Links about porting and FreeBSD
My ports link page on freefall contains dozens of links which are all horribly stale.
Current projects
- Move portsmon; needs to be done by Dec. 1.
Debug the updated package building scripts on pointyhat-west. When finished, update the documentation.
- Bring up pointyhat-east.
- Retarget the PXE boots at NYI to point to pointyhat-east.
- Come up with a syncronization strategy between the 3 pointyhats.
- Once the above are done, move primary package building to pointyhat-west and pointyhat-east, and repurpose pointyhat to be the web server and script development system.
Ongoing projects
- Keeping track of package building node failures and restarting or offlining failed nodes.
- Maintaining the package building systems at ISC, Yahoo, and NYI.
Attempting to create some scripts that will allow us to view the state of ports on one buildenv vs. another buildenv (e.g. "ports that are marked BROKEN on amd64 but not on i386"); to view the reason why packages that were not marked BROKEN and thus were attempted did not build. See the preliminary results and the processlogs patch.
- Creating graphs of the state of packages on the various buildenvs over time.
- Recruit new people for the bugbusting team, and help them work through understanding how to classify PRs and correspond with users. We are in far better shape than we have been for several years.
- sparc64, powerpc, and ia64 package builds. On occasion, maintainer notifications.
Working on the Bugathons. See my list of action items.
- Contacting maintainers who have had changes to their ports committed with maintainer-timeouts to ask if they are still interested in working on FreeBSD. In cases where I do not get a positive answer, I now try to contact the submitters of the PRs to see if they will take over the ports.
Continuing development and maintainance of portsmon.
Sending email from portsmon informing maintainers about: ports marked BROKEN; ports marked DEPRECATED; ports marked FORBIDDEN; ports marked with an EXPIRATION_DATE; and PRs that they might not know about. Although these emails can be irritating they have also been very effective in getting problems fixed -- especially for maintainers who are not FreeBSD committers and thus do not get any mail from GNATS about their ports. (There is now a per-PR opt-out for the latter email. Also, for that email, if the maintainer is a committer, or the maintainer submitted the update (email message match), then the email is not sent. A per-maintainer opt-out needs to be added to the others.)
- Working with src committers to make progress on the stale PRs, and, if necessary, reassign them to the general pool. Someone else should take this over.
- Attempting to identify abandoned distfiles on freefall. Someone else should take this over.
Recent and past projects
Helped set up a test instance of RackMonkey for clusteradm.
- Brought up more machines for package building at Yahoo!.
- Provided support for Sean Bruno during various trips out to Yahoo to update and repair systems.
- Configured several new package building systems at NYI.
- Helped coordinate the setup and testing of the NYI infrastructure.
- Configured several new package building systems at ISC.
- Loaned one of my systems to people to debug various sparc64 problems.
- Helped several new volunteers set up their systems as package building nodes (primarily sparc64).
- Set up two of my own machines as package building nodes.
Helped organize RackspaceWanted.
- Updated the package building article to reflect the latest code.
Created a new set of reports on PRs (they are static for now). The page has most recently been reorganized by interest group (everyone; committers; bugbusters). Some correspond to the weekly postings that we already have, but others are new:
PRs correlated by manpage (mostly bin);
PRs indexed by tag (mostly kern);
PRs recommended for committer evaluation by the bugbusting team;
New PRs in the last day; in the last week; in the last month;
Recently modified PRs in the last day; in the last week; in the last month;
Created the PortsBrokenOnCurrent page and recruited help to fix the problems. This has been a huge task.
Assisted SimonNielsen in configuring a firewall for the ISC cluster, and in renumbering the IP addresses of those systems per ISC request.
Assisted BradDavis in debugging problems on the ISC cluster.
- Brought online 14 new sparc64 package build machines, and 4 new i386 package build machines.
Reworked the pointyhat home page, for readability.
Fixed some bugs on pointyhat that were introduced with the new scheduler and directory layouts. In particular, the package building statistics page is back up.
Reworked the proposed FreeBSD support schedule graph, which shows how many simultaneous versions of FreeBSD we are effectively committed to support, as part of the discussion about the impact the release cycles has on ports infrastructure work. Someone else needs to take this over.
Reworked my FreeBSD home page on freefall, so that people can find everything there of interest (including my past conference presentations).
Reworked the BugBusting page.
- Added the 'arm' category to GNATS. Documented all the work that has to be done to add a category.
- Repaired and upgraded some of the systems based at ISC, including ftp4.FreeBSD.org. Documented the systems there.
Helped to get VolkerWerth GNATS access. He has been instrumental in helping to classify and close PRs, as well as working with users to help them understand their problems.
Helped to get BruceCran GNATS access. He has also been very helpful.
Created a page about Sparc64Packages.
Update to portsmon to add ability to view ports with build errors in one environment only. Example: http://portsmon.freebsd.org/portsconcordanceforbuildenv.py?buildenv=i386-7-latest&buildenv2=i386-6-full. Also, added a page to show the state of all uploaded packages; and the ability for the overview page to show the state of the latest successful package build (not just build error).
- Performing sweeps of expired ports. Note: I intend to take "I let my ports expire" as some degree of indication that a maintainer may have lost interest in their ports and thus needs to be asked if their other ports should be reassigned to ports@ -- especially if there are pending PRs. (I haven't done this in a while; other people seem to have taken up the task.)
- With input from kris, revised the portbuild article.
- Helped with the transition of pointyhat to a newer machine.
- Updated the package error classification script to highlight more gcc4-specific cases, and eliminate some false positives.
Worked with GavinAtkinson to help him understand how to work with the PR backlog, including which PRs to close, how to ask for feedback, and so on. He has been a great help.
- Helped introduce the kld virtual category.
Cleaned up many of the non-ports PRs in a "feedback" state. See PRs in the feedback state which may be stale.
- Moved the various GNATS scripts from my own directory, to ~gnats, so that others can maintain them in the future.
Created a weekly posting of "PRs recommended for committer evaluation", based on a flat-file of PR numbers. The idea is to get more committers involved in clearing PRs. There is now a web page equivalent.
Created a weekly report of submitters of PRs so that we can look for new contributors.
Presented a paper at BSDCan 2008 about changes to portsmon to graph port failures and their dependencies. There is still more work to do to automate this.
Presented some informal thoughts at BSDCan 2008 about GNATS workflow issues.
- Helped to go through all current portmgr-assigned PRs at BSDCan 2007 devsummit; we closed a large number of stale ones.
- Helped to push for the removal of the 4.X support, to try to focus maintainer attention on newer releases. (This was controversial, but I think it was past time to do so.)
- Corresponded with Joerg Sonnenberger and David Maxwell of pkgsrc about projects, including an abstraction layer for ports/packages metadata. It would be great if we could convince the software author community to adopt some kind of standards for publishing metadata.
Continuing the experiement to classify src and i386 PRs in GNATS by module name (or other "tag" when module name is not avaialable) in an effort to highlight areas that need attention. Also trying to ensure the the "patch" tag is added to PR with patches (there are currently over 1,000 of these in the system!) This was addressed in one of my 2008 talks. See PRs indexed by tag.
- Based on both of the above, created new weekly periodic postings.
Tightend up the spam-filtering rules for GNATS. This dropped me several positions in the PR closing statistics. There are very few false positives; I handle those.
Helped edit the article Contributing to the FreeBSD Ports Collection which attempt to explain what portmgr expects of our ports committers and maintainers. Some of this information was not really available in the existing documentation.
Updated the Problem Reports article to make it less src-specific. I need to add information about spam filtering.
With help from EdwinGroothuis, implemented change to Ports index page to make the ports categories more browsable. Having done that, went back and reworked the page to break it into several pages with much more informative text.
Used the DistfileSurvey output to remove hundreds of bogus sites both from bsd.sites.mk as well as many other places in the ports tree.
Wrote the Choosing the FreeBSD Version That Is Right For You article in response to the "Quality of FreeBSD" thread on -stable which involved questions about "5.4 or 6.0"? The article is a general guide to -stable vs -current and how FreeBSD releases are made. This information supplants a bunch of more poorly written stuff in the FAQ and the latter needs to be removed. (A companion article would be a feature comparison from release to release; would someone like to do this?)
- Reset assignment of "new port" PRs that has been assigned to the same Responsible for many months. I would like to see much quicker turnaround of PRs that someone takes, or for them to be released so that others can work on them.
Created web pages that describe the various tasks portmgr performs and what its policies are. A recent update refactors the individual policies pages so that committers may more quickly find individual policies such as timeout periods. In addition, new background material was added about design decisions in the Ports Collection and how they influenced these policies.
Long-term Goals
- Update sparc64 package build systems to 8.X.
Trying to decrease the number of ports PRs in the GNATS database.
- Trying to decrease the number of broken ports overall, either by fixing them, encouraging others to fix them, or applying the Grim Reaper to ones that have outlived their usefulness.
- Working on ports meta-issues such as infrastructure improvements.
Making updates to the PortersHandbook to make it much more accurate and complete.
- Coming up with some kind of more useful idea about browsing and searching ports that the tools that we have right now, which I consider primitive.
- Suggesting minor changes to the FreeBSD web site to push some links down one page to reduce clutter while at the same time bringing important links up one page.
- Suggesting other changes to make FreeBSD more easily installable and maintainable, as I find them.
- Trying to improve FreeBSD's image outside of its own community, and trying to expand that community.
Projects that seem to have stalled
- Set up a sparc64 tinderbox at ISC.
Coming up with proposals to fix the problems in the PortersHandbook.
Update portsmon to know about the new mailing lists and PortsNewDistfileChecker.
Trying to encourage a rework of the FAQ to be something more general, more concise, and more browseable. A proposal was posted on -doc but needs much more work. Currently I am out of cycles to work on this in the near-term.
- Trying to update the concept of when we consider a PR 'too old' -- with particular emphasis on basing it on FreeBSD version. A proposal was posted on -doc.
- Creating a list of what the portmgr team considers to be useful goals and projects.
A substantive discussions about Bugtracking occurred but without conclusion. There are concerns about migration, but more importantly, about how robust any of the alternatives to GNATS are -- especially Bugzilla.
The FreeBSD architecture chart, showing the availability of various features on a per-architecture basis. It got political. It would be really cool if someone else were to pick it up and bring it back up to date.
My wishlist
- For ports maintainers who have lost interest in their ports to reassign them to the general pool, so that the PRs against their ports can be committed without having to ask if you are stepping on any toes.
- For someone to create a marketplace where users willing to pay for feature developments or updates could be matched with developers willing to perform work to be released under the FreeBSD License.
- To find full-time employment, ideally that would let me remain based in Austin (up to 50% travel would be acceptable), either at competitive rates to do development work, or, as an experiment, reduced rates that would allow me to do FreeBSD work (e.g. bugfixing, writing documentation, QA activities). Resume available on request.
VCS tidbits
Noted by PeterWemm:
the size of the FreeBSD repo:
- cvs head only: src: 640MB, ports: 450MB.
- cvs repository: src: 1.8GB, ports 1.2GB.
- svn repository: src 3.6GB (mostly due to a broken cvs2svn heuristic), ports: 7.5GB.
- # of commits: src: 180K (including branching operations), ports: 199K.
- svn conversion time: src: 4 hours, ports: 4.6hrs.
Vendor imports in cvs are kryptonite to cvs2svn. When a file "leaves" the vendor branch, the -b1.1.1 is removed, with no record of when it happened, or what base point the new 1.2 delta is relative to. cvs2svn doesn't try and guess that one, so the initial 'leave vendor branch' delta is too big. The delta is correct, but it is stored very inefficiently in the generated svn repo.
The 3.6GB svn repo includes all 15 years of cvs branch history, not just the 1.x mainline. I've seen people waving numbers around for various vcs's before after having ignored all the vendor and releng branches.