FOSS Resources

Maintaining a Public Project Roadmap

A public roadmap stays useful when maintainers keep scope, confidence, status, and change explanations current instead of treating it as a promise list.

Maintaining a public project roadmap means keeping future work understandable without turning every idea into a promise. A roadmap should help users, contributors, sponsors, and maintainers see direction, confidence, dependencies, and change history.

The hard part is maintenance. A roadmap that is never updated becomes a stale marketing page. A roadmap that lists every request becomes a backlog. A roadmap that gives dates without confidence creates expectations the project may not be able to meet.

Roadmap, backlog, changelog, and release notes

A roadmap describes intended future direction. A backlog stores possible work. A changelog records cumulative project history. Release notes explain one release to users.

Mixing these artifacts creates confusion. If every feature request enters the roadmap, users may assume it is planned. If shipped work stays on the roadmap forever, readers cannot tell what is current. If release notes are used as the only roadmap, contributors cannot see what work is coming.

Keep the roadmap focused on selected future or in-progress work. Link to issues, milestones, proposals, or release notes for detail, but do not duplicate all of them.

Use status labels that do not overpromise

Status labels should tell readers what maintainers actually mean. Useful labels may include proposed, accepted, exploring, planned, in progress, blocked, shipped, deferred, rejected, deprecated, or archived.

Avoid labels such as "soon" or "committed" unless the project can explain them. "Planned" may mean accepted but unscheduled. "In progress" may mean active development. "Blocked" should name the blocker where possible.

Add confidence when needed. A roadmap item can be high-confidence, low-confidence, experimental, dependent on funding, dependent on contributor availability, or tied to a release candidate. This helps users treat the roadmap as guidance rather than a contract.

Keep items linked to evidence

Roadmap items should link to the source of the decision: issue, design proposal, enhancement document, milestone, release branch, or discussion. Links let readers see whether the item is active, blocked, or still being debated.

Do not require users to read a long thread to understand the roadmap. The roadmap item should still summarize user impact, current state, and next action.

If an item depends on funding, external APIs, security review, platform support, or contributor availability, name the dependency. Hidden dependencies are the main reason roadmaps become stale.

Update items when priorities change

Priorities change. Maintainers discover implementation risk, users report different needs, funding changes, a dependency breaks, or a security issue interrupts planned work. A public roadmap should show those changes rather than pretending the original plan still holds.

When an item changes, update status and explain the reason briefly. "Deferred because the dependency is not ready" is enough. "Removed because the project will not support this platform" is clearer than leaving an item frozen for years.

Change explanations build trust. Users may dislike the decision, but they can plan around it.

Deferrals, removals, and rejected requests

A deferred item remains possible but not currently planned. A removed item is no longer part of the roadmap. A rejected request is outside current project direction. These states should not be blurred together.

Rejected items deserve respectful language. If the project will not support a feature because it conflicts with scope, increases maintenance burden, breaks compatibility, or belongs in an extension, say so.

Deferrals need a review condition. The item may return when a dependency ships, a maintainer is available, funding appears, or a design problem is solved. Without a condition, deferral becomes a quieter form of abandonment.

Connect roadmap maintenance to releases

Before a release, check roadmap items tied to that release. Did the item ship? Did scope change? Does the release note need migration guidance? Should a partially shipped item remain active?

After release, move shipped items out of the active roadmap and link release notes or changelog entries. Users should not have to guess whether an item is still future work.

For prereleases, label uncertainty clearly. A feature in a beta or release candidate may still change. A roadmap should not describe it as generally available until the project has shipped and documented it as such.

Security and support exceptions

Security work may interrupt roadmap plans, and not all security work belongs on a public roadmap before disclosure. A roadmap can say that security fixes may take priority without listing sensitive details.

Support boundaries also affect roadmap maintenance. If the project no longer supports an old version, operating system, or integration, remove or update roadmap items tied to that support path. Otherwise users may think future support is still planned.

End-of-life announcements should be linked where they affect future development. A roadmap can say that maintenance is moving to a new branch, that a platform is ending, or that a project is entering archival mode.

Archive stale roadmap material

Old roadmap pages can be useful historical records, but they should not look current. Archive stale pages, mark shipped or abandoned items, and link users to current direction.

Do not delete history just to hide missed plans. A short note explaining that priorities changed is more trustworthy than removing every trace of an old roadmap. Users understand that open source work changes; they mainly need clarity.

If the project cannot maintain a roadmap, say so and remove the active-roadmap claim. A stale roadmap can be worse than no roadmap.

Roadmap cadence without fake dates

Maintainers often feel pressure to add dates because users want certainty. Dates are useful only when the project has enough capacity and confidence to support them. Otherwise, a date becomes a promise that will age badly.

Use scheduled roadmap checks instead of delivery promises where appropriate. A roadmap can say that maintainers revisit planned work monthly, update milestones after releases, or reconsider blocked items when dependencies change. That gives users a signal without inventing deadlines.

When dates are necessary, attach scope and confidence. A target release window, release candidate, or final EOL date is different from a casual estimate in a discussion thread. Readers should know which kind of date they are seeing.

Contributor-facing roadmap work

A roadmap should help contributors choose useful work. Items need enough context to show where help is welcome: design discussion, tests, documentation, implementation, review, translation, packaging, or release validation.

