When I got back from lunch, I resumed coding and found that a method that I needed to update values in a property set was not available in the version of Apache POI that I was using. The latest version of POI has the method, but it has also rearranged a bunch of things that used to be integer constants to be enum types. The latter is better, but it resulted in a bunch of breaking changes. Oops.
So I sent an IM off to the fellow that I know who is the other biggest user of this library in our extended group. He agreed that going up to the newest version of POI is a good idea. However, since it is incompatible, we need to do this work in a branch.
My part of the group is working in a different version control system than the rest of the larger group as part of a pilot project to move to this new and different version control system. So although I am already working on this project in a branch, it is not a branch that he can use, since his source code hasn't been migrated to the new version control system yet. A new branch will need to be created on the old version control system by another fellow who is in charge of creating branches.
Meanwhile, we also need to get permission to migrate to the newest version of the library. However -- and especially because there are breaking changes in this version -- we need to find out who else may be using this library and running in the same JVM that we are in so that we do not break each other's code. So I have sent off another request to the fellow who is in charge of getting permission to use newer versions of libraries -- which are, by policy, preferred -- so that he can request permission to use this library in a future release and check with a different group to make sure that upgrading this library will not break anything else and/or coordinate things so that we all move to the new version of the library at the same time.
I spent the rest of the afternoon fixing the references in our code so that they work with the new version of the library. However, until the code from the other part of our group is updated, I can't actually run and test the new code. And that will not happen until the branch is created on the old version control system. And he gets time to make the changes. Or maybe I will make the changes, but it still can't be done until the new branch exists on the old version control system.
I also noted that this is the last version of Apache POI that will work with Java 7, which is the version of Java that we are using. Newer versions of Apache POI will require Java 8. There is some good reason that we can't migrate to Java 8, mostly having to do with some mass of code somewhere that needs to be reworked for Java 8, although I don't remember the details of what mass of code or who is responsible for it.
And this is why Bill can't finish things.
(Note: I am fully in favor of not breaking everyone else's code. The coordination problems involved in avoiding that, however, are a bit maddening.)