Launching Upgrade Path
One of the things that surprised me when I started interviewing open source maintainers for this Once a Maintainer project was how much software development is blocked by, essentially, human coordination. I’ve always thought of software development as a solo endeavor. Us business people love meetings. Task lists with assignees. Reply-all email threads. But developers, all they need is their terminal, an internet connection, and a cup of coffee and boom, stuff happens.
It turns out that developers rely on other people not only to make their projects better, faster, stronger, but also simply to keep them running. And that maintenance work often involves a complicated web of interconnected dependencies and the humans behind them. Each dependency has its own set of versions from 1.0 to infinity, and with each new version a human has decided what this program now does or does not do. What it does or does not support. Perhaps that human has written down some notes about their decisions. And perhaps now you Developer, sitting at your terminal, trying to do your job, are attempting to upgrade one piece of open source software in order to make your own project better, faster, stronger. But you are stuck.
Upgrading software dependencies is hard and thankless work. When you put it off for too long you find yourself mired in a pit of outdated dependencies with no clear way out. Even if you manage to get everything up to date once you’re quickly out of date as new versions of your dependencies come out. Attempting a major framework upgrade, like Rails, can be overwhelming. There may be blocking dependencies that need to be upgraded first, breaking changes that need to be deal with, or even completely abandoned dependencies that are incompatible with framework version you’re trying to get to. Tackling major upgrades is more project management than coding. Meetings. Lists. Reading through changelogs trying to figure out what the maintainer meant when they said “Remote_addr functionality has changed”.
Today at Infield we’re launching Upgrade Path to help developers track and plan major dependency upgrades. Infield guides you through complex upgrades by connecting to your code, reading the changelog for every dependency you rely on, and running an optimization algorithm that solves for the best path forward. The result is a plan not just for your framework (e.g., Rails) but also for all your other dependencies that need to be upgraded along the way. Each step in the plan comes with an assessment of effort and a list of breaking changes you might need to address.
As the upgrade progresses, you can also use Infield to track progress and mark work as complete. You can share your notes with a teammate, and see what is left to be done. In this way Infield serves as a project planner and a task list for IC developers who are doing this very hard and often invisible work.
By making major open source upgrades easier to plan, faster to develop, and safer to deploy, we hope that they become less intimidating and more achievable. You can get started making your first upgrade path here.