Previously, I discussed some important and common sustainability problems that Open Source projects and communities can face. The first of our new service offerings to debut will address both defect repair and quality assurance (QA) of Open Source projects in which we are involved. The activities that address these two needs are tightly linked, and the requisite skills and resources are often difficult to extract from a purely volunteer developer base. This is where Equinox, as the largest Open Source library service provider, can step in to serve a specific need in a sustainable manner, and we believe we have created a realistic solution to these problems.
We are extremely excited about AIM: Active Integrated Maintenance, a service dedicated to maintaining and improving the Open Source library software we support. Equinox is a proven leader in the support, development, and maintenance of Open Source library software and, with AIM, we are creating a sustainable, direct, and efficient infrastructure to guarantee the future of the software you use today.
AIM is structured as a subscription service. The deliverable we provide for the cost of the subscription is immediate access to Equinox approved, installation-ready releases of the subscriber’s software, with all AIM-supplied fixes applied.
AIM Priority and Prime subscriptions also offers subscribers regular interaction with Equinox Project Management staff, to assist in prioritization and provide regular feedback. With the additional AIM Applied service, Equinox even provides monthly installation of AIM releases to our support customers. All subscriptions are measured in AIM Targets, which are specific requests for defect repair or QA improvement. A larger subscription provides the subscriber with more Targets.
We have designed AIM to help avoid some of the resource and sustainability problems discussed above. There are three conceptual areas that are addressed directly:
- Motivation and prioritization
- Accurate estimation of time and funding requirements
- Transparency, regularity, and predictability
Motivation and prioritization
It can be difficult for an Open Source project to maintain long term volunteer development resources to address software defects, especially when there is a need to address issues simultaneously across multiple versions of the software. There are many contributing factors, but one of critical importance is that a single volunteer is often not in a position to invest time in multiple iterations of an issue, assuming they even have the relevant background knowledge covering multiple versions of the software.
When such resources can be identified and leveraged, the next step is appropriate prioritization of issues. Without broad and frequent interaction with the full spectrum of users, it is nearly impossible to objectively judge the global, relative importance of each issue. All bugs should be fixed, but some are simply more important that others; identifying issue priority is critical to the long term viability of any software, Open Source or otherwise. These challenges of motivation and prioritization are directly and naturally addressed by AIM.
The challenge of motivation is solved simply by the structure of the AIM service. Subscribers pay a monthly amount, which varies depending on their subscription type and size, for access to full, installable release of the software they use, and these releases contain all of the bug fixes and QA efforts we have performed up to that moment. We submit all of this same code to the respective community code bases at the same time we create them, but depending on the specifics of the community’s release policy and timeline, that code may not be available quickly for use by end users. Put another way, Equinox provides a guarantee of timely access to the work funded by the subscribers.
All AIM subscriptions come together to create a funding pool consisting of the subscription fees paid for the service. The size of the funding pool tells us exactly how much development time we can allocate each month to bug fixes and QA tasks. That, in turn, allows us to estimate when particular fixes will be available, where possible. Where estimation of delivery time is unlikely to be precise, we can provide information on the order, dependencies and progress of the outstanding set of Targets.
Of course, in order to deliver estimation and progress information, we must first decide on the relative priority of the issues we plan to address. Part of each AIM subscription is the ability to report problems, or Targets, for Equinox to address and, depending on the subscription type, to prioritize each on a regular basis. Subscription pricing is designed to allow libraries of all types, sizes and budgets to afford some level of the service, while making sure that the effort we apply to AIM bug fixes and QA is fully funded.
By working to increase participation by different types and sizes of libraries, Equinox is able to gather input from a broad cross-section of users. From that we gain a big-picture perspective about the relative severity and priority that end users place on the issues they report through their AIM Targets. We use this cross-subscriber view, along with direct prioritization by individual subscribers, and our developers’ assessment of risk and effort to come to a priority list for all outstanding AIM issues. We also survey the broader communities’ interest in particular issues, for instance through Launchpad bug heat, to help further inform prioritization.
Time and cost estimation
Defect Repair and QA are fundamentally different from new feature development. When designing a new feature, a developer can look at the goal and the existing code base and give a reasonable estimate on the time needed to reach the goal. When looking at a bug, however, things are very different. There is often no way to estimate how long a fix will take to create without actually creating the fix. This is because bugs are, by their nature, not supposed to exist and represent hidden problems in the logic or syntax of the source code.
Because of this, AIM is structured such that Equinox engineers will work on each AIM Target in priority order until it is complete, without specific deadlines. This is the most honest way to approach bugs; it recognizes that the effort and time to fix many bugs, if not most, cannot be reliably estimated. We have found through our own experience, and over many years, that to try to estimate the time needed for specific bug fixes is a losing proposition.
An exception to the no-deadlines rule is available through the AIM Prime subscription level. Each Prime subscriber may identify Targets for which they would like a deadline date. Equinox then supplies the deadline and guarantees an AIM release containing the fix will be released to AIM subscribers by that date.
Transparency, regularity, and predictability
All AIM subscribers have access to a simple web interface that is the focal point of their bug identification and prioritization activities. They will be able to see, among other information:
- Their list of Targets, both pending and complete
- Each Target’s position in the overall queue
- Each Target’s deadline, if one has been assigned for any subscriber
- Each Target’s completion status
As with all development Equinox performs in the creation and maintenance of software used by our customers, the development of fixes through AIM are made immediately available to the broader community through official patch channels. Not a single line of code is held back.
Even though AIM is designed to cleanly sidestep the problem of trying to create a realistic timeline for all bugs to be addressed, and all AIM repairs are offered to the community immediately upon creation, there is often a lag between the initial offering of a bug fix and its ultimate release in a community-maintained package of the software.
To address this lag, and provide immediate, direct access to fixes funded through AIM, we offer downloads of packaged releases to AIM subscribers which contain all AIM fixes produced. In other words, each AIM-repaired issue will trigger a new release. Each AIM release version number will clearly identify which community release it builds upon, along with a patch level identifying how many AIM fixes have been applied beyond the baseline release. For instance, an AIM fix might trigger the creation of a package for Evergreen called Evergreen-ILS-2.4.6-aim5.tar.gz. This would be a package containing Evergreen 2.4.6 with five AIM-created patches applied. A future community-released revision of Evergreen 2.4 might contain some or all of those fixes, but AIM subscribers gain immediate access to an Equinox approved package.
This model is new within the library world, but not in the broader Open Source software industry. By way of comparison, consider that subscribers to the Red Hat Network enjoy access to a fully-patched and curated version of the Linux kernel officially supported by Red Hat. The primary difference between AIM and the Red Hat Network is that AIM fixes are always and immediately pushed to the community for inclusion in the master code base.
Finally, with the additional AIM Applied service, AIM subscribers receive regular installations of AIM releases, performed by Equinox engineers. This allows subscribers to rest assured that they are always on the most up-to-date and well-tested version of their software.
And remember, we will be at ALA Midwinter. Just stop by booth 541 and we would be happy to discuss AIM and our other upcoming service offerings in person.