Do not mark an item as contributor-ready just because it is wanted. A roadmap item may be important but still require deep maintainer context. Link to scoped issues when work is ready for outside contribution.

When an item is blocked by maintainer capacity, say so. That can invite the right kind of help without pretending the item is already designed.

Handling sponsor and user pressure

Sponsors, large users, and vocal community members may ask for roadmap placement. Maintainers can acknowledge demand without making a commitment. A public roadmap should reflect project judgment, not only the loudest or best-funded requests.

If funded work appears on the roadmap, disclose the relationship at a level that helps readers understand priority. A grant-funded accessibility project, sponsor-funded migration, or company-backed feature can be legitimate; the risk is hidden influence.

Paid or funded work should still pass the same compatibility, security, documentation, and review standards as other work.

Roadmap item anatomy

A useful roadmap item should answer: what user problem is being addressed, what status the work has, how confident maintainers are, what depends on it, what release or issue tracks it, and what kind of help is useful.

It does not need a long essay. A short entry with a status label, linked issue, affected users, and limitation can be enough. The important part is that readers can tell the difference between accepted direction, early exploration, and work that is blocked.

Roadmap items should avoid marketing language. "Improve performance" is too vague. "Reduce startup time for large projects; design accepted; implementation not scheduled" gives users and contributors more information.

Maintaining rejected ideas

Rejected ideas should not vanish if they keep returning. A short rejected-ideas section, decision record, or linked issue can save maintainers from re-litigating the same proposal.

The wording should stay respectful. A request may be rejected because it conflicts with project scope, increases maintenance burden, introduces privacy risk, duplicates an extension, or lacks a maintainer. That reason helps future requesters understand the boundary.

Do not turn rejected ideas into a wall of negativity. Keep only decisions that users repeatedly ask about or that materially define project scope.

Roadmap health review

Review the roadmap after releases, major incidents, maintainer changes, funding changes, or repeated feature-request pressure. Ask which items are stale, which shipped, which are blocked, and which no longer fit the project.

The review should produce visible changes. Move shipped work, mark deferred items, close out-of-scope requests, and update status labels. A roadmap review that leaves the public page unchanged does not help readers.

If no maintainer can review the roadmap, retire it until the project has capacity.

Public roadmap formats

A roadmap can live in a repository file, project board, issue milestone, dedicated website, enhancement repository, or product-planning tool. The format matters less than clarity and maintenance.

Repository files are easy to version and review. Project boards can show status but may be hard to read without context. Dedicated roadmap pages can help users but need active updates. Enhancement repositories work well when design proposals are formal.

Choose a format maintainers will actually update. A beautiful roadmap in a tool nobody uses will become stale faster than a simple Markdown table maintained during release planning.

Roadmap and changelog consistency

Roadmaps should agree with changelogs and release notes. If the roadmap says a feature shipped, the release notes should identify where. If the changelog records a breaking change, the roadmap should not still describe the old behavior as future direction.

Consistency reduces support questions. Users can move from future plans to release evidence without encountering contradictory states.

What not to put on the roadmap

Some work belongs outside the public roadmap. Security-sensitive fixes may need private coordination before disclosure. Support questions belong in support channels. Small implementation chores may belong in issues. Experimental ideas may belong in discussions until maintainers decide whether they fit.

Keeping these items out of the roadmap prevents overload. A roadmap should not become a dumping ground for every idea, private concern, or unresolved debate.

If users repeatedly ask about excluded work, add a short boundary note. For example, the roadmap can say that security fixes may preempt planned work but will not be listed before safe disclosure.

User-facing change notes

Every roadmap item should identify the user-facing change where possible. "Refactor storage layer" may matter internally, but users need to know whether it improves reliability, enables migration, changes file format, or has no visible effect.

If there is no user-facing change, decide whether the item belongs on a public roadmap. Internal maintenance may still be important, but it may be better tracked in a maintainer milestone unless users need to know about it.

Roadmap maintenance table

Roadmap itemCurrent statusConfidenceLinked issue or releaseUser-facing changeMaintainer actionReview trigger
New platform supportExploringLowDesign issuePossible future install pathValidate demand and maintainer capacityDependency update
API changePlannedMediumProposal and milestoneMigration requiredDraft release notesRelease freeze
Security hardeningIn progressMediumPrivate path until disclosureSafer defaultCoordinate fix and advisoryPatch release
Old branch supportEndingHighEOL noticeUsers must migratePublish final support dateEOL date
Feature requestRejectedHighDecision commentNo planned supportLink alternative workflowRepeat requests

Roadmap maintenance checklist

Review the roadmap when:

  1. Status labels are defined and used consistently.
  2. Each active item has a linked source or decision record.
  3. Dates are avoided or qualified unless the project can support them.
  4. Deferred items explain the condition for review.
  5. Removed and rejected items are not left as active promises.
  6. Shipped work links to release notes or changelog entries.
  7. Security-sensitive work is handled without premature disclosure.
  8. EOL or support-boundary changes are reflected.
  9. Stale roadmap pages are archived or labeled.
  10. Users can tell what is planned, uncertain, shipped, or no longer intended.

A public roadmap earns trust by changing visibly when reality changes. It does not need to predict everything; it needs to help people understand the project's current direction.