OSS Maintenance Levels
17 April 2019
From the beginning, Formidable has valued and emphasized open source contribution. We know we could not exist without the enormous ecosystem of open source software that runs the modern web. We try to give back to this ecosystem by generalizing and sharing some of the patterns that we've found useful in our consulting practice, and by supporting creative open source contribution through internal programs. As Formidable has grown, we have continuously added projects to our portfolio, and today we have more than 70 open source projects that are downloaded and used a couple of million times each week. We try hard to make sure the software we build and maintain is reliable and useful. But how can we continue to maintain and improve every project in our ever-growing open source portfolio? Honestly, we can't.
Instead of trying—and risking developer burnout in the process—we're opting for a more realistic approach. Rather than maintaining all, or even most of the projects in our portfolio, we will be selective and transparent about our priorities. To this end, we're introducing the concept of clearly delineated maintenance categories. We have spent the last few months prioritizing projects within our portfolio and sorting them into maintenance categories: experimental, active, stable, and archived. More detailed explanations of these categories are given below.
Brand new! Anything goes!
Idea generation, prototyping, and experimentation are crucial steps in developing new open source projects. The expectation of ongoing development and maintenance can impede the creativity and fun of building something new. For some, the idea of committing to maintain a project might keep them from ever even starting. In an attempt to minimize these effects, all of our new projects are automatically labeled as experimental. Development of new experimental projects may be quite active as we incubate new ideas, but ongoing maintenance is not guaranteed. As experimental projects mature, they are reevaluated and moved to one of the following categories.
Ongoing work! Upcoming features!
Projects in this category solve problems for us and our clients. They provide tangible value so we work hard to maintain and improve them. When we move a project into this category, we are committing to ongoing maintenance and feature work for the foreseeable future. Moving projects out of this category is done thoughtfully and infrequently.
Nothing new on our roadmap.
We're not planning any new features for projects in the stable category. Stable projects still receive regular maintenance and bug fixes, but the pace of updates may be slower than for our active projects. Many projects in this category are small, simple, and feature complete. Larger projects in this category tend to be useful, reliable projects that we, at Formidable, are no longer trying to modernize or improve upon. The decision to de-prioritize new feature work on a large, active project is not one we take lightly. When this happens, we will try to be as transparent as possible about our motivations.
Fork it if you like it!
The archived category is for projects that we are not currently maintaining, and are unlikely to develop or maintain in the future. Archiving projects lets us focus limited developer time on our active projects and devote more energy to generating new ideas. Experimental projects will be archived frequently. Active and stable projects will be archived only after a great deal of consideration and warning.