What is the value of supporting legacy systems over building a shiny new thing? There’s a lot of motivators for making something that’s “your own”, but then we’re always retreading the same ground instead of building upward. What are the motivators to do maintenance?
We always have the idea of build first, plan later. Plans for maintenance and LTS need to be baked in early on for success.
In new products there’s a target group that wants to pull you in to expand. With legacy, prospective maintainers need to go digging on their own to find a path in to the project.
How much of these perceptions are “excitement” vs “money”?
Information loss happens when there’s embodied/institutional knowledge over time, even with best intentions. You end up reverting architectural decisions to previous versions without meaning to. What’s old is eventually new again. Decisions always need to be documented, along with their context of the world where you were led to them.
Maintenance isn’t exclusive to software projects, there are parallel barriers in organizations and social structures.
Unless someone feels some ownership or has been reached out for mentorship, they won’t engage. Existing maintainers need to meet outsiders where they are. Moving into new toolchains and infrastructure can be the key to opening up doors for new contributions.
Are there different skills between the software engineering taught in school for greenfielding vs doing long term maintenance? Maintenance has to be inherently social, as you talk to users about where things break. Maintenance is about refining processes and not generating products.
In greenfielded software, often the schema/docs are the code and product. For maintenance, those documents need to be made external and explicit to survive.
Do existing maintainers feel too much ownership? Does that deter new blood?
Gamification (e.g StackOverflow/Github badges) can be a powerful method to entice new maintainers.
Takeaway: a project can’t just be a codebase to survive, it needs additional components. Docs, Forums (with an inviting community), How-to-contribute guides.
|Ego||Usefulness for self|
|New and shiny||Feeling responsible for a big user base|
|Big ideas||Self-assigned learning|
|Helping others||Mission/The Cause|