RFCs are a way for Atlassian to share what we’re working on with our valued developer community. Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
RFC (Request for Comment) is a well-known style of specification, collaboration, and change management that Atlassian proposes for communicating about proposed ecosystem features and getting feedback.
- Author: 3 Feb 2023
- Publish: 3 Feb 2023
- Discuss: 10 Mar 2023
- Resolve: 24 Mar 2023
Problem: Atlassian ships too many problems to our ecosystem
When Atlassian ships the wrong thing to the ecosystem, this creates issues for everyone. Selfishly, for Atlassian, the wrong thing requires rework which consumes valuable resources that are in short supply. Rework increases the investment needed to get to a working solution, increasing time-to-market and reducing return-on-investment. Along the way, partner- and customer-facing teams are randomized by these changes, eating up valuable resources mitigating damage and helping both internal teams and external developers rework their solutions.
Partners lack transparency into what Atlassian is working on. This leads to surprise to changes which can, at best, blow up their roadmap and, at worst, cause incidents, both in their apps and against Atlassian ecosystem components. All of which diverts resources from priority work like Cloud Migrations and from innovation as they re-prioritize the fire-du-jour. Partners have limited recourse but to publicly vent their frustration and the impact on their trust in Atlassian.
Most important is the impact on our mutual customers who experience downtime with their apps, losing trust in Atlassian and Products. This is especially true for Atlassian’s Cloud where trust and operational excellences are expected characteristics.
Proposed solution: RFC as early collaboration with our developer community
RFC (Request for Comment) is a well-known style of specification, collaboration, and change management for software and hardware developers about the protocols and interfaces between systems on the Internet. If it works for the Internet, we propose it can solve these problems in the Atlassian ecosystem.
An RFC is a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early. For the ecosystem, an RFC is a way to check our understanding of a customer problem, and to validate the indirect solutions that external developers will consume in order to solve them.
Author
Any major technical decisions should be documented as an RFC - both to inform the broader ecosystem its being explored and to get input so that Atlassian can make better decisions faster. Even when Atlassian teams are considering a decision that seems minor, it may still merit an RFC. For example, consider making an RFC for a small- or medium-impact technical decision or a one-way door. In order to better mitigate risk, the decision should be considered through multiple perspectives to consider impact:
- customer value
- user experience
- developer experience
- distribution
- trust
For this proposal, the technical decisions might be about any of the following:
- Community standards. Like this RFC process, community standards can be about how Atlassian works with the developer community, or how we want the community to work within our ecosystem.
- Marketplace and developer programs. From support offerings to partner benefits, these all need to fit together into a whole solution that helps developers build apps.
- Ecosystem platform or product-specific technology. For example, APIs, UI modules, code libraries, CLI tools, or anything that could affect how apps are built.
Standard Structure of RFCs
- Header. A short introduction to the RFC containing:
- Summary: a short description of what the RFC proposes.
- Disclaimer: standard rules of engagement
- Flow: standard representation of status & proposed timing
- Problem. Explain who has the problem, why it needs solving (use data & quotes if possible), what benefits would those people get from having a solution.
- Proposed Solution. Explain the solution(s). Consider the dimensions of user experience (potential screens), developer experience (architecture, related deprecations, required frameworks), trust (especially auth & permissions), and distribution (activation, revenue model). If there were explored and rejected solutions, give insight into why.
- Actions. Start the conversation with questions you want to answer. Explain how developers can opt-in to additional information or access.
Publish
Standardization is a constructive constraint for mutual benefit between commenters and authors. For commenters, the standard format above helps make the content easier to comprehend and to provide comments. Standard organization helps the community deal with their own variation: the right organizational tools let each commenter separate signal from noise.
For authors, standard structure makes RFCs easier to author and standard organization makes feedback easier to gather and analyze. With inconsistent formats, locations, and tagging, it becomes difficult to analyze feedback at Atlassian scale. The default should be a channel that reaches all developers. Hence, we currently recommend Developer Community and posting with the following guidelines:
- Start a New Topic in the RFC category on Developer Community. Don’t post an RFC as a response to an existing topic or in other categories.
- Title MUST be uniquely identified with an RFC number and the title of the RFC. For example, “RFC-2: Marketplace search terms”. During publishing look at the previous RFC and use the next number in the sequence (add one).
- Category MUST be “RFC”
- Optional tags MAY contain key words about the RFC. For example, “marketplace, rest-api, search”.
- Formatting. Be aware the Developer Community (using the Discourse platform) is not as rich as Confluence; hence, keep formatting simple. Headings, bold, italics, bullets, numbering, quoting, and code are fine. Macros, tables, panels, and blocks won’t survive the translation. Images require an additional copy/paste step for each.
Discuss
An RFC is not just another kind of broadcast announcement. The “request for comments” is just the opening of a conversation with the developer community.
Who comments?
In short, everyone. We believe RFCs for ecosystem should be public and open. While it is important to get attention from those most affected by a decision, we believe the community benefits most from full transparency. Driving consensus is not just a passive effort, but an active dialog to refine everyone’s understanding of the problems we’re solving, and how those solutions will work. This is a chance to “win over” developers to a controversial solution before those developers are forced into dealing with the controversy in code.
How to write good comments?
Good comments make the overall position clear: “Agree. There are no serious flaws” or “Disagree. There are serious flaws.” Participation should follow the developer community participation guidelines. We especially call out the need to keep conversation welcoming and safe by commenting on the idea not the people (especially the author). Keep it tidy by keeping on topic and respond at the appropriate level in the thread. If you are going to comment about the RFC itself, respond to the top level. Please, keep comments constructive to help empower the community. Even serious flaws should be explained in ways that help drive better outcomes for the community.
What constitutes a serious flaw?
A serious flaw (red flag) is a problem in the RFC which would lead to not achieving the stated motivation of the RFC, meeting the ecosystem’s community standards, or the general goals of the Atlassian ecosystem. A serious flaw needs to be backed by evidence, it must be taken with deep consideration due to its ability to disrupt Atlassian, App developers, and our mutual customers.
We hope that any serious flaw in a document should be cheap and easy to fix. Without code and apps depending on that code, most flaws could be addressed by changing the spec. For ideas that are so seriously flawed that we cannot proceed, the RFC should be resolved as normal but with a statement that we’re not advancing the idea. An author should start a new RFC if the proposed solution has not been proposed before.
Who responds?
In short, the author owns the RFC. Responses to serious flaws should be timely and considered. A timely response is important to signal that the author is listening. A considered response demonstrates understanding of the commenters position, and how Atlassian will integrate that feedback.
How to write good responses?
Our Partner/Developer community will start to leave feedback, both positive and critical, in response to the RFC. They may even respond to each others feedback. Every comment is an opportunity for engagement – be curious!
- Ask follow up questions and for clarifications (“That’s interesting, can you tell me more about….”)
- Show gratitude when a developer shares something that helped inform your project (“That’s helpful, thanks for sharing!” and like their post)
- Make edits to your RFC in real time and respond to close the loop (“That’s a great point! I’ve edited the RFC to reflect that. Thanks!”)
While we hope all stakeholders will follow the Rules of Engagement there will be some who test that limit. Resist the urge to defend or correct. When in doubt, a neutral statement (“I appreciate your thoughts and feedback”) is a better use of time.
Resolve
As the old bartender saying goes, “You don’t have to go home, but you can’t stay here.” RFCs must be timeboxed to avoid decision-making problems. The goal is to reach rough consensus and identify serious flaws, rather than to refine the idea to perfection: it’s not valuable until it gets built. On the last day of discussion, the author thanks the community for participation and closes the topic. Within a reasonable timeframe (we recommend 2 weeks), the author edits the original RFC topic to post a resolution as the final section of the document:
- summarizing lessons learned
- stating an outcome (for example, go/no-go)
- explaining next steps (for example, “please look for our early access in 6 months.”)
- edits the original post with a statement that the topic has been resolved and linking to the resolution post
Action
Thank you for reading this far! While we would appreciate any reactions you have to this RFC (even if it’s simply giving it a supportive “Agree, no serious flaws”), we’re especially interested in learning more about:
- Could you triage an RFC and quickly identify whether it is relevant to you?
- How many RFCs can you imagine engaging with in a given month?
- Is the Atlassian Developer Community the preferred channel for RFCs to be published and discussed or is there an alternative channel?
- Does the use of the RFC category help give greater signal to the projects being explored (or worked on) at Atlassian? Is there an alternative solution you’d prefer for that overview?
- Does the content in the RFC Examples (below) generally include the right details or are there important missing elements we should ask teams to include?
Review Examples
To further guide this RFC towards relevant comments, we created functional examples of RFCs published today to the Developer Community. Please view these RFCs to get a better understanding and guide your comments: