FOSS Resources

How to Build an Open Source Project Roadmap

A useful open source roadmap explains direction and priority without turning every idea into a promise.

An open source project roadmap is a public explanation of where the project is heading, what maintainers are prioritizing, and how uncertain each plan is. It should help users and contributors understand direction without treating every idea as a release promise.

The best roadmap is not a long wishlist. It is a communication tool. It separates committed work from exploration, links planning to issues and releases, and shows how maintainer capacity shapes what can realistically happen next.

Roadmap, backlog, milestone, and issue tracker

A roadmap describes direction. A backlog stores possible work. A milestone groups work toward a release or goal. An issue tracker records specific bugs, tasks, feature requests, questions, and follow-up discussion.

Keeping those roles separate avoids confusion. If every issue becomes roadmap content, the roadmap turns into a noisy task list. If the roadmap is not connected to issues or milestones, it becomes a vague announcement page that contributors cannot act on.

Use the roadmap for the questions users ask before investing time: what is likely to improve, what is not planned, where help would matter, and which work carries uncertainty.

Choose the audience first

Roadmaps fail when they try to speak equally to users, contributors, sponsors, packagers, and maintainers. Choose the primary reader before choosing the format.

For users, focus on capabilities, platform support, migration risk, and expected change. For contributors, show areas where help is welcome and link to issues that are ready for work. For downstream packagers, highlight compatibility, release timing, dependency changes, and deprecations. For sponsors, show priorities and capacity without implying that funding guarantees a specific change unless the project actually commits to that.

The same project can have more than one planning surface, but the public roadmap should stay readable. Deeper maintainer planning can live in project boards, issues, or design documents.

Pick a planning horizon

Open source roadmaps work best when they use a planning horizon that matches maintainer capacity. A volunteer project may only be able to plan the next release and a few themes beyond it. A foundation-backed or company-backed project may have a longer public plan.

Avoid far-future dates unless the project has a reliable release policy. Dates create expectations, and missed dates can damage trust even when maintainers are working responsibly. Time frames such as "next release," "under discussion," "later," and "not planned" can be more honest than a calendar full of guesses.

If a date is necessary, pair it with uncertainty language. Explain whether the date is a target, a dependency-driven estimate, or a firm commitment.

Define themes, commitments, and exploration

A roadmap should distinguish between work the project expects to deliver and work the project is still exploring. That difference matters to users deciding whether to adopt the software and contributors deciding where to help.

Useful labels include:

  • Committed: accepted for the next release or already in progress.
  • Planned: direction is clear, but exact scope or timing may change.
  • Exploring: useful idea, but design, capacity, or project fit is still uncertain.
  • Needs contributors: valuable work that depends on outside help.
  • Not planned: request is understood, but it does not fit current direction.

These labels reduce false certainty. They also make it easier to decline ideas without making users feel ignored.

Connect roadmap items to issues and releases

Every public roadmap item should be traceable to something more specific when possible: an issue, milestone, design discussion, pull request, release note, or changelog entry. The roadmap gives context; the linked work item gives details.

That connection creates an expected path:

  1. A user or maintainer identifies a problem or opportunity.
  2. The idea becomes an issue, discussion, or design note.
  3. Maintainers decide whether it fits the project direction.
  4. Accepted work moves into a milestone, project board, or release theme.
  5. Completed work appears in release notes or a changelog.

If a roadmap item cannot link to any detail, keep the wording broad and cautious. A loose idea may still belong on the roadmap, but readers should not mistake it for accepted implementation work.

Handle feature requests without overpromising

Feature requests often pressure maintainers to say yes, no, or soon. A roadmap gives maintainers more options. A request can be marked as under discussion, blocked by design questions, waiting for a contributor, planned for a later release, or outside the project scope.

Good roadmap language focuses on the user problem rather than the proposed implementation. "Improve large-file import performance" is more durable than "rewrite the importer in a specific library" unless that implementation has already been chosen.

When declining or deferring a request, give a short reason: maintenance cost, scope, compatibility risk, security concern, missing maintainer capacity, or conflict with the project's goals. Clear refusal is kinder than an issue that stays open forever with no realistic path.

Roadmap formats

Choose a format the maintainers can keep current. A stale polished roadmap is worse than a simple maintained one.

FormatBest forRiskMaintenance cost
Short Markdown pageSmall projects with a few public prioritiesCan become vague if not linked to issuesLow
Milestone listProjects that plan by releaseMay hide longer-term directionLow to medium
Project boardActive projects with many tasksCan overwhelm visitors if every card is publicMedium
Theme-based roadmapProjects with uncertain timingMay feel less concrete to usersLow
Version-based roadmapProjects with predictable releasesMissed dates can look like broken promisesMedium

The format should reveal enough detail to help readers but not so much detail that maintainers spend more time curating the roadmap than doing the work.

Checklist before publishing

Before publishing a roadmap, check that it answers these questions:

  • Who is the roadmap for?
  • Which items are committed, planned, exploratory, blocked, or not planned?
  • What time horizon does it cover?
  • Which items link to issues, milestones, discussions, or releases?
  • Which requests depend on contributors or external dependencies?
  • What wording prevents readers from treating estimates as promises?
  • How will completed or abandoned items be removed?

The expected outcome is a roadmap that sets direction and reduces repeated questions. If users still cannot tell what is planned, what is uncertain, or how to help, tighten the labels and links before making the roadmap prominent.